【文档说明】软件测试的内容课件.ppt,共(87)页,353.025 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45265.html
以下为本文档部分文字说明:
第7章软件测试软件测试是在软件投入运行之前,对软件的需求分析、设计规格说明和编码的最后复审。由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。本章主要内容:软件测试的目的和原则软件测试的方法软件测试的步
骤调试软件测试工具第7章软件测试软件测试的概念和意义什么是软件测试:软件测试的定义:软件测试是为了发现错误而运行程序的过程。根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。
软件测试的概念和意义软件测试在软件生命期中跨越两个阶段:1.编写每一个模块后,进行单元测试。通常模块的编写者和测试者是同一个人。2.每一个模块完成单元测试后,对软件进行各种综合测试。由专门的测试人员完成。软件测试的概念和意义目前,在
软件开发过程中,将40%以上的工作量投入到软件测试之中。几个典型系统中软件测试的费用系统名称测试费用占软件开发预算的比例SAGE47%NAVALTACTICAL50%DATASYSTEMGENINI47%SATUR
NV44%软件测试的目的和原则软件测试的目的(G.J.Myers提出):1、软件测试是为了发现错误而运行程序的过程。2、一个好的测试用例能够发现至今尚未发现的错误。3、一个成功的测试是发现了至今尚未发现的错误的测试。软件
测试的目的和原则软件测试的原则:(1)应当把“尽早地和不断地测试”作为开发者的座右铭(2)软件测试工作应该由独立的专业软件测试机构来完成(3)测试工作要全面,但不可能实现“穷举”(4)把Pareto原理应用到软件测试中(5)妥
善保存一切测试过程文档(6)制定严格、合理的测试计划(7)错误经过修改后,相关的测试必不可少测试用例的要求测试用例应由输入数据和预期的输出数据两部分组成。测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。长期保留测试用例。软件
测试的范围软件测试的对象:软件测试不等于程序测试,在软件定义与软件开发的各个阶段所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源程序等。软件测试步骤测试过程分为
4个步骤:单元测试集成测试确认测试系统测试单元测试单元测试单元测试被测模块被测模块被测模块集成测试设计信息确认测试系统测试已集成的软件已确认的软件可交付的软件软件需求已测试模块其他系统元素软件测试方法静态测试(程序不执行)软件测试动态测试(
程序执行)黑盒测试(测试功能)白盒测试(测试结构)静态分析器(自动工具)代码审查(人工方式)软件测试方法的分类软件测试方法静态测试静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。1、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验
,而人工评审软件除了审查编码还要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计人工检测可发现30%~70%的逻辑设计和编码错误,从而减少系统测试的总工作量。包括”办公室“检查、会审、
走查(排查)。2、计算机辅助静态检测:利用静态检测工具对程序进行测试。从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。软件测试工作动态测试动态测试是通过运行程序发现错误。一般意义上的测试都是动态测试。为使测试发现尽可能多的错误,动态测试时需
采用一些有效的方法。一方面通过测试检查软件每个功能的执行情况,另一方面详细测试软件的内部结构和处理过程。分别称为黑盒测试和白盒测试。软件测试工作软件测试过程中的信息:测试过程需要三类信息:1、软件配置
:包括需求规格说明、软件设计规格说明、源程序等;2、测试配置:包括测试方案、测试用例、测试驱动程序等;3、测试工具:计算机辅助测试的有关工具。如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。软件测试方法软件测试信息流:测试结果分析
可靠性分析排错软件配置测试配置测试结果预期结果错误出错率数据改正的软件预测的可靠性测试工具设计测试用例准备测试数据用测试数据运行程序测试结果分析测试用例测试报告预期结果测试结果软件动态测试过程白盒测试法白盒测试法是通过
分析程序内部的逻辑与执行路径来设计测试用例,并对测试用例进行测试的方法,也称做结构测试或逻辑驱动方法。白盒测试法对程序的执行细节进行测试,验证程序模块的每个路径的执行情况。软件测试方法白盒测试法白盒测试是结构测试,所以被测对象基本上是源程序,以程
序的内部结构为基础,设计测试用例。1、逻辑覆盖追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFF
T12345如右图:一个被测程序的流程图。软件测试方法(1)语句覆盖:为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFFT1234
5测试路径为1-2-4,即可保证每个语句至少执行一次。所以测试用例为:A=2、B=0、X=3。程序每个语句都能执行,语句覆盖似乎全面地检查了每个语句,但该测试用例只检查了逻辑表达式为“真”的情况,如将“AND”错写为“OR”、X>1错写为X<1,仍用
上面的测试用例,不能发现错误。因此语句覆盖是比较弱的覆盖。软件测试方法(2)判定覆盖:判定覆盖是指设计足够的测试用例,使被测程序的每个判定表达式至少获得一次“真”和“假”值,从而使程序的每个分支至少都通过一次,所以判定覆盖又叫分支
覆盖。(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFFT12345测试路径为1-2-4,1-3-5或1-2-5,1-3-4,即可达到覆盖标准。所以测试用例为:A=3、B=0、X=1(1-2-5),A=2、B=1、X=2(1-3-4)。对于多分支的判定,判定覆盖要使得每一个判
定表达式获得每一个可能的值。判定覆盖比语句覆盖严格,若通过各个分支,各个语句也执行了。但该测试仍不充分,上述数据只覆盖了全部路径的一半,如将X>1错写为X<1,测试不到.软件测试方法(3)条件覆盖:条件覆盖是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可
能的值至少出现一次。即对该程序中的四个条件A>1,B=0,A=2,X>1要选择足够的测试用例,使得:判定表达式1出现:A>1,B=0;A≤1,B≠0判定表达式2出现:A=2,X>1;A≠2,X<=1达到条件覆盖标准。为满足上述要求,选择以下两组数据:A=2,B=0,X=3(
满足A>1,B=0,A=2,X>1通过路径1-2-4)A=1,B=1,X=1(满足A≤1,B≠0,X≤1,A≠2通过路径1-3-5)(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFFT12345软件测试方法以上两组数据不仅覆盖了判定表达式中的
所有条件的可能取值,而且覆盖了所有判定的取“真”分支和取“假”分支,在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以下两组数据:A=1,B=0,X=3(满足A≤1,B=0,A≠2,X>1)A=2,B=1
,X=1(满足A>1,B≠0,X≤1,A=2)以上两组数据覆盖了判定表达式中的所有条件的可能取值,但只覆盖了第一个判定表达式的取“假”分支和第二个判定表达式的取“真”分支,此例不满足判定覆盖。所以满足条件覆盖
不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼顾。(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFFT12345软件测试方法(4)判定/条件覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的
值至少出现一次。并使每个判定表达式所有可能的结果也至少出现一次。对该例程序,可选择以下两组数据达到判定/条件覆盖标准:A=2,B=0,X=3A=1,B=1,X=1从表面上看,判定/条件覆盖测试了所有条件的取值,但
实际上条件组合中的某些条件会抑制其它的条件,如“与”运算的判定表达式中,第一个条件为“假”,则这个表达式后面的几个条件均不起作用,后面的表达式中的错误也就测试不出来。(A>1)AND(B=0)(A=2)OR
(X>1)语句段1语句段2TFFT12345软件测试方法(5)条件组合覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆
盖标准。该例中,两个判定表达式共有4个条件,有8种组合:①A>1,B=0;②A>1,B≠0;③A≤1,B=0;④A≤1,B≠0;⑤A=2,X>1;⑥A=2,X≤1;⑦A≠2,X>1;⑧A≠2,X≤1;测试用例4组数据:A=2,B=0,X=2;覆盖条件组合①⑤,路径1-2-4A=2,B=
1,X=1;覆盖条件组合②⑥,路径1-3-4A=1,B=1,X=1;覆盖条件组合④⑧,路径1-3-5A=1,B=0,X=2;覆盖条件组合③⑦,路径1-3-4显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定/条件覆盖,但该测试没有覆盖程序所有可能的执行路径,1-2-5路径
没有覆盖。(A>1)AND(B=0)(A=2)OR(X>1)语句段1语句段2TFFT12345软件测试方法(6)路径覆盖:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该例可选择以下测试用例,覆盖程序中的4条路径:A=2,B=0,X=2;覆盖路径1-2-4,条件组合①⑤;A=2
,B=1,X=1;覆盖路径1-3-4,条件组合②⑥;A=1,B=1,X=1;覆盖路径1-3-5,条件组合④⑧;A=3,B=0,X=1;覆盖路径1-2-5,条件组合①⑧;显然,该测试满足路径覆盖,但没有满足条件组合覆盖。(A>1)AND(B=0)(A=2)OR(X>1)语句段1
语句段2TFFT12345软件测试方法发现错误能力语句覆盖每条语句至少执行一次判定覆盖每个判定的每个分支至少执行一次条件覆盖每个判定的每个条件应取到各种可能的值判定/条件覆盖同时满足判定覆盖和条件覆盖条件组合覆盖每个判定中各条件的每一种组合至少出现一次路径覆盖
使程序中每一条可能的路径至少执行一次强弱六种覆盖标准的对比六种覆盖标准的对比语句覆盖发现错误能力弱;判定覆盖包含语句覆盖,但可能会使一些条件得不到测试;条件覆盖对每一条件进行单独检查,一般情况下其检错能力较判定覆盖强,但有时达不到判定覆盖的要求;判定/条件
覆盖包含了判定覆盖与条件覆盖的要求,但受软件的影响,有时达不到判定覆盖的标准;条件组合覆盖发现错误能力较强;路径覆盖查错能力强。总结:在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。软件测试方法2、基本路径测试基本路径测试是在程序图的基础
上,通过分析环路复杂度,导出独立路径的基本集合,从而设计测试用例,保证这些路径至少被执行一次。基本路径测试的步骤①画出程序图以详细设计或源程序为基础,导出程序流程图的拓扑结构----程序图。程序图是退化了的程序流程图,是反映控制流程的有向图
。称为结点,代表程序流程图的每个处理符号;称为边或者路径,表示控制流向。②计算程序环路复杂度环路复杂度是度量程序图G复杂度的方法。三种计算方法:(1)V(G)=P+1,其中P为判定结点(2)V(G)=E
-N+2,其中E为边数,N为结点数(3)V(G)为区域数③确定独立路径的基本集合一条独立路径至少包含有一条在其他独立路径中没有的边。独立路径的基本集合不唯一。④设计测试用例确保每一条路径的执行。基本路径测试的步骤voidme
rgelist(listla,listlb,list&lc){1:initlist(lc);i=j=1;k=0;la_len=listlength(la);lb_len=listlength(lb);2:while((i<=la_len)3:&&(j<=lb_len)){4:gete
lem(la,i,ai);getelem(lb,j,bj);5:if(ai=bj)6:{listinsert(lc,++k,ai);++i;listinsert(lc,++k,bj);++j;}例:合并两个有序线形表la、lb,生成有
序线形表lc,代码如下所示。要求写出其基本路径测试的步骤。7:elseif(ai<bj)8:{listinsert(lc,++k,ai);++i;}9:else{listinsert(lc,++k,bj);++j;}10:}11:while(i<=la_len){12:getelem(l
a,i++,ai);listinsert(lc,++k,ai);}13:while(j<=lb_len){14:getelem(lb,j++,bj);listinsert(lc,++k,bj);}15:}124567101112131415第1步:画出程序图开始结点结束结点3判定
结点981245671011121314153判定结点98第2步:计算环路复杂度3741256第2步:计算环路复杂度(1)判定结点为2,3,5,7,11,13V(G)=P+1=7(2)V(G)=E-N+2=20-15+2=7(3)区域个数为7个,
V(G)=7第3步:确定独立路径的基本集合路径1:1-2-11-13-15路径2:1-2-11-13-14-13-15路径3:1-2-3-11-12-11-13-15路径4:1-2-3-4-5-6-10-2-11-13-15路径5:1-2-3-4-5-7-8-10-2-11-13-14-13
-15路径6:1-2-3-4-5-7-9-10-2-3-11-12-11-13-15路径7:1-2-3-4-5-6-10-2-3-11-11-12-11-13-15第4步:设计测试用例路径1用例:la={},lb={},lc={}路径2用例:la={},lb={3,5},l
c={3,5}路径3用例:la={2,4},lb={},lc={2,4}路径4用例:la={2,3,4},lb={2,3,4},lc={2,2,3,3,4,4}路径5用例:la={2,3,4},lb={5,6},lc={2,3,4,5,6}路
径6用例:la={2,3,4},lb={0,1},lc={0,1,2,3,4}路径7用例:la={2,3,4},lb={2,3},lc={2,2,3,3,4}软件测试方法3、条件测试条件测试重点测试程序中的每个条件,测试组成条件的各个成分的正确性,通过检测程序条件中的错误,发现程序中的
其它错误。条件可能是一个布尔变量、一个关系表达式或是由两个或多个简单条件、布尔运算符和括弧组成的复杂条件。最简单的条件测试策略应该是分支测试,分支测试主要是保证条件中的每个简单条件,以及取真、取假的分支都至少执行一次。软件测试方法4、循环测试根据循环的复杂性
,可分为简单循环、嵌套循环和串接循环。1)简单循环简单循环可依据以下顺序分别设计测试用例进行测试:①执行零次循环:从循环入口到出口;②只执行一次循环:检查循环初始值;③m次循环:检查m次循环,其中m小于最大次数减1;④执行最大次数循环、比最大次数多一次、少一次的循环。软件测试方法2)嵌
套循环①对最内层循环做简单循环的全部测试,所有其它外层的循环变量置为最小值;②逐步外推,对其外面一层循环进行测试。测试时保持当前层的所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值,
同时考虑增加越界值和非法值的测试。③反复进行,直到所有各层循环测试完毕。软件测试方法3)串接循环如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,第二个循环的执行与第一个循环的某个值有关,则需要使用测试嵌
套循环的办法来处理。黑盒测试法黑盒测试法根据输入/输出数据条件设计测试用例,验证程序的功能是否正确或满足要求,不需考虑程序的内部细节及执行路径。黑盒测试法在接口上也验证输入/输出信息的正确性。软件测试方法黑盒测试法“黑盒”测试又称功能测试,检查程序的功
能是否符合规格说明书的要求,程序是否接收输入数据而产生正确的输出信息。测试方法:等价类划分法、边界值分析法、错误推测法。1、等价类划分程序的输入域总可以划分成若干个不同性质的等价类,每个等价类中的一个典
型值在测试中的作用与该类所有其他值的作用相同。因此,可以从每个等价类中只取一组数据作为测试数据,这样选取的数据最具有代表性,从而减少测试成本和提高测试效率。软件测试方法等价类,指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的。即如果
使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。将输入数据域按有效的或无效的(或称合理的或不合理的)划分成若干类,通过测试每个类的代表值相当于对于该类其他数
据值进行测试。如果某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测试用例,也不会发现程序错误。这样用少量有代表性的例子可代替大量测试目的相同的例子,有效地提高测试效率。如何划分等价类若某个输入条件规
定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。若规定了输入数据的一组值,且程序对不同的输入值做不同的处理,则每个允许的输入值是一个有效等价类,另外还有一个无效等价类。若规定了输入数据必须遵循的规则,可确定一个有效等价类和若干个无效等价类
。若已划分的等价类中各元素在程序中的处理方式不同,则将此等价类进一步划分为更小的等价类。等价类划分法的基本目标:用一个测试用例能独立地发现一类错误;理想情况下,一个测试用例能够发现多类错误,从而减少测试成本、提高测试效率。软件测试方法等
价类划分法的执行步骤:1)为每个等价类规定一个唯一的编号;2)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复此步,直到所有的有效等价类均被覆盖为止;3)设计一个测试用例,使其只覆盖一个无效等
价类,重复此步,直到所有的无效等价类均被覆盖为止。4)执行所设计的一系列测试用例,分析是否得到预期结果。例题:某报表处理系统。要求用户输入的日期为2000年1月~2005年12月,日期长度为6位,前4位表示年
代,后2位表示月份。使用等价类划分法设计测试用例,测试用户输入日期的合法性。步骤1:划分等价类并编号。划分为3个有效等价类,7个无效等价类。输入等价类有效等价类无效等价类报表日期的类型及长度1.6位数字字符2.有非数字字符3.少于6个数字字符4.多于6个数字字符
年份范围5.在2000~2005之间6.小于20007.大于2005月份范围8.在1~12之间9.等于010.大于12步骤2:为有效等价类设计测试用例。对于表中编号为1,5,8的有效等价类设计一个测试用例覆盖。测试数据期望结果覆盖范围200511输
入有效1,5,8步骤3:为每一个无效等价类至少设计一个测试用例。测试数据期望结果覆盖范围005MAY输入无效220055输入无效32005005输入无效4199905输入无效6200605输入无效7200500输入无效9200513输入无效10软件测试方法黑盒测试法2、边界值分析法边界值分析
也是一种黑盒测试法,是对等价类划分法的补充。实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类、输出等价类边界上的情况。检查边界情况的测试用例是比较高效的,可以查出更多的错误。选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。若输入条件规定了值的范围,测试
用例可选择边界值,或者边界值的周围数据。若输入条件指出了值的个数,则按最大个数、最小个数、比最大个数多1、最小个数少1等情况设计测试用例。对于每个输出条件按照以上两个原则确定输出值的边界。若程序的需求说明给出的输入域或输出域是一个有序集合(如顺序文件、线性表、链表),应选择
集合的第一个元素及最后一个元素作为测试用例。边界值分析法设计原则输入等价类测试用例说明测试数据期望结果选取理由报表日期的类型及长度6个数字字符5,7个数字字符1个/全部非数字字符有效无效无效年份范围20002002200519992006有效有效有效无效无效月
份范围1126<1>12有效有效有效无效无效软件测试方法黑盒测试法3、错误推测法错误推测法的基本思想:列举出程序中可能存在的错误和容易发生错误的特殊情况,并根据它们选择测试方案。有经验的程序员通常可根据程序的特点和功能选择测试数据,这些
数据可能导致程序出现错误。例:排序程序输入表为空。输入表只包含一个元素。输入表中所有元素均相同。输入表已有序。软件测试步骤测试过程分为4个步骤:单元测试集成测试确认测试系统测试单元测试单元测试单元测试被测模
块被测模块被测模块集成测试设计信息确认测试系统测试已集成的软件已确认的软件可交付的软件软件需求已测试模块其他系统元素软件测试与软件开发的关系用户要求系统测试确认测试集成测试模块测试编码详细设计需求分析概要设计软件测试步骤1、单
元测试单元测试也称模块测试,是针对软件设计的最小单元――程序模块进行的测试,目的是发现模块内部的错误。单元测试主要从以下五个方面进行。(1)模块接口测试(2)局部数据结构测试(3)路径测试(4)程序异常测试(5)边界条件测试软件测试步骤2、集成测试
集成测试也称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。(需考虑几个问题P171)(1)一次性组装方式一次性组装方式的基本思想是首先分别测试每个模块,然后将所有模块全部组装起来进行测试,形成最终的软件系统。缺点:
①一次将所有模块组装后的程序会很庞大,各模块之间相互影响,情况十分复杂。②在测试过程中会同时出现很多错误,对这些错误的定位难度增大,修改的过程中可能又会引发其它错误或激发其它潜在的错误.③测试工作十分的漫长。软件测试步骤(2)增殖式组装方式增殖式组装方式是采用循序渐进的方式,每次增加一个模块到
已测试好的模块中,错误的范围会缩小,错误的修改和定位难度相对降低。1)自顶向下增殖方式(图P173)具体的实施步骤如下:①先测试主控制模块,测试时使用存根模块代替所有直接附属主控制模块的功能模块;②用某种结合策略,用实际模块代替相应的存根模块;③对结合后的模块进行测试;④为了保
证加入的模块没有引进新的错误,需要进行回归测试;⑤重复操作2、3、4步,完成集成测试。软件测试步骤2、集成测试(2)增殖式组装方式2)自底向上增殖方式(图P173)具体的结合策略如下:①将底层模块组合成实现某个子功能的簇;②写一个驱动程序,用来提供该功能簇的执行入口和输入/输出界面;
③对该功能簇进行测试;④在低层继续寻找模块,将该功能簇扩大,重新修改驱动程序,以适应对当前功能簇的测试。⑤不断重复第3、4步,完成测试。软件测试步骤2、集成测试(3)混合增殖式测试自顶向下增殖方式和自底向上增殖方式各有优缺
点,在实际的测试过程中,可根据具体情况将两种方法结合起来使用。(回归测试)1)改进的自顶向下的增殖测试:它的基本思想是对涉及输入/输出模块和复杂算法的模块先采用自底向上的测试方法,将这些模块组装成为功能相对完整且相对独立的子系统,
然后由主模块开始自顶向下进行增殖测试。2)混合测试法:它首先对软件结构中较低层的模块自底向上组装测试,然后对软件结构中较上层的模块采用自顶向下的方法进行组装与测试。软件测试步骤3、确认测试确认测试也称有效性测试,目的是验证软件的有效性,即验证软件的功能和性能及其它特性是否符合用户要求
。确认测试是软件交付使用前一项很重要的活动,它最终决定用户对该软件的认可程度。(1)确认测试内容(2)α测试和β测试α测试是邀请用户参加,在开发场地进行的测试,由开发组成员或用户实际操作运行,对测试过程中出现的问题,由
开发者记录下来,作为修改的依据。它的最大特点是整个测试过程是在受控环境下进行。软件测试步骤3、确认测试α测试和β测试β测试是由部分用户在实际的使用环境下进行的测试。测试过程中开发者不在现场,由用户独立操作,验证程序的各项功能,用户发现
的问题全部记录下来,反馈给程序开发者,开发者对软件进行必要的修改,并准备最终的软件产品发布。β测试的最大特点是实际的使用环境下进行的测试。(3)确认测试的结果可分为两种情况:①测试结果与预期结果相符,程序的功能和性能满足用户
需求;②测试结果与预期结果不相符,将存在的问题列出清单,提供给开发者作为修改依据。软件测试步骤4、系统测试系统测试的任务主要有:测试软件系统是否能与硬件协调工作,测试与其它软件协调运行的状况。系统测试的目的是充分运
行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。(1)恢复测试:主要检查系统的容错能力。(2)安全测试:主要检查系统对非法侵入的防范能力。(3)强度测试:主要检查程序在一些极限条件下的运行情况。(4)性能测试:主要检查系统是否满足需求说明书中规定的性能。(5)其它:版本间的兼容性测试、
安装测试,最终提交的文档测试等。软件调试调试(debug,排错)调试功能是将在测试过程中出现的错误进一步诊断并且改正程序中存在的潜在错误,保证软件运行的正确性和可靠性。软件调试活动主要分为以下两部分:①确定程序中可疑错误的确切性质和位置。②对程序的设计和编码进行修改,
纠正当前错误。调试的过程如下:(图P176)确定出错原因-----找出错误的位置------排除这个错误-----重复对修改后的代码进行有关测试-----修正无效或是引入了新的错误,撤销此次改动或是修改新的错误。不断重复上述过程,直到找到一个有效的解决办法为止.查找错误的难度:(P177)软件调试
调试方法1、原始法调试主要思想是通过分析运行程序时数据信息的变化情况查找错误原因:(1)打印内存的全部数据(2)添加必要的打印语句(3)使用自动调试工具①设置断点②单步执行软件调试调试方法2、回溯法调试回溯调试的方法是从出现错误征兆处开始,人工沿控制
流程往回追踪程序代码,直至发现出错的根源或确定错误产生的范围。适用于较小程序,它能将错误范围缩小到程序中的一小段代码,使得定位错误相对容易;对于大程序,它回溯的路径可能很多,回溯会变得很困难。软件调试调试方法3、归纳法调试归纳法调试
的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。具体实施步骤如下:第一步:收集所有输出结果有错误的测试用例和执行结果。第二步:分析收集到的数据信息,以便发现规律或矛盾。第三步:导
出假设。第四步:证明假设,无法证明后应重新假设。软件调试调试方法4、演绎法调试演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。5、对分法调试重复使用对半划分程序的方法,不
断缩小出错范围,直到将故障定位到容易诊断的程度。测试计划1引言1.1编写目的:阐明编写测试计划的目的并指明读者对象。1.2项目背景:说明项目的来源、委托单位及主管部门。1.3定义:列出测试计划中所用到的专门术语的定义和缩写词的原义。1.4参考资料:列出有关资料的作者、标题
、编号、发表日期、出版单位或资料来源,可包括:项目的计划任务书、合同或批文;项目开发计划;需求规格说明书;概要设计说明书;详细设计说明书;用户操作手册;本测试计划中引用的其他资料、采用的软件开发标准或规范。测试计划2任务概述2.1目标2.2运行环境
2.3需求概述2.4条件与限制测试计划3计划3.1测试方案:说明测试方法和选取测试用例的原则。3.2测试项目:列出组装测试和确认测试中每一项测试的内容、名称、目的和进度。3.3测试准备3.4测试机构及人员:测试机构名称、负责人和职责。测试计划4测试项
目说明4.1按顺序逐个对测试项目做出说明4.1.1测试项目名称及测试内容4.1.2测试用例4.1.3输入:输入的数据和输入命令。4.1.4输出:预期的输出数据。4.2步骤及操作4.3允许偏差:给出实测结果与预期结果之间允许偏差的
范围。4.4进度4.5条件:给出项目测试对资源的特殊要求,如设备、软件、人员等。4.6测试资料:说明项目测试所需的资料。测试计划5评价5.1范围:说明所完成的各项测试涉及问题的范围及其局限性。5.2准则:说明评论测试结果的准则。测试分析报告1引言1.1编写目的:阐明编写测试分析报
告的目的并指明读者对象。1.2项目背景:说明项目的来源、委托单位及主管部门。1.3定义:列出测试分析报告中所用到的专门术语的定义和缩写词的原义。1.4参考资料:列出有关资料的作者、标题、编号、发表日期、出版单
位或资料来源,可包括:项目的计划任务书、合同或批文;项目开发计划;需求规格说明书;概要设计说明书;详细设计说明书;用户操作手册;测试计划;测试分析报告所引用的其他资料、采用的软件工程标准或工程规范。测试分析报告2测试计划情况2.1机构和人员:给出
测试机构名称、负责人和参与测试人员名单。2.2测试结果:按顺序给出每一测试项目的实测结果数据;与预期结果数据的偏差;该项测试表明的事实;该项测试发现的问题。测试分析报告3软件需求测试结论按顺序给出每一项需求测试的结论。包括:证实的软件
能力;局限性(即该项需求未得到充分测试的情况及原因)。测试分析报告4评价4.1软件能力:经过测试所表明的软件能力。4.2缺陷和限制:说明测试所揭露的软件缺陷和不足,以及可能给软件运行带来的影响。4.3建议:提出为弥补上述缺陷的
建议。4.4测试结论:说明能否通过。例:合并两个线形表,代码如下:voidmergelist(listla,listlb,list&lc){1:initlist(lc);i=j=1;k=0;la_len=listlength(la);lb_len=li
stlength(lb);2:while((i<=la_len)3:&&(j<=lb_len)){4:getelem(la,i,ai);getelem(lb,i,bj);5:if(ai<=bj)6:{listinse
rt(lc,++k,ai);++i;}7:else{listinsert(lc,++k,bj);++j;}8:}9:while(i<=la_len){10:getelem(la,i++,ai);listins
ert(lc,++k,ai);}11:while(j<=lb_len){12:getelem(lb,j++,bj);listinsert(lc,++k,bj);}13:}要求:写出其基本路径测试步骤。124567910111213第1步:画出程序图开始结点结束结点38判定结点第2步
:计算环路复杂度判定结点为2,3,5,9,11V(G)=P+1=6第3步:确定独立路径的基本集合路径1:1-2-9-11-13路径2:1-2-9-11-12-11-13路径3:1-2-3-9-10-9-11-13
路径4:1-2-3-4-5-6/7-8-2-9-11-13路径5:1-2-3-4-5-6/7-8-2-9-11-12-11-13路径6:1-2-3-4-5-6/7-8-2-9-10-9-11-13第4步:设计测试用例路径1用例:l
a={},lb={},lc={}路径2用例:la={},lb={3},lc={3}路径3用例:la={3},lb={},lc={3}路径4用例:路径5用例:la={3,5},lb={2,4,6},lc={2,3,4,5,6}路
径6用例:la={3,5,6},lb={2,4},lc={2,3,4,5,7}