软件工程(第二版)-电子教案-卢潇 第7章软件测试

上传人:E**** 文档编号:89542666 上传时间:2019-05-27 格式:PPT 页数:45 大小:192.50KB
返回 下载 相关 举报
软件工程(第二版)-电子教案-卢潇 第7章软件测试_第1页
第1页 / 共45页
软件工程(第二版)-电子教案-卢潇 第7章软件测试_第2页
第2页 / 共45页
软件工程(第二版)-电子教案-卢潇 第7章软件测试_第3页
第3页 / 共45页
软件工程(第二版)-电子教案-卢潇 第7章软件测试_第4页
第4页 / 共45页
软件工程(第二版)-电子教案-卢潇 第7章软件测试_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《软件工程(第二版)-电子教案-卢潇 第7章软件测试》由会员分享,可在线阅读,更多相关《软件工程(第二版)-电子教案-卢潇 第7章软件测试(45页珍藏版)》请在金锄头文库上搜索。

1、第7章 软件测试,软件测试是在软件投入运行之前,对软件的需求分析、设计规格说明和编码的最后复审。 由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。,软件测试的概念和意义,什么是软件测试: 软件测试的定义:软件测试是为了发现错误而运行程序的过程。是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。,软件测试的概念和意义,软件测试在软件生命期中,跨越两个阶段。 编写每一个模块后,进行单元测试。通常模块的编写者和测试者是同一个人。 每一个模块完成单元测试后,对软件进行各种综合测试。由专门

2、的测试人员完成。,软件测试的概念和意义,目前软件开发结构,将研制力量的40%以上投入到软件测试之中。 几个典型系统中软件测试的费用 系统名称 测试费用占软件开发预算的比例 SAGE 47% NAVAL TACTICAL 50% DATA SYSTEM GENINI 47% S ATURN V 44%,软件测试的目标和原则,软件测试的目的: 1、软件测试是为了发现错误而运行程序的过程。 2、一个好的测试用例能够发现至今尚未发现的错误。 3、一个成功的测试是发现了至今尚未发现的错误的测试。,软件测试的目标和原则,软件测试的原则: (1)应当把“尽早地和不断地测试”作为开发者的座右铭 (2)软件测试

3、工作应该由独立的专业的软件测试机构来完成 (3)测试工作要全面,但不可能实现“穷举”。 (4)把Pareto原理应用到软件测试中。即对发现错误较多的程序段,应进行更深入的测试。 (5)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性往往要靠测试文档。 (6)不要希望在极短的时间内完成一个高水平的测试。 (7)错误经过修改后,相关的测试必不可少。,软件测试的范围,软件测试的对象: 软件测试不等于程序测试,对软件定义与开发的整个期间所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源程序等。,软件测试的工作,软件测试工作包括: 确认工作:是一系列的活

4、动和过程,其目的是证实在一个给定的外部环境中,软件的逻辑正确性。它包括需求规格说明的确认和程序的确认。而程序的确认又分为:,静态测试 分为两大类: 动态测试,黑盒测试,白盒测试,软件测试的工作,静态: 静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。 1、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而人工评审软件除了审查编码还要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误,据统计人工检测可发现30%70%的逻辑设计和编码错误,从而减少系统测试的总工作量。 2、计算机辅助静态检测:利用静态检测工具对程序进行测试

5、。,软件测试的工作,动态: 动态测试是通过运行程序发现错误。 一般意义上的测试都是动态测试。为使测试发现尽可能多的错误,动态测试时需采用一些有效的方法。一般有两种方法:一是测试产品的功能,二是测试产品的内部结构和处理程。分别称为黑盒测试和白盒测试。,软件测试的工作,软件测试过程中的信息: 测试过程需要三类信息: 1、软件配置:包括需求规格说明、软件设计规格说明、源程序等; 2、测试配置:包括测试方案、测试用例、测试驱动程序等; 3、测试工具:计算机辅助测试的有关工具。如测试数据自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。,软件测试的工作,软件测试信息流:,

6、软件测试方法,白盒测试: 白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结构为基础,设计测试用例。 1、逻辑覆盖: 追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。,如右图:一个被测程序的流程图。,软件测试方法,常用的覆盖技术有: (1)语句覆盖: 为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。,测试路径为1-2-4,即可保证每个语句至少执行一次。所以测试用例为:A=2、B=0 、X=3。程序每个语句都能执行,语句覆盖似乎

7、全面地检查了每个语句,但该测试用例只检查了逻辑表达式为“真”的情况,如将“AND” 错写为“ OR ”、 X1错写为X1,仍用上面的测试用例,不能发现错误。因此语句覆盖是比较弱的覆盖。,软件测试方法,常用的覆盖技术有: (2)判定覆盖: 判定覆盖是指设计足够的测试用例,使被测程序的每个判定表达式至少获得一次“真”和“假”值,从而使程序的每个分支至少都通过一次,所以判定覆盖又叫分支覆盖。,测试路径只要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)。对于多分支的判定,判定覆盖要使得每一个

8、判定表达式获得每一个可能的值。判定覆盖比语句覆盖严格,若通过各个分支,各个语句也执行了。但该测试仍不充分,上述数据只覆盖了全部路径的一半,如将X1错写为X1,测试不到.,软件测试方法,常用的覆盖技术有: (3)条件覆盖: 条件覆盖是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值至少出现一次。即对该程序中的四个条件A1 B=o A=2,X1 要选择足够的测试用例,使得: 判定表达式1出现:A1,B=0;A1,B0 判定表达式2出现:A=2, X1; A2, X1 达到条件覆盖标准。 为满足上述要求,选择以下两组数据: A=2,B=0, X=3(满足A1 ,B=0, A=

9、2 , X1 通过路径124) A=1,B=1, X=1(满足A1,B0, X 1, A2通过路径135 ),软件测试方法,常用的覆盖技术有: (3)条件覆盖: 以上两组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆盖了 所有判定的取“真”分支和取“假”分支,在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以下两组数据: A=1,B=0, X=3(满足A 1 ,B=0,A 2 ,X1 ) A=2,B=1, X=1(满足A1,B0, X 1, A=2) 以上两组数据覆盖了判定表达式中的所有条件的可能取值,但只覆盖了 第一个判定表达式的取“假”分支和第二个判定表达式的取“真”分支,此例

10、不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼顾。,软件测试方法,常用的覆盖技术有: (4)判定/条件覆盖: 该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值至少出现一次。并使每个判定表达式所有可能的结果也至少出现一次。对该例程序,可选择以下两组数据达到判定/条件覆盖标准: A=2,B=0, X=3 A=1,B=1, X=1 从表面上看,判定/条件覆盖测试了所有条件的取值,但实际上条件组合中的某些条件会抑制其它的条件,如“与”运算的判定表达式中,第一个条件为“假”,则这个表达式后面的几个条件均不起作用,后面的表达式中的

11、错误也就测试不出来。,软件测试方法,(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=1, X=1;覆盖条件组合 ,路径135 A=1, B=0, X=2

12、;覆盖条件组合 ,路径134 显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定/条件覆盖,但该测试没有覆盖程序所有可能的执行路径,125路径没有覆盖。,软件测试方法,(6)路径覆盖: 该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径: 该例可选择以下测试用例,覆盖程序中的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,条件组合 ; 显然,该测试满足路径覆盖,但没有满足条件组合覆盖。,软件测

13、试方法,六种覆盖的比较:,语句覆盖 每条语句至少执行一次 判定覆盖 每个判定的每个分支至少执行一次 条件覆盖 每个判定的每个条件应取到各种可能的值 判定/条件覆盖 同时满足判定覆盖和条件覆盖 条件组合覆盖 每个判定中各条件的每一种组合至少出现一次 路径覆盖 使程序中每一条可能的路径至少执行一次,发现错误能力,强 力,弱 力,软件测试方法,2、控制结构测试 (1)基本路径测试 画出程序的控制流图 计算程序环路复杂度 确定独立路径的基本集合 设计测试用例,软件测试方法,2、控制结构测试 (2)条件测试 条件测试重点测试程序中的每个条件,通过检测程序条件中的错误,来发现程序中的其它错误 . 主要是测

14、试组成条件的各个成分的正确性,条件可能是一个布尔变量、一个关系表达式或是由两个或多个简单条件、布尔运算符和括弧组成的复杂条件最简单的条件测试策略应该是分支测试,分支测试主要是保证条件中的每个简单条件,以及取真、取假的分支都至少执行一次。,力,软件测试方法,2、控制结构测试 (3)循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种 1)简单循环 简单循环可依据以下顺序分别设计测试用例进行测试: 零次循环:从循环入口到出口; 一次循环:检查循环初始值; 二次循环:检查2次循环; m次循环:检查m次循环,其中m小于最大次数减1; 进行最大次数循环、比最大次数多一次、少一次的循环。,软

15、件测试方法,(3)循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种 2)嵌套循环 使用B.Beizer提出的测试方法,可以减少测试数目: 对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值; 逐步外推,对其外面一层循环进行测试。测试时保持当前层的所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值,同时考虑增加越界值和非法值的测试。 反复进行,直到所有各层循环测试完毕。,软件测试方法,2、控制结构测试 (3)循环测试 根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种 : 3)串接循环 如果各个循环互相独立,则可以用与简单循环相同的方

16、法进行测试。但如果几个循环不是互相独立的,第二个循环的执行与第一个循环的某个值有关,则需要使用测试嵌套循环的办法来处理。,软件测试的方法,黑盒测试法 “黑盒”测的是功能,它检查的内容只包括程序功能是否能按照规格说明书的内容正常使用,程序是否接收输入数据产生正确的输出信息 方法有:等价类划分法、边界值分析法和错误推测法 1、等价类划分: 等价类:指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的。即如果使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。,软件测试的方法,黑盒测试法 1、等价类划分: 等价类划分的含义:将输入数据域按有效的或无效的(或称合理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号