笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。
边界值分析
边界值选择基本原则
1)若输入条件规定了取值范围,则以范围为基础设计测试用例。
2)若输入条件规定了取值个数,则以个数为基础设计测试用例。
3)若需求规格说明指定了取值范围和个数,则结合原则1)和原则2)。
4)若I/O是一个有序集合,则选择该序列的首元素和末元素测试,进而考虑第二个元素和倒数第二个元素测试。
5)若明确知悉程序使用的数据结构,则测试这些数据结构的边界条件。
6)深入分析被测软件,从而发现隐含的边界条件。
边界值测试
普通边界值测试:基于单缺陷假设,只考虑输入取有效值。设计测试用例时,仅一个变量取极值,其他变量取正常值。
健壮性测试:基于单缺陷假设,输入既考虑取有效值又考虑取无效值。设计测试用例时,仅一个变量取极值,其他变量取正常值。
最坏情况测试:基于多缺陷假设,只考虑输入取有效值。设计测试用例时,多个变量取极值。
健壮最坏情况测试:基于多缺陷假设,输入既考虑取有效值又考虑无效值。设计测试用例时,多个变量取极值。
边界值测试案例
已知a<=x1<=b,c<=x2<=d,x1x2均为整型变量。
普通边界值测试:x1取a、a+1、(a+b)/2、b-1、b,x2取c、c+1、(c+d)/2、d-1、d。每个测试用例的x1、x2组合是一个极值+一个正常值,正常值包括(a+b)/2、(c+d)/2。
健壮性测试:x1取a-1、a、a+1、(a+b)/2、b-1、b、b+1,x2取c-1、c、c+1、(c+d)/2、d-1、d、d+1。每个测试用例的x1、x2组合是一个极值+一个正常值,正常值包括(a+b)/2、(c+d)/2。
最坏情况测试:x1取a、a+1、(a+b)/2、b-1、b,x2取c、c+1、(c+d)/2、d-1、d。每个测试用例的x1、x2组合是x1集和x2集的笛卡尔乘积。
健壮最坏情况测试:x1取a-1、a、a+1、(a+b)/2、b-1、b、b+1,x2取c-1、c、c+1、(c+d)/2、d-1、d、d+1。每个测试用例的x1、x2组合是x1集和x2集的笛卡尔乘积。
边界值测试通常分为输出域边界值测试和输入域边界值测试,两者思想一致,需要结合起来进行测试。
等价类测试
采用等价类测试的动机是1)期望完备性测试2)期望避免冗余测试。等价类测试的核心是对输入域/输出域进行等价划分,将域划分为多个互不相交的子集,子集的并集等于全集。互不相交保证了避免冗余,并集等于全集保证了完备性。
等价类划分原则
1)若输入条件规定了取值范围,则确定一个有效等价类和两个无效等价类。
2)若输入条件规定了取值个数,则确定一个有效等价类和两个无效等价类。
3)若输入条件规定了取值集合且软件对每个取值会进行不同处理,则可将每个取值确定为一个有效等价类,再确定一个不属于该集合的无效等价类。
4)若程序对已划分的某个等价类中的元素具有不同的处理方式,则将等价类再细分。
5)等价类划分通常需要多次迭代尝试。
确定等价关系
1)确定程序的所有输入条件。
2)针对每个输入条件,基于等价类划分原则将输入域划分为有效等价类和无效等价类。
生成测试用例
1)为每个等价类设置编号。
2)编写一个测试用例时,尽可能多地包含还未覆盖的有效等价类。
3)编写一个测试用例时,一次只包含一个还未被覆盖的无效等价类。
4)将所有无效等价类覆盖后,即生成所需的全部测试用例。
等价类测试类型
弱一般等价类测试:基于单缺陷假设,只考虑有效等价类。
强一般等价类测试:基于多缺陷假设,只考虑有效等价类。
弱健壮等价类测试:基于单缺陷假设,既考虑有效等价类又考虑无效等价类。弱健壮等价类测试是传统的等价类测试。
强健壮等价类测试:基于多缺陷假设,既考虑有效等价类又考虑无效等价类。
等价类测试案例
等价类测试中通常结合输入域等价类测试和输出域等价类测试,参考如下三角形问题。
三角形问题等价类划分:
输入域等价类测试:
输出域等价类测试:
综合等价类测试用例:
基于决策表的测试
决策表测试
决策表用来表述和分析复杂逻辑关系,描述在不同条件下多种可执行动作的组合问题,包含条件桩、动作桩、条件条目和动作条目。其中条件是程序输入的等价类,动作是程序输出,规则是测试用例,决策表的设计原则是不断发起尝试细化条件桩和动作桩。
决策表测试案例
三角形问题:
条件桩为a<b+c(1),b<a+c(2),c<b+a(3),a=b(4),b=c(5),a=c(6)
动作桩为不构成三角形(1),等边三角形(2),等腰三角形(3),普通三角形(4),不可能情况(5)
决策表如下:
决策表测试用例如下: