025
测试用例最小化算法研究样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
本设计包含内容:源代码+毕业论文
论文大概:
浙江财经学院毕业论文
(或毕业设计)
测试用例最小化算法研究
测试用例最小化算法研究
摘 要:对软件产品进行测试是保证软件产品质量、提高产品可靠性的重要手段。当代码修改后、软件硬件平台变更后或硬件配置改变后,都必须进行回归测试。回归测试一般的做法是把以前用过的测试用例保存在用例库中,在程序发生修改后,用例库中的所有用例都要进行测试。但是随着程序的不断升级和修改,用例库日趋庞大,回归测试成本也随之增加。研究测试用例最小化就是为了剔除冗余的测试用例,从原始用例集中选择出最小用例集用于回归测试,达到与原始用例一样的测试覆盖度,从而降低回归测试成本。本文主要研究用贪心算法实现测试用例的最小化,并用VC++实现了贪心算法的原型,最后对该算法进行了实例研究。实验结果表明,该算法能够有效缩减回归测试用例的大小,大幅度降低回归测试的费用。
关键词:回归测试;测试用例;测试用例集;测试用例最小化;贪心算法
A Greedy Algorithm for Test Suite Minimization
Abstract: Software test is an important step to guarantee the
quality of software and the reliability of manufacture. With the
upgrade of program and the reset of hardware, the regression testing
is needed. Generally speaking, the way of regress test is that test
cases stored in test case pool, once the program is modified, the
software need to be retested by using all the test cases stored. As
the software is modified and new test cases are added to the
test-suite to test new or changed requirements or to maintain
test-suite adequacy, the size of the test-suite grows and the cost
of running it on the modified software increases. In order to low
down the cost of regression testing, researchers have researched on
the use of test-suite minimization techniques, which identify a
subset of test cases that provides the same coverage of the
software, according to some criterion, as the original test-suite.
We study the test case minimization in order to remove the
redundancy of the test cases, and enhance the efficiency of the
regress test. This paper investigates the use of an evolutionary
approach, called greedy algorithms, for test-suite minimization.
Finally, the paper demonstrates the effectiveness of the proposed
algorithm, and the results show that our algorithm can reduce the
size of test set and the cost of the regression testing
significantly.
Key words:regression testing; test case;
test suite; test suite minimization; greedy algorithm
目录
前言 1
1 软件测试和回归测试 2
1.1
软件测试目的 2
1.2 软件测试准则 2
1.3 软件测试技术 2
1.3.1
静态测试和动态测试 2
1.3.2 结构测试和功能测试 3
1.3.3
回归测试 3
1.4 回归测试 3
1.5 测试用例最小化 4
2
面向对象软件测试自动化工具 4
2.1 概述 4
2.2 面向对象软件测试 5
3
总体设计 6
3.1 术语定义 6
3.2 开发环境 7
3.3
总体流程 7
3.4 测试测试历史信息 7
4 测试用例最小化算法 8
4.1
枚举法 8
4.2 贪心算法 9
4.2.1 算法思想 9
4.2.2
算法实现 9
4.2.3 算法流程图 10
4.2.4 源代码 11
4.3
算法分析 11
4.4 实例分析 11
5 运行界面 12
5.1
运行环境 12
5.2 系统主界面 12
5.3 测试用例装载 13
5.4
算法演示 13
5.5 实验数据保存和分析 14
6
总结 16
结束语 16
参考文献 16
1 前言
信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者,均生存在竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用
(如民航订票系统、银行结算系统、证券交易系统、自动飞行控制软件、军事防御和核电站安全控制系统等)
中使用质量有问题的软件,还可能造成灾难性的后果。
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。
正是由于软件测试变得越来越复杂,用手工方法对软件进行测试,不仅容易出错,在现实中也不可行。特别是测试人员在选择测试用例时通常都是根据直觉与经验来进行,给测试工作带来很大的盲目性。同时,测试人员的个性及倾向性使得选择的测试用例仅能测试出其所熟悉的某一方面的错误,许多隐含的其它错误不能被检测出来,这就使得软件的质量存在着潜在的不稳定性。
以往对应用系统大多采用手工测试的方法,好一点则写一些测试程序进行测试,既耗时又不规范。用户在使用软件时,常常会发生各种各样的问题,严重时甚至导致系统瘫痪。如果真是这样的话,不仅无法收回最初的投资,而且造成巨大的经济损失。据美国计算机市场分析调查权威机构Gartner
Group统计,世界上仅有16.2%的应用系统较为完善和成功。可见,传统的手工测试已远远不能满足现实的需求。软件测试工具以其自动化程度高,实用性强等特点,引起了人们的广泛重视。
经过了近几年的发展,据统计,至1998年美国已经有了超过175种软件测试工具,软件的质量也有了很大的改进。但是,到目前为止,对软件错误的报告还是层出不穷,软件为错误而做的升级也是有增无减。这不仅仅是由于软件变得越来越复杂造成的,更是说明了当前软件测试自动化程度还不够高,软件测试工具还有很长的路要走。
在软件工程领域,面向对象软件测试是一个新兴而重要的研究方向,在这方面的深入研究将会产生真正对软件测试的理论与实践有指导意义、有影响的成果。
本文就是在上述研究背景下,从测试自动化工具的开发方面对面向对象软件的测试进行了研究,
本人的主要工作是设计测试用例最小化的功能,也就是能够自动从一组测试用例中提取出最小数目的测试用例,使得提取出的那些测试用例能够达到整组测试用例所能获得的覆盖率。这样,在回归测试阶段,我们只需对最小化的测试用例作覆盖率测试,从而节约大量的时间和开销。测试用例最小化功能对测试大型程序尤其有效。
1.1
1.2
1.3 5.4
算法演示
算法选择菜单下的一些算法可供选择。有:遗传算法、贪心算法等。
菜单:algorithm
algorithmanysis.,如下界面(图5-3):
图5-3
1.4 5.5
实验数据保存和分析
菜单:staticsavefile,输入保存文件名(图5-4):
图5-4
菜单:staticsavestatic,保存分析结果(图5-5):
图5-5
单击[save
the
static]按钮,如果保存成功,显示如下对话框(图5-6).
图5-6
根据长时间的统计分析,花费比较画出如下图(图5-7):
图5-7
用例数比较画出如下图(图5-8):
图5-8
2