软件测试的生命周期
- 需求分析:分析需求,细化需求,验证需求的正确性和合理性
- 测试计划:规划测试人员数量,规划时间、测试范围,测试目的
- 测试设计:从细化的需求中提炼出功能点,设计测试用例
- 测试执行:执行测试用例,记录BUG
- 测试报告:测试的返回有多少个测试用例,执行了多少,余留了多少,发现了多少BUG,修改了多少,验证了多少,余留了多少,以及解决方案
BUG
如何描述一个BUG
- 版本号(代码版本号)
- 测试环境(平台、系统)
- 测试步骤(数据)
- 实际结果、预期结果(需求一致)
- 附件(错误截图、错误日志等)
不同浏览器对同一个系统的同一个页面解析是不一样的
BUG的级别
- 崩溃
系统运行阻断,严重影响了开发人员和测试人员的工作,需要立马修复
线上出现崩溃级别的BUG怎么办?
- 回退到一个稳定的版本
-
严重
系统还可以运行,但是不稳定,若再运行下去,会产生严重后果
eg:直播画面失真,密码明文显示 -
一般
系统可以稳定运行,但是一些次要功能没有实现,可能会影响用户体验 -
次要
影响用户的视觉体验
eg:界面的文字提示内容,展示图片的排版
要不要改和产品经理商量
BUG的生命周期
测试人员提BUG ,开发人员已修改,但是测试人员发现这个BUG依然存在,有哪些原因?
- 开发人员没修改好
- 开发人员未将代码更新到测试环境
- 测试人员未拉取到最新代码到测试环境进行发布
如果碰到一个BUG,和开发人员产生冲突怎么办?
- 先检查自己的BUG描述是否正确
- 检查BUG的等级是否按照公司的标准
- 站在用户的角度说服开发人员
- 不断提高自己的业务水平和技术水平
- 和开发人员、产品经理开会商量BUG的解决方案
测试用例
基本要素
同测试系统发起的一组集合:测试平台,测试数据,测试步骤,预期结果(测试方式,标题,重要性,优先级,功能模块等)
标准
- 用例表达清楚,无二义性
- 用例可操作性强
- 用例的输入与输出明确,一条用例只有一个预期结果
- 用例的可维护性好
- 用例对需求的覆盖率高
- 暴露程序Bug的能力强力
设计方法
根本依据
根据需求设计测试用例
- 分析验证需求的正确性和合理性
- 分析需求,细化需求,从需求中提炼功能模块,划分子功能
- 根据每个子功能去写测试用例
等价类
为了解决测试用例太多,输入没有办法穷举的情况
把输入(特殊情况下才考虑输出)划分为若干个等价类,从每一个等价类当中选一个测试用例进行测试,如果这个等测试用例测试通过,那么我们就说这个测试用例代表的等价类测试通过
有效等价类:根据需求规格说明,有意义的输入的数据集合
无效等价类:根据需求说明,不符合需求的
eg:用户名:必填,6 ~ 15,A ~ Z,不区分大小写
6 ~ 15 根据长度划分等价类
有效等价类:6 ~ 15 位
无效等价类:<6 位,>15 位
A ~ Z 根据字符类型划分等价类
有效等价类:A ~ Z,a ~ z 大小写混合
无效等价类:汉字,特殊字符(标点,空格),表情符号,A ~ Z,a ~ z 与其他混合
边界值
针对输入输出的边界进行测试用例设计
eg:6 ~ 15 测试:
5,6,7
14,15,16
等价类和边界值一般结合起来进行测试用例的设计
因果图法
因果图是一种逻辑图(恒等,与,或,非)
当输入有很多,不同的输入组合对应不同的输出,用因果图来分析不同 输入组合和不同输出之间的联系
逻辑
举例如下:
假设有房有车是结婚的条件
-
恒等
有房有车—>结婚 -
与
有房有车—>结婚
有房没车—>不结婚
没房有车—>不结婚
没房没车—>不结婚 -
或
有房有车—>结婚
有房没车—>结婚
没房有车—>结婚
没房没车—>不结婚
- 非
有房有车—>结婚
前面条件不成立(取反)—>结婚成立
步骤
- 分析出所有的输入输出
- 找出输入输出之间的逻辑关系
- 根据输入输出之间的关系画出因果图
- 根据因果图画判定表
- 根据判定表设计测试用例
eg:淘宝618活动,订单已提交,订单合计金额大于300 元,或有红包,则优惠
① 分析输入输出
输入:
金额大于300,金额小于等于300
订单已提交,订单未提交
有红包,无红包
输出:
有优惠,无优惠
② 找出输入输出之间的逻辑关系
订单已提交,订单金额大于300元,有红包,有优惠
订单已提交,订单金额大于300元,无红包,有优惠
订单已提交,订单金额小于等于300元,无红包,无优惠
订单已提交,订单金额小于等于300元,有红包,有优惠
订单未提交,无优惠、
③画因果图
④画判定表
⑤写测试用例
正交法
研究多因素水平的一种实验(测试)方法
根据正交性,从输入组合当中选取最优的组合进行试验,分析结果,通过这些最优结果得出的实验结果来分析这个实验的结果
因素:输入的变量
水平:变量的取值
构成
- 列:因素数,变量的个数
- 水平数:每个变量的最大值的个数
- 行:正交表的行=(水平数-1)*因素数+1
只适用于水平数相等的情况
当水平数不同时,正交表行的个数如何确定?
- 用工具或者直接查正交表
性质
- 每一列不同数据出现的次数一样
- 任意两列不同数据的组合出现的次数一样
步骤
- 确定所有的输入(变量)
- 确定每一个变量的取值的个数
- 确定因素数(正交表的列),水平数,正交表的行
- 根据正交表的性质,把变量的值映射到表中
- 写测试用例(正交表的每一行就是一个测试用例)
- 补充正交表中没有的但是你认为可能出现的测试用例
eg:注册:姓名、邮箱、密码、确认密码、验证码全部填写正确,设计测试用例
①输入
姓名、邮箱、密码、确认密码、验证码
②确定因素数:5
③确定:
水平数:2(填、不填)
正交表的列=因素数= 5
正交表的行=(水平数-1)* 因素数+1 = 1*5+1=6
④列表(满足正交表性质即可)
⑤写测试用例
每一行就是一个测试用例
⑥补充
全不填
全填
场景法
把一个个孤立的功能点按照一定的策略串联起来,形成一定的场景和业务
用事件触发控制流程(场景)
eg:ATM取款流程
插卡—>输入密码—> 输入金额—>取钱—>退卡
异常:
①插卡:插反,消磁,插错卡,卡挂失,注销,停留时间过长,卡被吞
②输入密码:
连续3次输错,账户被锁定
前一、两次输错,接下来输入正确
③输入金额:
输入金额>银行卡余额
ATM机本身余额不足
输入的金额<ATM机要求最少的金额
输入非100的倍数(ATM不允许)
超过每日最大可以取款的金额数
④取款:
长时间未取(看ATM是否吞钱)
遗忘了部分钱没有取
⑤退卡:退卡失败
⑥其它:ATM网络异常,断电,机器故障
步骤
根据异常点写测试用例
- 分析场景(业务)里的功能点
- 根据功能点找出正常和异常的输入输出
- 根据分析的结果去设计测试用例
错误猜测法
根据测试人员的知识,经验,直觉去判断哪一个模块会出现问题,专门针对这个模块进行测试用例的编写
作为一种补充的设计测试用例的方法
黑盒测试设计用例的方法有哪些?
- 等价类、边界值、因果图、正交法、场景法、错误猜测法
白盒测试设计用例的方法有哪些?
- 语句覆盖法、循环覆盖法、路径覆盖法、逻辑覆盖法