第2部分:软件测试技术_第1页
第2部分:软件测试技术_第2页
第2部分:软件测试技术_第3页
第2部分:软件测试技术_第4页
第2部分:软件测试技术_第5页
已阅读5页,还剩165页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1软件测试方法和技术是多种多样的,可以从不同的角度加以分类从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为黑盒测试和白盒测试从是否需要执行被测软件的角度,可分为静态测试和动态测试软件测试方法2两种测试方法从不同的角度出发,反映了软件的不同侧面,也适用于不同的开发环境黑盒测试:基于软件设计规范设计测试用例白盒测试:基于代码覆盖情况设计测试用例eg.排水系统测试方法-黑盒与白盒3白盒测试(WHITE-BOXTESTING)也称结构测试、逻辑驱动测试。此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为逻辑测试。白盒测试的主要方法有逻辑驱动、基路测试等。第4章白盒测试4软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。白盒测试的作用5对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365×24小时,要想把所有路径测试完,需3170年。白盒测试615sideA=atoi(argv[1]);16sideB=atoi(argv[2]);17sideC=atoi(argv[3]);1819If((sideA==sideB)&&(sideA==sideC))20{21s=0.5*(sideA+sideB+sideC);22Area=sqrt(s/(s-sideA)*(s-sideB)*(s-sideC));23printf(“area=%g\n”,Area);24}25else26puts(“notanequilateraltriangle”);27return0;28}Figure1.CodeUnderTest白盒测试技术S=0.5×(SideA+SideB+SideC)Area=[S(S-SideA)(S-SideB)(S-SideC)]1/2白盒测试7TrueDirectGraph TestCase1 TestCase2 Inputs: Inputs: SideA=2 SideA=3 SideB=2 SideB=4 SideC=2 SideC=5Entrance1516171921222326ExitTrueFalseEntrance1516171921222326ExitFalseEntrance15161719ExitFalse26212223TrueActualOutput ActualOutputArea=1.73205 notequilateraltriangle白盒测试技术白盒测试8

语句覆盖判定覆盖条件覆盖

判定-条件覆盖条件组合覆盖逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试范畴。4.1逻辑覆盖9例(A>1)

and

(B==0)(A==2)

or

(X>1)X=X/AX=X+1TTFFabdce

四条路径101、语句覆盖

使程序中每个语句至少执行一次。选择足够的测试用例,使得程序中每个语句至少都能被执行一次.

开始(A>1)AND(B==0)(A==2)OR(X>1)返回X=X/AX=X+1FFTTabdce只需设计一个测试用例:

输入数据:A=2,

B=0,

X=4

即达到了语句覆盖。语句覆盖是最弱的逻辑覆盖(如:AND写成OR,X>1写成

X<1,查不出来)112、

判定覆盖(分支覆盖)

使每个判定的真假分支都至少执行一次。选择足够的测试用例,使得程序中的每一个分支至少都执行一次.开始(A>1)AND(B==0)(A==2)OR(X>1)返回X=X/AX=X+1FFTTabdce可设计两组测试用例:A=3,B=0,X=3

可覆盖c、d分支

A=2,B=1,X=1

可覆盖b、e分支

两组测试用例可覆盖所有判定的真假分支

判定覆盖仍是弱的逻辑覆盖,只覆盖了全部路径的一半。123、条件覆盖使每个判定的每个条件的可能取值至少执行一次。执行足够的测试用例,使得判定中的每个条件获得各种可能的结果.开始(A>1)AND(B==0)(A==2)OR(X>1)返回X=X/AX=X+1FFTTabdce满足条件:T1,T1,T2,T2T3,T3T4,T4第一判定表达式:设条件A>1取真记为T1

T1

条件B=0取真记为T2

T2第二判定表达式:设条件A=2取真记为T3

T3

条件X>1取真记为T4

T413测试用例通过满足的覆盖ABX路径条件分支103abeT1,T2,T3,T4b,e211abeT1,T2,T3,T4b,e

两个测试用例覆盖了四个条件八种可能取值。未覆盖c、d分支,不满足判定覆盖的要求.

条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖144、判定/条件覆盖

选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.开始(A>1)AND(B==0)(A==2)OR(X>1)返回X=X/AX=X+1FFTTabdce满足条件:T1,T1,T2,T2T3,T3T4,T415测试用例通过满足的条件覆盖ABX路径分支204aceT1,T2,T3,T4c,e111abdT1,T2,T3,T4b,d能同时满足判定、条件两种覆盖标准的取值165、条件组合覆盖所有可能的条件取值组合至少执行一次

A>1,B=0A>1,B≠0A≯1,B=0A≯1,B≠0A=2,X>1A=2,X≯1A≠2,X>1A≠2,X≯1测试用例通过满足的覆盖ABX路径条件分支204aceT1,T2,T3,T4c,e211abeT1,T2,T3,T4b,e102abdT1,T2,T3,T4b,d111abdT1,T2,T3,T4b,d176、修正条件判定覆盖每一个程序模块的入口、出口都至少被调用一次;每个条件对于判定的结果值是独立的。

借助于表达式语法分析树进行测试用例的分析和设计:

中间内部结点:二元/一元操作符叶子结点:变量/常量Eg.A∪B∩C

(借助于表达式语法分析树进行分析)18修正条件判定覆盖测试数据设计方法及案例对于一个给定的表达式语法分析树,遍历完此树即可达到修正判定覆盖。步骤:首先选择一个条件(即子句,作为待考察因素/测试子句),然后从此子句的叶子结点往上一直走到该语法树的根节点,再从根节点到其他的每个子句(叶子节点)。在遍历树的过程中,若给定子句的父节点是or,则其兄弟结点的值必须是false;是and,则必须是true;是not,则其父节点的值是not结点上值的反值。如此重复下去,直至遍历完成。Eg.A∪B∩C若B作为测试子句,则A应为false,C应为true同理,若A作为测试子句,则B应为false,C为true若C作为测试子句,则A、B的取值保证A∪B为真即可19发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次2判定覆盖每一判定的每个分支至少执行一次3条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次4判定/条件覆盖同时满足判定覆盖和条件覆盖的要求5(强)条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次

逻辑覆盖测试的5种标准

204.2路径测试路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。

测试用例

通过路径

覆盖条件【(2,0,4),(2,0,3)】ace

【(1,1,1),(1,1,1)】abd【(1,1,2),(1,1,3)】abe

【(3,0,3),(3,0,1)】acd21案例:P99

条件测试路径选择

当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径。对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例;22循环测试路径选择循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。

(1)简单循环①零次循环:从循环入口到出口

②一次循环:检查循环初始值

③二次循环:检查2次循环

④m次循环:检查多次循环

⑤最大次数循环、比最大次数多一次、少一次的循环。23例:求数组中的最小值k=i;for(j=i+1;j<=n;j++)

if(A[j]<A[k])k=j;

24k=i;j=i+1;j<=n?A[j]<A[k]?j++fdcabek=jYN测试用例选择26

对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值;

②逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值;

③反复进行,直到所有各层循环测试完毕。④对全部各层循环同时取最小循环次数,或者同时取最大循环次数(2)

嵌套循环2728(3)连锁循环

如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。(4)非结构循环

这一类循环应该使用结构化程序设计方法重新设计测试用例。

29基本路径测试基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。简化循环路径循环使路径数量急剧增长简化无论循环的形式和实际执行循环体的次数多少,只考虑循环0次和1次两种情况进入循环体一次跳出循环体30基本路径测试思路在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。311.程序的控制流图符号○为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。32在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,...)

连接的复合条件表达式,则需改为一系列只有单个条件的嵌套的判断。3334352.程序环路复杂性程序的环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。环路复杂度V(G)=P+1(P:判定节点数)从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。36例如,在图示的控制流图中,一组独立的路径是

path1:1-11

path2:1-2-3-4-5-10-1-11

path3:1-2-3-6-8-9-10-1-11

path4:1-2-3-6-7-9-10-1-11路径path1,path2,path3,path4组成了控制流图的一个基本路径集。373.基本路径测试法的操作步骤导出控制流图计算环路复杂度确定基本路径集生成测试用例38结构测试案例分析求数组中的最小值

k=i;for(j=i+1;j<=n;j++){if(A[j]<A[k])k=j;}k=i;j=i+1j<=n?A[j]<A[k]?k=jj++acbdef39基本路径测试340测试用例用例编号输入预期输出循环inA[i]A[i+1]路径k10111ac1211212abefc1311221abdfc241疑问测试用例是否足够?循环测试是否足够?在结构复杂,测试用例数非常多的情况下,这些测试用例已经可以满足测试,但并不具有充分性如何达到充分性?

测试2次循环42测试用例(较充分)用例编号输入输出循环inA[i]A[i+1]A[i+2]路径k10111ac1211212abefc1311221abdfc24213123abefbefc15213213abdfbefc26213231abefbdfc37213321abdfbdfc3434.最少测试用例数计算对于具体的程序,至少要设计多少测试用例?估算最少测试用例数帮助执行测试有助于估算测试的时间44454.3静态白盒测试4.3.1代码检查法代码检查方式桌面检查代码审查走查代码检查项目代码检查规则缺陷检查表编码规范464.3.2静态结构分析法测试工具函数调用关系图、模块控制流图eg.LogiscopeP834.3.3静态质量度量参考资料:/p-29310738424.html474849505152535455564.4白盒测试综合策略先静后动先结构分析,再动态检测不同阶段,测试侧重点不同57黑盒测试(BLACK-BOXTESTING)也称功能测试、数据驱动测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对软件界面和软件功能进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用。黑盒测试方法主要有等价类划分、边界值分析、错误推测、场景法、因-果图、正交实验法等,主要针对软件界面和软件功能进行测试。5黑盒测试58

黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:是否有不正确或遗漏了的功能?输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据库文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?

黑盒测试的作用59

从理论上讲,黑盒测试只有采取穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误,实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,还要对那些不合法的但是可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有计划,有步骤,有组织的进行。黑盒测试的作用60黑盒测试流程规范(Specification)生成测试用例测试用例被测软件输出生成预期的输出结果规范(Specification)预期的输出结果比较和分析正确/错误61

(中科院软件研究所2000年硕士研究生统考题)设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下:

“有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。”

(1)试利用因果图法,建立该软件的因果图;

(2)设计测试该软件的全部测试用例。

黑盒测试---举例625.1.1等价类划分等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。63步骤划分等价类(列出等价类表)选取测试用例划分等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。64等价类的划分有两种不同的情况:

有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。

无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。65划分等价类的原则。

(1)

如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。

66例如,在程序的规格说明中,对输入条件有一句话:

“……

项数可以从1到999……”

则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:67

(2)

如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例:在Pascal语言中对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。68

(3)

如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。

(4)

如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例:输入条件说明学历可为:学士、硕士、博士三种之一,则分别取这三个值作为三个有效等价类,另外把三种学历之外的任何学历作为无效等价类69(5)

如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例:Pascal语言规定“一个语句必须以分号‘;’结束”。这时,可以确定一个有效等价类“以‘;’结束”,若干个无效等价类“以‘:’结束”、“以‘,’结束”、“以‘

’结束”、“以LF结束”等。70确立测试用例

在确立了等价类之后,建立等价类表,列出所有划分出的等价类。71再从划分出的等价类中按以下原则选择测试用例:

(1)

为每一个等价类规定一个唯一编号;

(2)

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

(3)

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

用等价类划分法设计测试用例的实例

在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。” 并且规定:“标识符必须先说明,再使用。”

“在同一说明语句中,标识符至少必须有一个。”

73用等价类划分方法,建立输入等价类表:74下面选取了9个测试用例,它们覆盖了所有的等价类。

①VARx,T1234567:REAL;

BEGINx:=5.414;

T1234567:=2.732;

...…(1),(2),(4),(8),(9),(12),(14)

②VAR:REAL;

(3)

③VARx,:REAL;(5)

75④VART12345678:REAL;

(6)⑤VART12345......:REAL;

(7)

多于80个字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

PAP:=SIN(5.14*0.8)/6;76练习1

某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。

如何用等价类划分法设计测试用例,

来测试程序的日期检查功能?77第一步:等价类划分输入条件有效等价类无效等价类

报表日期的类型及长度6位数字字符(1)有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6)年份范围在2003~2008之间(2)小于2003(7)大于2008(8)月份范围在1~12之间(3)“报表日期”输入条件的等价类表小于1(9)大于12(10)78第二步:为有效等价类设计测试用例

测试数据期望结果覆盖范围200306等价类(1)(2)(3)输入有效对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:(1)6位数字字符(2)年在2003~2008之间(3)月在1~12之间79第三步:为每一个无效等价类设至少设计一个测试用例

测试数据期望结果覆盖范围003MAY等价类(4)输入无效20035等价类(5)输入无效2003005等价类(6)输入无效200105等价类(7)输入无效200905等价类(8)输入无效200300等价类(9)输入无效200313等价类(10)输入无效不能出现相同的测试用例本例的10个等价类至少需要8个测试用例80练习2

对招干考试系统“输入学生成绩”子模块设计测试录入准考证号的测试用例。准考证号数据格式定义:共6位数字组成,其中第一位为专业代号:1-行政专业,2-法律专业,3-财经专业后5位为考生顺序号,编码范围为:行政专业准考证号码为:110001~111215

法律专业准考证号码为:210001~212006

财经专业准考证号码为:310001~314015

准考证号码的等价类划分

有效等价类:

(1)110001~111215(2)210001~212006(3)310001~314015

无效等价类:

(4)-

~110000(5)111216~210000(6)212007~31000(7)314016~+81练习3根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。“一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。”

82举例输入条件有效等价类无效等价类是否三角形的三条边(A>0),(1)(B>0),(2)(C>0),(3)(A+B>C),(4)(B+C>A),(5)(A+C>B),(6)(A≤0),(7)(B≤0),(8)(C≤0),(9)(A+B≤C),(10)(B+C≤A),(11)(A+C≤B),(12)是否等腰三角形(A=B),(13)(B=C),(14)(C=A),(15)(A≠B)and(B≠C)and(C≠A)(16)是否等边三角形(A=B)and(B=C)and(C=A)(17)(A≠B),(18)(B≠C),(19)(C≠A),(20)83举例序号【A,B,C】覆盖等价类输出1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能构成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)等边三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等边三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)845.1.2边界值分析边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。85比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足

A>0、B>0、C>0、

A+B>C、A+C>B、B+C>A,才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。86边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

87

边界条件类型

如果软件测试问题包含确定的边界,那么数据类型可能是:数值字符位置数量速度地址尺寸……还要考虑数据类型的特征:第一个/最后一个最小值/最大值开始/完成空/满最慢/最快相邻/最远超过/在内……88输入条件报表日期的类型及长度1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符显示出错显示出错显示出错显示出错显示出错输入有效日期范围月份范围“报表日期(6位数字字符)”边界值分析法测试用例测试用例说明测试数据期望结果选取理由52003520030052005.5MAY---200305月份为1月月份为12月月份<1月份>12200301200312200300200313200301200812200300200813输入有效输入有效显示出错显示出错输入有效输入有效显示出错显示出错在有效范围边界上选取数据仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效最小日期最大日期刚好小于最小日期刚好大于最大日期最小月份最大月份刚好小于最小月份刚好大于最大月份89有效等价类和用来测试getNumDaysInMonth()方法所选的有效输入

有效等价类一个月有31天,非闰年19017(七月)一个月有31天,闰年19047(七月)一个月有30天,非闰年19016(六月)一个月有30天,闰年19046(六月)一个月为28或29天,非闰年19012(二月)月份输入值年份输入值一个月为28或29天,闰年2(二月)190490用来测试getNumDaysInMonth()方法的附加边界值等价类可以被400整除的闰年20002(二月)可以被100整除的非闰年19002(二月)非正数无效月份12910正数无效月份131513月份输入值年份输入值915.1.3错误推测法人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。92错误推测法根据经验、直觉和预感来进行测试例:一定要考虑建立处理下列等价类:缺省值空白空值零值无输入条件重复信息(eg.用户名已存在)在已经找到软件缺陷的地方再找找

93现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。提出这种测试思想的是Rational公司,并在RUP2000中文版当中有其详尽的解释和应用。用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。5.1.4场景法94场景法:基本流和备选流右图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的彩色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。95场景法:基本流和备选流按照上图中每个经过用例的路径,可以确定以下不同的用例场景:场景1基本流场景2基本流备选流1场景3基本流备选流1备选流2场景4基本流备选流3场景5基本流备选流3备选流1场景6基本流备选流3备选流1备选流2场景7基本流备选流4场景8基本流备选流3备选流4注:为方便起见,场景5、6和8只考虑了备选流3循环执行一次的情况。965.1.5因果图因果图的适用范围

如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合、相应产生多个动作的形式来设计测试用例,这就需要利用因果图。

因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。97用因果图生成测试用例的基本步骤

(1)

分析软件规格说明描述中

哪些是原因

(即输入条件或输入条件的等价类)及哪些是结果

(即输出条件)

并给每个原因和结果赋予一个标识符。

(2)

分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系?

根据这些关系,画出因果图。

98

(3)

由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。

(4)

把因果图转换成判定表。

(5)

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

99因果图设计方法

通常在因果图中,用Ci表示原因,用Ei表示结果,其基本符号如下图所示。Ci和Ei均可取值“0”和“1”,“0”表示某状态不出现,“1”表示某状态出现。因果图的基本符号如下:CiEi恒等Ci=1,Ei=1;Ci=0,Ei=0;Ci(a)(b)Ei非Ci=1,Ei=0;Ci=0,Ei=1;100因果图设计方法(d)与C1,C2,C3全=1,Ei=1;

C1,C2,C3有一个以上=0,Ei=0;C1C2C3Ei(c)C1C2C3Ei或C1,C2,C3有一个以上=1,Ei=1;C1,C2,C3全=0,Ei=0;101因果图设计方法

为了表示原因与原因之间、结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。从输入(原因)考虑有4种约束:如图(a)(b)(c)(d)从输出(结果)考虑:还有1种约束,如图(e)(a)互斥:a和b同时只能有一个为1,但可以都为0abac(b)E

包含:a、b、c中至少有一个为1Ib102因果图设计方法(c)要求:若a=1,则要求b也要=1;其它不约束abab(e)R

强制(屏蔽):a=1,强制b=0;其它不约束M(d)abO唯一:a和b有且仅有一个为1103

例如,有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:

若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。”104(1)分析这一段说明,列出原因和结果

原因:1.

售货机有零钱找

2.

投入1元硬币

5.

投入5角硬币

4.

押下橙汁按钮

5.

押下啤酒按钮 建立中间结点,表示处理中间状态

11.

投入1元硬币且押下饮料按钮

12.

押下〖橙汁〗或〖啤酒〗的按钮

15.

应当找5角零钱并且售货机有零钱找

14.

钱已付清

105

结果:21.

售货机〖零钱找完〗灯亮

22.

退还1元硬币

25.

退还5角硬币

24.

送出橙汁饮料

25.

送出啤酒饮料

(2)画出因果图。所有原因结点列在左 边,所有结果结点列在右边。

(3)

由于2与3,4与5不能同时发生,

分别加上约束条件E。

(4)因果图

(5)转换成判定表106

107

108练习4某电力公司有A、B、C、D四类收费标准,并规定:居民用电<100度/月按A类收费≥100度/月按B类收费动力用电<10000度/月,非高峰,B类收费≥10000度/月,非高峰,C类收费

<10000度/月,高峰,C类收费≥10000度/月,高峰,D类收费109组合条件条件(原因)

动作(结果)ABC123123456101100011000110000100001104101050011D000110010000测试用例110为判定表每一列设计一个测试用例:1列居民电,90度/月A2列居民电,110度/月B3列动力电,非高峰,8000度/月B4列动力电,非高峰,1.2万度/月C5列动力电,高峰,0.9万度/月C6列动力电,高峰,1.1万度/月D

条件测试用例预期结果组合(输入数据)(输出动作)1115.1.6正交实验法1、正交测试用例设计简介正交测试用例设计又称为组合实验法,利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地,合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。正交实验设计方法是依据伽罗瓦(Galois,1811-1832,法国数学家))理论,从大量的测试数据(测试用例)中挑选适量的,有代表性的点(测试用例),从而合理地安排测试的一种科学实验设计方法。1122、正交试验法的使用原因

(A)测试需求对某人进行查询,假设查询某个人时有三个查询条件:根据“姓名”进行查询根据“身份证号码”查询根据“手机号码”查询113正交试验法的使用原因(续)

(B)全部测试

分析上述测试需求,有3个被测元素,我们称为因素,每个因素有两个取值(填写,不填写),我们称取值为因子,所以全部的测试用例个数是2*2*2=8,参见下表。序号姓名身份证号码手机号码10002011300141005110601070118111114正交试验法的使用原因(续)

(C)利用正交表测试,参见下表。(D)正交表测试,再补充一条可疑测试用例得到的结果,参见下表。序号姓名身份证号码手机号码1000201131014110序号姓名身份证号码手机号码100020113101411051111153、因素和因子的概念(A)什么是因素(Factor)在一项测试中,凡欲考察的变量称为因素(变量)。(B)什么是因子(Level)在测试范围内,因素被考察的值称为因子(变量的取值)。

(C)什么是正交试验设计

正交试验设计是研究多因素、多因子的一种设计方法,它是根据正交性从全面测试中挑选出部分有代表性的点进行测试,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是一种基于正交表的、高效率、快速、经济的测试设计方法。1164、正交表的构成

正交表是一整套规则的设计表格(Ln(tc)),L为正交表的代号,n为测试的次数,t为因子数,c为因素数/列数,也就是可能安排最多的因素个数。例如L9(34),它表示需作9次测试,最多可观察4个因素,每个因素均为3因子。(A)行数(Runs):正交表中的行的个数,即测试的次数。(B)因素数(Factors):正交表中列的个数。(C)因子数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“因子数-1”或从1到“因子数”。(D)正交表的表示形式:Ln(tc)(因子数因素数)。一个正交表中也可以各列的水平数不相等,我们称它为混合型正交表,如L8(4×24),此表的5列中,有1列为4因子,4列为2因子。1175、正交表的正交性

(A)整齐可比性在同一张正交表中,每个因素的每个因子出现的次数是完全相同的。由于在测试中每个因素的每个因子与其它因素的每个因子参与测试的机率是完全相同的,这就保证在各个因子中最大程度的排除了其它因素因子的干扰。因而,能最有效地进行比较和作出展望,容易找到好的测试条件。例如:在两因子正交表中,任何一列都有数码“1”与“2”,且任何一列中它们出现的次数是相等的;如在三因子正交表中,任何一列都有“1”、“2”、“3”,且在任一列的出现数均相等。118正交表的正交性(续)

(B)均衡分散性在同一张正交表中,任意两列(两个因素)的因子搭配(横向形成的数字对)是完全相同的。这样就保证了测试条件均衡地分散在因素因子的完全组合之中,因而具有很强的代表性,容易得到好测试条件。例如在两因子正交表中,任何两列(同一横行内)有序对子共有4种:(1.1)、(1.2)、(2.1)、(2.2)。每种对数出现次数相等。在三因子情况下,任何两列(同一横行内)有序对共有9种,1.1、1.2、1.3、2.1、2.2、2.3、3.1、3.2、3.3,且每对出现数也均相等。1196、正交表设计步骤

正交表设计的主要步骤如下:①确定因素数(列数)根据测试目的,选择处理因素与不可忽略的交互作用,明确其共有多少个数,如果对研究中的某些问题尚不太了解,列可多一些,但一般不宜过多。当每个试验号无重复,只有1个试验数据时,可设2个或多个空白列,作为计算误差项之用。②确定各因素的因子数根据测试目的,一般二因子(有、无)可作因素筛选用;也可适用于测试次数少、分批进行的研究。三因子可观察变化趋势,选择最佳搭配;多因子能以一次满足测试要求。120正交表设计步骤(续)③选定正交表根据确定的列数(c)与因子数(t)选择相应的正交表。常用的正交表有L8(27)、L9(34)、L16(45)、L8(4x24)等。在行数为mn型的正交表中(m,n是正整数),测试次数(行数)=因素数x(每列因子数-1)+1,例如:L8(27),8=7x(2-1)+1,利用上述关系式可以从所要考察的因子数来决定最低的测试次数,而选择合适的正交表。例如要考察5个3因子及一个2因子,则起码的测试次数为5x(3-1)+1x(2-1)+1=12(次),这就是说要在行数不小于12,而且既有2因子列又有3因子列的正交表中选择,L18(2x37)适合。综上所述,(a)需实际因素数≥正交表因素数;实际因素的因子数≥正交表因素的因子数。(b)当有2个或以上正交表可以被选择时,需选择行数最少的正交表。121正交表设计步骤(续)④把变量的值映射到表中。⑤把每一行各因素的取值组合做为一个测试用例。⑥补充上有价值的其它测试用例正交实验的正交表设计是正交设计的关键,它承担着将各因素及交互作用合理安排到正交表的各列中的重要任务,因此一个正交表设计就是一个设计方案。122示例1:因子数相同示例2:因子数相同,但在正交表中找不到相同的因素数示例3:因子数不相同示例123

因子数相同:因子数(变量的取值)相同、因素数(变量)刚好符合正交表。(A)测试需求对某人进行查询,假设查询某个人时有三个查询条件:根据“姓名”进行查询根据“身份证号码”查询根据“手机号码”查询1、示例1:因子数相同124(B)考虑查询条件要么不填写,要么填写,此时可用正交表进行设计(C)确定因素数和因子

①有三个因素:姓名、身份证号、手机号码②每个因素有两个因子:姓名:填、不填身份证号:填、不填手机号码:填、不填(D)选择正交表表中的因素数>=3表中至少有三个因素的水平数>=2行数取最少的一个结果:L4(23)示例1:因子数相同(续)125(E)正交表姓名:0—>填写;1—>不填写身份证号:0—>填写;1—>不填写手机号码:0—>填写;1—>不填写(F)用L4(23)设计的测试用例测试用例如下:1:填写姓名、填写身份证号、填写手机号2:填写姓名、不填身份证号、不填手机号3:不填姓名、填写身份证号、不填手机号4:不填姓名、不填身份证号、填写手机号增补测试用例5:不填姓名、不填身份证号、不填手机号示例1:因子数相同(续)126(A)测试需求(B)确定因素和因子①有五个因素:音形码、拼音码、路名码、行业类别和特征码。②每个因素有两个因子:

音形码:填、不填拼音码:填、不填路名码:填、不填行业类别:填、不填特征码:填、不填2、示例2:因子数相同,但在正交表中找不到相同的因素数127(C)选择正交表表中的因素数>=5表中至少有五个因素的水平数>=2行数取最少的一个结果:L8(27)(D)正交表音形码:1—>不填写;2—>填写拼音码: 1—>不填写;2—>填写路名码: 1—>不填写;2—>填写行业类别:1—>不填写;2—>填写特征码: 1—>不填写;2—>填写带入因子后得到示例2:因子数相同,但在正交表中找不到相同的因素数(续)128

(E)用L8(27)设计的测试用例音形码不填、拼音码不填、路名码不填、行业类别不填、特征码不填音形码不填、拼音码不填、路名码不填、行业类别填写、特征码填写音形码不填、拼音码填写、路名码填写、行业类别不填、特征码不填音形码不填、拼音码填写、路名码填写、行业类别填写、特征码填写音形码填写、拼音码不填、路名码填写、行业类别不填、特征码填写音形码填写、拼音码不填、路名码填写、行业类别填写、特征码不填音形码填写、拼音码填写、路名码不填、行业类别不填、特征码填写音形码填写、拼音码填写、路名码不填、行业类别填写、特征码不填示例2:因子数相同,但在正交表中找不到相同的因素数(续)129(A)测试需求假设有一个系统有5个独立的变量(A,B,C,D,E)。变量A和B都有两个取值(A1、A2和B1、B2)。变量C和D都有三个可能的取值(C1、C2、C3和D1、D2、D3)。变量E有六个可能的取值(E1、E2、E3、E4、E5、E6)。(B)确定因素和因子①有五个因素(变量):A、B、C、D和E。②两个因素有两个因子(变量的取值)、两个因素有三个因子,一个因素有六个因子。A:A1、A2B:B1、B2C:C1、C2、C3D:D1、D2、D3E:E1、E2、E3、E4、E5、E63、示例3:因子数不相同130(C)选择正交表表中的因素数(变量)>=5表中有二个因素的因子(变量的取值)>=2另外二个因素的因子>=3另外一个因素的因子>=6从L49(78)、L18(36×61)中取行数最少的一个结果:L18(36×61)(D)正交表A:0—>A1,1—>A2;B:0—>B1,1—>B2;C:0—>C1,1—>C2,2—>C3;D:0—>D1,1—>D2,2—>D3;E:0—>E1,1—>E2,2—>E3,3—>E4,4—>E5,5—>E6;示例3:因子数不相同(续)131(E)找到正交表L18(36×61)

因为变量只有5个,所以在7列中需要删除两列,因为第7个因素中含有6个因子能保证E的6个取值,所以不能删除第7列,结论是删除其它6列中的任意两列均可。因子中出现不能带入的值时,将该因素的取值循环带入。(F)用L18(36×61)设计的测试用例测试用例省略测试用例减少数:216—>18加上一些可疑的情况(设为n个)为18+n它比原来也少多了示例3:因子数不相同(续)132

学创网案例分析

学创网后台,图书管理/录入图书/添加图书模块进行正交测试,界面参考如下图。案例133(A)测试需求该模块有有11个独立的变量。(B)确定因素和因子①有11个因素(变量)。②9个因素有2个因子(变量的取值)、1个因素有3个因子,1个因素有4个因子。译者:可填、可不填出版社:可填、可不填出版日期:可填、可不填ISBN:可填、可不填条形码:可填、可不填是否折扣:可选、可不选版次:可填、可不填图书简介:可填、可不填装帧:平装、精装开本:8、16、32图书分类:考试、辅导书、工具书、教材134(C)选择正交表表中的因素数(变量)>=11表中有9个因素的因子(变量的取值)>=21个因素的因子>=31个因素的因子>=4从L24

(211×4×6)、L24(3×4×213)中取行数最少的一个结果:虽然两个行数相同,但是选择L24(3×4×213)更接近。(D)正交表译者(E):可填(0)、可不填(1)出版社(F):可填(0)、可不填(1)出版日期(G):可填(0)、可不填(1)ISBN(H):可填(0)、可不填(1)条形码(I):可填(0)、可不填(1)是否折扣(J):可选(0)、可不选(1)版次(K):可填(0)、可不填(1)图书简介(L):可填(0)、可不填(1)装帧(M):平装(0)、精装(1)开本(N):8(0)、16(1)、32(2)图书分类(O):考试(0)、辅导书(1)、工具书(2)、教材(3)(E)找到正交表L24(3×4×213),其中删掉4列A、B、C、D。135

静态测试是寻找文档、程序代码中可能存在的错误而不执行程序代码的过程。静态测试可以手工进行,也可以借助软件工具自动进行。静态测试技术具有以下特点:静态测试不必动态地执行程序,也就不必进行测试用例设计和结果判断等工作。静态测试可以由人工进行,充分发挥人的逻辑思维优势,行之有效。静态测试实施不需特别条件,容易开展。静态测试在发现了错误的同时也就定位了错误,不需做额外的错误定位工作。 静态测试主要包括由人工进行的软件需求评审,软件设计评审,代码走查以及主要由软件工具自动进行的工具辅助静态分析。

静态测试136

动态测试:实际运行被测程序,输入相应的测试用例,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性。动态测试技术具有以下特点:实际运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析。必须生成测试数据来运行程序,测试质量依赖于测试数据。生成测试数据,分析测试结果工作量大,使开展测试工作费时、费力。动态测试中涉及多方面工作,人员多、设备多、数据多,要求有较好的管理和工作规程。动态测试包括三部分核心内容:生成测试数据,执行程序和验证程序的输出结果。动态测试137动态测试适合层次:单元测试集成测试系统测试用户的验收测试回归测试动态测试138软件测试方法测试用例选择方法静态测试动态测试白盒测试调试、单元测试黑盒测试集成、系统、验收软件测试方法与测试用例设计方法关系白盒测试检查设计代码走读黑盒测试检查产品说明书139测试方法组合静态黑盒测试动态黑盒测试静态白盒测试动态白盒测试140检查产品说明书

---静态黑盒测试产品说明书文档(图片/文字)实例(计算器)产品说明书的必要性一致性确保最终产品符合客户要求(每个人对于产品外观、功能和使用方式都有独到的见解,必须统一)正确计划测试量可以作为测试项目的书面材料141产品说明书产品说明书:无需执行程序无需了解其建立途径(P13:易用性研究、与客户沟通、焦点人群、销售收入等)尽早找出软件缺陷如何测试产品说明书/需求?142如何测试产品说明书第一步:对产品说明书进行高级审查设身处地为客户着想、熟悉软件应用领域相关知识研究现有的标准和规范公司惯用语/约定、行业要求/国家标准、用户界面、硬件等审查和测试同类软件,用于检查本产品的产品说明书规模、复杂性、测试性、质量/可靠性先大局,再细节;先整体,再局部。第二步:产品说明书的低级测试技术产品说明书属性检查清单完整、准确、精确、一致、贴切、合理、代码无关、可测试产品说明书用语检查清单检查对问题的描述是否准确清晰143闭着眼睛测试软件

---动态黑盒测试1动态黑盒测试随意敲击键盘寻找破绽/缺陷目标明确的结构化方法进行测试穷举测试不可能,选取典型的/具有代表性的数据进行测试144动态黑盒测试2通过测试和失败测试通过测试:软件能做什么失败测试:采取各种手段搞垮软件寻求缺陷eg.测试刚下线的汽车1453等价类划分Windows文件名测试(P46)

windows文件名可以包含除了、/:*?“<>之外的字符;文件名长度是1-255个。1464边界值分析及错误推测边界条件、边界类型、测试边界线(P50)、次边界条件、2的乘方(eg1M)、ASCII表、默认、空白、空值、零值、无、重复/已存在数据、非法、错误、不正确和垃圾数据1475通过状态测试-1软件状态:软件当前所处的情况或模式实例:画图板(P55)实例:word编辑器(未修改/修改)1485通过状态测试–2软件测试员必须测试程序的状态及其转换测试软件的逻辑流程之问题建立状态转换图所有状态状态间转换条件进入/退出状态时需设置的信息及输出结果减少要测试的状态及转换的数量(P58)状态测试:测试状态及其转换并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论