为什么要写测试用例
- 测试用例是测试执行的依据
- 测试用例可以复用,在进行回归测试的时候看 新添加/修改后 的功能,是否对其它功能有影响?
- 测试用例可以衡量需求的覆盖率,因为有了测试用例之后,你对照着需求,就可以进行查漏补缺。
- 后人可以借鉴,可以更好的帮助其他人一起学习
- 手工测试用例是自动化测试的依据
测试用例的基本要素
测试用例的基本要素就是 测试用例的 定义/概念:
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试。评价测试用例的标准:对比好坏用例的评价标准
- 用例表达清楚,无二义性
- 用例可操作性强
- 用例的输入与输出明确。一条用例只有一个预期结果
- 用例的可维护性好
- 用例对需求的覆盖率高
测试用例的设计方向:功能、性能、可移植性、界面、安全性、易用性。
QQ登录的测试用例
在设计测试用例的时候,也是通过需求来进行设计的。我们下面进行一次QQ登录的测试用例设计:
功能
正常时
- 账号密码正确是否能正常登录。
- 账号密码错误,不能登录且有提示。
- 输入密码时密码是否自动隐藏。
- 输入密码的小键盘是否能正常使用。
- 密码不能复制,但可以粘贴。
- 登录校验时,超时或者错误,不能登录且有对应提示。
- 勾选自动登录,下次是否可以点击确认即可登录。
- 勾选记住密码,下次登录时,不输密码就可登录。
- 取消勾线记住密码,下次登录时,需要重新输入密码。
- 扫码登录,是否可以登录成功。
- 二维码超时,不能登录成功且有提示。
- 点击失效二维码,可以刷新。
- 异地登录有警告或者登录校验。
- 设置登录状态后,登录后登录状态与设置的是否一致。
- 登录成功后该登录状态也可以更改
- 切换不同用户登录,可以登录成功。
- 切换用户登录,登录账号长时间未在本机登录,需要重新输入密码。
- 当密码/账号为空时,点击登录,不能登录且提示输入密码/账号再登录。
- 点击多账号登录,是否可以登录成功。
异常时
- 账号密码正确但被冻结,不能登录且有提示。
- 同一账户一登陆不能重复登录,且有提示。
- 登录时网络异常,有对应提示。
界面
- 界面排版是否和设计说明相符。
- 界面颜色是否和设计说明相符。
- 界面的大小是否和设计说明相符。
- 界面各部件点击后显示效果是否与设计说明相符。
- 头像是否显示正常。
- 登录加载界面是否显示正常。
易用性
- 登录功能指引是否人性化。
- 登录时按回车键是否可以登录。
- 输入框是否支持Tab切换
可移植性
不同操作系统,不同版本上QQ登录的各功能是否正常。
性能
- 打开登录页面的时间是否符合要求。
- 登录加载时间是否符合要求。
- 二维码弹出时间是否符合要求。
- 验证码验证时间是否符合要求。
- 占用CPU是否符合要求。
- 耗电量是否符合要求。
具体的设计测试用例的方法
等价类
就是根据输入(特殊情况下,才考虑输出),把输入划分成若干个等价类,从每一个等价类当中选择测试用例进行测试。如果这个测试用例,测试通过了。我们就说这个测试用例代表的等价类测试通过。就是在没办法穷举的情况下,通过等价类来实现。
边界值
其实就是 输入 和 输出 的边界。要针对 输入 和 输出 的 边界 进行 测试用例的设计。就像网易邮箱的注册:
错误猜测法
这里是根据 测试人员的经验 和 知识 的 积累,来猜测某一块功能可能有问题。随后,有针对性的进行测试用例的编写。
错误猜测法,有点类似于探索性测试,针对性比较强,比如:
- 搜索查询框当中用户输入的空格
- 搜索查询出的信息。比如说查询出的数据有500条,每页显示100条,但是发现不同的页面上有相同的数据,数据ID也是一样的。如果没有使用排序的话,就会进行随机抓取数据。使得不同的页面当中显示重复的数据
场景设计法
就是因为很多软件不同的场景, 都是基于不同事件的触发。不同事件的触发,会导致场景走向不同的 时间流 / 场景。场景设计法 就是把不同的功能点 给串起来了,形成一个场景。 要注意的是:不同的功能点有不同的输出,不同的输出就会导致不同的测试场景。还可以认为是将一个功能集成模块 给 拆分成一个个单独功能模块,进行设计测试用例。
因果图法
因果图是 一种逻辑图,它具有 恒等,与,或,非 逻辑。用因果图来设计测试用例,就叫做因果图法。它的使用场景如下:
使用 因果图法 设计测试用例 的 步骤 :
- 分析出所有的输入和输出
- 找出输入和输出之间的组合关系
- 根据关系画出因果图
- 根据因果图画出判定表
- 根据判定表写出测试用例
正交排列
就是根据正交性来设计测试用例的。是从大量的实验(测试)数据中根据正交原则 取出最优的数据的组合。然后,根据最优数据组合 实验的结果 来分析整个测试的结果。
正交排列的运用场景:为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
正交表的构成:
行数(Runs):正交表中的行的个数,即试验的次数,用N代表。
因素数(Factors):正交表中列的个数,用C代表。
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”,用T代表。
正交表的表示形式: L=行数(水平数*因素数) L=N(TC)
正交表的两条性质:
- 每一列中各数字出现的次数都一样多。
- 任何两列中的各有序数对出现的次数都一样多。
正交法设计测试用例的步骤:
- 有哪些因素(变量)
- 每个因素有哪几个水平(变量的取值)
- 选择一个合适的正交表
- 把变量的值映射到表中
- 把每一行的各因素水平的组合作为一个测试用例
- 加上你认为可疑且没有在表中出现的用例组合
测试用例的有效性
- 测试用例对应的功能已删除,不可操作了。呢么这个测试用例没有用了,没有意义了。比如说当前版本已经砍掉的功能,就没必要进行测试了。
- 测试用例的有效的范围比较小。就像:苹果7手机微信添加了mobile单车小程序,扫码不能开锁,只能使用mobile APP开锁,测试用例未涉及到苹果7微信小程序扫码开锁
- 可以发现bug,就是可以发现新功能的bug
- 可以测出以及修改完成的bug。