课程目标
- 1.针对测试用例的万能思路 – 针对面试题中某个物品/功能来进行测试 (面试常考题)
- 2.设计测试用例的方法 :
-
- 基于需求的设计方法
-
- 等价类
-
- 边界值
-
- 因果图
-
- 正交排序
-
- 场景设计法
-
- 错误猜测发
- 3.在面试中由两类常考题:
-
- a.针对面试题中某个物品/功能来进行测试
-
- b.手撕代码 或者 简历上的项目 中 来设计测试用例。
1.针对测试用例的万能思路
如下图、我们以水杯为例把想到的写到一起,我们发现可以分类写测试用例。
万能公司:功能测试,界面测试,性能测试,兼容性测试,易用性测试,安全测试。
编写测试用例的工具:
- 百度脑图,思维导图
- excel表格
万能公式:功能测试,界面测试,性能测试,兼容性测试,易用性测试,安全测试。
功能测试:先梳理水杯的功能是什么。
界面测试:大小,形状,颜色,材质。
性能测试:登录注册,同时由千万人访问注册的接口。
兼容性 : 系统版本,软件的版本,不同的浏览器。
易用性:是否简单。
安全性: SQL注入,XSS漏洞,越权,垂直越权,水平越权。
2.针对有需求的案例来设计测试用例
前面杯子的案例是针对没有需求的案例来设计测试用例的思路。如果有需求文档,按照如下流程进行,在测试需求点可以使用到万能公式来设计测试用例,还有就是我们接下来要学习的针对特殊需求设计用例的方法。
如下为需求文档、
软件需求规格说明书
一、用户需求:
平台支持邮箱注册
二、软件需求:
1.1.1.1 注册账号
1.1.1.1.1 功能概述
用户可以通过填写邮箱信息在平台注册个人用户。
1.1.1.1.2 用户角色
匿名用户。
1.1.1.1.3 前置条件
无。
1.1.1.1.4 输入
| **序号** | **栏位名称** | **栏位说明** | **长度** | **类型** | **备注**|
|------ | -------- | ------------------- | ------- | ------ | ------ |
| 1 | 姓名 | 必填,录入个人姓名 | 6至15 | 字符型 ||
|2 | 电子邮箱 | 必填,录入电子邮箱 | | 字符型 ||
| 3 | 密码 | 必输,输入的密码隐藏*号显示,最短6位 | 6至15 | 字符型 ||
|4 | 确认密码 | 必输,输入的密码隐藏*号显示,最短6位 | 6至15 | 字符型 | |
| 5 | 验证码 | 必填,录入验证码 | | 字符型 ||
|6 | 注册 | 注册操作 | | 操作型 |
| 1.1.1.1.5 处理
1.1.1.1.5.1 基本事件流
1、 用户选择注册;
2、 系统展现用户协议界面,并请用户确认是否同意用户协议
1) 若用户不同意协议,系统禁止用户注册。
2) 若用户同意协议,用户进行注册信息填写。
3、 用户填写注册信息。
注册个人,填写:姓名,电子邮箱,密码,确认密码,验证码。
4、 用户提交注册信息;
5、 系统提示用户并向用户注册的电子邮件地址发送一封含有激活信息的电子邮件。系统并提示用户,若未收
到激活邮件,可使用注册的邮箱和密码登录系统后再次发送激活邮件。
6、 用户可执行激活操作,直接跳转至注册邮箱门户页面。
7、 用户通过接收到的电子邮件中的激活信息激活账号,用户注册完成,流程结束。
1.1.1.1.5.2 扩展事件流
1. 用户注册并激活成功后,第一次登录平台时,提示用户完善信息;
1.1.1.1.5.3 异常事件流
1. 若用户未收到激活邮件,可在登录界面录入电子邮件及密码后,再次发送激活邮件。
2. 每次发送的激活邮件,仅在发送邮件后起24小时之内有效,超过24小时后需重新发送激活邮件。
1.1.1.1.6 输出
用户注册成功
1.1.1.1.7 后置条件
该模块为用户登陆等的前置模块。
基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计;
如下图,根据设计测试用例的流程图,我们可以将需求划分为两个功能需求,登录和注册,在对每个功能来编写测试点。
2.1 等价类法
假如说给定的软件需求就是:提示姓名长度为6-15位。我们可以穷举法来编写测试用例,但是如果姓名长度范围变大,那么穷举法是不适合的。
等价类的概念:
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
根据等价类划分测试用例的步骤:
- 有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能
- 无效等价类:根据需求说明书,不满足需求的集合。
等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。
案例分析:
- 以提示姓名长度为6-200位为例子。
- 有效等价类:6~200.
- 无效等价类:长度小于6大于200,字符类型:字符串,特殊字符.
- 从等价类中选出多个测试用例。如下图所示:
2.2 边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
案例分析:
- 以姓名可输入6-200位的字符为例。
- 边界值分类:
-
- 边界值
-
- 次边界值
-
- 6,200为边界值,5,7,199,201为次边界值
2.3 判定表
判定表设计测试用例的步骤:
- 确认输入条件和输出条件
- 找出输入条件和输出条件之间的关系
- 画判定表
- 根据判定表编写测试用例
案例分析:
- 需求:订单已提交,订单合计金额大于300或者订单有红包。则有优惠,否则无优惠。
- 1、编写判定表:
- 2、输入条件:金额大于300(A), 红包(B), 订单已提交©。
- 3、输出条件:有优惠,无优惠。
- 4、 找出输入条件和输出条件之间的关系: AC,BC、ABC,C,A,B,AB,非ABC ,枚举子集:n个元素的全部子集数量为 2 n 2^n 2n个,时间复杂度为 O ( 2 n ) O(2^n) O(2n)。
- 其中例如,AC,BC有优惠,C、A,B、无优惠。
- 如下图所示画出判定表:
- 5、根据判定表编写测试用例
-
-
- 金额大于300元,无红包,提交订单,结果有优惠 。
-
-
-
- …………
-
2.4 正交法
判定表太多测试用例怎么办? 正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
先了解一些基本概念,可能看不明白,但是在写案例时就明白了.
正交表:
- 因数数:输入的条件
- 水平数:输入条件对应的结果(不是输出条件)
正交表的特性:
-
- 每一列中,不同的数字出现的次数相等。
-
- 任意两列中数字的排列方式齐全而起均衡.
如何编写正交表:
-
- 正交表编写难度高,需要借助工具生成.
通过正交法设计测试用例的步骤:
-
- 找到因素数和水平数
-
- 用allparis工具来生成正交表
-
- 根据正交表来编写测试用例
-
- 补充测试用例 - - 正交表的测试用例并不全,以核心的测试用例来换取较高的覆盖率.
案例分析:
-
需求:用户注册信息填写, 姓名,电子邮箱,密码,确认密码,验证密码
-
- 找到因素数和水平数
-
- 因素数: 姓名,电子邮箱,密码,确认密码,验证密码
-
- 水平数: 填写,不填写
-
- 用allparis工具来生成正交表,如下图:
- 用allparis工具来生成正交表,如下图:
-
注意:可能生成的文件是乱码,可以将结果文件以.xls后缀命名,然后以文本的方式打开.
-
- 根据正交表来编写测试用例, 如下图第七点为补充测试用例.
- 根据正交表来编写测试用例, 如下图第七点为补充测试用例.
2.5 场景设计法
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触
发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者
设计测试用例,是测试用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功
能细节忽视业务流程要点的错误倾向
案例: