常用的测试方法:
1 黑盒测试方法:
(1) 等价类划分
有效等价类 & 无效等价类
Eg: 如果要求x的取值范围为:x>1 && x<999
则有效等价类: 1<x<999
无效等价类:x>=1, 或者x>=999
常见的有:规定输入值的范围,输入条件规定了取值的个数,输入条件规定了一个输入值的集合,如果存在输入条件规定了“必须是”的情况。
等价类划分的例子:
• 设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。
解析:
年份: 199001<=year<=201912
日期:由四位数字组成
月份:01<= month <=12(隐藏条件)
分析的有效等价类和无效等价类:
输入等价类 | 有效等价类 | 无效等价类 |
日期的类型及长度 | ①6位数字字符 | ②有非数字字符 ③少于6位数字字符 ④多于6位数字字符 |
年份范围 | ⑤在1990~2049之间 | ⑥小于1990 ⑦大于2049 |
月份范围 | ⑧在01~12之间 | ⑨等于00 ⑩大于12 |
(2) 边界值分析
是指输入和输出等价类中哪些恰好处于边界、或超过边界、或在边界以下的状态。
除了关注输入条件,还需要考虑从结果空间来设计测试用例。
l 如果输入条件规定了值的范围。 1<X<2 ,则取边界值的值,以及刚好超过这个范围边界值的值作为测试输入数据。
l 如果输入条件规定了值的个数。则用最大个数、最小个数,比最大个数大1,比最小个数小1.
l 如果程序的规格说明给出的输入域或输出域都是有序集合,则应该选取集合的第一个元素和最大一个元素作为测试用例。
(3) 因果图
(4) 水平组合方法:
a)判断表: 是分析和表达多逻辑条件下执行不同操作的情况的工具。
全面实验法 + 化简
判定表的组成:
判定表通常由四个部分组成,如下图:
1) 条件桩(ConditionStub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
2) 动作桩(ActionStub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
3) 条件项(ConditionEntry):列出针对它左列条件的取值。在所有可能情况下的真假值
4) 动作项(ActionEntry):列出在条件项各种取值情况下采取的动作
实例:http://www.51testing.com/html/03/n-220303.html
b) 简单对比法:
即变化一个因素而固定其他因素。
c)正交试验法
水平因子、因素数
正交表的行数 = (水平因子-1) * 因素数 + 1
例如:
A1:0,1
A2:0,1
A3:0,1
A4:0,1
则全面实现的实验次数:2*2*2*2 = 16
正交表的实验次数:1*4 + 1 = 5
L9(34)
3:表示水平因子数
4 表示因素数
9 表示实现次数
正交表是有一定的规则生成,可以利用工具生成正交表。http://wenku.baidu.com/link?url=gM_S8pPgS853DRpKdloPO9JK6kzlfACeum-X158aruaqHQ_okhbHN0HI1mq9ii-wzhERj2TbV8XtepkEfuM5Jw06Ac9zsvcf9KNJPRtZ2My
是一些常用的正交表。
(5) 错误猜测
2 白盒测试方法:
If(A & B){
语句1;
} else{
语句2;
}
(1) 语句覆盖率:每条语句都执行一遍。是最弱的覆盖。
Case1 : A= false
Case2 : A=true, B=true
(2) 判定覆盖:使得程序中每个判断的取真分支和取假分支至少执行一次。满足判定覆盖则一定满足路径覆盖。
Case1: A=true,B=true
Case2: A=true, B=false
(3) 条件覆盖:使判定中的每个条件都能去到真和假两个结果。
A =true、 A = false、B=true、B =false
测试用例:
Case1: A =true B =true
Case2: A=false B = false
(4) 判定/条件覆盖: 使判定中的每个条件都能取到真假两个值,并且是判断出现真假两种情况。
Case1: A=true B=true
Case: A=false B= false
(5) 条件组合覆盖:使每个判断中条件结果的所有可能组合至少出现一次。
(6) 多重条件覆盖:满足判定覆盖、条件覆盖和 判定/条件覆盖准则。
将每个判定中的所有可能的条件结果的组合以及所有的入口点都至少执行一次。
Case1: A=true B=true
Case2: A=true B =false
Case3: A=false B =true
Case4: A=false B= false
(7) 路径覆盖:要求覆盖程序中所有可能的路径。
Case1: A=true B =true
Case2:A=false B=true
实例参考: http://blog.csdn.net/nashviller/article/details/7383814
测试的策略:
(1) 黑盒测试 & 白盒测试
(2) 手工测试 & 自动化测试
(3) 测试的目的:
功能测试 : 单元测试 & 集成测试 & 系统测试 & α测试 & β测试
非功能性测试: 安全测试 & 性能测试 & 兼容性测试
(4) 测试的时机和作用分类:
冒烟测试、BVT(Build verification Test):验证构建是否通过基本测试,Acceptancetest(验收测试):为了全面考核基本功能/特性而做的测试。
(5) 按照测试策略分类:回归测试 & 探索性测试(Ad hoc Test) & Santiy Test(粗略的测试)