IT计算机 信息系统的测试_第1页
IT计算机 信息系统的测试_第2页
IT计算机 信息系统的测试_第3页
IT计算机 信息系统的测试_第4页
IT计算机 信息系统的测试_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

第六章■息系统的测试'

第一节信息系统测试概述

第二节测试方法

1J1■]

第三节测试过程和步骤

第四节软件测试工具

信息系统测试是信息系统开发过N

程中非常重要而漫长的阶段。其重要\

性表现在它是保证系统质量和可靠性

的关键步骤,是对系统开发过程中的

系统分析、系统设计和实施的最后复

杳。

一本章重点讲述信息系统测试的基

本概念、测试目标、测试过程和测试

步骤,讨论测试的关键技术和调试技

术以及如何设计测试用例和组织实施

功测试活动。

第一节信息系统测试概述

4步由客:

1、制铁的泉*槐含、目标和展则

2、制钱对箴5制钱信息濡

1、测试的基本概念、目标和原则

(1)测试的基本概念和目标

•测试是为了发现错误而执行程序的过程。

­好的测试方案是能够发现迄今为止尚未发现

的错误的测试方案。

•成功的测试是发现了至今尚未发现的错误的

测试。

,总之,测试的目标就是希望能以最少的人力

和时间发现潜在的各种错误和缺陷。从上述

国0的目标可以归纳出测试的定义是“为了

或现错误而执行程序的过程”。,

⑵测试的原则物

①应尽早并不断地进行测试。VA

②测试工作应避免由原开发软件的人或小组来承向@

(单元测试除外)。、

③在设计测试方案时,不仅要确定输入数据,而且还

要根据系统的功能确定输出结果。।

④在设计测试用例时,不仅要包括合理、有效的输入

条件,也要包含不合理、失效的输入条件。

⑤在测试程序时,不仅要检测程序是否做了该做的事,

还要检测程序是否做了不该做的事。

⑥充分重视测试中的群集现象。1

⑦严格按照测试计划来进行,避免测试的随意性。\

⑧妥善保存测试计划、测试用例,作为软件文档的组।

A成部分,为维护提供方便。,

2、测试对象与测试信息流

(1)测试的对象

•在信息系统中,作为整体,不仅要对硬件

系统、网络系统进行测试,还需要对软件

系统进行测试。由于系统的开发任务很大

程度上是软件开发,因此测试的对象除了

硬件部分、网络部分以外,更主要的是软

件。

•在薮件测试时,应该把各阶段的文档加上

源程序进行测试,即软柞测试对象二文档+

程序。所以测试的对象主要是软件(在后面

析说的测试中,非特别注明,通常臭指软

生则试)。

⑵测试信息流,

由于测试的对象主要是软件,所以在测试阶

段的信息流主要分析软件方面的信息流程,其流

程如图6-1所不。

软件配置一、测试结果、错误/、正确

:(测试)一评价)——/调试)——

测试配置7:二V入二,

可靠性预测

预期结果

图6-1测试疥段的信息流

输入信息分成软件配置和测试配置两类。软件配

置由系统分析说明书、系统设计说明书和源程序等组

成。测试配置由测试计划、测试方案组成。测试方案

不仅仅是测试时使用的输入数据(称为测试用例),还

包括每组输入数据要检测的功能和预期的输出结果。

在软件配置包含所有文档的情况下,可以把测试配置

看成是软件配置的一个子集。

测试人员根据提交的软什配置和测试配置进行测

试,每组输入数据都有对应的测试结果,测试结果和

预期的输出结果相比较,如果不一致,说明程序有错,

此时需要调试定位错误并改正。调试与测试不

同,调试需要程序的编写人员来完成。

通过对测试结果的收集和评价,开发质量和可N

靠性的一些定性指标就可以逐步地确定下来。显然,、

在测试过程中如果经常出现严重错误,则说明开发

的质量和可靠性一定不高,更需要多加测试。反之,

如果软件的功能看起来完成得很正常,遇到的错误

也比较容易修改,则存在着两种可能性:一是软件

的质量和可靠性是令人满意的.二是所做的测试还不

够全面,不够充分,未能发现隐藏着的错误。如果

是后一种情况,则很有可能是测试配置选择不恰当,

导致问题不能够充分暴露出来,这些潜伏着的问题

最终会被发现,如果在维护阶段来纠正,其代价将

比开发时期高出许多倍。

对测试结果的积累可用于构造可靠性模型,据

此可估计出错的情况,并对软件的可靠性进行预测。

测试方法

信息系统测试与工程产品的测试方法一村

常用的有两种方法。

一种是不了解产品的内部结构,但对具体

的功能有要求,可通过检测每一项功能是否

能正常使用来说明产品是否合格。

另一种是知道产品的内部过程(性能),通

过检测产品的内部动作是否按照说明书的规

定正常运行来考察产品是否合格。

前一种方法被称为黑盒测试(功能测试),

一后一种方法被称为白盒测试(结构测试)。

洋节的M

7、提件刷被方法

2、役件同被的窈卷冏题

3、白金同被的制I被用俐极耐

4、黑金刷被的刷被用例较材

1、软件测试方法

对软件进行测试的主要方法如图6-2所示。

人工测试

软件测试一

「黑盒测试

机器测试L白盒测试

图6-2软件测试的主要方法

⑴人工测试

人工测试又称为代码复审。通过阅读

程序来查找错误。其内容包括:检查代码

和设计是否一致;检查代码逻辑表达是否

正确和完整;检查代码结构是否合理,等

等。主要有以下三种方法:

①个人复查

②走查

③会审

发现程序中的错误。

②走查:通常由3〜5人组成测试小组。测试

人员是没有参加该项目开发的有经验的程序设

计员。

③会审:测试人员的构成与走查类似,要求

测试人员在会审之前应充分阅读有关的资料

(如系统分析、系统设计说明书、程序设计说

明书、源程序等),根据经验列出尽可能多的

典型错误,然后把它们制成表格。根据这些错

误清单(也叫检查表),提出一些问题,供在会

居D审时使用。

(2)机器测试

机器测试指在计算机上直接

用测试用例运行被测程序,

从而发现程序错误。机器测

试分为黑盒测试和白盒测试

两种。

①黑盒测试N

也称为功能测试,将软件看成黑盒子,在完全不考、

虑软件的内部结构和特性的情况下,测试软件的外部

特性。根据系统分析说明书设计测试用例,通过输入

和输出的特性检测是否满足指定的功能。所以测试只

作用于程序的接口处,进行黑盒测试主要是为了发现

以下几类错误:

A.是否有错误的功能或遗漏的功能?

B.界面是否有误?输入是否能够正确接受?输出是否

正确?

C.是否有数据结构或外部数据库访问错误?

D.性能是否能够接受?

E.是否有初始化或终止性错误?

②白盒测试、

也称为结构测试。将软件看成透明的白盒。根据

程序的内部结构和逻辑来设计测试用例,对程序的

路径和过程进行测试,检查是否满足设计的需要。

其原则是:

A.程序模块中的所有独立路径至少执行一次;

B.在所有的逻辑判断中,取“真”和取“假”的

两种情况至少都能执行一次;

C.每个循环都应在边界条件和一般条件下各执行

一次;

D.测试程序内部数据结构的有效性,等等。

2、软件测试的穷举问题

测试中的穷举测试是指对被测对象进行

包含所有可能情况的测试。如果能进行穷举

测试,则通过穷举测试的软件就能保证完全

正确。但这现实吗?我们来考察机器测试的

两种方法。根据白盒测试的原则,从表面上

看,只要针对程序的每一条逻辑路径设计测

试用例,仔细检查分支和循环的情况,就可

以得到完全正确的程序。也就是说,只要进

行路径上的穷举测试,就能保证程序完全正

一确,但这是不现实的事情。

•例如,给出一个如图6-3所示的流程图,

它大致对应100行源代码的Pascal程序,

其中惟一一个循环体最多循环20遍,这段

程序有5条路径,则共有520(^014)条路

径。如果要对它进行路径上的穷举测试,

假设有这么一组测试用例能对每条路径进

行测试,运行每个测试用例的时间为1毫

秒,则对图6-3所示的所有路径进行测试,

总共需要花费3170年,这还不包括对测试

结果进行分析所花费的时间。

6

3

无论是路径上的穷举测试,还是输入量的穷举

测试,在实际的测试过程中都是不可行的。因此,

只能在一定的开发周期内和在一定的经济条件下,

通过精心选择有代表性的一些测试用例尽可能多地

发现错误。也就是说,测试不能证明所开发的系统

没有错误,只能通过测试来提商系统的可靠性和开

发质量。这就要求我们在设计测试方案时,能够用

较少的测试用例发现尽量多的问题,以提高测试效

率。

在设计测试方案中,设计测试用例的输入数

据(即测试用例)是非常重要的,也是最困难的。因

G止匕下面介绍一些常用的设计测试数据的技

3、白盒测试的测试用例设计

白盒测试是对软件的过程性

细节做详细的检查。通过对程序

内部结构和逻辑的分析来设计测

试用例。适合于白盒测试的设计

技术主要有:逻辑覆盖法、基本

路径测试等。

逻辑覆盖(logiccoverage)是以

程序内部的逻辑结构为基础的测试技

术。它考虑的是测试数据执行(覆盖)

程序的逻辑程度。由于穷举测试是不

现实的。因此,只希望覆盖的程度更

高些。根据覆盖情况的不同,逻辑覆

盖可分为:语句覆盖、判定覆盖、条

件覆盖、判定/条件覆盖、多重覆盖、

路径覆盖。

(1)语句覆盖

语句覆盖(statement

coverage)就是设并若干(2)判定覆盖V

个检测用例,使得程序判定覆盖(decision'

中的每条语句至少疲执coverage)也称为分支覆

行一次。语句覆盖对程盖,就臬设计若干个检

序的逻辑覆盖程度很少,测用例,使得程序中的

因此语句覆盖有可能发每个判断的取真分支和

现不了判断条件中算法取假分支至少执行一次。

出现的错误。判断覆盖比语句覆盖

(3)条件覆盖的程度稍强,因为如果

条件覆盖(condition通过了每人分支的测试,

coverage)就是设并若干则各语句也都执行了。

个测试用例,使得被测但仍有不足。所以,判

程序中每个判断的每个断覆盖还不能保证一定

跳髀军能情况都能查出判断条件中的错

误。因此,需要更强的

*沏翼南来检查内部条

(4)判定/条件覆盖

判定/条件覆盖(decision/

conditioncoverage)是既要满足

判断覆盖的要求,又要满足条件.(6)路径覆盖、

覆盖的要求。也就是设计若干个.路径覆盖就是设计足够多

测试用例,使得程序中的每个判

的测试示例,使被测程序中

断的取真分支和取假分支至少执

的所有可能路径至少执行一

行一次,而且每个条件的所有可

次。路径覆盖保证了程序中

能情况都至少执行一次。因此,

的所有路径都至少执行一次,

有时判定/条件覆盖并不比条件

是一种比较全的逻辑覆盖标

覆盖更强,逻辑表达式的错误也

准。但它没有检查判断表达

不一定能检查出来。

式中条件的各种组合情况,

(5)多重覆盖通常把路径覆盖和多重覆盖

多重覆盖(multjobcoverage)就结合起来就可以得到查错能

是设计多个测试用例,使得各判力很强的测试用例。

断表达式中条件的各种组合至少.(7)循环覆盖

执行一次。很显然,多重覆盖包

含了条件覆盖、判定覆盖和判定

/&g覆盖,是前面几种覆盖标

卢0准中最强的。

上面介绍的只是语句、分支、条件以

及它们的组合情况,而循环也是大多数算

法的基础。对蠢环的测试主要检查循环构

造的有效性。循环分为

简单循环(simpleloops)、

串联循环(concatenatedloops)、

嵌套循环(nestedloops)和

非结构循环(unslructuredloops)4种类

型,

如图6-4所示。

对于循环次数为n的简单循环。可以

采用下列措施进行测试:

跳过整个循环。

A循环次数为I,2,n-1,n,n+L

任取循环次数为m,其中

y(b)(o⑷je

▼I4,

简单循环串联循环嵌套循环非结构循环

图6-4循环的4种类型

•对于嵌套循环,如果采用简单循环的测试讲

法,则测试次数将会成几何级数增长。可以采用

以下方法进行测试:

•①从最内层循环开始测试,对所有外层循环都取

最小值,内层循环按简单循环的测试方法进行。

•②由里向外,一层层进行测试,凡是外层的循环

都取最小值,该层循环嵌套的那些循环取一些典

型的值。

­③直至所有循环测试完毕。

•对于串联循环的测试可分成两种情况:如果

两个循环是独立的,采用简单循环的测试方法;

反之,如果两个循环不是独立的,则需要用嵌套

循环的测试方法来测试。对于非结构循环,一般

一先把程序结构化之后再进行测试。

4、黑盒测试的测试用例设计

黑盒测试是在测试时把软件看成

一个黑盒子,完全不考虑程序的内

部结构及其逻辑,重点考察程序功

能是否与需求说明书的要求一致。

适合于黑盒测试的设计技术主要有:

等价类划分、边界值分析、错误推

测法、因果图、功能图等。下面重

点介绍等价类划分、边界值分析这

两种测试技术。

(1)等价类划分2

等价类划分是比较典型的黑盒测试技术。、

等价类划分技术的主要思想就是程序的输

入数据都可以按照程序说明划分为若干个等

价类。每一个等价类对于输入条件可划分为

肴城的输入和无效雨输入。然后均对每一个

有效的等价类和无效的等价类设计测试用例。

如果用某个等价类的一组测试数据进行测试

时没有发现错误,则说明在同一等价类中的

其他输入数据也一样查不出问题;反之,如

果用某人等价类的测试数据进行测试检查出

错误,则说明用该等价类的其他输入数据进

行测试也一样会检测出错误。所以,在测试

时,只需从每个等价类中取一组输入

A数据进行测试即可。

•使用等价类划分技术设计测试方案时,首先需要根据程序

功能说明划分出输入数据的有效等价类和无效等价类,然后为每

个等价类设计测试用例。在确定输入数据的等价类时常常还需要

分析输出数据的等价类,以便根据输出数据的等价类来推导出对

应的测试用例。

•在划分等价类时,可以按以下原则进行:

•①如果规定了输入数据的范围,则可划分为一个有效等价类和

两个无效等价类。

•②如果规定了输入数据的个数,则可划分为一个有效等价类和

两个无效等价类。

•③如果规定了输入数据为一组可能的值,而且程序对每个输入

值分别进行处理,.这时需要为每仝输入数据确定一个有效等价类,

•④如何规定了输入数据必须遵守的规则,则可以划分出一个有

效等价类(遵守规则的输入数据)和若干个无效等价类(从不同角

度设计得到违反规则的情况)。

•⑤如果在划分的某等价类中各值在程序中的处理方式不同,则

需要将该等价类进步划分成更小的等价类。

以上列出的原则只是实际情况中很小的一部分。

为了正确划分等价类,需要正确分析被测程序的功能。

划分等价类的方法是根据每个输入条件(通常是规范

说明中的一句话或一个短语)列出两个或更多的等价类,

将其填入表6-1中,建立等价类表。

16-1就赫

然精hoi瓶*彼

IIIIIIillHlIIIIII

IIIHIHIIIIIIIIII

•根据等价类表设计测试用例。主要按下、

面两个步骤:

•①设计新的测试用例,使其尽可能多的

覆盖未被覆盖的有效等价类,重复这一

步骤直至所有有效等价类都被覆盖。

•②设计新的测试用例。使其覆盖一个而

且仅此一个未被覆盖的无效等价类,重

复这一步骤直至所有无效等价类都被覆

一盖。

(2)边界值分析、

边界值分析也是黑盒测试技术,是等价类

划分的一种补充。通常,程序在处理边界

时容易发生错误,而等价类划分技术是在

等价类中随便选择一组数据作为代表,没

有考虑边界情况。边界值分析是指对每个

等价类的各边界作为测试目标,使得测试

数据等于、刚刚小于、刚刚大于等价类的

边界值。

边界值分析技术在设计测试用例的原则与

等价类划分技术的许多方面类似。需要注

意的是边界值分析技术不仅注意输入条件

的边值,还应根据输出条件的边值设计测

♦式用例

选择测试用例有以下原则:V

・①如果规定了输入数据的范围,则应取举

占该范围幼边界值以及刚刚超过这个范

围的边界值的测试L数据。

•②如果规定了输入数据的个数,则应取最

大个数、最小个数、比最大个数多1和比最

小个数小1的数作为测试数据。

•③如果程序中使用了内部数据结构,则需

要选择该数据结构的边界值作为测试用例。

・④根据规格说明的每个输出条件可以使用

第①条原则。

•⑤根据规格说明的每个输出条件也可以使

用第②条原则。

•从这里可以看出,边界-在设计测试方案中,通

值分析与等价类划分技常会把逻辑覆盖、等价

术最大的区别是边界值

类划分和边界值分析等

分析技术在设计测试用

例时,重点检测等价类方法结合起来,这样既

边界和边界附近的情况,可以检测设计的内部要

而等价类划分技术只是求,又可以检测设计的

在每个等价类中随便选接口要求。

择一组测试数据。

第三节丁状过程和步骤N

由于信息系统的构成可能比较复杂,所涉及

的问题比较多,为了保证整个开发任务的按期

完成,测试工作不一定只在测试阶段才进行,

能提前的尽量提前进行。而且可按功能分别进

行。例如,硬件、网络等设备到货后应进行初

验,安装后再进行详细的测试,最后结合应用

软件等对整个信息系统进行测试。本节针对信

息系统中的硬件系统、网络系统和软件系统中

的测试步骤和测试内容进行介绍,重点为软件

测试。

1、恻就过程2,侧曲步骤

品单无恻能4、俶喊到狱

5、确钦勤被6、靠拢侧欷

7、碉就

1、测试过程、

测试是开发过程中一个独立且非常重要的

阶段,也是保证开发质量的重要手段之一。

测试过程基本上与开发过程平行进行。在测

试过程中,需要对整个测试过程进行有效的

管理,保证测试质量和测试效率。一个规范

化的测试过程通常包括以下基本的测试活动:

A.拟定测试计划;

B.编制测试大纲;

C.设计和生成测试用例;

D.实施测试;

E.生成测试报告。

(1)拟定测试计划

在制定测试计划时,要充分考虑整

个项目的开发时间和开发进度以及一

些人为因素和客观条件等,使得测试

计划是可行的。测试计划的内容主要

有:测试的内容、进度安排、测试所

需的环境和条什(包括设备、被测项

目、人员等)、测试培训安排,等等。

(2)编制测试大纲

测试大纲是测试的依据。

它明确详尽地规定了在测试

中针对系统的每一项功能或

特性所必须完成的基本测试

项目和测试完成的标准。无

论是自动测试还是手动测试,

都必须满足测试大纲的

力要求。

(3)设计和生成测试用例

根据测试大纲,设计和生成测

试用例。在设计测试用例时,可

综合利用前面介绍的测试用例设

计技术,产生测试设计说明文档,

其内容主要有:被测项目、输入

数据、测试过程、预期输出结果,

(4)实施测试

测试的实施阶段是由一系

列的测试周期组成的。在每

个测试周期中,测试人员和

开发人员将依据预先编制好

的测试大纲和准备好的测试

用例,对被测软件或设备进

行完整的测试。

(5)生成测试报告'

测试完成后,要形成相应的

测试报告,主要对测试进行概要

说明,列出测试的结论,指出缺

陷和错误,另外,给出一些建议,

如:可采用的修改方法,各项修

改预计的工作量及修改的负责人

通常,测试与纠错是反复交替进

行的。如果使用专业测试人员,测试与

纠错可以平行进行.从而节约总的开发

时间。另外,由于专业测试人员有丰富

的测试经验,采用系统化的测试方法并

能全时地投入,而且独立于开发人员的

思维,使得他们能够更有效地发现许多

单靠开发人员很难发现的错误和问题。

2、测试步骤

由于每种测试所花费的成本不同,如果测

试步骤安排得不合理,将造成为了寻找错误

原因而浪费大量的时间以及重复测试。因此,

合理安排测试步骤对于提高测试效率和降低

测试成本有很大的作用。信息系统测试分别

按硬件系统、网络系统和软件系统进行测试,

最后对整个系统进行总的综合测试。测试的

步骤如图6-5所示。

模块

单元

设计信息需求信息用户信息

测流

己经集成已确X的可以运行

模块单元组装、的子系统确认应用软件的系统

测试测试测试测试

已经调试确认后的

过的模块网络系统

单元

测试

确认后的

硬件设备

初验

网络系统

剧络设备初验

图6-5信息系统测试

(1)硬件测试\

在进行信息系统开发中,通常需要根据

项目的情况选购硬件设备。在设备到货后,应

在各个相关厂商配合下进行初验测试,初验通

过后将与软件、网络等一起进行系统测试。

初验测试所做的工作主要有:

①配置检测

②硬件设备的外观检查

③硬件测试

通过以上测试,要求形成相应的硬件测

(2)网络测试\

如果信息系统不是单机,需要在局域网或'

广域网运行,按合同选购网络设备。在网络设

备到货后。应在各个相关厂商配合下进行初验

测试。初验通过后将与软件、硬件等一起进行

系统测试。

初验所做的工作主要有:

①网络设备的外观检查

②硬件测试

③网络连通测试

通过以上测试,要求形成相应的网络测

试〃告,在测试报告中包含测试步骤、测试过

程制测试蚓结论琴。

(3)软件测试N

软件测试实际上分成四步:单元测试、组装网

试、碉认测试和系统测试,它们按顺序进行。曾

先是单兀涮法(unittesting),对源彳呈序甲的每

一个程序单元进行测试,验证每个模块是否满足

系统设计说明书的要求。组装测试

(integrationtesting)是将已测试过的模块

组合成子系统,重点测试各模块之间的接口和联

系。确认测试(validationtesting)是对整

个软件进行验收,根据系统分析说明书来考察软

件是否满足要录。索统删试(systemtesting)

是将软件、硬件、网络等系统的各个部分连接起

来,对整个系统进行总的功能、性能等方面的测

G一试。

3、单元测试

单元测试也称为模块测试。

在模块编写完成且无编译错误后

就可以进行。可以选用人工测试

或机器测试,当用机器测试时,

一般采用白盒测试法,多个模块

可以同时进行。

A.单元测试的内容

在单元测试中,主要从

模块的五个特征进行检查:

模块接口、局部数据结构、

重要的执行路径、出错处

理和边界条件。

(1)模块接口

如果所测模块的数据流不能正确的输入、输

出,则根上就无法进行其他测试。所以在单元测

试电要考察模块的接口。Myers提出了接口测试

要点:

•①用被测模块的输入参数和形式参数在个数、

属性、单位上是否一致;

•②调用其他模块时的实际参数和被调模块的形

式参数在个数、属性、单位上是否一致;

•③调用标准函数时所用的参数在属性、数目和

顺序上是否正确;

•④全局变量在各模块中的定义和用法是否一致;

­⑤输入是否仅改变了形式参数;

如果模块完成外部的输入或输出

时,还应该再检查以下要点:

•开/关闭的语句是否正确;

•规定的工/O格式是否与输入输出语句

一致;

•在使用文件之前是否已经打开文件或

使用文件完毕后是否已关闭文件;

•输入输出的错误是否检查并处理;

•输出的提示信息是否有误。

(2)局部数据结构

•在单元测试中,局部数据结构出错是较常

见的错误,在测试时应重点考虑以下因素:

­变量的说明是否合适;

•是否使用了尚未赋值或尚未初始化的变量;

­变量的初始值或默认值是否正确:

­变量名是否有错(例如:拼写错);

•是否出现上溢、下溢或地址异常的错误。

•如果有可能,还应确定全局变量对模块的

影响。

(3)重要的执行路径

在单元测试中,对路径的测试是最基本

的任务。由于不能进行穷举测试,需要精心

设计刎试用例来发现是否有计算、比较或控

制流窜方面的错误。

计算方面的错误主要有:算术运算的优先

次序不正确或理解错误;精度不够;运算对

象的类型彼此不相容;算法错;表达式的符

号表示不正确等。

比较和控制流是紧密结合的,一般是通过

比较来发生控制流的改变。关于这方面的错

误主要有:本应相等的量由于精度造成不相

等;不同类型进行比较;逻辑运算符不正确

或优先次序错误;循环终止不正确(如多循

环一次或少循环一次)、死循环;不恰当地

修改循环变量;当遇到分支循环时,出口错

误等。

(4)出错外理

好的设计应该能预测到出错的条件

并且有对出错处理的路径。虽然计算机

可以显示出错信息的内容,但仍需要程

序员对出错进行处理,保证其逻辑的正

确性,便于用户维护。对出错的测试应

该着重考虑这些常见错误;错误的描述

难于理解;错误提示与实际错误不相符;

出错的提示信息不足以确定错误或确定

造成错误的原因;在对错误进行处理之

前,系统已经对错误条件干预等。

(5)边界条件

•边界条件的测试是单元测试的最后工

作,也是非常重要的工作。软件容易

在边界出现错误,如一个n维数组,在

处理数组第n个下标时常常有错误。要

仔细选择测试用例,重点考察数据流、

控制流在刚好等于、大于或小于最大

值或最小值的情况。

•模块测试通常由程序员本人来完成。

但项目负责人应该注意测试结果,将

这些测试资料妥善保存,为后续的测

F试工作打下良好的基础。

B.单元测试的方法\

由于模块不是独立运行的程序,各模块之间'

存在联系,即存在调用与被调用的关系。在对

每个模块进行测试时,需要开发两种模块:

(1)驱动模块(driver):相当于一个主程序,

接收测试用例的数据,将这些数据送到被测模

块,输出测试结果。

(2)桩模块(stub):也称为存根模块,桩模

块用来代替被测模块中所调用的子模块,其内

可进行少量的数据处理,目的是为了检验入口,

二输出调用和返回的信息。

4、组装测试

组装测试也称为集成测试。即使所有

模块都通过了测试,但在组装之后,仍

可能会出现问题:穿过模块的数据被丢

失:一个模块的功能对其他模块造成有

害的影响;各个模块组合起来后没有达

到预期功能;全局数据结构出现问题;

另外单个模块的误差可以接受,但模块

组合后可能会出现误差累积,最后到不

能接受的程度,所以需要组装测试。

通常,组装测试有两种方法:一

种是分别测试各个模块。再把这些

模块组合起来进行整体测试,这种

方法称为非增量式集成。另一种是

把下一个要测试的模块组合到己测

试好的模块中,测试完后再将下一

个需测试的模块组合进来测试,逐

步把所有模块组合在一起,并完成

测试。该方法称为增量式集成。

增量式测试技术有自顶向下的增量方式和自底

向上的增量方式两种方法。

(1)自顶向下的增量方式

图6-6自顶向下的组合示例

•自顶向下的增量方式是模块按程序的控

制结构,从上到下的组合方式。再增加

测试模块时有先深度后宽度和先宽度后

深度两种次序。如图6-6所示的自顶向下

组合示例中,先深度后宽度的方法是把

程序结构中的一条主路径上的模块相组

合,测试顺序可以是

M1-M2-M5-M6-M3-M7-M4。

先宽度后深度的方法是把模块按层进行

组合,测试顺序是

Ml-M2-M3一M4-M5-M6-M7。

组装过程可分成以下步骤:

•①用主模块作为驱动模块,与之直接相连的模

块用桩模块代替。

­②根据所选的测试次序,用下一个模块替换所

用的桩模块;而新引入模块的直接下属模块用桩

模块代替,构成新的测试对象。

•③结合一个模块,测试一个。为了避免引入新

模块,产生新问题,需要进行回归测试,即重复

部分或全部已经进行过的测试。

•④模块是否已经组合到系统中,并完成测试,

如果没有,则返回到(2),重复进行;是则停

止测试。

自顶向下的增量方式可以较早地

验证控制和判断点,如果出现问题能

够及时纠正。在测试时不需要编写驱

动模块,但需要桩模块。另外,如果

高层模块对下层模块依赖性很大,需

要返回大量信息,在用桩模块代替时,

桩模块的编写就复杂,必然会增加开

销。这时可以用下面介绍的自底向上

的增量方式。

(2)自底向上的增量方式

自底向上的增量方式是从最底层的功能模块能

始,边组合边测试,从下向上地完成整个程序名照

构的测试。其步骤可以概括为:

①将最底层的模块组合成能完成某种特定功

能的模块簇,为每个模块簇设计驱动程序,用驱

动程序来控制并进行测试。

②按从下向上的方向,刚实际模块替换相对

应的驱动程序,组成新的模块簇,再为该模块簇

设计驱动程序,用新的驱动程序进行控制和测试。

③所有模块是否已经组合到系统中,并完成

测试,如果没有,则返回到(2),重复进行,

是则停止测试。

在单元测试的基础上,从最底层模块型

始,按功能组合模块,从下到上的进行测试,

逐步完成整个软件结构的测试。

自底向上的增量方式可以较早地发现底

层关键性模块出现的错误。在测试时不需要

编写桩模块,但需要驱动模块。另外,对程

序中的主要控制错误发现较晚。

组装测试的方法选择取决于软件的特

点和进度安排。在工程中,通常将这两种方

法结合起来使用,即对位于软件结构中较上

层的使用自顶向下的方法,而对于较底层的

使用自底向上的方法。

5、确认测试、

经过组装测试之后,软件就被集成起

来,接口方面的问题已排出,就可以进

入软件测试的最后一个环节——确认测

试。确认测试的任务是进一步验证软件

的有效性,也就是说,检查软件的功能

和性能是否与用户的要求一样。系统分

析说明书描述了用户对软件的要求,所

以是软件有效性验证的标准,也是确认

测试的基础。

确认测试的步骤如图6-7所示。

图6-7确认测试的步骤

­(1)有效性测试

•有效性测试就是在模拟环境下,通过黑盒测试检

验所开发的软件是否与需求规格说明一致。为此,

需要制定测试计划,规定要做的测试类型,设计测

试用例,组织测试人员对已集成的软件进行测试。

在设计测试用例时,除了检测软件的功能和性能之

外,还需要对软件的容错性、维护性等其他方面进

行检测。测试人员可由开发商的内部人员组成,但

最好是没有参加该项目的有经验的软件设计人员。

在所有测试用例完成之后,测试结果有两种情况:

•功能和性能等都满足需求,可以接受。

•发现测试结果与预期的不符,这时要列出缺陷清

单。在这个阶段才发现的严重错误一般很难在预定

的时间内纠正,需要与用户协商,寻找妥

善解决问题办法。

•(2)软件配置审查

•确认测试的另一个环节是软件配

置的审查,主要是检查软件(源程序、

目标程序)和文档(包括面向开发和

用户)是否齐全以及分类是否有序。

确保文档、资料的正确和完善,以便

维护阶段使用。

•(3)验收测试

•在经过软件的有效性测试和软件

配置复查后,就应该开始软件系统的

验收测试。验收测试是以用户为主的

测试。软件开发人员和质量保证人员

也应参加。在验收测试之前,需要对

用户进行培训,以便熟悉该系统。验

收测试的测试用例由用户参与设计,

主要验证软件的功能、性能、可移植

性、兼容性、容错性等,测试时一般

切采用实际数据。

6、系统测试

系统测试是将已经确认的软件、计

算机硬件、外设、网络等其他元素结

合在一起,进行信息系统的各种组装

测试和确认测试,其目的是通过与系

统的需求相比较,发现所开发的系统

与用户需求不符或矛盾的地方。系统

测试是根据系统分析说明书来设计测

试用例的。

(1)恢复测试(recoverytesting)wj

恢复测试是检测系统的容错能力。检前'

方法是采用各种方法让系统出现故障。检

验系统是否按照要求能从故障中恢复过来,

并在预定的时间内开始事务处理,而且不

对系统造成任何损害。如果系统的恢复是

自动的(由系统自动完成),需要验证重

新初始化、检查点、数据恢复等是否正确。

如果恢复需要人工干预。就要对恢复的平

现间进行评估并判断它是否在允

许的范围内。

(2)安全性测试(securitytesting)v

系统的安全性测试是检测系统的安全机制、雇

密措施是否完善且没有漏洞。主要是为了验证系

统的防范能力。测试的方法是测试人员模拟非法

入侵者,采用各种方法冲破防线。例如,以系统

的输入作为突破口,利用输入的容错性进行正面

攻击;故意使系统出错,利用系统恢复的过

程.窃取口令或其他有用的信息;想法设法截取

或破译口令;利用浏览非保密数据,获取所需信

息,等等。从理论上说,只要时间和资源允许,

没有进入不了的系统。所以,系统安全性设计准

则是使非法入侵者所花费的代价比进入系统后所

得到的好处要犬,此时非法入侵已无利可图。

(3)强度测试(stresstesting)弋、

强度测试是对系统在异常情况下的承受能力渴

测试,是检查系统在极限状态下运行,性能下降^

的幅度是否在允许的范围内。因此,强度测试要

求系统在非正常数量、频率或容量的情况下运行,

例如,运行使系统处理超过设计能力的最大允许

值的测试用例;设计测试用例,使系统传输超过

设计最大能力的数据,包括内存的写入和读出,

外部设备等;对磁盘保留的数据,设计产生过渡

搜索的测试用例;等等。强度测试主要是为了发

现在有效的输入数据中可能引起不稳定或不正确

■的数据组合。

(4)性能测试(performancetesting)、

性能测试是检查系统是否满足系统分析说明

书对性能的要求。特别是实时系统或嵌入式系

统,即使软件的功能满足需求,但性能达不到

要求也是不行的。性能测试覆盖了软件测试的

各阶段,而不是等到系统的各部分所有都组装

之后,才确定系统的真正性能。通常与强度测

试结合起来进行,并同时对软件、硬件进行测

试。软件方面主要从响应时间、处理速度、吞

吐量、处理精度等方面来检测。

(5)可罪性测试(reliabilitytesting

对于系统分析说明书中提出了可靠性

要求时,要对系统的可靠性进行测试。

通常使用以下几个指标来衡量系统的可

靠性:

平均失效间隔时间MTBF(meantime

betweenfailures)是否超过了规定的

时限;因故障而停机时间MTTR(mean

timetorepairs)在一年中应不

后过多少时间。

(6)安装测试(installationtesting)

在安装软件系统时,会有多种选择。

安装测试就是为了检测在安装过程中

是否有误、是否易操作等。主要检测:

系统的每一个部分是否齐全;硬件的

配置是否合理;安装中需要产生的文

件和数据库是否已产生,其内容是否

正确;等等。

最后,再强调一下,信息系统的开发

过程通常为系统分析、设计、编码实现等

阶段。而每个阶段都有可能出现错误,测

试过程正好与开发过程相反,其开发和测

试的关系如图6-8所示。单元测试主要是

发现编码阶段的错误。组装测试主要发现

设计阶段产生的错误,以此类推。如果在

确认测试中发现系统分析有错误,这就需

要重新修改系统分析、设计和编码。这说

明越早犯的错误要到最后才能发现,因此

要重视开发的前期工作。

图6-8测试与开发各阶段的关系

7、调试

测试的目的是为了发现尽可

能多的错误,而对于所暴露的错

误最终需要改正。调试的任务就

是根据测试时所发现的错误,找

出原因和具体的位置,并进行改

正。

(1)调试过程

图6-9调试过程

(2)调试方法

无论哪种调试方法,其目

的都是为了对错误进行定位。

目前,常用的调试方法有如

下几种:

试探法

调试人员分析错误的症状,猜测问题的

所在位置,利用在程序中设置输出语句,

分析寄存器、存储器的内容等手段来获得

错误的线索,一步步地试探和分析找到错

误所在。这种方法效率很低且缓慢,适合

于结构比较简单的程序。

②同溯法

调试人员从发现错误症状的位

置开始。人工沿着程序的控制流

程往回跟踪程序代码,直到找出

错误根源为止。这种方法适合于

小型程序,对于大规模程序,由

于其需要回溯的路径太多而变得

不可操作。

③对分查找法、

这种方法主要用来缩小错误的范围。如果已

经知道程序中的变量在若干位置的预期正确取

值,可以在这些位置上用赋值语句或输入语句,

给这些变量以正确值,运行程序观察输出结果,

如果没有发现问题,则说明从给的变量的正确

值开始到输出结果之间的程序没有出错,问题

可能在除此之外的程序中,否则错误就在所考

察的这部分程序中。对含有错误的程序段再使

用这种方法,直到故障范围缩小到比较容易诊

G版为止。

④归纳法'

归纳法就是从测试所暴露的

错误出发,收集所有正确或不正

确的数据,分析它们之间的关系,

提出假想的错误原因,用这些数

据来证明或反驳,从而查出错误

所在。

⑤演绎法

根据测试结果,列出所有可能的错误原因。

分析已有的数据,排除不可能和彼此矛盾的

原因。对余下的原因,选择可能性最大的,

利用已有的数据完善该假设,使假设更具体。

运用归纳法的第四步来证明假设的正确性。

以上这些方法均可辅以调试工具。

随着测试技术和软件开发环境的发展,

可以提供功能越来越强的自动测试和调

试工具,支持断点设置、单步运行和各

种跟踪技术,为软件的调试提供了很大

的方便。但无论哪种工具都代替不了开

发人员对整个文档和程序代码的仔细研

究和认真审查所起的作用。

第四节软件测试工具

洋节向M.,

心精态含析工具

2、劭态台布工具

品集鼠侧被制钦奈髭

1、静态分析工具

静态分析工具不执行被测程序,它扫

描程序代码,进行控制流分析、数据流

分析、接口分析和表达式分析等,然后

输出测试结果。根据程序设计语言的不

同,相应的静态分忻工具也就不同。目

前,具备静态分析功能的软件测试工具

有很多,如Purify、Logiscope>Macabe

等。通常,它具有以下功能:

(1)完成编译时的语法检查和连接时的

一致性检查。

(2)检查模块接口、类型的一致性。

(3)检查逻辑上可能有错误的结构。

(4)变量、函数交叉引用关系分析。

(5)检查被测程序违反编程标准的情况。

(6)对程序的静态特性的统计功能。

2、动态分析工具、

动态分析工具就是通过选择适当的测试用例、

运行测试程序,将测试结果和预期结果相比较,

以发现错误。动态测试工具能使被测程序有控

制的执行,监视和记录程序的运行情况。通常

的方法是在被测程序中插入探针,检测各语句、

分支和路径的执行次数和运行结果等,以便统

计各种覆盖情况。如果测试的覆盖率没有达到

要求,则要设计新的测试用例来满足覆盖要求。

通过对测试结果的分析来发现错误。除了覆盖

分析之外,也常分析程序对资源的占用情况;

优化程序;提高系统性能。

3、集成测试系统

目前,测试计划工具、测试设计

工具、测试管理工具、静态分析工

具、性能及网络负载测试工具等一

系列测试工具已得到广泛的运用,

而且还出现了将许多测试工具融为

一体的集成化测试系统。

(1)SQASuite\

SQASuite是美商瑞理国际股份有限公司

(RationalSoftwareCorp.)极具有特色的

著名套装软件。它是针对Windows客户机/服

务器环境中,用PowerBuilder、VisualBasic>

SQLWindows>Delphi和Develope

温馨提示

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

评论

0/150

提交评论