第7章软件测试(PKPK)_第1页
第7章软件测试(PKPK)_第2页
第7章软件测试(PKPK)_第3页
第7章软件测试(PKPK)_第4页
第7章软件测试(PKPK)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第第 7 章章 软件测试软件测试Q1 :为什么要进行软件测试?为什么要进行软件测试?下面看一下软件缺陷带来影响的例子。7.1 概述概述 案例案例 千年虫问题千年虫问题 世界各地更换或升级世界各地更换或升级 2000 年问题的程序所花费用年问题的程序所花费用超过了数亿美元。超过了数亿美元。7.1 概述概述 Q2 :什么是软件缺陷?什么是软件缺陷? 1 )软件未达到产品说明书中已经标明的功能。)软件未达到产品说明书中已经标明的功能。2 )软件功能超出了产品说明书指明的范围。)软件功能超出了产品说明书指明的范围。3 )软件出现了产品说明书中指明不会出现的错误)软件出现了产品说明书中指明不会出现的错误

2、.(狂敲键盘会使计算机停止接受输入)(狂敲键盘会使计算机停止接受输入)4 )软件未达到产品说明书虽未指出但应达到的目标。)软件未达到产品说明书虽未指出但应达到的目标。(产品说明书指出电力不足无法正确计算,但未指出结(产品说明书指出电力不足无法正确计算,但未指出结果会怎样)果会怎样)5 )软件测试员认为软件难以理解、不易使用、运)软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为该软件使用效果不行速度缓慢,或者最终用户认为该软件使用效果不好。好。7.1 概述概述 Q2 :什么是软件缺陷?什么是软件缺陷? 7.1 概述概述 Q3 :软件缺陷产生的原因是什么?软件缺陷产生的原因是什

3、么? 7.1 概述概述 Q4 :修复软件缺陷的代价?修复软件缺陷的代价?测试团队(微软公司案例)Exchang 2000Windows 2000项目管理25人约250人开发人员140人约1700人测试人员350人约3200人测试人员:开发人员2.51.97.1 概述概述Q5:软件测试在软件开发中的地位?:软件测试在软件开发中的地位?nQ6:为什么需要如此多的软件测试人员?:为什么需要如此多的软件测试人员? 7.1 概述概述Q7:我国软件企业现状如何?:我国软件企业现状如何? 7.1 概述概述7.2 软件测试的概念和原则软件测试的概念和原则 软件测试是为了发现错误而运行程序的过程,是根软件测试是

4、为了发现错误而运行程序的过程,是根据软件开发各阶段的规格说明和程序内部结构精心设计据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。序中的错误。软件的测试用例软件的测试用例=输入数据输入数据+预期输出结果预期输出结果7.2 软件测试的概念和原则软件测试的概念和原则好的测试用例:好的测试用例: 是指是指( 1 )应当把)应当把“尽早地和不断地测试尽早地和不断地测试”作为开发者的座右铭。作为开发者的座右铭。( 2 )软件测试工作应该由独立的专业软件测试机构来完成。)软件测试工作应该由独立的专业

5、软件测试机构来完成。( 3 )测试工作要全面,但不可能实现)测试工作要全面,但不可能实现“穷举穷举”。( 4 )把)把 Pareto 原理应用到软件测试中原理应用到软件测试中, 即对发现错误较多的程序段,即对发现错误较多的程序段,应进行更深入的测试。应进行更深入的测试。( 5 )妥善保存一切测试过程文档,作用是不言而喻的,测试的重现)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性往往要靠测试文档。性往往要靠测试文档。( 6 )不要希望在极短的时间内完成一个高水平的测试。)不要希望在极短的时间内完成一个高水平的测试。( 7 )错误经过修改后,相关的测试必不可少。)错误经过修改后,相关的

6、测试必不可少。7.2 软件测试的概念和原则软件测试的概念和原则测试过程需要测试过程需要三类三类信息:信息: 1. 软件配置软件配置:包括需求规格说明、软件设计规格说明、:包括需求规格说明、软件设计规格说明、源程序等;源程序等; 2. 测试配置测试配置:包括测试方案、测试用例、测试驱动程:包括测试方案、测试用例、测试驱动程序等;序等; 3. 测试工具测试工具:计算机辅助测试的有关工具如测试数据:计算机辅助测试的有关工具如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。分析程序、驱动测试的测试数据库。7.3

7、 软件测试的信息流软件测试的信息流7.3 软件测试的信息流软件测试的信息流 测试测试结果结果分析分析可靠性可靠性分析分析排错排错软件配置软件配置测试配置测试配置测试工具测试工具测试结果测试结果预期结果预期结果错误错误出错率出错率数据数据改正的软件改正的软件预测的可靠性预测的可靠性7.4 软件测试的方法软件测试的方法 静态测试静态测试 分两大类:分两大类: 动态测试动态测试白盒测试白盒测试黑盒测试黑盒测试7.4 软件测试方法软件测试方法白盒测试:白盒测试: 白盒测试是结构测试,所以被测对象基本上是源白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结构为基础设计测试用例。程序,以程序的

8、内部结构为基础设计测试用例。 7.4 软件测试方法软件测试方法(A1)AND(B=0)(A=2)OR(X1)X=X/AX=X1TFFT14263判定覆盖语句覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖Sabdce577.4 软件测试方法软件测试方法( 1 )语句覆盖:)语句覆盖: 即选择足够多的测试用例,使得被测程序中的每即选择足够多的测试用例,使得被测程序中的每条语句至少执行一次。条语句至少执行一次。流程图7.4 软件测试方法软件测试方法( 2 )判定覆盖:)判定覆盖: 指设计若干个测试用例,运行所测程序,使指设计若干个测试用例,运行所测程序,使得程序中每个判断的取得程序中每个判断的取“真

9、真”分支和取分支和取“假假”分分支至少经历一次。支至少经历一次。 流程图7.4 软件测试方法软件测试方法( 3 )条件覆盖:)条件覆盖: 指设计若干个测试用例,运行所测程序,使得程指设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。序中每个判断的每个条件的可能取值至少执行一次。 条件覆盖使得每个语句至少执行一次。条件覆盖使得每个语句至少执行一次。流程图7.4 软件测试方法软件测试方法( 4 )判定)判定/条件覆盖:条件覆盖: 指设计足够的测试用例,使得判断中每个条件的指设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可所有

10、可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。能判断结果至少执行一次。 即要求各个判断的所有可能的条件取值组合至少即要求各个判断的所有可能的条件取值组合至少执行一次。执行一次。流程图7.4 软件测试方法软件测试方法( 5 )条件组合覆盖:)条件组合覆盖: 指设计指设计足够的测试用例,运行所测程序,使得每个足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。判断的所有可能的条件取值组合至少执行一次。流程图7.4 软件测试方法软件测试方法( 6 )路径覆盖:)路径覆盖: 选取足够多测试数据,使程序的每条可能路径都选取足够多测试数据,使程序的每条可能路

11、径都至少执行一次(若程序中存在环,则要求每个环至少至少执行一次(若程序中存在环,则要求每个环至少经过一次)。经过一次)。 流程图7.4 软件测试方法软件测试方法六种覆盖的比较:六种覆盖的比较:语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖发现错误能力发现错误能力强强力弱弱力7.4 软件测试的方法软件测试的方法黑盒测试法黑盒测试法 “黑盒黑盒”测的是功能,它检查的内容只包括程序功能是否能测的是功能,它检查的内容只包括程序功能是否能按照规格说明书的内容正常使用,程序是否接收输入数据产生正按照规格说明书的内容正常使用,程序是否接收输入数据产生正确的输出信

12、息确的输出信息 方法有:等价类划分法、边界值分析法和错误推测法方法有:等价类划分法、边界值分析法和错误推测法1 、等价类划分:、等价类划分: 等价类:指某个输入域的子集合,在该集合中,各个输入数等价类:指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的即如果使用某个等价类中的一个据对暴露程序中的错误是等效的即如果使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。它数据进行测试会发现同样的错误,反之亦然。 7.4 软件测试的方法软件测试的方法1 、等

13、价类划分:、等价类划分: 等价类划分的含义:将输入数据域按有效的或无效的(或称合理的等价类划分的含义:将输入数据域按有效的或无效的(或称合理的或不合理的)划分成若干类,通过测试每个类的代表值,进行测试如果或不合理的)划分成若干类,通过测试每个类的代表值,进行测试如果某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测试用例,也不会发现程序错误这样用少量有代表性的例子可代替大量测试用例,也不会发现程序错误这样用少量有代表性的例子可代替大量测试目的相同例子,有效地提高测试效率。试目的相同例子,有效地提高测试效率。步骤:步骤:

14、划分等价类划分等价类 有效等价类:对程序规格来说是正确的,有意义的数据;有效等价类:对程序规格来说是正确的,有意义的数据; 无效等价类:对程序规格来说是错误的,无意义的数据。无效等价类:对程序规格来说是错误的,无意义的数据。7.4 软件测试的方法软件测试的方法1 、等价类划分:、等价类划分:确定测试用例,选取的原则:确定测试用例,选取的原则: 1 )为每个等价类规定一个唯一的编号;)为每个等价类规定一个唯一的编号; 2 )设计一个测试用例,使其尽可能多的覆盖尚未被覆盖)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复此步骤,直到所有的有效等价类均被覆盖的有效等价类,重复此步骤,

15、直到所有的有效等价类均被覆盖为止;为止; 3 )设计一个测试用例,使其尽可能多的覆盖尚未被覆盖)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的无效等价类,重复此步骤,直到所有的无效等价类均被覆盖的无效等价类,重复此步骤,直到所有的无效等价类均被覆盖为止;为止;7.4 软件测试方法软件测试方法2 、边界值分析:、边界值分析: 边界值分析也是一种黑盒测试法,是对等价类划分法的补充。边界值分析也是一种黑盒测试法,是对等价类划分法的补充。 实践经验表明,程序往往在处理边界情况时发生错误边界情实践经验表明,程序往往在处理边界情况时发生错误边界情况指输入等价类、输出等价类边界上的情况检查边界情况的测试况

16、指输入等价类、输出等价类边界上的情况检查边界情况的测试用例是比较高效的,可以查出更多的错误。用例是比较高效的,可以查出更多的错误。 选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。7.5 软件测试步骤软件测试步骤软件测试策略:软件测试策略: 测试过程分为测试过程分为 4 个步骤:单元测试个步骤:单元测试 组装测试组装测试 确认测试确认测试 系统测系统测试试单元单元测试测试单元单元测试测试单元单元测试测试被测模块被测模块被测模块被测模块被测模块被测模块组装组装测试测试设计信息设计信息确认确认测试测试系统系统测试测试已集成的已集成的软件软

17、件已确认的已确认的软件软件可交付的可交付的软件软件软件需求软件需求系统其它系统其它元素元素已测试已测试模块模块7.5 软件测试步骤软件测试步骤1 、单元测试、单元测试 单元测试也称模块测试,是针对软件设计的最小单元单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作目的是发现模块内部的错误。程序模块进行测试的工作目的是发现模块内部的错误。单元测试主要从以下五个方面进行。单元测试主要从以下五个方面进行。( 1 )模块接口测试)模块接口测试( 2 )局部数据结构测试)局部数据结构测试( 3 )路径测试)路径测试( 4 )程序异常测试)程序异常测试( 5 )边界条件测试)边界条件测试

18、7.5 软件测试步骤软件测试步骤2 、集成测试 集成测试也称组装测试,它的任务是按照一定的策略对单元测试的集成测试也称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。模块进行组装,并在组装过程中进行模块接口与系统功能测试。( 1 )一次性组装方式)一次性组装方式 一次性组装方式的基本思想是首先分别测试每个模块,然后将所有模一次性组装方式的基本思想是首先分别测试每个模块,然后将所有模块全部组装起来进行测试,形成最终的软件系统。块全部组装起来进行测试,形成最终的软件系统。 缺点:缺点: 一次将所有模块组装后的程序会很庞大,各模块之间相互影响,情

19、一次将所有模块组装后的程序会很庞大,各模块之间相互影响,情况十分复杂况十分复杂 在测试过程中会同时出现很多错误,对这些错误的定位难度增大,在测试过程中会同时出现很多错误,对这些错误的定位难度增大,修改的过程中可能又会引发其它错误或激发其它潜在的错误修改的过程中可能又会引发其它错误或激发其它潜在的错误 测试工作十分的漫长。测试工作十分的漫长。7.5 软件测试步骤软件测试步骤( 2 )增殖式组装方式)增殖式组装方式 增殖式组装方式是采用循序渐进的方式,每次增加一个模块到已测增殖式组装方式是采用循序渐进的方式,每次增加一个模块到已测试好的模块中试好的模块中1)自顶向下增殖方式自顶向下增殖方式具体的实

20、施步骤如下:具体的实施步骤如下: 先测试主控制模块,测试时使用存根模块代替所有直接附属主控先测试主控制模块,测试时使用存根模块代替所有直接附属主控制模块的功能模块;制模块的功能模块; 用某种结合策略,用实际模块代替相应的存根模块;用某种结合策略,用实际模块代替相应的存根模块; 对结合后的模块进行测试;对结合后的模块进行测试; 为了保证加入的模块没有引进新的错误,需要进行回归测试为了保证加入的模块没有引进新的错误,需要进行回归测试 重复操作重复操作 2 2 、 3 3 、 4 4 步,完成集成测试。步,完成集成测试。7.5 软件测试步骤软件测试步骤2 、集成测试( 2 )增殖式组装方式)增殖式组

21、装方式 2)自底向上增殖方式自底向上增殖方式具体的结合策略如下:具体的结合策略如下: 将低层模块组合成实现某个子功能的簇;将低层模块组合成实现某个子功能的簇; 写一个驱动程序,用来提供该功能簇的执行入口和输入写一个驱动程序,用来提供该功能簇的执行入口和输入/输出界面;输出界面; 对该功能簇进行测试;对该功能簇进行测试; 在低层继续寻找模块,将该功能簇扩大,重新修改驱动程序,以适在低层继续寻找模块,将该功能簇扩大,重新修改驱动程序,以适应对当前功能簇的测试。应对当前功能簇的测试。 不断重复第不断重复第 3 、 4 步,完成测试。步,完成测试。7.5 软件测试步骤软件测试步骤2 、集成测试 ( 3

22、 )混合增殖式测试)混合增殖式测试 自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测试过程中,可根据具体情况将两种方法结合起来使用。试过程中,可根据具体情况将两种方法结合起来使用。 1)改进的自顶向下的增殖测试:它的基本思想是对涉及输入改进的自顶向下的增殖测试:它的基本思想是对涉及输入输出模块和复杂算法的模块先采用自底向上的测试方法,将这些模输出模块和复杂算法的模块先采用自底向上的测试方法,将这些模块组装成为功能相对完整且相对独立的子系统,然后由主模块开始块组装成为功能相对完整且相对独立的子系统,然后由主模块开始自顶向下进行增殖测

23、试。自顶向下进行增殖测试。 2)混合测试法:它首先对软件结构中较底层的模块自底向上组混合测试法:它首先对软件结构中较底层的模块自底向上组装测试,然后对软件结构中较上层的模块采用自顶向下的方法进行装测试,然后对软件结构中较上层的模块采用自顶向下的方法进行组装与测试。组装与测试。7.5 软件测试步骤软件测试步骤3 、确认测试 确认测试也称有效性测试,目的是验证软件的有效性,即验确认测试也称有效性测试,目的是验证软件的有效性,即验证软件的功能和性能及其它特性是否符合用户要求确认测试是软证软件的功能和性能及其它特性是否符合用户要求确认测试是软件交付使用前一项很重要的活动,它最终决定用户对该软件的认件交

24、付使用前一项很重要的活动,它最终决定用户对该软件的认可程度。可程度。测试和测试和测试测试 测试是邀请用户参加,在开发场地进行的测试,由开发组测试是邀请用户参加,在开发场地进行的测试,由开发组成员或用户实际操作运行,对测试过程中出现的问题,由开发者成员或用户实际操作运行,对测试过程中出现的问题,由开发者记录下来,作为修改的依据。记录下来,作为修改的依据。 它的最大特点是整个测试过程是在受控环境下进行。它的最大特点是整个测试过程是在受控环境下进行。7.5 软件测试步骤软件测试步骤3 、确认测试测试和测试和测试测试 测试是由部分用户在实际的使用环境下进行的测试测试过测试是由部分用户在实际的使用环境下

25、进行的测试测试过程中开发者不在现场,由用户独立操作,验证程序的各项功能,程中开发者不在现场,由用户独立操作,验证程序的各项功能,用户发现的问题全部记录下来,反馈给程序开发者,开发者对软用户发现的问题全部记录下来,反馈给程序开发者,开发者对软件进行必要的修改,并准备最终的软件产品发布。件进行必要的修改,并准备最终的软件产品发布。 测试的最大特点是实际的使用环境下进行的测试。测试的最大特点是实际的使用环境下进行的测试。确认测试的结果可分为两种情况:确认测试的结果可分为两种情况:测试结果与预期结果相符,程序的功能和性能满足用户需求;测试结果与预期结果相符,程序的功能和性能满足用户需求;测试结果与预期

26、结果不相符,将存在的问题列出清单,提供给测试结果与预期结果不相符,将存在的问题列出清单,提供给开发者作为修改依据。开发者作为修改依据。7.5 软件测试步骤软件测试步骤4 、系统测试 系统测试的任务主要有:测试软件系统是否能与硬件协调工系统测试的任务主要有:测试软件系统是否能与硬件协调工作,测试与其它软件协调运行的状况。作,测试与其它软件协调运行的状况。 系统测试的目的是充分运行系统,验证系统各部件是否都能正系统测试的目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。常工作并完成所赋予的任务。( 1 )恢复测试:主要检查系统的容错能力。)恢复测试:主要检查系统的容错能力。(

27、2 )安全测试:主要检查系统对非法侵入的防范能力。)安全测试:主要检查系统对非法侵入的防范能力。( 3 )强度测试:主要检查程序在一些极限条件下的运行情况。)强度测试:主要检查程序在一些极限条件下的运行情况。( 4 )性能测试:主要检查系统是否满足需求说明书中规定的性能。)性能测试:主要检查系统是否满足需求说明书中规定的性能。( 5 )其它:版本间的兼容性测试、安装测试,最终提交的文档测)其它:版本间的兼容性测试、安装测试,最终提交的文档测试等。试等。7.6 软件调试软件调试调试调试 (侦错,排错侦错,排错) 调试功能是将在测试过程中出现的错误进一步的诊断并且改正调试功能是将在测试过程中出现的

28、错误进一步的诊断并且改正程序中存在的潜在错误,保证软件运行的正确性和可靠性。程序中存在的潜在错误,保证软件运行的正确性和可靠性。 软件调试活动主要分为以下两部分:软件调试活动主要分为以下两部分: 确定程序中可疑错误的确切性质和位置。确定程序中可疑错误的确切性质和位置。 对程序的设计和编码进行修改,纠正当前错误。对程序的设计和编码进行修改,纠正当前错误。调试的过程如下:调试的过程如下: 确定出错原因确定出错原因-找出错误的位置找出错误的位置-排除这个错误排除这个错误-重复对修改后的代码进行有关测试重复对修改后的代码进行有关测试-修正无效或是引修正无效或是引入了新的错误,撤销此次改动或是修改新的错误。入了新的错误,撤销此次改动或是修改新的错误。 不断重复上述过程,直到找到一个有效的解决办法为止不断重复上述过程,直到找到一个有效的解决办法为止7.6 软件调试软件调试调试方法调试方法1 、原始法调试、

温馨提示

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

评论

0/150

提交评论