第7章软件测试技术.ppt

上传人:本田雅阁 文档编号:2500969 上传时间:2019-04-04 格式:PPT 页数:93 大小:1.02MB
返回 下载 相关 举报
第7章软件测试技术.ppt_第1页
第1页 / 共93页
第7章软件测试技术.ppt_第2页
第2页 / 共93页
第7章软件测试技术.ppt_第3页
第3页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7章软件测试技术.ppt》由会员分享,可在线阅读,更多相关《第7章软件测试技术.ppt(93页珍藏版)》请在三一文库上搜索。

1、第7章 软件测试技术,7.1 软件测试概述 7.2 软件测试技术 7.3 软件调试技术 7.4 系统测试,7.1 软件测试概述,软件测试的必要性 例子:从键盘输入两个正整数,然后输出二者之和。,开始,结束,sum=a+b,输入:两正整数到a和b,输出:sum,7.1.1 软件测试的目的 软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。,Glenford J.Myers认为软件测试的目的是: (1)测试是一个为了发现错误而执行程序的过程; (2)测试是为了证明程序有错,而不是证明程序没有错误; (3)一个好的测试

2、用例在于它能发现至今未发现的错误。 (4)一个成功的测试是发现了至今未发现的错误的测试。,以查找错误为中心,7.1.2 软件测试的基本原则 (1) 尽早并不断地进行软件测试。 软件开发的各阶段都应当进行测试。错误发现得越早,后阶段耗费的人力、财力就越少,软件质量相对就高一些。,图 变更代价随时间变化的趋势示意,(2) 程序员应避免测试自己的程序。 测试是为了找错,而程序员大多对自己所编的程序存有偏见,总认为自己编的程序问题不大或无错误存在,因此很难查出错误。此外,设计机构在测试自己程序时,由于开发周期和经费等问题的限制,要采用客观的态度是十分困难的。从工作效率来讲,最好由与原程序无关的程序员进

3、行测试。,(3) 测试用例应包括合理的输入条件和不合理的输入条件。 在设计测试用例时,不仅要有合法的输入测试用例,还要有非法的输入测试用例。在软件的实际使用过程中,由于各种因素的存在,用户可能会使用一些非法的输入,比如常会按错键或使用不合法的命令。对于一个功能较完善的软件来说,不仅当输入是合法的时候能正确运行,而且当有非法输入时,也应当能对非法的输入拒绝接受,同时给出对应的提示信息。,(4) 测试用例应包括输入数据和预期的输出结果两部分。 测试前应当设定合理的测试用例。测试用例不仅要有输入数据,而且还要有与之对应的预期结果。如果在程序执行前无法确定预期的测试结果,由于人们的心理作用,可能把实际

4、上是错误的结果当成是正确的。,(5)全面检查每个测试结果 这条重要的原则时常被人们忽视。不仔细、全面地检查测试结果,就会使得有错误征兆的输出结果被漏掉。,(6) 严格按照测试计划来测试。 测试计划内容应包括:所测软件的功能、输入和输出、测试内容、各项测试的进度安排、资源要求、测试资料、测试工具、测试用例的选择、测试的控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测试的规定以及评价标准等。,(7) 充分注意测试中的集群现象。 经验表明:一段程序中若发现错误的数目越多,则此段程序中残存的错误数目也较多。例如:在美国IBM OS/370的一个操作系统中,47% 的错误(由用户发现的错误)仅与

5、该系统的4%的程序模块有关。据此规律,在实际测验时,为了提高测试效率,要花较多的时间和代价来测试那些容易出错即出错多的程序段。而不要以为找到了几个错误,就认为问题已解决,不再需要继续测试了。,(8) 注意遵守“经济性”原则 为了降低测试成本,掌握好测试量至关重要。要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级;要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的错误。,7.1.3 测试步骤,(1) 制定测试计划。该计划被批准后转向第二步。 (2)设计测试用例。该用例被批准后转向第三步。 (3)如果满足“启动准则”,那么执行测试。 (4)撰写测试报告。 (5)消除软件

6、缺陷。如果满足“完成准则”,那么正常结束测试。,依据是否需要执行被测软件,软件测试技术分为静态分析技术与动态测试技术两种。 静态测试是指采用人工检测或计算机辅助静态分析的手段对软件进行检测。 动态测试是把事先设计好的测试用例作用于被测软件,比较测试结果和预期的结果是否一致,如果不一致,则说明被测软件可能存在错误。,7.2 软件测试技术,依据是否针对系统的内部结构和具体实现算法,动态测试可分为黑盒测试和白盒测试。 黑盒测试是指测试产品的功能。 白盒测试是指测试产品内部结构及处理过程。,7.2 软件测试技术,7.2.2 黑盒测试方法 常用的方法: 等价类划分法 边界值分析法 错误推测法 因果图法,

7、1. 等价类划分法 数据测试的等效性原理:将分类的数据取其子集中一个数据做测试与子集中其他数据测试的效果是等效的,即子集中的一个数据能测出软件错误,那么子集中的其余数据也能测出错误;相反,子集中的一个数据测试不出程序错误,子集中的其余数据也测不出错误。 思路:把软件的输入域划分成若干子集。然后从每一个子集中选取少数具有代表性的数据作为测试用例。,1. 等价类划分法 步骤:(1)分析输入数据; (2)划分等价类,建立等价类表; (3)设计测试用例:覆盖所有的有效等价类和 无效等价类。,例子:某一报表处理系统,要求用户输入处理报表的日期。 假设日期限制在1990年1月至1999年12月,即系统只能

8、对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错误信息。该系统规定日期由年、月的 6 位数字字符组成,前 4 位代表年,后两位代表月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。,(1)分析输入数据 报表日期的类型及长度:6个数字字符 年份范围 :在1990-1999之间 月份范围 :在1-12之间,(2)划分等价类,建立等价类表,(3)设计测试用例:覆盖所有的有效等价类和无效等价类。 为合理等价类设计测试用例,对于表中编号为1, 5, 8对应的 3 个合理等价类, 用一个测试用例覆盖。 为每一个不合理等价类至少设计一个测试用例,测试数据 期望结果 覆盖

9、范围 199510 输入有效 1,5,8 99MAY 输入无效 2 19995 输入无效 3 1999005 输入无效 4 198912 输入无效 6 200001 输入无效 7 199900 输入无效 9 199913 输入无效 10,2. 边界值分析法 从长期的实践中得知,处理边界情况时,程序最容易发生错误。所以,在设计测试用例时,应该选择一些边界值,这就是边界值分析的测试技术。边界值分析是对等价类划分方法的补充。,例子:,3. 错误推测法 基于经验和直觉推测程序中所有可能存在的各种错误。 例如对于一个排序程序, 列出以下几项需特别测试的情况: (1) 输入表为空。 (2) 输入表只含一个

10、元素。 (3) 输入表中所有元素均相同。 (4) 输入表中已排好序。,4. 因果图法 检查软件输入条件的各种组合情况。 步骤: (1)为原因和结果赋予标志符; (2)画出因果图; (3)把因果图转换为判定表; (4)设计测试用例。,例子: 现有关于工作过失的描述如下: 年薪制员工:严重过失,扣年终风险金的4%;一般过失,扣年终风险金的2%。 非年薪制员工:严重过失,扣当月薪资的8%;一般过失,扣当月薪资的4%。,(1)为原因和结果赋予标志符;,(2)画出因果图;,(3)把因果图转换为判定表;,(4)设计测试用例。,7.2.3 白盒测试法 逻辑覆盖法 基本路径法,1、逻辑覆盖法:以程序内部的逻辑

11、结构为基础的技术,图 一个被测试程序的流程图,(1)语句覆盖:使每一条语句至少被执行一次。 如果能测试路径124,就保证每个语句至少执行一次,选择测试数据为 a=2 , b=0, x=3 输入此组数据, 就能达到语句覆盖标准。,(2) 判定覆盖:使程序中每个判定的真分支和假分支至少遍历一次。 设计测试用例,只要通过路径124, 135或者125, 134, 就达到判定覆盖标准。 选择两组数据: a=3, b=0, x=1(通过路径125) a=2, b=1, x=2(通过路径134),(3)条件覆盖:使每个判定的每个条件的可能取值至少执行一次。 上述程序中有 4 个条件: a1, b=0, a

12、=2, x1 要选择足够的数据,第一个判定表达式出现结果: a1, b=0 a1, b0,并使第二个判定表达式出现结果: a=2, x1 a2, x1 才能达到条件覆盖的标准。 为满足上述要求, 选择以下两组测试数据: a=2, b=0, x=3(满足a1, b=0, a=2, x1, 通过路径124) a=1, b=1, x=1(满足a1, b0, a2, x1,通过路径135),(4) 判定/条件覆盖:使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。 对于上述程序,选择以下两组测试用例满足判定/条件覆盖: a=2, b=0, x=3 a

13、=1, b=1, x=1,(5) 条件组合覆盖:使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。 上述程序中, 两个判定表达式共有 4 个条件, 因此有 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覆盖条件组合和,通过路径124 a=2,b=1,x=1 覆盖条件组合和,通过路径134 a=1,b=0,x=2覆盖条件组合和,通过路径134 a=1,b=1,x=1覆盖条件组合和,通过路径135 该例没有覆盖程序可能执行的全部路

14、径,125这条路径被漏掉了,如果这条路径有错, 就不能测出。 ,2、基本路径法:保证程序中的所有路径至少执行一次。 对于上例, 选择以下测试用例, 覆盖程序中的 4 条路径: a=2,b=0,x=2覆盖路径124,覆盖条件组合和 a=2,b=1,x=1覆盖路径134,覆盖条件组合和 a=1,b=1,x=1覆盖路径135,覆盖条件组合和 a=3,b=0,x=1覆盖路径125,覆盖条件组合和 可看出满足路径覆盖却未满足条件组合覆盖。 ,7.3 软件调试技术,一、调试的目的 软件测试的目的是尽可能多地发现程序中的错误, 而调试则是在进行了成功的测试之后才开始的工作。调试的目的是确定错误的原因和位置,

15、并改正错误,因此调试也称为纠错。,调试是程序员自己进行的技巧性很强的工作,要确定发生错误的内在原因和位置不是一件容易的事,它占整个调试工作量的90%左右。调试工作的困难与人的心理因素和技术因素都有关系,需要繁重的脑力劳动和丰富的经验。与测试比较,调试技术缺乏系统的理论研究,因此介绍的调试方法多是实践中的经验积累。,二、调试技术 1. 简单的调试方法 1) 在程序中插入打印语句 该方法的优点是显示程序的动态过程,比较容易检查源程序的有关信息。缺点是低效率,可能输出大量的无关的数据,发现错误带有偶然性。同时还要修改程序,这种修改可能会掩盖错误、改变关键的时间关系或把新的错误引入程序。,2) 运行部

16、分程序 有时为了测试某些被怀疑为有错的程序段,整个程序反复执行多次,使很多时间浪费在执行已经是正确的程序段上。在此情况下,应设法使被测试程序只执行需要检查的程序段,以提高效率。可采用以下方法: (1) 把不需要执行的语句段前和后加上注释符,使这段程序不再执行。调试过后,再将注释符去掉。 (2) 在不需要执行的语句段前加判定值为“假”的IF语句或者加GOTO语句,使该程序不执行。调试结束后,再撤销这些语句,使程序复原。,3) 借助于调试工具 目前大多数程序设计语言都有专门的调试工具,可以利用这些工具分析程序的动态行为。例如借助“追踪”功能可以追踪子程序调用、循环与分支执行路径、特定变量的变化情况

17、等,利用“置断点”可以执行特定语句或改变特定变量值引起的程序中断,以便检查程序的当前状态。还可借助调试工具观察或输出内存变量的值,大大提高调试程序的效率,缺点是也会产生大量的无关信息,也会走弯路。,以上几种简单的调试方法的共同特点是比较“省劲”,这些方法不需要人们去研究出现的错误,基本上都是“碰运气”的方法。实践表明,对于较为复杂的程序,查出错误的速度和精确度而言,有时用“脑”比用“机器”更有成效。,2. 回溯法调试 该方法从程序产生错误的地方出发,人工沿程序的逻辑路径返向搜索,直到找到错误的原因为止。例如,从打印语句出错开始,通过看到的变量值,从相反的执行路径查询该变量值从何而来。该方法是对

18、小型程序寻找错误位置的有效方法。,3. 归纳法调试 归纳法是一种从特殊到一般的思维过程,从对个别事例的认识当中,概括出共同特点,得出一般性规律的思考方法。归纳法调试从测试结果发现的线索(错误迹象、征兆)入手,分析它们之间的联系,导出错误原因的假设,然后再证明或否定这个假设。,归纳法调试的具体步骤如下: (1) 收集有关数据:列出做对了什么、做错了什么程序的全部信息。 (2) 组织数据:整理数据以便发现规律,使用分类法构造一张线索表。,(3) 提出假设:分析线索之间的关系,导出一个或多个错误原因的假设。如果不能推测一个假设,再选用测试用例去测试,以便得到更多的数据。如果有多个假设,首先选择可能性

19、最大的一个。 (4) 证明假设:假设不是事实,需要证明假设是否合理。不经证明就根据假设改错,只能纠正错误的一种表现(即消除错误的征兆)或只纠正一部分错误。如果不能证明这个假设成立,需要提出下一个假设。,例如,在一个“考试评分”程序中出现了一个错误:在某些情况下,学生分数中间值不正确,即51个学生评分,正确地打印出平均值是73.2,中间值却是26而不是期望的82,检查这个测试用例和其他几个测试用例的执行结果,得到如下表所示的线索表。,表 出错线索表,下面通过寻找现象的矛盾来建立有关错误的假设。矛盾是取偶数个学生,计算不出错,奇数个学生计算出错,同时总结出中间值总是小于或等于学生人数(2651和1

20、1),这时的处理可给学生换一个分数,把51个学生的测试再做一遍,中间值仍是26,因此在“how-no”栏中填写“中间值似乎与实际分数无关”这样一个范围。随后分析线索表,根据“中间值学生人数一半的最小整数”这一情况判断出好像程序把分数放在一个顺序表中,打印的是中间那个学生的编号而不是他的分数。因此就有了发生错误原因的假设,再通过检查源程序或额外多执行几个测试用例来证明这个假设。,4. 演绎法调试 演绎法是一种从一般的推测和前提出发,运用排除和推断过程作出结论的思考方法。演绎法调试是列出所有可能的错误原因的假设,然后利用测试数据排除不适当的假设,最后再用测试数据验证余下的假设确实是出错的原因。演绎

21、法调试的具体步骤如下: (1) 列出所有可能的错误原因的假设:把可能的错误原因列成表,不需要完全解释, 仅是一些可能因素的假设。,(2) 排除不适当的假设:应仔细分析已有的数据,寻找矛盾,力求排除前一步列出的所有原因。如果都排除了,则需补充一些测试用例,以建立新的假设;如果保留下来的假设多于一个,则选择可能性最大的原因做基本的假设。,(3) 精化余下的假设:利用已知的线索,进一步求精余下的假设,使之更具体化,以便可以精确地确定出错位置。 (4) 证明余下的假设:做法同归纳法。,7.4 系统测试,7.4.1 单元测试(模块测试、逻辑测试或结构测试) 单元测试的目的在于发现各模块内部可能存在的各种

22、差错。测试的方法一般采用白盒法,以路径覆盖为最佳准则,且系统内多个模块可以并行地进行测试。单元测试在编码中就进行了,其测试策略包括:单元测试设计测试用例要测试哪几方面的问题,针对这几方面问题各自测试什么内容,测试的具体步骤及实用测试策略。,1. 单元测试的内容 单元测试主要是对模块的五个基本特性进行评价。 1) 模块接口测试 在其他测试开始之前,首先要对通过模块接口的数据进行测试。若数据不能正确地输入和输出,则所有其他测试都是不切实际的。,Myers提出了接口测试要点: (1) 实际参数与形式参数的个数是否相等。 (2) 实际参数与形式参数的属性是否匹配。 (3) 实际参数与形式参数的单位是否

23、匹配。 (4) 调用其他模块时所给实际参数的个数是否与被调模块的形参数个数相等。 (5) 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配。,(6) 调用其他模块时所给实际参数的单位是否与被调模块的形参单位匹配。 (7) 调用内部函数所用参数的个数、属性和次序是否正确。 (8) 是否存在与当前入口点无关的参数引用。 (9) 输入是否仅改变了形式参数。 (10) 全程变量在各模块中的定义是否一致。 (11) 常数是否当作变量传送。,若一个模块需要完成外部的输入或输出时,还应检查下述各点: (1) 文件属性是否正确。 (2) OPEN/CLOSE语句是否正确。 (3) 格式说明与I/O

24、语句是否匹配。 (4) 缓冲器大小与记录长度是否匹配。 (5) 文件是否先打开后使用。 (6) 文件结束的条件是否处理过。 (7) I/O的错误是否处理过。 (8) 输出信息中是否有正文的错误。,2) 局部数据结构测试 检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源。应仔细设计测试用例,力求发现下面几类错误: (1) 不正确或不一致的说明。 (2) 错误的初始化或错误的缺省值。 (3) 拼写错或截短的变量名。 (4) 不一致的数据类型。 (5) 上溢、下溢和地址错误。 除了局部数据结构外,如有可能,单元测试期间还应考虑全局数据(例如FO

25、RTRAN的公用区)对模块的影响。,3) 路径测试 在模块中应对每一条独立的执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时,设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时,基本路径测试和循环测试是最常用、最有效的测试技术。计算中常见的错误如下: (1) 算术运算优先次序不正确或理解错误。 (2) 运算方式不正确。 (3) 初始化不正确。 (4) 精度不够。 (5) 表达式的符号表示错误。,比较判断与控制流常常紧密相关,因而,测试用例还应致力于发现下列错误: (1) 不同的数据类型比较。 (2) 逻辑运算不正确或优先次序错误。 (3)

26、因为精度误差造成本应相等的量不相等。 (4) 比较不正确,或变量不正确。 (5) 循环不终止或循环终止不正确。 (6) 当遇到分支循环时,出口错误。 (7) 错误地修改循环变量。,4) 错误处理测试 一个好的设计应能预见各种出错条件,并预设各种出错处理通路。出错处理通路同样需要认真测试,测试应着重检查下列问题: (1) 错误描述难以理解。 (2) 错误提示与实际错误不相符。 (3) 在程序自定义的出错处理段运行之前,系统已介入。 (4) 对错误的处理不正确。 (5) 提供的错误信息不足,无法确定错误位置和查错。,5) 边界测试 边界测试是单元测试步骤中的最后一步,也是最重要的一项任务。众所周知

27、,软件通常容易在边界上失效,因而,采用边界值分析技术,针对边界值及其左、右值设计测试用例,很有可能发现新的错误。,2. 单元测试过程 设计辅助测试模块。 驱动模块相当于所测模块的主程序,主要用来接收测试数据,启动被测模块,打印测试结果。桩模块(也称存根模块)接收被测试模块的调用和输出数据,是被测模块的调用模块。驱动模块类似子程序模块,是单元测试中重要的成本开销。,图 单元模块测试环境,7.4.2 集成测试 集成测试也称组装测试,综合测试或联合测试。集成测试是按设计要求把通过单元测试的各个模块组装在一起之后进行测试,以便发现与接口有关的各种错误。在进行集成测试时,常需考虑的有关问题有:数据经过接

28、口是否会丢失;一个模块对另一模块是否造成不应有的影响;几个子功能组合起来能否实现主功能;误差不断积累是否达到不可接受的程度;全局数据结构是否有问题。集成测试分为非渐增式测试和渐增式测试。,1. 非渐增式测试 非渐增式测试方法是先分别测试每个模块,再把所有模块按设计要求放在一起,结合成所要的程序再进行测试。 2. 渐增式测试 渐增式测试是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下下一个应该测试的模块结合进来测试,这种测试每次增加一个模块。这种方法实际上同时完成单元测试和集成测试。,1) 自顶向下结合 自顶向下结合是一种递增的装配软件结构的方法。这种方法被日益广泛

29、地采用,它需要连接程序,但不需要驱动程序。它是从主控制模块(“主程序”)开始,沿着软件的控制层次向下移动,从而逐渐把各个模块结合起来。把主控模块所属的那些模块都装配到结构中去时,有两种方法可供选择。 深度优先策略 参看下图,深度优先策略先组装在软件结构的一条主控制通路上的所有模块。主控路径的选择决定于软件的应用特性。如,选取最左边的路径,先结合模块M1、M2和M5,接着是M8,如果M2的某个功能需要,可结合M6,然后再构造中央和右侧的控制通路。,图 自顶向下结合,宽度优先策略 宽度优先策略是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。对于图7.9来说,先结合模块M2、M3和

30、M4(代替存根程序S4),接着是M5、M6和M7(代替存根程序S7)这一层,如此继续进行下去,直到所有模块都被结合进来为止。,自顶向下综合测试可归纳为以下五个步骤: (1) 用主控制模块做测试驱动程序,用连接程序代替所有直接附属于主控制模块的模块。 (2) 依据所选的集成策略(深度优先或宽度优先),每次只用一个实际模块替换一个桩模块。 (3) 每集成一个模块立即测试一遍。 (4) 只有每组测试完成后,才用实际模块替换下一个桩模块。 (5) 为避免引入新错误,须不断进行回归测试(即全部或部分地重复已做过的测试)。,自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因而能较早发现错

31、误。其缺点在于测试较高层模块时,低层处理采用桩模块替代,这并不能够反映实际情况,重要数据不能及时回送到上层模块,因而测试并不充分和完善。,2) 自底向上结合 自底向上测试是从软件结构最低层的模块开始组装和测试,当测试到较高层模块时,所需的下层模块均已具备,因而不再需要桩模块。,图 自底向上结合,自底向上方法与自顶向下方法相比较,它的优缺点与自顶向下方法恰恰相反。一般在实际应用中,采用两种方法相结合的混合法,即对软件结构的较上层使用自顶向下的结合方法,对下层使用自底向上的结合方法,以充分发挥两种方法的优点,尽量避免其缺点。,7.4.3 确认测试 确认测试又称有效性测试、合格测试或验收测试。模块组

32、装后已成为完整的软件包,消除了接口的错误。确认测试主要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。,1. 确认测试标准 软件确认测试是通过一系列黑盒测试来证实软件功能与用户需求是否一致的。 确认测试有两种可能结果:一种是功能与性能规格说明一致,用户可以接受;另一种是软件不满足软件需求的要求,用户无法接受。若要在此时进行修改,工作量很大,因而必须与用户协商,寻找一个妥善解决问题的办法。,2. 配置复审 配置复审是确认测试的另一个重要环节。复审的目的在于保证程序和文档配置齐全、分类有序,两者要一致,并且包括软件维护所必须的细节。,3. 测试,测试是由一个

33、用户在开发环境下进行测试,也可以是开发机构内部的人员在模拟实际操作环境下进行的测试。测试的关键在于尽可能逼真地模拟实际运行环境和对用户软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。测试是在一个受控制环境下的测试。,测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。与测试不同的是,开发者一般不在现场。因此,测试是软件不在开发者控制的环境下的“活的”应用。用户记录在测试过程中遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。开发者在综合用户报告之后,必须做出相应的修改,然后才能将软件产品交付给全体用户使用。,7.4.4 系统测试 系统测试实质上是由一系列不同测试

34、组成的,其主要目的是充分运行系统,验证系统各个部件是否都能正常工作并完成所分配的功能。以下,我们将讨论用于系统的几种软件系统测试类型。,1. 恢复测试 恢复测试主要检查系统的容错能力。当系统出错时,能否在指定的时间间隔内修正错误并重新启动系统。恢复测试首先要采用不同的方式强迫系统出现故障,然后验证系统是否能尽快恢复。如果恢复是自动的(由系统自身完成),则重新初始化、检测点设置、数据恢复以及重新启动等都是对其正确性的评价。若恢复需人工干予,则需估算出修复的平均时间,确定其是否在可接受的限制范围以内。,2. 安全性测试 系统的安全性测试是要检验在系统中已存在的系统安全性措施、保密性措施是否发挥作用

35、,有无漏洞。在安全性测试过程中,测试人员应扮演非法入侵者,采用各种办法试图突破防线。如:想方设法截取或破译口令;专门定做软件破坏系统的保护机制;故意导致系统失败,企图趁恢复之机非法进入;试图通过浏览非保密数据,推导所需信息等等。系统安全设计的准则是使非法入侵的代价超过被保护信息的价值。这样,非法入侵者就会无利可图。,3. 强度测试 强度测试是要检查在系统运行环境不正常到发生故障的时间内,系统可以运行到何种程度的测试。强度测试是在要求一个非正常数量、频率或容量资源方式下运行一个系统。如:当平均速度有一种或两种时,可以设计每秒产生十个中断的特殊测试;定量地增长数据输入率,检查输入子功能的反映能力;运行需要最大内存或其他资源的测试用例;运行可能导致虚拟操作系统崩溃或磁盘剧烈抖动的测试用例等。,4. 性能测试 性能测试就是测试软件在被组装进系统的环境下运行时的性能。性能测试应覆盖测试过程的每一步。即使在单元层,单个模块的性能也可以通过白盒测试来评价,而不是等到所有系统元素全组装以后,再确认系统的真正性能。性能测试有时是与强度测试联系在一起的,常常需要硬件和软件的测试设备。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1