功能测试

286 阅读11分钟

一、测试理论笔记

1、测试基础回顾

软件测试:通过手工自动化的方式运行被测软件是否正常(看预期结果和实际结果是否一致)

测试目的保证软件的质量(尽可能多的发现系统中的错误,证明软件存在问题)

测试体现形式:通过找bug的形式验证质量

测试人员具备的素质(简历的自我评价里可以使用)

  • 5个心:责任心、细心、耐心、专心、自信心
  • 2个能力:沟通能力、表达能力
  • 1个精神:团队协作精神

2、质量模型介绍

需求:用户的想法,为了实现某个目的而产生的想法

需求规格说明书:将用户的想法转化为技术上可以实现的文档

软件质量:就是软件与明确的或隐含的定义的需求相一致的程度。

质量模型标准:

image.png 对测试的作用:提供测试设计的不同角度和思路

功能性:满足某种需求的一种属性和能力
性能效率:在规定条件下,相对应所用资源的数量,软件产品提供适当性能的能力
兼容性:在一定条件下兼容其它软硬件产品的能力
易用性:在指定使用条件下,产品被理解、学习和使用、吸引用户的能力
可靠性:能不能长时间的稳定运行
安全性、可维护性、可移植性

image.png

3、软件生命周期

生命周期:从无到有消亡

瀑布模型(现实已经不常用,但是是其它模型的鼻祖) image.png

优点:每个阶段都清楚,且有对应文档产生;一个阶段完成后,才有后面的
缺点:发现问题的时机比较晚,失去提前纠错的机会;测试介入较晚
适用场景:需求不易发生变化的大项目

扩展:

敏捷开发模型: 能够适应需求的变化,并且能够给出快速的响应。

4、软件测试模型

v模型: 作用:主要描述测试、开发间的对应关系。

image.png

优点:每个阶段比较清楚,测试过程由底层(代码)测试到高层(应用)测试过程
缺点:不适用需求的变更,发现问题的时机较晚

w模型: 作用:将测试过程更加细化说明,对应测试、开发间的关系更加清楚。

image.png

优点:测试介入时间早,能够及时发现问题,降低修复成本。测试伴随整个软件生产周期,除了测试软件外,还需要验证文档
缺点:该模型应用起来复杂度高(具备计算机技能、业务能力、管理能力、测试素质)

5、测试用例

定义:为了特定的目的而设计的一组测试输入、执行条件和预期结果构成的文档。

目的

  1. 方便测试验证(将需求大量描述拆分为小的测试点)
  2. 体现测试人员的思路,测试设计的全面性(后续测试直接可以使用)
  3. 测试的量化体现,能够反应测试进度

image.png

image.png

6、用例设计方法

① 等价类划分

适用场景:需要大量数据测试输入,但没法穷举测试。

典型代表:页面级的输入框类测试!

设计用例步骤:

  • 明确需求:测试目的、测试条件(长度、类型、规则)
  • 划分等价类:有效等价类(满足所有需求)、无效等价类(只要其中一个子条件不满足即可)
  • 编写测试用例:编号、测试标题、测试项目、用例等级、预置条件、测试输入、执行步骤、预期结果

示例一:如何测试两位数整数间的和(-99到99间的数据求和)没有问题?

image.png

注意测试条件:分三种(长度、类型、规则!!!)

示例二:新浪邮箱登录,要求输入(邮箱名)@sina.cn和(密码),使用等价类方法设计出测试用例。邮箱名:4-16位字符,支持英文、数字、下划线(不能全是数字或下划线) 密码:6-18位字符

image.png

② 边界值分析

适用场景:针对于有边界范围的批量数据输入的地方。(先用等价类,再用边界值)

侧重点重点关注边界值位置的数据

设计用例步骤

  • 明确需求:测试目的、测试条件(长度、类型、规则)
  • 划分等价类:有效等价类(满足所有需求)、无效等价类(只要其中一个子条件不满足即可)
  • 确定边界范围值:上点、离点、内点(开内避外)
  • 编写测试用例:编号、测试标题、测试项目、用例等级、预置条件、测试输入、执行步骤、预期结果

示例一:如何测试两位数整数间的和(-99到99间的数据求和)没有问题?

image.png

③ 判定表法

适用场景:针对需求中多个条件,条件和条件间有组合关系,条件和结果直接有因果关系。(如果...那么...

画判定表

  • 找出条件桩和动作桩
  • 在条件前面加判定词,对于条件进行取值
  • 对不同条件取值全组合
  • 根据条件项的每一列取值得到操作结果

image.png

设计用例步骤

  • 明确需求:测试目的、列出条件
  • 画出判定表
  • 编写测试用例:条件项和动作项构成的每一列就是一条规则,也就是一条用例

④ 场景法(流程图法)

适用场景

  • 用户使用角度:对于系统不同的场景核心业务进行验证
  • 测试角度:测试后期,对整个系统的核心功能组合测试

会找出路径

  • 开始节点
  • 结束节点
  • 能找出路径:有几种测试场景/用例

image.png

补充:画图元素

  • 椭圆:开始和结束
  • 长方形:处理或者操作
  • 平行四边形:数据的输入、输出
  • 菱形:流程的判断
  • 箭头线:流程的走向

⑤ 错误推测法

定义:一般由有经验的人员推测(经验、智慧、直觉)系统可能出现的问题

适用场景

  • 时间宽裕:对原有系统进行细化,找出边缘化场景进行再次测试。需要写测试用例
  • 时间紧迫:通过经验找出可能出现问题的模块进行整理核心点测试。不需要写测试用例

7、软件缺陷

缺陷定义:软件在运行或者使用过程中存在任何问题

测试依据:需求说明书

判定标准

  • 没有做
  • 做错了
  • 做多了
  • 没做完
  • 不完美(不易理解、运行缓慢、体验不好)

image.png

缺陷生命周期

image.png

缺陷报告核心

  • 缺陷标题:描述和实际结果不相符的结果+[现象]
  • 缺陷的预置条件:和用例前提条件一样
  • 缺陷的复现步骤:包含测试输入(数据)
  • 缺陷的预期结果:希望的正确结果
  • 缺陷的实际结果:错误结果+现象
  • 缺陷必要附件:照片截图、日志

缺陷报告其它要素:

  • 缺陷编号
  • 缺陷的状态:描述缺陷的生命周期
  • 缺陷的优先级:描述开发修复缺陷的先后次序
  • 缺陷的严重级:描述给产品,描述缺陷对于整个软件的破坏程度
  • 缺陷的所属模块
  • 缺陷的问题分类

缺陷管理

  • 缺陷跟踪流程

      作用:描述开发和测试如何协同配合处理bug
      流程图:测试处理状态
      	new:第一次新建
      	closed:关闭
      	reopen:激活/重新打开
      开发处理状态:
      	rejected
      	inprogress
      	delay/postponoe
      	fixed:已修复。预示着测试可以进行回归测试
    

image.png

缺陷报告编写规范

  • 可复现
  • 唯一性
  • 规范性

image.png

禅道使用

用例编写:

image.png

bug提交:

image.png

二、web项目

1、环境搭建

web服务器(对前端的请求进行存储转发处理的应用服务)

  • Apache:稳定性好,对于PHP项目的支持很好
  • Nginx:并发性(性能)比较好,常和其它web服务器一起结合用
  • Tomcat:针对java项目进行的web服务器的部署
  • IIS:针对Windows Server系统的web服务器的部署

搭建环境

构成组件

(网络下载安装)
    操作系统
	linux
    数据库软件
	MySQL
    web服务软件
	Apache
	Nginx
	Tomcat
	...
    开发语言工具
	php
	jdk
(开发提交)
    项目代码文件

image.png

搭建方式

php项目:

  • Windows:WAMP
  • Linux:LNMP、LAMP

测试环境

  • 本地测试环境

  • 预生产环境:和正式环境用的数据库一样,只是外部人员访问不了

其它环境:

  • 开发环境

  • 生产环境/正式环境/用户环境

2、熟悉项目

四个步骤

① 项目给谁用的

image.png

② 项目的组织架构图(模块)

image.png

③ 项目的核心模块有哪些

image.png

④ 项目的业务逻辑

tpshop商城是一个单商户的购物商城,可以实现商品的线上销售活动。

核心业务流程:

  • 前台购买流程:

     注册登录—搜索商品—选择商品—下单支付(货到付款)
     后台收款后—前端进入我的订单详情—查看订单状态—确认收货—评价完成
    
  • 后台发货流程:

      后台订单管理—确认订单—发货确认—收款
    
  • 商品退换货流程:

      前台发送售后申请
      后台进行退换货审核—审核通过—原路退款
      前端用户查看个人账户余额
    

image.png

项目的技术栈(了解):LNMP

image.png

三个来源

  • 文档:需求说明书、原型图、UI设计图
  • 环境:测试环境
  • 人员

适用场景

  • 简历项目
  • 进入公司首先干的事

3、测试流程

作用:有序有效开展测试工作的基本步骤(面试问题:你们公司如何做软件产品的测试的?)

需求评审:对产品编写需求文档进行评审和评估的过程

	人员
		产品、开发、测试
	形式
		会议形式
		邮件形式
	评审职责
		看懂理解
		指出错误
		给出建议

image.png

编写测试计划和测试方案

实施测试过程中需要的方法、范围、设备、资源、时间等信息

  • 测试计划的核心内容:(做什么、谁来做

      明确的测试目标和测试范围
      	测试目标:最终要达到的要求
      	测试范围:测试多少?
      执行计划的角色与职责
      	什么人干什么事
      任务的进度安排与资源分配
      	花费多长时间,需要哪些资源设备
      风险估计和应急计划
      	可能遇到的风险,以及如何应对
      测试的准入/准出标准
      	什么时候开始,什么时候结束
    
  • 测试方案的核心内容(在方向上明确怎么测,分析结果重点在于测试策略和技术实现):(怎么做

      测试策略
      	具体使用的方式方法,如何完成测试工作
      测试环境的规划
      	具体实施需要的测试环境
      测试工具的设计和选择
      	具体实施测试工作可能需要的一些工具
    

image.png

测试用例设计和评审

根据需求将需要转化为具体可以验证的测试点

测试执行并提交缺陷

根据评审之后的用例进行执行验证产品质量

编写测试报告

对整体测试过程的总结和质量的说明

4、测试设计思路

  • 熟悉需求(文档、环境、人员)

  • 测试点整理(整理到可以直接编写测试用例)

    根据需求拆分不同的功能点:
        观察法
        用例设计方法
    可以按照原型图拆分:
        所见及所测(与被测对象紧密相关的)
    
  • 编写测试用例(按照测试模板编写)

  • 评审测试用例(查漏补缺、理解一致、指导执行)

  • 执行测试用例(顺序执行、按照优先级执行)

  • 缺陷跟踪

    测试失败:
         提交bug
      	   可复现
      	   唯一性
      	   规范性
         验证bug
      	  回归测试——>验证版本号
    测试通过:
         pass
    

5、测试设计案例1——轮播图(前端)

熟悉需求

测试点整理image.png

测试用例编写

image.png

评审测试用例

image.png

image.png

执行测试用例

缺陷跟踪

image.png

测试过程中的问题

1、轮播图中,用到了后台的设置,那么后台的操作与这儿轮播图的测试间的关系是?
	首先确定测试的范围——前端的轮播图功能
	后台的配置和操作应用都是为前台做服务的(要求后台的服务功能都正常)
2、在设计测试用例之前,如果对于需求中的部分描述还不够清楚怎么办?
	直接问产品、问测试老员工

6、测试设计案例2——购物车(前端)

熟悉需求

购物车作用:将我们临时相中商品添加到购物车,方便最后下单结算

整理测试点

image.png

image.png

image.png

编写测试用例

image.png

评审测试用例

执行测试用例

缺陷提交

7、测试设计案例3——会员(后端)

会员管理

熟悉需求

image.png

整理测试点

image.png

image.png

编写测试用例

image.png

评审用例

执行用例

image.png

缺陷提交

添加会员

明确需求

拆分测试点

image.png

image.png

image.png

编写测试用例

image.png

评审测试用例

执行测试用例

image.png

缺陷提交

image.png