TA的每日心情 | 开心 2016-6-30 11:26 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
最近读书看到一些测试方法的介绍,虽然是作者的一家之言,但我觉得也说清楚了一些东西,特意记录下来,现在来分享一下:
a. 黑盒测试: 测试工程师只是根据用户的输入和对测试后应用程序的预期计算结果来设计测试用例(即只考虑输入输出)
黑盒测试包括:
i. 基于用户的测试
ii. 基于系统或者需求的测试
iii. 可用性测试
iv. 行为测试
b.白盒测试: 白盒测试通常关注算法的逻辑流程和数据流.逻辑流程重点在每个程序段的执行和条件分支.数据流程关注每一个输入的可变路径
白盒测试包括:
i. 单元测试
ii. 边界值或安全性测试
iii. 结构化测试
iv. 审查代码自动化(现在有代码分析工具)
c.灰盒测试: 灰盒测试像黑盒测试一样通过用户界面测试输入与输出,也因为测试人员在某种程度上了解软件的设计或者代码片段,所以也像白盒测试一样进行某些确定的条件/数据进行测试
d.基于场景的测试: 场景是一种带有假设条件的故事
测试场景的建立:
i. 记录下系统每一个重要对象从生到死的过程,即它的生命周期
ii. 列出可能的用户,分析他们的兴趣点和目的
iii. 列出潜在的系统破坏者, 从他们为什么要破坏本系统 的出发点来分析
iv. 列出系统事件,以及特别的系统事件
v. 观察用户行为
vi. 分析同类系统和竞争对手的系统
vii. 试图把本系统放到现实环境中去考虑它的运行行为
viii. Given-When-Then场景描写法
Given: 前提条件
When: 当前条件(输入)
(And When): 当前同时发生条件
Then: 结果(预期输出)
e. 等价类法: 等价类划分的办法是把程序输入数据合理划分为数个集合,然后从每个集合中选取少数有代表性的数据作为测试用例, 可以认为这些数据在测试中的作用就等价于这一类的其它值
例子: 如果要测试一个日期的输入框, 我们可以先把年,月,日的有效值范围列出,然后列出年,月,日有特殊规定的范围, 最后再列出年, 月, 日的无效范围
输入数据
| 有效值
| 无效值
| 日
| v1 = 31(31日的月份)
v2 = 30(30日的月份)
v3 = 1 - 28(普通月份与普通2月)
v4 = 29(普通月份与闰年2月)
| i1 = 0
i2 = <0
i3 = >31
i4 = null
i5 = 非整形
i6 = 非数字
| 月
| v5 = 1, 3, 5 , 7 , 8, 10, 12(有31日的月份)
v6 = 4, 6, 9, 11(30日的月份)
v7 = 2
| i7 = <1
i8 = > 12
i9 = 非整形
i10 = 非数字
| 年
| v8 = 0000 - 9999(非闰年)
v9 = 0000 - 9999(闰年)
v10 = 0000 - 9999(世纪闰年)
| i11 = <0
i12 = > 9999
i13 = 非整形
i14 = 非数字
| 特殊值
| v11 = 1752年9月3日 - 1752年9月13日
| 无
|
有了上面这个表, 很容易就可以使用组合方法得出具体的测试用例
b.边界值法: 边界值法是等价类的补充, 专用于分析输入,输出域的边界
i. 除了留意Spec中规定的边界外,还要留意编程语言的变量边界,比如上面表中的年月日, 开发为了控制年月日的范围先将输入的字符转换为数字,然后存放入整型数中再作对比的话, 如果输入一个超过编程语言能支持的大数(比如C#的整型就支持到2147483647, 如果输入大于这个数, C#就会报错),而开发没去控制的话,一样会出错
ii. 另外边界值常用的数值有min-1, min, min+1, normal, max-1, max和max+1
iii,要注意如果软件同时有多个值需要测试边界值时,必须一个一个来测试,在其中一个值测试时,另外的输入需要保持在一个合理的值范围内
c.判定表法: 判定表将条件, 输入与结果列在同一个表格内, 可以直观地看出在不同条件/输入下, 相同的输入/条件会出现哪些结果
i. Interrupt table就是一种很典型的判定表
ii. 等价类的有效值集合实际上也可以用判定表写出来
iii. 于等价类一样, 实际上判定表列出后,可以找出其中等价的条件来精简判定表以减少测试用例的数量
d. 组合分析法
i. 实际上组合分析法就是将所有可能的条件组合起来,它是与等价类相反的方法
ii. 根据经验来说, 多数的问题在两两组合的时候就已经能测试出来
iii. 但不合逻辑或者机率很少的组合,也可以废弃以减少测试用例的数量
e. 状态转换表: 用表格或者图来列出软件在不同模块/状态/事件之间的切换的条件与路径
i. 创建一组测试用例从而所有状态都能至少被访问一次
ii. 创建一组测试用例从而所有的事件能至少被触发一次
iii. 创建一组测试用例从而所有的路径都能至少被走了一次
v. 创建一组测试用例从而所有的转换都至少被操作一次
|
|