基于程序域分析的软件测试方法.docx

上传人:b****1 文档编号:236246 上传时间:2022-10-07 格式:DOCX 页数:8 大小:112.08KB
下载 相关 举报
基于程序域分析的软件测试方法.docx_第1页
第1页 / 共8页
基于程序域分析的软件测试方法.docx_第2页
第2页 / 共8页
基于程序域分析的软件测试方法.docx_第3页
第3页 / 共8页
基于程序域分析的软件测试方法.docx_第4页
第4页 / 共8页
基于程序域分析的软件测试方法.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

基于程序域分析的软件测试方法.docx

《基于程序域分析的软件测试方法.docx》由会员分享,可在线阅读,更多相关《基于程序域分析的软件测试方法.docx(8页珍藏版)》请在冰豆网上搜索。

基于程序域分析的软件测试方法.docx

目录

摘要 2

Abstract 2

前言 2

1软件测试 3

2域分析测试方法 3

2.1域边界分析 3

2.2子域边界分析 4

2.3测试数据的产生 5

3实例分析 5

结论 6

参考文献 7

基于程序域分析的软件测试方法

摘要:

基于程序结构的测试方法,即使达到了最高覆盖率,仍有可能遗漏一些常见的软件故障软件测试是保证软件可靠性的一种建设性手段,也是高质量软件的一个评估过程,本文提出的程序的域分析测试方法,采用程序和规范相结合的测试方法,并且针对边界附近的点对程序错误更加敏感这一特征,依据功能域和运行域边界测试数据集分析的结果产生测试用例,可以克服测试的盲目性,有效地解决许多测试障碍。

关键字:

软件测试;域分析;边界测试

Abstract:

Testmethodbasedontheprogramstructure,evenatthehighestcoverage,maystillbemissingsomeofthecommonsoftwarefailuresoftwaretestingisaconstructivemeanstoassurethesoftwarereliability,isalsoahigh-qualitysoftwareevaluationprocess,inthispaper,theapplicationofdomainanalysistestmethod,byadoptingthecombinationofstandardprocedureandtestmethods,andaccordingtotheboundarypointnearthemoresensitivethecharacteristicsofprogramerrors,accordingtothefunctionaldomainandoperationdomainboundarytestingdatasetanalysisresultsgeneratetestcases,canovercometheblindnessoftesting,theeffectivemeasurementofmanycommonsoftwarefailure.

Keywords:

Softwaretesting;Domainanalysis;Boundarytest

1前言

随着计算机科学技术的不断的发展,计算机及软件不断的在国民经济中的得到应用,随之而来的是软件的可靠性不断的受到人们的关注,作为保证软件可靠性的重要手段,软件测试起着不可替代的作用。

软件测试是对软件功能,设计和实现最终审定,其方法可以分为两类:

基于规范的功能测试方法和基于程序的结构测试方法。

功能测试以软件规范为依据选取测试数据,其正确性依赖于规范的正确性。

事实上,我们不能保证规范说明完全正确。

很明显,如果程序的外部特性本身有问题或者规格说明的规定有误,如规范中规定了多余的功能或是漏掉了某些功能,这对于功能测试是无能为力的。

再者,由于规范本身的高度抽象或存在二义性,实际工程中,详尽的功能测试也可能会遗漏代码中的一些重要部分,因而可能会漏掉其中的一些故障。

结构测试则根据程序的内部结构设计测试用例,但Howden认为结构测试是不完全的。

理论上,可以构造出一些程序实例,证明每种基于结构的测试最终都将达到极限,但不能发现所有的故障。

如果程序结构本身有问题,比如程序逻辑有错,或是遗漏了某些规格说明已有规定的功能,那么,无论哪一种结构测试也是检查不出来的。

其实无论采用哪一种测试策略,设计测试方案都是测试阶段最关键的技术问题,理想情况下,测试所有可能的输入,将提供程序行为最完全的信息,但这是不可能的。

例如通过三条边的长度来判断三角形的类型,如果要对类Ttriangle进行测试,按一个人每天24小时,每年365天不停的测试,将要花费大学317年多的时间。

因此如何来选择测试值是一个非常值得研究的方向。

2软件测试

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。

执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

2.1域分析测试方法

域的测试用例源于域的数学定义,是一系列被函数接受的输入值的集合。

域分析是直接的,有效地选择测试值的办法,它为不变量边界提供测试模型,并可为几乎所有的其他测试样式选择测试值。

域测试方法的思路是,首先要对一个被测试码的所有可能输入做一个划分。

划分其实就是将一个被测试代码的所有可能输入按照一定的规则划分成一系列的子集。

划分的方法有很多种,该方法的思想是将集合分成一个个的等价的类,如果该划分张的一个值通过测试(或没有通过测试),那么,该划分的其他值都通过(或没通过)。

通过这种划分后就可以很大程度的减少测试实例的产生。

但是这种划分时,域的边界还是很容易出现测试用例的错误,因此需要对域的边界进行更进一步的测试.

2.2域边界分析

设被测程序有n个输入变量,其输入空间E可表示为:

连续子空间E和离散子空间E。

连续子空间E=XX,X其变量xX,(i=l,2,,m,mn)在连续区间X中取值。

离散子空间E=XXX其变量xX(j=l,2,,k,k=n-m)在集合X中取值。

并且

(1)

对于离散子空间E,集合X(j=1,2,,k)按元素的某一特征,可以定义一种X上的偏序关系R,使得对于任意的x,xX,x,x有关系R或x,x不可比,集合X成为偏序集R。

例如:

若集合X的元素为数值集,可按其数值大小定义一种X上的偏序关系R,若集合X的元素为字符集,按其字典顺序可定义一种X上的偏序关系R。

则集合X的极大元和极小元存在。

域D(DE)在x(i=1,2,,n)轴上的投影:

D|={xX存在(x,,x,x,,x)D}

是一维空间X的一个子集。

定义1域D的边界B(D)

域D(DE)的边界B(D)是指那样一些点P的集合,在点P的任意小的邻域内,既有D中的点,也有D之外的点。

域D(DE),其边界B(D)定义为那样一些点P的集合,P的某一维元素x是集合X的极大元或极小元,则域D对x投影D|x的边界点集B(D|x)={xX|,x是X的极大元或极小元}。

定义2边界测试点集

域D(DE)的边界测试点集:

(2)

2.3子域边界分析

程序的所有路径将其定义域划分为若干子域。

每一子域是一路径定义域。

子域边界由其路径条件的各分支谓词决定。

Howden认为:

符号测试和实际数据测试对于发现大多数路径定义域错误是不可靠的。

只有当测试者幸运地从不正确的定义域部分选取一个用例测试时,实际数据测试才能发现这些错误。

为此,针对路径定义域,定义2类边界测试点:

ON点:

ON点位于给定的边界。

OFF点:

OFF点位于给定的边界之外,而且离ON点尽可能的近。

测试一个由不等式(<,>,≤,≥)谓词产生的边界时,需选取一个ON点和一个OFF点。

测试一个等或不等(=,)谓词的边界时,需选取一个ON点和2个OFF点,2个OFF点分别位于被测边界的两侧,且离ON点尽可能的近。

如图2所示

如果任意一测试点输出结果与预期结果不同,域错误柯检测到。

若测试点输出与预期结果相同,被测边可能正确,也可能发生偏移,当正确的边界位于ON点OFF点之间时,被测边界的偏移有可能检测不到。

但通过选择ON-OFF点尽可能近,这种情形不可能出现。

因此,这样选择的测试点可有效地测试由于子域边界偏移而导致的域错误。

OFF

ON

OFF

邻接子域

ON

邻接子域

“相等”边界

正确的边界

被测试的边界

图1(a)不等边界的测试

图1(b)相等/不等边界的测试

2.4测试数据的产生

首先根据域测试的原则进行等价划分为各个子集,然后根据在等价集中选取等价的一个数值进行测试。

接下来开始考虑边界值的选取,首先对定义域边界,根据其边界测试点集设计测试用例。

然后对基于路径划分的各子域边界,选取ON,OFF测试点。

对于给定的子域边界b,它仅与位于相应谓词坏前的语句有关。

选取ON点时,只要求ON点满足坏及坏之前的分支谓词即可。

但若能选择一点满足其路径条件,以该点为其子域各边界的ON点,可以提高效率,节省开销。

一但ON点确定,选择离ON点尽可能近而又不满足给定分支谓词的点作为OFF点。

根据各边界选定的ON,OFF点,补充新的测试用例。

当程序含有循环时,路径数目相当大,不可能也不必要完全覆盖。

为此,可限制循环从而达到测试的目的。

根据以上的对程序域软件测试方法的分析,一个用域分析开发的域测试包一般包括如下四个部分:

(1)对所有输入变量(边界)标识限制;

(2)对每个边界中的每个变量根据域边界原则选择测试值;

(3)对边界值中没有给出的变量选择测试值;

(4)将输出值和这些输入确定期望的结果进行比较。

3.实例分析

为了说明上面的验证上面的方法,我们一段计算表达式z=|x|+|y|的值的代码为例来进行说明,其中x,y都是实数。

If(x>=0&&y>=0)

Z=x+y;

Else

If(x>=0&&y<0)

Z=x-y;

Else

If(x<0&&y>=0)

z=y-x;

Else

Z=-x-y;

在这里如果要将x,y的每种情况都代人进行测试,其测试代价将是无穷的,因为这里x,y∈{-∞,+∞}.所以在这里为例减少测试用例,我们就可以采用域分析的方法,将x和Y的值分别分成了两类情况,最后将它们进行就可以得到了四个子集,他们分别是:

{(x,y|x>=0,y>=0},{(x,y)|x<0,y>=0},{(x,y)|x<0,y<0},{(x,y)|x>=0,y<0},为了更直观的研究可以见图2所示。

四个底纹的区域为四个子域,也即是四个等价类。

然后选择域边界测试用例,边界分为两种:

一种是位于坐标轴上的边界值,另一种是位于子区域的边界。

位于坐标轴上的边界值的选取,由于该边界上面的实例两边的测试区域是对称的,需要选取一个ON点和两个OFF点。

而位于子区域边界上的点,满足边界选值的第一种情况,两边的区域不对称,这样需在边界测试区域内选取一个ON点和一个OFF点,经过按照规则的选择测试用例。

我们发现位于每个测试的子区域中都满足ON点或者OFF点的个数其中一种为最多的,这样可以使测试区域有很好的覆盖,从而使软件测试结果更能达到实际的工程应用。

4结论

域分析的软件测试方法在生成测试事例的时候可以产生很好的效果,特别适合用在基本数据类型:

如整型,浮点型,串行和布尔型。

基于程序结构的测试方法,即使达到了最高覆盖率,仍有可能遗漏一些常见的软件故障软件测试是保证软件可靠性的一种建设性手段,也是高质量软件的一个评估过程,本文提出的程序的域分析测试方法,采用程序和规范相结合的测试方法,针对边界附近的点对程序错误更加敏感这一特征,依据功能域和运行域边界测试数据集分析的结果产生测试用例,可以克服测试的盲目性,有效地检测许多常见的软件故障。

实验表明,该方法是行之有效的。

X

Y

域中的代表值/边界上的代表值(ON)

ON

Off

ON

域中的代表/边界上的代表值(OFF)

图2边界值取值分布图

参考文献:

[1]郑人杰,计算机软件测试技术[M],北京:

清华大学出版社,1992.

[2]RobertV.Binder著,华庆一等译,面向对象系统的测试[M].人民邮电出版社,2001.

[3]屠立德.操作系统基础[M].北京:

清华大学出版社,

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1