测试用例设计策略
在测试用例的设计过程中,通常为了要达到最优的覆盖,要采用多种不同的测试用例设计方法,其中比较有名的是, Myers提出了使用各种测试方法的综合策略:
1、在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强;
2、必要时用等价类划分方法补充一些测试用例;
3、用错误推测法增加一些测试用例;
4、检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例;
5、如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。
当然以上仅仅是 Myers的一些总结或建议,所以在测试用例设计过程中,我个人的策略是如下:
测试用例的设计策略:
1、根据需求,设计规格等相关说明构造基本测试用例设计的类型(如功能,性能,安全等);
2、然后根据相关测试类型,构造正面和负面的测试用例;
3、采用边界值方法补充测试用例;
4、采用等价划分方法补充测试用例;
5、采用场景方设计测试用例;
6、采用正交实验方法/功能图方法设计测试用例;
7、采用因果图方法设计测试用例;
8、采用流程图方法设计测试用例;
9、状态转换补充测试用例;
10、为其它测试类型编写测试用例,如:性能,压力,安全,兼容性,配置,本地化,国际化等
11、通过启发示评审方法优化测试用例;
12、最后在不同的研发阶段设计相关的测试用例,如验收测试,回归测试等。
测试用例设计之“判定表驱动”法
判定表简介
程序在一些数据处理问题中,某些操作是否产施依赖多个逻辑条件的取值,即就是这些逻辑条件取值组合所构成的多种情况下,分别执行不同的操作,所以想处理这类问题就需要用判定表(Decision Table)
判定表组成
条件桩:列出了问题的所有条件
动作桩:列出了问题规定可能采取的操作
条件项:列出针对它所列条件的取值,在所有可能情况下的真假值
动作项:列出在条件项的各种取值情况下应该采取的动作
规则:任何一个条件组合的特定取值及其相应要执行的操作
注:判定表中贯穿条件项和动作项的一列就是一条规则;
判定表的建立(步骤)
第一步:确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n种规则
第二步:列出所有的条件桩和动作桩
第三步:填入条件项
第四步:填入动作项。制定初始判定表
第五步:简化。合并相似规则或者相同动作
判定表设计测试用例的条件
规格说明以判定表的形式给出,或很容易转换成判定表
条件的排列顺序不影响执行哪些操作
规则的排列顺序不影响执行哪些操作
当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
测试用例设计之“错误推测法”
错误推测法简介
错误推测法通常是哪些有经验的测试人员根据经验和直觉推测出程序可能存在的错误,然后有目的的进行测试。严格来讲“错误推测试法”并不是一种测试用例设计方法!
基本思想:根据测试人员的经验和直觉,列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。
优点:充分发挥个人潜能,方便,如果组织好,是一种有效的辅助测试手段;
缺点:覆盖率难以估计,全凭个人经验和直觉,所以主观性比较强。
测试用例设计之边界值法
1.边界值分析法简介
边界值分析法是对输入或输出的边界值进行测试的一种黑盒测试方法。我们这里所指的“边界值”是相对于“输入等价类”和“输出等价类”而言的,稍高于其边界或低于其边界一些特点情况。
2 边界类型通常用以下几种:
边界条件:可以在产品说明书中有定义或者在使用软件过程中确定
内部边界条件:在软件内部,也称为内部边界条件
其他边界条件:如输入信息为空、非法、错误、不正确和垃圾数据
3 边界值的选择方法(原则)
序号 |
输入条件(数据) |
输入边界值数据 |
1 |
规定了取值范围 |
刚刚达到这个范围 刚刚超越这个范围 |
2 |
规定值的个数 |
最大个数、比最大个数大1 最小个数、比最小个数少1 |
3 |
根据规格说明书的每个输出条件,使用 原则1、2 |
|
4 |
输入或输出是个有序集合 |
集合的第一个、最后一个元素 |
5 |
程序中使用一个内部数据结构 |
内部数据结构边界上的值 |
6 |
分析规格说明,找出其他可能的边界 |
测试用例设计之“等价划分”法
1.等价类划分法简介:
等价类划分是一种典型的黑盒测试方法,用这一方法设计测试用例完全不考虑程序的内部结构,而是根据对程序的要求和说明,即需求规格说明书(RS)。将说明中对输入的要求和输出的要求区别开来并加以分解。等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据,在这个集合中每个输入条件都是等效的,如果其中一个输入不能发现问题,哪么集合中其它输入条件进行测试也不可能发现错误码。
2 等价类划分基础:
需求规格说明书(SR)中输入、输出要求
3 等价划分法设计测试用例步骤:
3.1 确定等价类:
其中等价划分中某个输入域的子集合;分为有效等价类和无效等价类
有效等价类:指对于程序规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中的功能和性能
无效等价类:与有效等价的定义相反
说明:划分等价类原则(6条)
序号 |
输入条件(数据) |
划分等价类 |
1 |
规定了取值范围 值的个数 |
一个有效等价类 两个无效等价类 |
2 |
规定了输入值的集合 规定了“必须如何”的条件 |
一个有效等价类 一个无效等价类 |
3 |
是一个布尔量 |
一个有效等价类 一个无效等价类 |
4 |
输入数据的一组值(n个),并且程序对每一个输入值分别进行处理 |
n个有效等价类 一个无效等价类 |
5 |
规定必须遵守的规则 |
一个有效等价类(符合规则) 若干个无效等价类 |
6 |
在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类 |
3.2列出等价类表
在确定了等价类之后,建立等价类表,列出所有划分出的等价类
输入条件 |
有效等价类 |
无效等类 |
…… |
…… |
…… |
3.3 确定测试用例:
1为每个等价类规定一个惟一的编号
2设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后使得所有有效等价类均被测试用例所覆盖
3设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤,最后使得所有无效等价类均被测试用例所覆盖
经验教训:采用等价类划分方法设计测试用例,按照划分等价类、列出等价列表、确定测试用例三个步骤完成,目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。
[原创]测试用例设计之“因果图”法
因果图法简介
为什么使用“因果图”法设计测试用例?
等价类划分法并没有考虑输入情况的各种组合,也没有考虑输入情况之间的相互制约关系。这样虽然各种输入情况可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况去被忽略了,所以采用“因果图”法(Cause-effect Graphing),能帮助我们指出程序规格说明书存在差什么问题。
因果图设计方法
从用自然语言书写的程序规格说明的描述中找出因果,通过因果图转换成判定表
因果图导出测试用例步骤
第一步:分析程序规格说明的描述中,哪些是原因,哪些是结果。原在因常常是输入条件或是输入条件的等价类,结果是输出条件
第二步:分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的‘因果图’
第三步:标明约束条件
第四步:把因果图转换成判定表
第五步:为判定表中每一列表示的情况设计测试用例
(1)因果图基本图形符号
通常在因果图中,用Ci 表示原因,Ei表示结果,各结点表示状态,可取值0(状态不出现) 或1(某状态出现)
恒等:若原因出现,则结果出现;若原因不出现,则结果不出现
非(~):若原因出现,则结果不出现;若原因不出现,则结果出现
或(V):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现;
与(∧):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现
(2)因果图的约束符号
从输入(原因)考虑四种约束
E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立
I(包含):表示三个原因中至少有一个必须成立
O(惟一):表示两个原因中必须有一个,且仅有一个成立
R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现
从输出(结果)考虑一种约束
M(屏蔽):两个结果,a为1时,b必须是0,当a为0时,b值不定
正交实验设计方法简介:
依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.类似的方法有:聚类分析方法,因子方法方法等.
概述
从大量的试验数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法
使用已造好的表格“-”正交表来安排试验并进行数据分析的一种方法
因子:影响实现指标的条件
因子的状态:影响实现因子的条件
优点
节省测试工时
可控制生成的测试用例的数量
测试用例具有一定的覆盖率
设计步骤
提取功能说明,构造因子‘-’状态表。
加权筛选,生成因素分析表;
利用正交表构造测试数据集,正交表的推导依据Galois理论
L:代表正交表,L8(27)代表7为因子数,2为因子的水平数,8为此表行的数目(试验次数)
行数为mn型的正交表中,试验次数(行数)=∑(每列水平数-1)+1
例:5个3水平因子及一个2水平因子,表示为35*21,试验次数=5*(3-1)+1*(2-1)+1=12,
即L12(35*2)
1 定义
状态迁移图法主要关注在测试状态转移的正确性上。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来测试状态之间的转换。
2 应用的范围
一个功能的状态比较多的情况下,比如mp3,堆栈操作等.
3 步骤
状态迁移图的步骤:
1) 画出状态迁移图;
2) 列出状态——事件表;
3) 得到状态转换树;
4) 推出测试路径;
5) 根据测试路径编写测试用例。
测试用例设计之“功能图”法
功能图法简介:
功能图方法其实是一种灰盒测试(因其兼有黑盒和白盒测试,所以称为灰盒测度比较体贴)用例设计方法;通常情况一个程序的功能说明通常由动态说明和静态说明组成.动态说明描述了输入数据的次序或转移的次序.静态说明描述了输入条件与输出条件之间的对应关系.用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例
程序功能说明的组成
动态说明:描述输入数据的次序或转移次序
静态说明:描述输入条件和输出条件之间的对应关系
功能图:
由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来表示。一个状态指出数据输入的位置(或时间),一个迁移指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能
功能图法概述
用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例
功能图模型由状态迁移图和逻辑功能模型构成
状态迁移图:用于表示输入数据序列以及相应的输出数据;由输入数据和当前状态决定输出数据和后续状态
逻辑功能模型:用于表示在状态中输入条件和输出条件的对应关系。由输入数据决定输出数据。此模型只适用于描述静态说明
功能图测试用例由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满中的一对条件组成
功能图法测试用例生成方法:
从状态迁移图中选取测试用例,用节点代替状态,用弧线代替迁移,状态图就可转化成一个程序的控制流程图形式
测试用例生成规则
为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,在一个结构化的状态迁移(SST)中,定义3种形式的循环:顺序,选择和重复
功能图生成测试用例步骤
1 生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成
测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径
2测试用例合成:合成测试路径与功能图中每个状态的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
3测试用例的合成算法:采用条件构造树