软件测试的生命周期: 需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估
1、发现问题的版本
开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于统计和分析每个版本的质量。
2、问题出现的环境
环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。
3、错误重现的步骤
描述问题重现的最短步骤。
4、预期行为的描述
要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。
5、错误行为的描述
描述错误的现象。crash等可以上传log,UI问题可以有截图。
6、其他
某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。
7、不要把多个bug放到一起
在无法确认是同一段代码造成的故障时,不要将bug放在一起提交。
测试用例(Test Case):是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素
评价测试用例的标准:
测试用例的设计方法
1.需求分析法: 按照需求去设计测试用例
注意:有多细致的需求就有多细致的测试用例(用户需求和软件需求)
原则:(1)验证需求的正确性;
(2)软件功能是不是和需求相符合
2.等价类: 针对输入无法全部覆盖,根据需求把输入分为若干个等价类,从每一个等价类中寻找出拥有代表性的数据进行测试,如果测试通过,我们就说这个数据代表的等价类测试通过。
目的:解决输入无穷的一种测试用例设计方法;
有效等价类:符合规格说明,对程序来说有意义的数据集合
无效等价类:不符合需求规格说明的
例1: 用户名输入5-16位字符(字母)
有效等价类:5-16位字母,大写字母,小写字母,大小写混合;
无效等价类:0-4,>16位,特殊字符,数字,
3.边界值: 针对输入输出边界值的测试
例:用户名是4-16位的字符
边界值:3,4,5,15,16,17
备注:边界值和等价类结合在一起设计测试用例
4.因果图: 表示输入和输出关系的一种逻辑图
使用场景:当需求有多个输入的时候,并且需求的输出和输入相关的时候,我们就用因果图法;
因果图法逻辑关系:
(1)恒等:输入为真,输出为真;
(2)与:当输入有多个条件(大于一个,并且这多个条件都为真的时候,那么输出为真);
(3)或:当输入有多个条件,只要其中一个输入为真的时候,那么输出为真;
(4)非:输入为假,输出为真;
步骤:
1)找出可能的输入和输出
2)找出输入和输出之间的关系(恒等,与,或,非)
3)画因果图
4)根据因果图去画判定表
5)根据判定表生成测试用例
例:
继续以注册的需求为例:
姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册
需要设计多少用例?2x2x2x2x2
5.正交法: 当测试用例很多,无法全部覆盖的时候,利用正交性,画出正交表,寻找出有代表性的点,针对这些数据进行测试用例的设计和测试结果的分析,用以推断整体的试验情况。
因素:待考察的变量(C)
水平:考察变量(因素)的取值(T)
行数:L=N(CT)=(水平数-1)*因素+1
正交表的性质:
(1)每一列中数字出现的次数一样的
(2)任何两列中,各个有序对数出现的次数一样多
正交法设计测试用例的步骤:
1、有哪些因素(变量)
2、每个因素有哪几个水平(变量的取值)
3、选择一个合适的正交表
4、把变量的值映射到表中
5、把每一行的各因素水平的组合作为一个测试用例
6、加上你认为可疑且没有在表中出现的用例组合
例:
1、因素:姓名、邮箱、密码、确认密码、验证码
2、水平:填写、不填写
3、表中的因素数=5;
表中至每个因素数的水平数=2
行数取最少的一个,即试验次数最少的一个
L=N(TC)=(2-1)*5+1=6=6(25)
L=6(25) // N试验次数、T水平数、C因素数
6.场景法: 场景法将多个功能点组合在一起形成事件流,根据不同的事件触发,形成不同的场景:
银行卡取款例子:
插卡—>输入密码—>输入取款金额—>取款—>退卡
(1)基本流:没有任何异常事件发生的条件下的场景;
(2)备选流:发生了异常情况的场景;
输入密码错误:第一次输错,第二次输对;二,三次密码都输错,账户冻结
当输入金额大于银行卡余额的时候,会提示余额不足,取款流程操作过慢,吞卡
7.错误测试法: 靠着以往的直觉和经验来找出代码的错误。
依据:
(1)直觉,经验
(2)用户的反馈
(3)故障库
备注:错误猜测法只适合用其他测试用例设计法设计测试用例完成后,进行测试用例的补充;