《软件测试的内容课件》由会员分享,可在线阅读,更多相关《软件测试的内容课件(87页珍藏版)》请在金锄头文库上搜索。
1、第第7章章 软件测试软件测试 软件测试是在软件投入运行之前,对软件的需求分析、设软件测试是在软件投入运行之前,对软件的需求分析、设计规格说明和编码的最后复审。计规格说明和编码的最后复审。 由于软件开发的各个阶段均包含了大量的人的创造性劳动,由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。不可避免地会引入错误,尤其是大型、复杂的软件系统。软件测试的内容本章主要内容:本章主要内容:n软件测试的目的和原则软件测试的目的和原则n软件测试的方法软件测试的方法n软件测试的步骤软件测试的步骤n调试调试n软件测试工具软件测试工具第第7章章 软件测试软件测试
2、软件测试的内容软件测试的概念和意义软件测试的概念和意义什么是软件测试:什么是软件测试: 软件测试的软件测试的定义定义:软件测试是为了发现错误而运行:软件测试是为了发现错误而运行程序的过程。程序的过程。 根据软件开发各阶段的规格说明和程序内部结构精根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。发现程序中的错误。软件测试的内容软件测试的概念和意义软件测试的概念和意义软件测试在软件生命期中跨越两个阶段:软件测试在软件生命期中跨越两个阶段: 1.编写每一个模块后,进行编写每一个模块后,进行单
3、元测试单元测试。通常模块的。通常模块的编写者和测试者是同一个人。编写者和测试者是同一个人。 2.每一个模块完成单元测试后,对软件进行各种每一个模块完成单元测试后,对软件进行各种综综合测试合测试。由专门的测试人员完成。由专门的测试人员完成。软件测试的内容软件测试的概念和意义软件测试的概念和意义 目前,在软件开发过程中,将目前,在软件开发过程中,将40%以上的工作量投入到以上的工作量投入到软件测试软件测试之中。之中。 几个典型系统中软件测试的费用几个典型系统中软件测试的费用 系统名称系统名称 测试费用占软件开发预算的比例测试费用占软件开发预算的比例 SAGE 47% NAVAL TACTICAL
4、50% DATA SYSTEM GENINI 47% S ATURN V 44%软件测试的内容软件测试的目的和原则软件测试的目的和原则软件测试的软件测试的目的目的(G.J.Myers提出提出): 1、软件测试是为了、软件测试是为了发现错误发现错误而而运行程序运行程序的过的过程。程。 2、一个、一个好的测试用例好的测试用例能够能够发现发现至今尚未发现至今尚未发现的的错误错误。 3、一个、一个成功的测试成功的测试是是发现发现了至今尚未发现的了至今尚未发现的错误的错误的测试测试。软件测试的内容软件测试的目的和原则软件测试的目的和原则软件测试的原则:软件测试的原则:(1)应当把)应当把“尽早地和不断地
5、测试尽早地和不断地测试”作为开发者的座右铭作为开发者的座右铭(2)软件测试工作应该由独立的专业软件测试机构来完成)软件测试工作应该由独立的专业软件测试机构来完成 (3)测试工作要全面,但不可能实现)测试工作要全面,但不可能实现“穷举穷举”(4)把)把Pareto原理应用到软件测试中原理应用到软件测试中(5)妥善保存一切测试过程文档)妥善保存一切测试过程文档(6)制定严格、合理的测试计划)制定严格、合理的测试计划(7)错误经过修改后,相关的测试必不可少)错误经过修改后,相关的测试必不可少软件测试的内容测试用例的要求测试用例的要求n测试用例应由输入数据和预期的输出数据测试用例应由输入数据和预期的输
6、出数据两部分组成。两部分组成。n测试用例不仅选用合理的输入数据,还要测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。选择不合理的输入数据。n长期保留测试用例。长期保留测试用例。软件测试的内容软件测试的范围软件测试的范围软件测试的对象软件测试的对象: 软件测试不等于程序测试,在软件定义与软件开发的软件测试不等于程序测试,在软件定义与软件开发的各个阶段所得到的各种文档资料,都是测试对象,包括需各个阶段所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源求规格说明、概要设计规格说明、详细设计规格说明、源程序等。程序等。软件测试的内容软件测试步骤软件测
7、试步骤 测试过程分为测试过程分为4个步骤:个步骤: 单元测试单元测试 集成测试集成测试 确认测试确认测试 系统测试系统测试单元单元测试测试单元单元测试测试单元单元测试测试被测模块被测模块被测模块被测模块被测模块被测模块集成集成测试测试设设计计信信息息确认确认测试测试系统系统测试测试已集成的已集成的软件软件已确认的已确认的软件软件可交付的可交付的软件软件软软件件需需求求已测试已测试模块模块其他系统元素其他系统元素软件测试的内容软件测试方法软件测试方法 静态测试静态测试 (程序不执行)(程序不执行)软件测试软件测试 动态测试动态测试 (程序执行)(程序执行)黑盒测试(测试功能)黑盒测试(测试功能)
8、白盒测试(测试结构)白盒测试(测试结构)静态分析器(自动工具)静态分析器(自动工具)代码审查(人工方式)代码审查(人工方式)软件测试方法的分类软件测试方法的分类软件测试的内容软件测试方法软件测试方法静态测试静态测试 静态测试指被测程序不在机器上运行,而采用人工检测静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。和计算机辅助静态检测的手段对程序进行测试。 1、人工检测:人工审查程序或评审软件。人工审查程序、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而人工评审软件除了审查编码还要偏重于编码质量的检验,而人工评审软件除了审查编码还要
9、对各阶段的软件产品进行检验。人工检测可以发现计算机不对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计人工检测可发现易发现的错误,据统计人工检测可发现30%70%的逻辑的逻辑设计和编码错误,从而减少系统测试的总工作量。设计和编码错误,从而减少系统测试的总工作量。 包括包括”办公室办公室“检查、会审、走查(排查)。检查、会审、走查(排查)。 2、计算机辅助静态检测:利用静态检测工具对程序进行测、计算机辅助静态检测:利用静态检测工具对程序进行测试。从程序中提取一些信息,以便检查程序逻辑的各种缺陷试。从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。和可疑的程序
10、构造。 软件测试的内容软件测试工作软件测试工作动态测试动态测试 动态测试是通过运行程序发现错误。动态测试是通过运行程序发现错误。 一般意义上的测试都是动态测试。为使测试发现尽可能多的一般意义上的测试都是动态测试。为使测试发现尽可能多的错误,动态测试时需采用一些有效的方法。错误,动态测试时需采用一些有效的方法。 一方面通过测试检查软件每个功能的执行情况,另一方面一方面通过测试检查软件每个功能的执行情况,另一方面详细测试软件的内部结构和处理过程。分别称为详细测试软件的内部结构和处理过程。分别称为黑盒测试黑盒测试和和白盒白盒测试测试。 软件测试的内容软件测试工作软件测试工作软件测试过程中的信息:软件
11、测试过程中的信息: 测试过程需要三类信息:测试过程需要三类信息: 1、软件配置软件配置:包括需求规格说明、软件设计规格说明、源程序等;:包括需求规格说明、软件设计规格说明、源程序等; 2、测试配置测试配置:包括测试方案、测试用例、测试驱动程序等;:包括测试方案、测试用例、测试驱动程序等; 3、测试工具测试工具:计算机辅助测试的有关工具。如测试数据自动生成工具、:计算机辅助测试的有关工具。如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。 软件测试的内容软件测试方法软件测试方法软件测试信
12、息流:软件测试信息流: 测试测试结果结果分析分析可靠性可靠性分析分析排错排错软件配置软件配置测试配置测试配置测试结果测试结果预期结果预期结果错误错误出错率出错率数据数据改正的软件改正的软件预测的可靠性预测的可靠性测试工具测试工具软件测试的内容设计设计测试用例测试用例准备准备测试数据测试数据用测试数据用测试数据运行程序运行程序测试结果测试结果分析分析测试用例测试用例测试报告测试报告预期结果预期结果测试结果测试结果软件动态测试过程软件动态测试过程软件测试的内容白盒测试法白盒测试法n白盒测试法是通过分析程序内部的逻辑与执白盒测试法是通过分析程序内部的逻辑与执行路径来设计测试用例,并对测试用例进行行路
13、径来设计测试用例,并对测试用例进行测试的方法,也称做结构测试或逻辑驱动方测试的方法,也称做结构测试或逻辑驱动方法。法。n白盒测试法对程序的执行细节进行测试,验白盒测试法对程序的执行细节进行测试,验证程序模块的每个路径的执行情况。证程序模块的每个路径的执行情况。软件测试的内容软件测试方法软件测试方法白盒测试法白盒测试法 白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结构为基础,设计测试用例。构为基础,设计测试用例。 1、逻辑覆盖、逻辑覆盖 追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不追求程序内部的逻辑覆
14、盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345如右图:一个被测如右图:一个被测程序的流程图。程序的流程图。软件测试的内容软件测试方法软件测试方法(1)语句覆盖:)语句覆盖: 为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。语句覆盖是指设计足够
15、的测试用例,使被测程序的每个语句至少执行一次。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345 测试路径为测试路径为1-2-4,即可保证每个语,即可保证每个语句至少执行一次。所以测试用例为:句至少执行一次。所以测试用例为:A=2、B=0 、X=3。程序每个语句都能执行,程序每个语句都能执行,语句覆盖似乎全面地检查了每个语句,但语句覆盖似乎全面地检查了每个语句,但该测试用例只检查了逻辑表达式为该测试用例只检查了逻辑表达式为“真真”的情况,如将的情况,如将“AND” 错写为错写为“ OR ”、 X1错写为错写为X1)AND(B=0)(A=2)OR(X1)
16、语句段语句段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)。对于多对于多分支的判定,判定覆盖要使得每一个判定分支的判定,判定覆盖要使得每一个判定表达式获得每一个可能的值。判定覆盖比表达式获得每一个可能的值。判定覆盖比语句覆盖严格,若通过各个分支,各个语语句覆盖严格,若通过各个分支,各个语句也执行了。但该测试仍不充分,上述数句也执行了。但该测试仍不充分,上述数据只覆盖了全部路径的一半,如将据只
17、覆盖了全部路径的一半,如将X1错错写为写为X1 , B=0 ,A=2,X1 要选择足够的测试用例,使得:要选择足够的测试用例,使得: 判定表达式判定表达式1出现:出现:A1,B=0;A1,B0 判定表达式判定表达式2出现:出现:A=2, X1; A2, X1 ,B=0, A=2 , X1 通过路径通过路径1-2-4) A=1,B=1, X=1(满足满足A1,B0, X1, A2通过路径通过路径1-3-5 ) (A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345软件测试的内容软件测试方法软件测试方法 以上两组数据不仅覆盖了判定表达式中的所有条件的可能以上两
18、组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆盖了取值,而且覆盖了 所有判定的取所有判定的取“真真”分支和取分支和取“假假”分支,分支,在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以下两组数据:下两组数据: A=1,B=0, X=3(满足满足A1,B=0,A 2 ,X1) A=2,B=1, X=1(满足(满足A1,B0,X 1,A=2) 以上两组数据覆盖了判定表达式中的所有条件的可能取值,但以上两组数据覆盖了判定表达式中的所有条件的可能取值,但只覆盖了只覆盖了 第一个判定表达式的取第一个判定表达式的取“假假”分支和第二个判
19、定表达分支和第二个判定表达式的取式的取“真真”分支,此例不满足判定覆盖。所以满足条件覆盖分支,此例不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼顾。顾。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345软件测试的内容软件测试方法软件测试方法(4)判定)判定/条件覆盖:条件覆盖: 该覆盖标准是指设计足够的测试用例,使被测程序的每个该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值至少出现一次。并使每判定表达式中每个条件的各种可能
20、的值至少出现一次。并使每个判定表达式所有可能的结果也至少出现一次。对该例程序,个判定表达式所有可能的结果也至少出现一次。对该例程序,可选择以下两组数据达到判定可选择以下两组数据达到判定/条件覆盖标准:条件覆盖标准: A=2,B=0, X=3 A=1,B=1, X=1 从表面上看,判定从表面上看,判定/条件覆盖测试了所有条件的取值,但条件覆盖测试了所有条件的取值,但实际上条件组合中的某些条件会抑制其它的条件,如实际上条件组合中的某些条件会抑制其它的条件,如“与与”运运算的判定表达式中,第一个条件为算的判定表达式中,第一个条件为“假假”,则这个表达式后面,则这个表达式后面的几个条件均不起作用,后面
21、的表达式中的错误也就测试不出的几个条件均不起作用,后面的表达式中的错误也就测试不出来。来。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345软件测试的内容软件测试方法软件测试方法(5)条件组合覆盖:)条件组合覆盖: 该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。该例中,两个判定表达式共有该例中,两个判定表达式共有4个条件,有个条件,有
22、8种组合:种组合: A1, B=0 ; A1, B0 ; A1,B=0; A1, B0 ; A=2, X1 ; A=2, X1; A2, X1; A2, X1 ; 测试用例测试用例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=1, B=0, X=2;覆盖条件组合覆盖条件组合 ,路径,路径1-3-4 显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定显然,满足条件组合覆盖的测
23、试,一定满足判定覆盖、条件覆盖、判定/条件条件覆盖,但该测试没有覆盖程序所有可能的执行路径,覆盖,但该测试没有覆盖程序所有可能的执行路径,1-2-5路径没有覆盖。路径没有覆盖。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345软件测试的内容软件测试方法软件测试方法(6)路径覆盖:)路径覆盖: 该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径: 该例可选择以下测试用例,覆盖程序中的该例可选择以下测试用例,覆盖程序中的4条路径:条路径: A=2, B=0, X=2;覆盖路径覆盖路径1
24、-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,条件组合,条件组合 ; 显然,该测试满足路径覆盖,但没有满足条件组合覆盖。显然,该测试满足路径覆盖,但没有满足条件组合覆盖。(A1)AND(B=0)(A=2)OR(X1)语句段语句段1语句段语句段2TFFT12345软件测试的内容软件测试方法软件测试方法发发 现现 错错 误误 能能 力力语句覆盖语句覆盖每条语句至少执行一次每条语句至少执行一次判定覆
25、盖判定覆盖每个判定的每个分支至少执行一次每个判定的每个分支至少执行一次条件覆盖条件覆盖每个判定的每个条件应取到各种可能的值每个判定的每个条件应取到各种可能的值判定判定/条件覆条件覆盖盖同时满足判定覆盖和条件覆盖同时满足判定覆盖和条件覆盖条件组合覆盖条件组合覆盖每个判定中各条件的每一种组合至少出现每个判定中各条件的每一种组合至少出现一次一次路径覆盖路径覆盖使程序中每一条可能的路径至少执行一次使程序中每一条可能的路径至少执行一次强强弱弱六种覆盖标准的对比六种覆盖标准的对比软件测试的内容六种覆盖标准的对比六种覆盖标准的对比n语句覆盖语句覆盖发现错误能力弱;发现错误能力弱;n判定覆盖判定覆盖包含语句覆
26、盖,但可能会使一些条件得不到测试;包含语句覆盖,但可能会使一些条件得不到测试;n条件覆盖条件覆盖对每一条件进行单独检查,一般情况下其检错能力对每一条件进行单独检查,一般情况下其检错能力较判定覆盖强,但有时达不到判定覆盖的要求;较判定覆盖强,但有时达不到判定覆盖的要求;n判定判定/条件覆盖条件覆盖包含了判定覆盖与条件覆盖的要求,但受软件包含了判定覆盖与条件覆盖的要求,但受软件的影响,有时达不到判定覆盖的标准;的影响,有时达不到判定覆盖的标准;n条件组合覆盖条件组合覆盖发现错误能力较强;发现错误能力较强;n路径覆盖路径覆盖查错能力强。查错能力强。总结:总结:在实际的逻辑覆盖测试中,一般以在实际的逻
27、辑覆盖测试中,一般以条件组合覆盖条件组合覆盖为主设为主设计测试用例,然后再补充部分用例,以达到计测试用例,然后再补充部分用例,以达到路径覆盖路径覆盖测试标测试标准。准。软件测试的内容软件测试方法软件测试方法 2、基本路径测试、基本路径测试 基基本本路路径径测测试试是是在在程程序序图图的的基基础础上上,通通过过分分析析环环路路复复杂杂度度,导导出出独独立立路路径径的的基基本本集集合合,从从而而设设计计测测试试用用例,例,保证这些路径至少被执行一次。保证这些路径至少被执行一次。 软件测试的内容基本路径测试的步骤基本路径测试的步骤n画出程序图画出程序图 以详细设计或源程序为基础,导出程序流程图的拓扑
28、结以详细设计或源程序为基础,导出程序流程图的拓扑结构构-程序图。程序图。 程序图是退化了的程序流程图,是反映控制流程的有向程序图是退化了的程序流程图,是反映控制流程的有向图。图。 称为称为结点结点,代表程序流程图的每个处理符号;,代表程序流程图的每个处理符号; 称为称为边边或者或者路径路径,表示控制流向。,表示控制流向。n n 软件测试的内容n计算程序环路复杂度计算程序环路复杂度 环路复杂度是度量程序图环路复杂度是度量程序图G复杂度的方法。复杂度的方法。 三种计算方法:三种计算方法:(1) V(G)=P+1,其中其中 P为判定结点为判定结点 (2) V(G)=E-N+2,其中其中E为边数,为边
29、数,N为结点数为结点数 (3) V(G)为区域数为区域数 软件测试的内容n确定独立路径的基本集合确定独立路径的基本集合n 一条独立路径至少包含有一条在其他独立路径中没一条独立路径至少包含有一条在其他独立路径中没有的边。有的边。n独立路径的基本集合不唯一。独立路径的基本集合不唯一。 n设计测试用例设计测试用例 确保每一条路径的执行。确保每一条路径的执行。基本路径测试的步骤基本路径测试的步骤软件测试的内容void mergelist(list la,list lb,list &lc)1: initlist(lc); i=j=1; k=0; la_len=listlength(la); lb_len
30、=listlength(lb);2: while (i=la_len) 3: & (j=lb_len)4: getelem(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: else if (aibj)8: listinsert(lc,+k,ai);+i;9:
31、 else listinsert(lc,+k,bj);+j;10: 11: while (i=la_len) 12: getelem(la,i+,ai); listinsert(lc,+k,ai); 13: while (j=lb_len) 14: getelem(lb,j+,bj); listinsert(lc,+k,bj); 15: 软件测试的内容124567101112131415第第1步:画出程序图步:画出程序图开始结点开始结点结束结点结束结点3判定结点判定结点98软件测试的内容1245671011121314153判定结点判定结点98第第2步:步:计算环路复杂度计算环路复杂度3741
32、256软件测试的内容n第第2步:计算环路复杂度步:计算环路复杂度n(1)判定结点为)判定结点为2,3,5,7,11,13 V(G)=P+1=7 (2)V(G)=E-N+2=20-15+27 (3)区域个数为)区域个数为7个,个, V(G)=7软件测试的内容n第第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-1
33、5 路径路径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软件测试的内容n第第4步:步:设计测试用例设计测试用例路径路径1用例:用例:la=, lb=, lc=路径路径2用例:用例:la=, lb=3,5, lc=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
34、,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、条件测试、条件测试 条条件件测测试试重重点点测测试试程程序序中中的的每每个个条条件件,测测试试组组成成条条件件的的各各个个成成分分的的正正确确性性,通通过过检检测测程程序序条条件件中中的的错错误误,发发现现程程序序中中的的其它错误其它错误 。 条条件件可可能能是是一一个个布布尔尔变变量量、一一个个关关系系表表达达式式或或是是由由两两个个或或多个简单条件、布尔运算符和括弧组成的复杂条件。多个简单条件、布尔运算符和括弧组成
35、的复杂条件。 最最简简单单的的条条件件测测试试策策略略应应该该是是分分支支测测试试,分分支支测测试试主主要要是是保保证证条条件件中中的的每每个个简简单单条条件件,以以及及取取真真、取取假假的的分分支支都都至至少少执执行一次。行一次。软件测试的内容软件测试方法软件测试方法 4、循环测试、循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环。根据循环的复杂性,可分为简单循环、嵌套循环和串接循环。 1)简单循环简单循环简单循环可依据以下顺序分别设计测试用例进行测试:简单循环可依据以下顺序分别设计测试用例进行测试:执行零次循环:从循环入口到出口;执行零次循环:从循环入口到出口;只执行一次循环
36、:检查循环初始值;只执行一次循环:检查循环初始值;m次循环:检查次循环:检查m次循环,其中次循环,其中m小于最大次数减小于最大次数减1;执行最大次数循环、比最大次数多一次、少一次的循环。执行最大次数循环、比最大次数多一次、少一次的循环。软件测试的内容软件测试方法软件测试方法2)嵌套循环嵌套循环对对最最内内层层循循环环做做简简单单循循环环的的全全部部测测试试,所所有有其其它它外外层层的的循循环环变量置为最小值;变量置为最小值;逐逐步步外外推推,对对其其外外面面一一层层循循环环进进行行测测试试。测测试试时时保保持持当当前前层层的的所所有有外外层层循循环环的的循循环环变变量量取取最最小小值值,所所有
37、有其其它它嵌嵌套套内内层层循循环环的的循循环环变变量量取取“典典型型”值值,同同时时考考虑虑增增加加越越界界值值和和非非法法值值的的测测试。试。反复进行,直到所有各层循环测试完毕。反复进行,直到所有各层循环测试完毕。软件测试的内容软件测试方法软件测试方法3)串接循环串接循环 如如果果各各个个循循环环互互相相独独立立,则则可可以以用用与与简简单单循循环环相相同同的的方方法法进进行行测测试试。但但如如果果几几个个循循环环不不是是互互相相独独立立的的,第第二二个个循循环环的的执执行行与与第第一一个个循循环环的的某某个个值值有有关关,则则需需要要使使用测试嵌套循环的办法来处理。用测试嵌套循环的办法来处
38、理。软件测试的内容黑盒测试法黑盒测试法n黑盒测试法根据输入黑盒测试法根据输入/输出数据条件设计测试输出数据条件设计测试用例,验证程序的功能是否正确或满足要求,用例,验证程序的功能是否正确或满足要求,不需考虑程序的内部细节及执行路径。不需考虑程序的内部细节及执行路径。n黑盒测试法在接口上也验证输入黑盒测试法在接口上也验证输入/输出信息的输出信息的正确性。正确性。软件测试的内容软件测试方法软件测试方法黑盒测试法黑盒测试法 “黑盒黑盒”测试又称功能测试,测试又称功能测试,检查程序的功能是否符合检查程序的功能是否符合规格说明书的要求,程序是否接收输入数据而产生正确的输出规格说明书的要求,程序是否接收输
39、入数据而产生正确的输出信息。信息。测试测试方法:等价类划分法、边界值分析法、错误推测法。方法:等价类划分法、边界值分析法、错误推测法。 软件测试的内容n1、等价类划分、等价类划分 程序的输入域总可以划分成若干个不同性质的程序的输入域总可以划分成若干个不同性质的等价类,每个等价类中的一个典型值在测试中的作等价类,每个等价类中的一个典型值在测试中的作用与该类所有其他值的作用相同。用与该类所有其他值的作用相同。 因此,可以从每个等价类中只取一组数据作为因此,可以从每个等价类中只取一组数据作为测试数据,这样选取的数据最具有代表性,从而减测试数据,这样选取的数据最具有代表性,从而减少测试成本和提高测试效
40、率。少测试成本和提高测试效率。软件测试的内容软件测试方法软件测试方法 等价类,指某个输入域的子集合,在该集合中,各个输入等价类,指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的。即如果使用某个等价类中数据对暴露程序中的错误是等效的。即如果使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。类中的其它数据进行测试会发现同样的错误,反之亦然。 将输入数据域按有效的或无效的(或称合理的或不合理的)将输入数据域按有效的或无效的(或称合理的或不合理的)划分成若
41、干类,通过测试每个类的代表值相当于对于该类其他划分成若干类,通过测试每个类的代表值相当于对于该类其他数据值进行测试。数据值进行测试。 如果某个等价类中任选一个测试用例,未发现程序错误,如果某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测试用例,也不会发现程序错误。这样用少量则该类中的其他测试用例,也不会发现程序错误。这样用少量有代表性的例子可代替大量测试目的相同的例子,有效地提高有代表性的例子可代替大量测试目的相同的例子,有效地提高测试效率。测试效率。 软件测试的内容如何划分等价类如何划分等价类n若某个输入条件规定了取值范围或值的个数,则可确若某个输入条件规定了取值范围或值的个数
42、,则可确定一个有效等价类和两个无效等价类。定一个有效等价类和两个无效等价类。n若规定了输入数据的一组值,且程序对不同的输入值若规定了输入数据的一组值,且程序对不同的输入值做不同的处理,则每个允许的输入值是一个有效等价做不同的处理,则每个允许的输入值是一个有效等价类,另外还有一个无效等价类。类,另外还有一个无效等价类。n若规定了输入数据必须遵循的规则,可确定一个有效若规定了输入数据必须遵循的规则,可确定一个有效等价类和若干个无效等价类。等价类和若干个无效等价类。n若已划分的等价类中各元素在程序中的处理方式不同,若已划分的等价类中各元素在程序中的处理方式不同,则将此等价类进一步划分为更小的等价类。
43、则将此等价类进一步划分为更小的等价类。软件测试的内容n等价类划分法的基本目标:等价类划分法的基本目标: 用一个测试用例能独立地发现一类错误;用一个测试用例能独立地发现一类错误; 理想情况下,一个测试用例能够发现多类错误,理想情况下,一个测试用例能够发现多类错误,从而减少测试成本、提高测试效率。从而减少测试成本、提高测试效率。软件测试的内容软件测试方法软件测试方法 等价类划分法的执行步骤:等价类划分法的执行步骤: 1)为每个等价类规定一个唯一的编号;)为每个等价类规定一个唯一的编号; 2)设计一个测试用例,使其尽可能多的覆盖尚未)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复此
44、步,直到所有的有效等价被覆盖的有效等价类,重复此步,直到所有的有效等价类均被覆盖为止;类均被覆盖为止; 3)设计一个测试用例,使其只覆盖一个无效等价)设计一个测试用例,使其只覆盖一个无效等价类,重复此步,直到所有的无效等价类均被覆盖为止。类,重复此步,直到所有的无效等价类均被覆盖为止。 4)执行所设计的一系列测试用例,分析是否得到)执行所设计的一系列测试用例,分析是否得到预期结果。预期结果。 软件测试的内容例题例题:n某报表处理系统。要求用户输入的日期为某报表处理系统。要求用户输入的日期为2000年年1月月2005年年12月,日期长度为月,日期长度为6位,位,前前4位表示年代,后位表示年代,后
45、2位表示月份。位表示月份。n使用等价类划分法设计测试用例,测试用户使用等价类划分法设计测试用例,测试用户输入日期的合法性。输入日期的合法性。软件测试的内容n步骤步骤1:划分等价类并编号。划分为:划分等价类并编号。划分为3个有效个有效等价类,等价类,7个无效等价类。个无效等价类。输入等价类输入等价类有效等价类有效等价类无效等价类无效等价类报表日期的类型报表日期的类型及长度及长度1. 6位数字字符位数字字符2.有非数字字符有非数字字符3.少于少于6个数字字符个数字字符4.多于多于6个数字字符个数字字符年份范围年份范围5.在在20002005 之间之间6.小于小于20007.大于大于2005月份范围
46、月份范围8.在在112之间之间9.等于等于010.大于大于12软件测试的内容n步骤步骤2:为有效等价类设计测试用例。对于表中编号为:为有效等价类设计测试用例。对于表中编号为1,5,8的有效等价类设计一个测试用例覆盖。的有效等价类设计一个测试用例覆盖。测试数据测试数据期望结果期望结果覆盖范围覆盖范围200511输入有效输入有效1,5,8软件测试的内容n步骤步骤3:为每一个无效等价类至少设计一个测试用例。:为每一个无效等价类至少设计一个测试用例。测试数据测试数据期望结果期望结果覆盖范围覆盖范围005MAY输入无效输入无效220055输入无效输入无效3输入无效输入无效4199905输入无效输入无效6
47、200605输入无效输入无效7200500输入无效输入无效9200513输入无效输入无效10软件测试的内容软件测试方法软件测试方法黑盒测试法黑盒测试法2、边界值分析法、边界值分析法 边界值分析也是一种黑盒测试法,是对等价类划分法的补边界值分析也是一种黑盒测试法,是对等价类划分法的补充。充。 实践经验表明,程序往往在处理边界情况时发生错误。实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类、输出等价类边界上的情况。检查边边界情况指输入等价类、输出等价类边界上的情况。检查边界情况的测试用例是比较高效的,可以查出更多的错误。界情况的测试用例是比较高效的,可以查出更多的错误。 选取刚
48、好等于、刚好大于、刚好小于边界的值作为测试选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。用例。 软件测试的内容n若输入条件规定了值的范围,测试用例可选择若输入条件规定了值的范围,测试用例可选择边界边界值值,或者,或者边界值的周围数据边界值的周围数据。n若输入条件指出了值的个数,则按若输入条件指出了值的个数,则按最大个数、最小最大个数、最小个数、比最大个数多个数、比最大个数多1、最小个数少、最小个数少1等情况设计测等情况设计测试用例。试用例。n对于每个输出条件按照以上两个原则确定输出值的对于每个输出条件按照以上两个原则确定输出值的边界。边界。n若程序的需求说明给出的输入域或输出域是一个有
49、若程序的需求说明给出的输入域或输出域是一个有序集合(如顺序文件、线性表、链表),应选择集序集合(如顺序文件、线性表、链表),应选择集合的合的第一个元素及最后一个元素第一个元素及最后一个元素作为测试用例。作为测试用例。边界值分析法设计原则边界值分析法设计原则软件测试的内容输入等价类输入等价类测试用例说明测试用例说明测试数据测试数据 期望结果期望结果选取理由选取理由报表日期的类型报表日期的类型及长度及长度6个数字字符个数字字符5,7个数字字符个数字字符1个个/全部非数字全部非数字字符字符有效有效无效无效无效无效年份范围年份范围20002002200519992006有效有效有效有效有效有效无效无效
50、无效无效月份范围月份范围112612有效有效有效有效有效有效无效无效无效无效软件测试的内容软件测试方法软件测试方法黑盒测试法黑盒测试法3、错误推测法、错误推测法 错误推测法的基本思想:列举出程序中可能存在的错错误推测法的基本思想:列举出程序中可能存在的错误和容易发生错误的特殊情况,并根据它们选择测试方案。误和容易发生错误的特殊情况,并根据它们选择测试方案。 有经验的程序员通常可根据程序的特点和功能选择测有经验的程序员通常可根据程序的特点和功能选择测试数据,这些数据可能导致程序出现错误。试数据,这些数据可能导致程序出现错误。软件测试的内容例:排序程序例:排序程序n输入表为空。输入表为空。n输入表
51、只包含一个元素。输入表只包含一个元素。n输入表中所有元素均相同。输入表中所有元素均相同。n输入表已有序。输入表已有序。软件测试的内容软件测试步骤软件测试步骤 测试过程分为测试过程分为4个步骤:个步骤: 单元测试单元测试 集成测试集成测试 确认测试确认测试 系统测试系统测试单元单元测试测试单元单元测试测试单元单元测试测试被测模块被测模块被测模块被测模块被测模块被测模块集成集成测试测试设设计计信信息息确认确认测试测试系统系统测试测试已集成的已集成的软件软件已确认的已确认的软件软件可交付的可交付的软件软件软软件件需需求求已测试已测试模块模块其他系统元素其他系统元素软件测试的内容软软件件测测试试与与软
52、软件件开开发发的的关关系系用户要求用户要求系统测试系统测试确认测试确认测试集成测试集成测试模块测试模块测试编码编码详细设计详细设计需求分析需求分析概要设计概要设计软件测试的内容软件测试步骤软件测试步骤1、单元测试、单元测试 单元测试也称模块测试,是针对软件设计的最小单元单元测试也称模块测试,是针对软件设计的最小单元程序模块进行的测试,目的是发现模块内部的错误程序模块进行的测试,目的是发现模块内部的错误。单元测试主要从以下五个方面进行。单元测试主要从以下五个方面进行。 (1)模块接口测试)模块接口测试(2)局部数据结构测试)局部数据结构测试(3)路径测试)路径测试(4)程序异常测试)程序异常测试
53、(5)边界条件测试)边界条件测试软件测试的内容软件测试步骤软件测试步骤2、集成测试、集成测试 集成测试也称组装测试,它的任务是按照一定的策略对单元测集成测试也称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。 (需考虑几个问题(需考虑几个问题P171)(1)一次性组装方式)一次性组装方式 一一次次性性组组装装方方式式的的基基本本思思想想是是首首先先分分别别测测试试每每个个模模块块,然然后后将将所有模块全部组装起来进行测试,形成最终的软件系统。所有模块全部组装起来进行测试,形成最终的
54、软件系统。 缺点:缺点: 一一次次将将所所有有模模块块组组装装后后的的程程序序会会很很庞庞大大,各各模模块块之之间间相相互互影影响响,情况十分复杂。情况十分复杂。 在在测测试试过过程程中中会会同同时时出出现现很很多多错错误误,对对这这些些错错误误的的定定位位难难度度增增大,修改的过程中可能又会引发其它错误或激发其它潜在的错误大,修改的过程中可能又会引发其它错误或激发其它潜在的错误. . 测试工作十分的漫长。测试工作十分的漫长。 软件测试的内容软件测试步骤软件测试步骤(2)增殖式组装方式)增殖式组装方式 增增殖殖式式组组装装方方式式是是采采用用循循序序渐渐进进的的方方式式,每每次次增增加加一一个
55、个模模块块到到已已测测试好的模块中试好的模块中 , ,错误的范围会缩小,错误的修改和定位难度相对降低。错误的范围会缩小,错误的修改和定位难度相对降低。1)自顶向下增殖方式(图自顶向下增殖方式(图P173)具体的实施步骤如下:具体的实施步骤如下: 先先测测试试主主控控制制模模块块,测测试试时时使使用用存存根根模模块块代代替替所所有有直直接接附附属属主主控控制模块的功能模块;制模块的功能模块; 用某种用某种结合策略结合策略,用实际模块代替相应的存根模块;,用实际模块代替相应的存根模块; 对结合后的模块进行对结合后的模块进行测试测试; 为了保证加入的模块没有引进新的错误,需要进行为了保证加入的模块没
56、有引进新的错误,需要进行回归测试;回归测试; 重复操作重复操作2 2、3 3、4 4步,完成集成测试。步,完成集成测试。 软件测试的内容软件测试步骤软件测试步骤2、集成测试(2)增殖式组装方式)增殖式组装方式 2)自底向上增殖方式自底向上增殖方式(图(图P173)具体的结合策略如下:具体的结合策略如下: 将底层模块组合成实现某个将底层模块组合成实现某个子功能子功能的簇;的簇; 写一个写一个驱动程序驱动程序,用来提供该功能簇的执行入口和输入,用来提供该功能簇的执行入口和输入/输出界面;输出界面; 对该功能簇进行对该功能簇进行测试测试; 在在低低层层继继续续寻寻找找模模块块,将将该该功功能能簇簇扩
57、扩大大,重重新新修修改改驱驱动动程程序序,以以适应对当前功能簇的测试。适应对当前功能簇的测试。 不断重复第不断重复第3、4步,完成测试。步,完成测试。 软件测试的内容软件测试步骤软件测试步骤2、集成测试 (3)混合增殖式测试混合增殖式测试 自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测试过程中测试过程中,可根据具体情况将两种方法结合起来使用。可根据具体情况将两种方法结合起来使用。(回归测试回归测试) 1)改改进进的的自自顶顶向向下下的的增增殖殖测测试试:它它的的基基本本思思想想是是对对涉涉及及输输入入输输出出模模块块和和复复杂杂算
58、算法法的的模模块块先先采采用用自自底底向向上上的的测测试试方方法法,将将这这些些模模块块组组装装成成为为功功能能相相对对完完整整且且相相对对独独立立的的子子系系统统,然然后后由由主主模模块块开开始始自自顶向下进行增殖测试。顶向下进行增殖测试。 2)混混合合测测试试法法:它它首首先先对对软软件件结结构构中中较较低低层层的的模模块块自自底底向向上上组组装装测测试试,然然后后对对软软件件结结构构中中较较上上层层的的模模块块采采用用自自顶顶向向下下的的方方法法进进行行组组装与测试。装与测试。软件测试的内容软件测试步骤软件测试步骤3、确认测试确认测试 确认测试也称有效性测试,目的是验证软件的有效性,即验
59、确认测试也称有效性测试,目的是验证软件的有效性,即验证软件的功能和性能及其它特性是否符合用户要求证软件的功能和性能及其它特性是否符合用户要求 。确认测试是确认测试是软件交付使用前一项很重要的活动,它最终决定用户对该软件的软件交付使用前一项很重要的活动,它最终决定用户对该软件的认可程度。认可程度。(1)确认测试内容确认测试内容(2)测试和测试和测试测试 测测试试是是邀邀请请用用户户参参加加,在在开开发发场场地地进进行行的的测测试试,由由开开发发组组成成员员或或用用户户实实际际操操作作运运行行,对对测测试试过过程程中中出出现现的的问问题题,由由开开发发者者记记录下来,作为修改的依据。录下来,作为修
60、改的依据。 它的最大特点是整个测试过程是在受控环境下进行。它的最大特点是整个测试过程是在受控环境下进行。软件测试的内容软件测试步骤软件测试步骤3、确认测试确认测试测试和测试和测试测试 测测试试是是由由部部分分用用户户在在实实际际的的使使用用环环境境下下进进行行的的测测试试。测测试试过过程程中中开开发发者者不不在在现现场场,由由用用户户独独立立操操作作,验验证证程程序序的的各各项项功功能能,用用户户发发现现的的问问题题全全部部记记录录下下来来,反反馈馈给给程程序序开开发发者者,开开发发者者对对软软件进行必要的修改,并准备最终的软件产品发布。件进行必要的修改,并准备最终的软件产品发布。 测试的最大
61、特点是实际的使用环境下进行的测试。测试的最大特点是实际的使用环境下进行的测试。(3)确认测试的结果可分为两种情况:确认测试的结果可分为两种情况:测试结果与预期结果相符,程序的功能和性能满足用户需求;测试结果与预期结果相符,程序的功能和性能满足用户需求;测测试试结结果果与与预预期期结结果果不不相相符符,将将存存在在的的问问题题列列出出清清单单,提提供供给给开发者作为修改依据。开发者作为修改依据。软件测试的内容软件测试步骤软件测试步骤4、系统测试系统测试 系统测试的任务主要有:测试软件系统是否能与硬件协调工作,系统测试的任务主要有:测试软件系统是否能与硬件协调工作,测试与其它软件协调运行的状况。测
62、试与其它软件协调运行的状况。 系统测试的系统测试的目的是充分运行系统,验证系统各部件是否都能正常工目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。作并完成所赋予的任务。 (1)恢复测试:)恢复测试:主要检查系统的容错能力。主要检查系统的容错能力。 (2)安全测试:主要检查系统对非法侵入的防范能力。)安全测试:主要检查系统对非法侵入的防范能力。 (3)强度测试:主要检查程序在一些极限条件下的运行情况。)强度测试:主要检查程序在一些极限条件下的运行情况。 (4)性能测试:主要检查系统是否满足需求说明书中规定的性能。)性能测试:主要检查系统是否满足需求说明书中规定的性能。 (5
63、)其其它它:版版本本间间的的兼兼容容性性测测试试、安安装装测测试试,最最终终提提交交的的文文档档测测试试等等 。软件测试的内容软件调试软件调试调试调试(debug,排错排错) 调试功能是将在测试过程中出现的错误进一步诊断并且改正程调试功能是将在测试过程中出现的错误进一步诊断并且改正程序中存在的潜在错误,保证软件运行的正确性和可靠性。序中存在的潜在错误,保证软件运行的正确性和可靠性。 软件调试活动主要分为以下两部分软件调试活动主要分为以下两部分: 确定程序中可疑错误的确切性质和位置。确定程序中可疑错误的确切性质和位置。 对程序的设计和编码进行修改,纠正当前错误。对程序的设计和编码进行修改,纠正当
64、前错误。调试的过程如下调试的过程如下:(图图P176) 确确定定出出错错原原因因-找找出出错错误误的的位位置置-排排除除这这个个错错误误-重重复复对对修修改改后后的的代代码码进进行行有有关关测测试试-修修正正无无效效或或是是引引入入了了新新的的错误,撤销此次改动或是修改新的错误。错误,撤销此次改动或是修改新的错误。 不断重复上述过程,直到找到一个有效的解决办法为止不断重复上述过程,直到找到一个有效的解决办法为止 . 查找错误的难度查找错误的难度: (P177) 软件测试的内容软件调试软件调试调试方法调试方法1、原始法调试、原始法调试 主要思想是通过分析运行程序时数据信息的变化情况查找错主要思想
65、是通过分析运行程序时数据信息的变化情况查找错误原因误原因 : (1)打印内存的全部数据)打印内存的全部数据 (2)添加必要的打印语句)添加必要的打印语句 (3)使用自动调试工具)使用自动调试工具 设置断点设置断点 单步执行单步执行软件测试的内容软件调试软件调试调试方法调试方法2、回溯法调试、回溯法调试 回回溯溯调调试试的的方方法法是是从从出出现现错错误误征征兆兆处处开开始始,人人工工沿沿控控制制流流程程往往回追踪程序代码,直至发现出错的根源回追踪程序代码,直至发现出错的根源或确定错误产生的范围或确定错误产生的范围。 适适用用于于较较小小程程序序,它它能能将将错错误误范范围围缩缩小小到到程程序序
66、中中的的一一小小段段代代码码,使得定位错误相对容易;使得定位错误相对容易; 对于大程序,它回溯的路径可能很多,回溯会变得很困难。对于大程序,它回溯的路径可能很多,回溯会变得很困难。软件测试的内容软件调试软件调试调试方法调试方法3、归纳法调试、归纳法调试 归纳法调试的基本思想是:从一些线索归纳法调试的基本思想是:从一些线索(错误征兆错误征兆)着手,着手,通过分析它们之间的关系来找出错误。通过分析它们之间的关系来找出错误。 具体实施步骤如下:具体实施步骤如下: 第一步:收集所有输出结果有错误的测试用例和执行结果。第一步:收集所有输出结果有错误的测试用例和执行结果。 第二步:分析收集到的数据信息,以
67、便发现规律或矛盾。第二步:分析收集到的数据信息,以便发现规律或矛盾。 第三步:导出假设。第三步:导出假设。 第四步:证明假设,无法证明后应重新假设。第四步:证明假设,无法证明后应重新假设。软件测试的内容软件调试软件调试调试方法调试方法4、演绎法调试、演绎法调试 演绎法是一种从一般原理或前提出发,经过排除和精化的演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。过程来推导出结论的思考方法。 5、对分法调试、对分法调试 重复使用对半划分程序的方法,不断缩小出错范围,直到重复使用对半划分程序的方法,不断缩小出错范围,直到将故障定位到容易诊断的程度。将故障定位到容易诊断的程
68、度。 软件测试的内容测试计划测试计划 1 引言引言n1.1 编写目的编写目的 : 阐明编写测试计划的目的并指明读者对象。阐明编写测试计划的目的并指明读者对象。n1.2 项目背景项目背景 : 说明项目的来源、委托单位及主管部门。说明项目的来源、委托单位及主管部门。n1.3 定义定义 : 列出测试计划中所用到的专门术语的定义和缩写列出测试计划中所用到的专门术语的定义和缩写词的原词的原义义。n1.4 参考资料参考资料 : 列出有关资料的作者、标题、编号、发表日列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源期、出版单位或资料来源 , 可包括可包括 : 项目的计划任务书、合项目的计划任务书
69、、合同或批文同或批文 ; 项目开发计划项目开发计划 ; 需求规格说明书需求规格说明书 ; 概要设计说明概要设计说明书书 ; 详细设计说明书详细设计说明书 ; 用户操作手用户操作手册册 ; 本测试计划中引用的本测试计划中引用的其他资料、采用的软件开发标准或规范。其他资料、采用的软件开发标准或规范。软件测试的内容测试计划测试计划2 任务概述任务概述n2.1 目标目标n2.2 运行环境运行环境n2.3 需求概述需求概述n2.4 条件与限制条件与限制软件测试的内容测试计划测试计划3 计划计划n3.1 测试方案测试方案 : 说明测试方法和选取测试用说明测试方法和选取测试用例的原则。例的原则。n3.2 测
70、试项目测试项目 : 列出组装测试和确认测试中列出组装测试和确认测试中每一项测试的内容、名称、目的和进度。每一项测试的内容、名称、目的和进度。n3.3 测试准备测试准备n3.4 测试机构及人员测试机构及人员 : 测试机构名称、负责测试机构名称、负责人和职责。人和职责。软件测试的内容测试计划测试计划4 测试项目说明测试项目说明n4.1 按顺序逐个对测试项目做出说明按顺序逐个对测试项目做出说明n 4.1.1 测试项目名称及测试内容测试项目名称及测试内容n 4.1.2 测试用例测试用例n 4.1.3 输入输入 : 输入的数据和输入命令。输入的数据和输入命令。n 4.1.4 输出输出 : 预期的输出数据
71、。预期的输出数据。n4.2 步骤及操作步骤及操作n4.3 允许偏差允许偏差 : 给出实测结果与预期结果之间允许偏给出实测结果与预期结果之间允许偏差的范围。差的范围。n4.4 进度进度n4.5 条件条件 : 给出项给出项目目测试对资源的特殊要求测试对资源的特殊要求 , 如设备、如设备、软件、人员等。软件、人员等。 n4.6 测试资料测试资料 : 说明项说明项目目测试所需的资料。测试所需的资料。软件测试的内容测试计划测试计划n5 评价评价n5.1 范围范围 : 说明所完成的各项测试说明所完成的各项测试涉及涉及问问题的范围及其局限性。题的范围及其局限性。 n5.2 准则准则 : 说明评论测试结果的准
72、则。说明评论测试结果的准则。软件测试的内容测试分析报告测试分析报告 1 引言引言n1.1 编写目的编写目的 : 阐明编写测试分析报告的目的并指明读者对阐明编写测试分析报告的目的并指明读者对象。象。n1.2 项目背景项目背景 : 说明项目的来源、委托单位及主管部门。说明项目的来源、委托单位及主管部门。n1.3 定义定义 : 列出测试分析报告中所用到的专门术语的定义和列出测试分析报告中所用到的专门术语的定义和缩写词的原缩写词的原义义。n1.4 参考资料参考资料 : 列出有关资料的作者、标题、编号、发表日列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源期、出版单位或资料来源 , 可包括可
73、包括 : 项目的计划任务书、合项目的计划任务书、合同或批文同或批文 ; 项目开发计划项目开发计划 ; 需求规格说明书需求规格说明书 ; 概要设计说明概要设计说明书书 ; 详细设计说明书详细设计说明书 ; 用户操作手册用户操作手册 ; 测试计划测试计划 ; 测试分析测试分析报告所引用的其他资料、采用的软件工程标准或工程规范。报告所引用的其他资料、采用的软件工程标准或工程规范。 软件测试的内容测试分析报告测试分析报告2 测试计划情况测试计划情况n2.1 机构和人员机构和人员 : 给出测试机构名称、负责给出测试机构名称、负责人和参与测试人员名单。人和参与测试人员名单。n2.2 测试结果测试结果 :
74、按顺序给出每一测试项目的按顺序给出每一测试项目的 实测结果数据实测结果数据 ; 与预期结果数据的偏差与预期结果数据的偏差 ; 该该项测试表明的事实项测试表明的事实 ; 该项测试发现的问题。该项测试发现的问题。软件测试的内容测试分析报告测试分析报告3 软件需求测试结论软件需求测试结论n按顺序给出每一项需求测试的结论。按顺序给出每一项需求测试的结论。 包括包括 : 证实的软件能力证实的软件能力 ; 局限性局限性 ( 即该项需求即该项需求未得到充分测试的情况及原因未得到充分测试的情况及原因 ) 。软件测试的内容测试分析报告测试分析报告4 评价评价n4.1 软件能力软件能力 : 经过测试所表明的软件能
75、力。经过测试所表明的软件能力。n4.2 缺缺陷陷和限制和限制 : 说明测试所揭露的软件缺陷说明测试所揭露的软件缺陷和不足和不足 , 以及可能给软件运行带来的影响。以及可能给软件运行带来的影响。n4.3 建议建议 : 提出为弥补上述缺陷的建议。提出为弥补上述缺陷的建议。n4.4 测试结论测试结论 : 说明能否通过。说明能否通过。软件测试的内容例:合并两个线形表,代码如下例:合并两个线形表,代码如下:void mergelist(list la,list lb,list &lc)1: initlist(lc); i=j=1; k=0; la_len=listlength(la); lb_len=l
76、istlength(lb);2: while (i=la_len) 3: & (j=lb_len)4: getelem(la,i,ai); getelem(lb,i,bj);5: if (ai=bj)6: listinsert(lc,+k,ai);+i;7: else listinsert(lc,+k,bj);+j;8: 软件测试的内容9: while (i=la_len) 10: getelem(la,i+,ai); listinsert(lc,+k,ai); 11: while (j=lb_len) 12: getelem(lb,j+,bj); listinsert(lc,+k,bj);
77、13: 要求:写出其基本路径测试步骤。要求:写出其基本路径测试步骤。软件测试的内容124567910111213第第1步:画出程序图步:画出程序图开始结点开始结点结束结点结束结点38判定结点判定结点软件测试的内容n第第2步:计算环路复杂度步:计算环路复杂度 判定结点为判定结点为2,3,5,9,11 V(G)=P+1=6n第第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软件测试的内容n第第4步:步:设计测试用例设计测试用例路径路径1用例:用例:la=,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软件测试的内容