软件测试方法
基于直觉和经验方法
针对易用性测试
-
Ad-hoc测试方法,开放测试
-
ALAC:基于用户使用产品的经验知识进行系统测试
-
错误推测法:测试者根据自己的工作经验、专业知识和直觉来推测出软件中可能存在的各种错误,从而对被测软件采用针对性的测试
基于输入域方法
等价类划分法:
-
将所有可能的输入数据划分成有限的或无效的若干个等价类,然后从每个等价类中选出一个输入数据作为代表形成测试用例
-
输入规定了取值返回或定值
-
规定了有效输入集合
-
输入是布尔值
-
允许输入n组数据值,并且程序要对每组输入值分别处理的情况下,可将范围内的值域确定n个有效类,和一个范围外的无效等价类
-
业务规定了输入遵守规矩的情况下,确定一个有效等价类【符合规矩】和若干无效【从不同角度违反规矩】
有效等价类:输入8位数字
无效等价类:输入小于八位数字、输入大于八位数字、输入小数、输入字母、输入非数字符号【?】
边界值分析法
-
如果输入数据规定了值的范围,则可选取刚达到这个范围的边界值,以及刚刚超越这个范围边界的值作为测试输入数据
99 101 19999 20001 都行
-
特殊边界值测试
-
在输入界面内,可以采用默认值、空值、空格、无效数据、垃圾数据等输入数据作为边界测试软件是否存在缺陷
-
项目名称:空值、全为空格、51个字符、49个字符、垃圾数据
同上
基于组合及其优化方法
等价类划分和边界值分析只适用单个因素输入
判定表
-
设计步骤
-
列出所有的条件桩和动作桩
-
填入条件项
-
填入动作项,设计初始判定表
-
简化、合并相似规则
-
因果图法
-
问题探讨:
-
有一个自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。请设计其因果图和判定表,并给出相应的测试用例。
-
成对组合测试方法
实际软件项目中,每个输入变量有多个值
-
成对组合测试方法基本思想:每两个输入变量所有取值组合形成不同的测试用例
-
完整:3x3x3x3 = 81
-
成对
下面通过一个例子来理解测试过程:
假设有一个包含10个元素的列表框,可以接受1到100个字符的文本框,单选按钮,复选框和确定按钮。
输入值在下面给出,可以由给定函数的字段接受。
-
复选框 - 已选中或未选中
-
列表框 - 0,1,2,3,4,5,6,7,8,9,
-
单选按钮 - 开或关
-
文本框 - 1到100之间的字母数。
-
确定按钮 - 不接受任何值,仅重定向到下一页。
计算所有可能的组合:
Check Box = 2 List Box = 10 Radio Button = 2 Text Box = 100 Total number of test cases = 2*10*2*100 = 4000
测试用例总数(包括负测试用例)为4000。
测试4000个测试用例,是一个非常漫长而耗时的过程。因此,测试团队的任务是减少测试用例的数量,为此,测试团队认为列表框的值是第一个值为0,另一个值可以是任何数字, 现在十个值转换为2个值。
复选框和单选按钮的值不能减少,因为每个值只有2个值的组合。最后,文本框的值分为三个输入类别:有效整数,无效整数和alpha特殊字符。
现在,我们只有24个测试用例,包括负面测试用例。
2*2*2*3 = 24
现在,任务是为所有对技术组合,每列应具有相同数量的值,并且总值应等于24。
要使用文本框列,将最常见的输入放在第一个有效整数的位置,在第二个位置放置第二个最常见的输入是无效的整数,并在最后一个位置放置最不常见的输入是一个alpha特殊字符。
然后开始填充表格,第一列是一个包含三个值的文本框,下一列是一个包含2个值的列表框,第三列是一个包含2个值的复选框,最后一个列是一个单选按钮有2个值。
文本框 | 列表框 | 复选框 | 单选按钮 |
---|---|---|---|
有效整数 | 0 | 选中 | ON |
有效整数 | 其它 | 未选中 | OFF |
无效整数 | 0 | 选中 | ON |
无效整数 | 其它 | 未选中 | OFF |
AlphaSpecialCharacter | 0 | 选中 | ON |
AlphaSpecialCharacter | 其它 | 未选中 | OFF |
在表中,可以看到传统的软件方法产生的是24个测试用例,而不是4000个案例,而成对测试方法仅在6对测试用例中。
示例来自w3c
正交实验法
正交试验设计一般包括以下几步:
①确定研究因素和指标水平;②制作成正交试验表格;③实施试验;④试验结果分析
用一个例子来说明,某网站推出了不同规格的电脑,想了解哪种方案销售量最好。
在不使用正交表的情况下进行测试,尝试所有可能的方案总共3×3×3=27种。
①确定因素和水平
因素是指作为研究对象的参数或指标。水平是一个因素的可取值的。例如,性别有两个取值,即男性和女性,因此有两个水平。
从上面的表格中可知,本次试验共确定3个因素分别是尺寸、颜色、价格。各因素确定如下,水平数均为3 :
②制作成正交试验表格
注:此处来自网络,3因子且水平数均为3应该计算得到行数为=3*2 + 1=7。但规定使用的模型只有L934 所以需要添加一列,此处并未给出,可见下处的问题探讨。
如何填写用例?
观察得到:第一列按比例依次填写,后面的列保证每个取值在一个水平数的范围内个数相同即可
-
考虑因子和水平数
-
因子:3,员工号、姓名、邮件地址
-
水平数:均为2,填值和空值
-
-> L423
-
编号 | 因子1 | 因子2 | 因子3 |
---|---|---|---|
1 | 0 | 1 | 1 |
2 | 0 | 0 | 0 |
3 | 1 | 1 | 1 |
4 | 1 | 0 | 0 |
测试用例表
编号 | 员工号 | 姓名 | 邮箱 |
---|---|---|---|
1 | 空 | 填写 | 填写 |
2 | 空 | 空 | 空 |
3 | 填写 | 填写 | 填写 |
4 | 填写 | 空 | 空 |
-
水平数和因子的选择
-
因子:3,A、B、C
-
水平数:A = [80,85,90]、B = [90,120,150]、C = [5,6,7],水平数均为3
-
->L934 需要添加一列
-
编号 | 因子1 | 因子2 | 因子3 | 4 |
---|---|---|---|---|
1 | 1 | 1 | 1 | 随 |
2 | 1 | 2 | 2 | 便 |
3 | 1 | 3 | 3 | 填 |
4 | 2 | 1 | 3 | |
5 | 2 | 3 | 2 | |
6 | 2 | 2 | 1 | |
7 | 3 | 3 | 2 | |
8 | 3 | 2 | 3 | |
9 | 3 | 1 | 1 |
得到测试用例
作业分析
一:邮箱等价类划分
有效等价类如下:
(1) 邮箱输入字符串格式***@uestc.edu.cn
或* * *@UESTC.EDU.CN( * 为字母或数字)
无效等价类如下:
(2) *中带有非字母或数字的其他字符
(3) 邮箱输入字符串中缺少'@'字符
(4) 邮箱输入字符串中有2个及以上'@'
(5) 邮箱输入字符串@后不是标准的域名
测试用例
测试用例编号 | 测试用例 | 覆盖等价类 |
---|---|---|
1 | example@uestc.edu.cn | (1) |
2 | #example@uestc.edu.cn | (2) |
3 | exampleuestc.edu.cn | (3) |
4 | example@@uestc.edu.cn | (4) |
5 | example@domain.com | (5) |
二:使用边界值方法和等价类划分对三角形问题设计 。
1) 判断一般三角形的有效等价类是什么?无效等价类是什么?
2) 判断等腰三角形的有效等价类是什么?无效等价类是什么?
3) 判断等边三角形的有效等价类是什么?无效等价类是什么?
三角形判断条件
-
边长均大于0
-
构成一般三角形的条件:任意两边之和大于第三条边
-
构成等腰三角形的条件:任意两边相等
-
构成等边三角形的条件:三条边都相等
(1) 判断一般三角形的有效等价类与边界值规则设计
((a>0)∩(b>0)∩(c>0)) ∩ (((a+b) > c) ∪ ((a + c ) > b) ∪ ((b + c ) > a ))
判断一般三角形的无效等价类与边界值规则设计
1) ((a>0)∩(b>0)∩(c>0))∩(((a+b)<=c)∪((a+c)<=b)∪((b+c)<=a))
2)(a<=0 ∪ b<=0 ∪ c<=0)
(2) 判断等腰三角形的有效等价类与边界值规则设计
((a>0)∩(b>0)∩(c>0)) ∩ (((a+b) > c) ∪ ((a + c ) > b) ∪ ((b + c ) > a ))∩((a=b) ∪ (b=c) ∪ (c = a))
判断等腰三角形的无效等价类与边界值规则设计
1) (a != b ∩ b != c ∩ c != a)
2) (a <= 0 ∪ b <= 0 ∪ c <= 0)
(2) 判断等边三角形的有效等价类与边界值规则设计
((a>0)∩(b>0)∩(c>0)) ∩ (((a+b) > c) ∪ ((a + c ) > b) ∪ ((b + c ) > a ))∩((a=b=c)
判断等边三角形的无效等价类与边界值规则设计
1) (a != b != c)
2) (a <= 0 ∪ b <= 0 ∪ c <= 0)
测试用例编号 | 测试用例输入(a,b,c) | 预期结果 |
---|---|---|
1 | (5,6,8) | 一般三角形 |
2 | (5,6,5) | 等腰三角形 |
3 | (5,5,5) | 等边三角形 |
4 | (5,0,5) | 非三角形 |
5 | (2,2,5) | 非三角形 |
三:
函数输入变量Y,M,D,均为正整数
满足条件
-
1900 <= Y <= 2100
-
1 <= M <= 12
-
1 <= D <= 31
-
有闰年平年之分
输入参数 | 有效等价类 | 无效等价类 |
---|---|---|
Y | 1900<=Y<=2100 Y1闰年 Y2平年 | <1900、>2100、非正整数、其他符号 |
M | 1<=M<=12 M1{1,3,5,7,8,10} M2{4,6,9,11} M3{2} M4{12} | <1 >12 非正整数 其他符号 |
D | 1<=D<=31 D1{1,27} D2{28} D3{29} D4{30} D5{31} | <1 >31 D6 其他正整数 其他符号 |
基于逻辑覆盖方法
-
逻辑覆盖是一种以程序内部逻辑结构为基础的白盒测试方法,具体分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、基本路径覆盖
语句覆盖方法
-
基本思想:设计若干测试用例,使得被测程序的每个可执行语句至少执行一次。
-
能解决的问题:发现程序中一些永远不能被执行的语句缺陷,但不能发现程序中的语句逻辑错误。
判定覆盖方法
-
试图覆盖程序中所有路径的测试方法称为路径覆盖。路径测试的最简单形式就是判定覆盖测试
-
基本思想:使得程序中的每个判定语句的取真和取假分支至少执行一次,也称为分支覆盖测试
条件覆盖方法
-
基本思想:使得每个判断中的每个条件的可能取值至少满足一次
-
条件即判断中的每个不可分割的不等式表达式
-
满足条件覆盖不一定满足判定覆盖
判定-条件覆盖
-
找出符合判定和条件覆盖的用例交集
-
即满足对每个条件的取值,通过组合也满足对每个判断的取值
-
条件组合覆盖
-
基本思想:设计足够多的测试用例,使得判断中每个条件的所有取值情况至少出现一次,并且每个判断本身的判定结果也至少出现一次。
-
即先根据判断中的条件,对条件的不同取值进行组合,然后再将不同判断中的条件一一组合,称为测试用例的覆盖条件
基本路径覆盖
-
基本思想:覆盖所有可能的分支路径
基本路径覆盖测试用例设计步骤: ①依据代码绘制流程图 ②确定流程图的环路复杂度 ③确定各个独立路径的基本集合 ④设计测试用例覆盖每条基本路径
-
计算环路复杂度:判断节点数目+1,V(G)确定了程序独立路径
基于缺陷模式的测试
基于模型的测试
课堂练习
-
C
-
D
-
C
-
D
-
B
-
B
-
C
-
D
-
C
-
D