软件测试学习笔记(2)——测试用例设计

软件测试学习笔记(2)——测试用例设计

测试的关键问题是(如何选择测试用例)

测试用例设计是测试的核心,软件测试一般分为白盒测试和黑盒测试

按是否查看程序内部代码,测试分为:黑盒测试和白盒测试


一.黑盒测试


(一)黑盒测试基础概念

在黑盒测试方法中,设计测试用例的主要根据是  程序外部功能/需求规格说明与概要设计说明 

测试用例=输入数据+预期输出的数据

应用最广的是等价值分析测试


(二)黑盒测试用例的设计方法。

黑盒测试的测试用例设计方法有:等价类划分、边界值划分、因果图分析和错误猜测,判定表驱动法、正交试验设计法、功能图法、场景法

1.等价类划分法(和要求一一对应)

等价列划分设计方法是把所有可能的输入数据划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例,测试某等价类的代表值就等于对这一类其他值的测试。

使用等价类划分方法设计测试用例主要有两个步骤:(1)确定等价类;(2)生成测试用例。

1.1 划分等价类

等价类划分有两种不同的情况,设计时要同时考虑这两种等价类。

①.有效等价类,代表对程序的有效输入。

②.无效等价类代表不正确的输入值。


下面是确定等价类的原则:

(1)在输入条件规定了取值范围的情况下,则可以确立一个有效等价类(在取值范围之内)和两个无效等价类(小于取值范围和大于取值范围)。例如:使用手机发送短信的时候,短信内容长度必须在70个字符之内,则有效等价类:短信内容长度在70个字符之内,无效等价类:短信内容长度为0、短信内容长度大于70。

(2)在输入条件规定了取值的个数的情况下,则可以确立一个有效等价类(在取值个数范围之内)和两个无效等价类(小于取值个数和大于取值个数)。例如:一名学生一个学期可以选修一至五门课程,则有效等价类为:1<=学生选修课程<=5,无效等价类为:没有选修课程、选修课程大于5

(3)在输入条件规定了输入值的集合的情况下,则可以确立一个有效等价类和一个无效等价类。比如:发送短信的编码的取值范围是0、3、4、8、15或16,则有效等价类是:短信编码为0或3或4或8或15或16,无效等价类是:短信编码不是0或3或4或8或15或16其中任何一种。

(4)在输入条件规定了 “必须如何”的条件的情况下,则可以确立一个有效等价类和一个无效等价类。 例如:变量的命名比如以大写字母开头,则有效等价类为:变量命名以大写字母开头,无效等价类为:变量开头非答写字母开头。

(5)在输入条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类。例如:在神州行手机号码预扣费成功的情况下,允许该用户发送短信,则有效等价类为:神州行预扣费成功,无效等价类为神州行预扣费失败。

(6)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立n个有效等价类和一个无效等价类。

(7)在规定了输入数据必须遵守的规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

(8) 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

 

1.2 生成测试用例

在确立了等价类后,可建立等价类表列出所有划分出的等价类,过程为:

(1)为每一个等价类规定一个唯一的编号。

(2)设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。

(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

 

 

2.边界值分析法(极限思想)

测试用例为边界值如-1,0,1

边界条件指的是输入和输入等价类中刚好处于边界、或超过边界或小于边界的状态,使用边界值分析方法设计测试用例应先确定边界情况,然后选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

基于边界值分析方法选择测试用例的原则:

(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界值设计有效测试用例,以及刚刚超过这个范围的边界值作设计无效测试用例。比如:短信内容的有效长度为70个汉字以内,则有效测试用例:短信内容长度为1,短信内容长度为70个汉字,无效测试用例:短信内容长度为0,短信内容长度为71个汉字。

(2)如果输入条件规定了值的数量,则应取最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试输入的数据。例如:短信的有效编码为1~255,则应取0、1、255、256设计边界值测试用例。

(3)根据规格说明的每个输出条件,使用前面的原则1。

(4)根据规格说明的每个输出条件,使用前面的原则2。

(5)如果程序的输入或输出是一个有序集合,则应选取集合的第一个元素和最后一个元素设计测试用例。

(6)如果程序中使用了一个内部数据结构,应当选择这个内部数据结构边界上的值设计测试用例。

(7)分析规格说明书,找出其他可能的边界条件。

 

3.因果图法(??)

因果图法是一种适合于描述对于多种条件的组合、相应产生多个动作的形式的测试用例设计方法。

利用因果图生成测试用例的步骤为:

(1)将规范说明书分解成可执行的片段。

(2)确定规格说明书中的因果关系。分析软件规格说明描述中那些是原因,那些是结果,并给每个原因和结果赋予一个标识符。

(3)分析软件规格说明描述的语义,找出原因和结果之间、原因和原因之间的关系,并将其转换成因果图。

(4)在因果图上加上注解符号,用一些记号表明约束或限制条件。

(5)跟踪图中的状态变化情况,把因果图转换为判定表。

(6)把判定表的每一列拿出来作为依据,设计测试用例。

 

 

4.错误推测法(重点是经验和直觉)

测试用例为可能运行出错的用例

错误推测法就是根据经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法

错误推测法的基本思路是列举出程序中所有可能有的错误和容易发生错误的清单,根据清单设计测试用例;另一个思路就是在阅读规格说明时有哪些容易被程序员忽略的内容来设计测试用例。

错误推测法是一种非常有效的测试用例设计方法,这要求测试人员有丰富的测试经验和对业务的处理非常熟悉。比如,在短信发送的时候,如果发送短信之后,对方网关没有响应或者超时响应或者没有回复状态报告,那程序怎样处理呢?

二.白盒测试

(一)白盒测试基础概念


(二)白盒测试用例的设计方法。

白盒测试的测试用例设计方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异

逻辑覆盖测试语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖


1.逻辑覆盖

①语句覆盖:可执行语句至少被执行一次

语句覆盖SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。

这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。


②判断覆盖:每个判断的取真分支和取假分支至少经历一次


条件覆盖:每个条件的取值至少满足一次;

条件覆盖CC:设计足够多的测试用例,运行被测程序,
使得每一判定语句中每个逻辑条件的可能取值至少满足一次。
条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%
条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支
(或者涉及不到全部分支),即不能够满足判定覆盖. 
比如:

判定覆盖是每个判定的真假一次,就会导致所有的结果路径会实现;

条件覆盖是每个判定里的条件各取一次,不一定会产生所有的结果;



判断条件覆盖:判断和条件都满足;

判定条件覆盖CDC:设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,
并且每个判定本身的判定结果也至少出现一次。
判定条件覆盖率的公式:
条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数).
判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。

⑤.条件组合覆盖:每个条件的所有可能都至少出现一次,并且判定结果至少出现一次 ;

他与条件覆盖的区别:他不是简单要求每个条件出现两种结果,而是要求这些结果所有可能至少出现一次;
 条件组合覆盖,也称多条件覆盖MCC :设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次
(以数轴形式划分区域,提取交集,建立最少的测试用例)。这种方法包含了分支覆盖条件覆盖的各种要求。
满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。
条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数
条件组合覆盖的缺点:判定语句较多时,条件组合值比较多。
 

⑥.路径测试:执行所有可能的执行路径;

⑦.基本路径测试:

路径测试执行了每个路径,每个判定的结果肯定经历过一次



 
 
 
 
 
 

 
 








猜你喜欢

转载自blog.csdn.net/acycy/article/details/80371949