大型软件回归测试方法研究

摘要:程序被修改后,要保证程序能正常运行并且修改不能给程序质量带来任何负面影响,回归测试是必要的。大型软件系统结构复杂,构成要素多,如何做到不遗漏功能点同时降低软件回归测试代价,本文结合业务规则模型、修改影响分析和成本风险管理等技术提出了一种自动化回归测试方法。

  关键词:回归测试风险管理修改影响分析

  1、引言

  在软件测试过 程中,由于需要对软件进行修改,修改后的程序必须重新测试,以确保程序的修改是否达到了目的和是否引入了新的错误,这种测试就是回归测试。软件的变化可能 是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。当软件中所包含的错误被发现时,如果对错误的跟踪管理系统不够完善,可能会 遗漏对这些错误的修改;而开发人员对错误理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现,没有修改错误本身,甚至可能产生副作用,从而导致 软件未被修改的部分又产生新的问题,使本来正常的功能产生错误。同样,在有新代码加入软件的时候,除了新加入的代码中有可能含有错误外,新代码还有可能对 原有的代码带来影响。因此,每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。 因此需要进行回归测试。

  回归测试是一种代价较高,比较耗时的测试方法,然而又是必不可少的。大型软件通常规模大,系统结构复杂,构成要 素多、层次多,在渐进和快速迭代开发中,新版本的连续发布使回归测试的实施更加频繁。因此,通过选择正确的回归测试策略来改进回归测试的效率和效果,减小 回归测试代价是非常有意义的。

  2、大型软件回归测试面临的问题

  大型软件回归测试面临两个重大难题:一是系统变更引起的回归测试范围无法准确界定;二是参数组合引起的测试用例急剧膨胀,无法在较短时间内以合理成本完成最低覆盖率要求的回归测试。而且大型软件回归测试往往受到测试时间和测试环境条件的约束,而测试的工程性质又决定了它不可能达到理论上的完整。

  在有限的时间和资源条件下,为了更合理的规划和安排测试工作,在测试计划的制定阶段需要一个决策机制能够在资源约束,如时间、人力、成本的前提下基于风险管理和测试成本预算进行决策。

  随着软件生命周期的推进,软件的开发与回归测试反复迭代,规则的表达逐渐完善,测试用例库越来越丰富,回归测试的实施效率将越来越高。

  3、大型软件回归测试方法

  通过构建回归测试决策支持平台可以为大型软件的回归测试提供可行的解决方案。

  3.1 业务规则

   业务规则是定义和约束业务结构与业务行为的规定或规范,是业务运作和管理决策所依赖的重要资源。建立大型软件业务规则模型正是要继承资深测试专家所积累 的业务知识,使事实上得到使用的规则有一种显式的表达。在此基础上,结合测试理论和规则的整合以及用例优化算法,建立自动化用例生成系统。

  业务规则的来源一般包括:

  1)业务需求导出的规则;

  2)测试理论原则导出的规则;

  3)软件业传统导出的规则;

  4)业内常识导出的规则。

  业务规则模型的基础是手工测试中积累的一系列用例设计规则、行业规范和源于业务的特殊约束。业务规则模型用于表达这些手工时代的规则,并建立一种可加载规则的引擎结构,在通过该引擎加载规则后,可以通过决策支持系统生成面向某个具体过程的用例模板的基础用例集。

  所谓规则的加载,是将某条规则加入规则库中,重点是适用条件的表达和优化算法的指定。

  对于一个目标系统,一次穷尽所有可能的规则是不可能的,只能渐进地逼进,所以应该允许手工追加规则,这一过程是业务规则模型的学习过程。

 3.2 修改影响分析

  对于软件回归测试来说,确定修改影响的范围是至关重要的,修改的影响范围也是回归测试的目标范围。如果无法确定修改的范围,则理论上说就得把整个系统重测一遍,对于大型软件,这种代价也是巨大的。

  3.3 成本风险评估

  如何在有限的时间和资源预算下,更合理的规划和安排测试工作。回归测试在实践中往往受到测试时间、测试成本、人工投入和测试对象业务关键性等约束,因此需要制定一个科学的测试计划,以保证在满足各种条件约束的前提下能够确保测试质量。

  Boehm 用公式RE=P(UO)*L(UO)对风险进行定义,其中RE表示风险或者风险所造成的影响,P(UO)表示令人不满意的结果所发生的可能性,L(UO)表示糟糕的结果会产生的破坏性程度。

  因此,被测试对象f中存在的风险值 Re(f)的大小可以用出错的概率与出错的代价的乘积来表达:

  Re(f) = p(f)*l(f)

  确定待测试对象风险因素发生的可能性及其造成的损失的过程是风险估计阶段。将风险发生的概率与风险发生造成的损失相乘,可以得到每个测试对象的风险值。

  为了方便对风险进行定量的估计,采用等级评定的方法对出错代价和出错概率进行表达。其中风险概率由模块成熟度和开发人员的出错预期共同计算。确 定开发方的出错预期的依据是过往的缺陷率记录,在没有缺陷记录时,所有的开发人员度成熟度都默认为高,此后,个人成熟度分值随着个人缺陷率对平均缺陷率的 相对值和个人缺陷率趋势而变化。

  根据风险值的估算,可以确定待测试对象的最低测试深度。在测试深度的要求下,首先选择适当强度的测试用例简约算法进行试算,可以得出完成该对象测试需要的用例数。

  由于回归测试中大量用例可以复用,计算实施成本是需要对自动生成的测试用例和手工完成的测试用例区分对待,以不同的权重进行计算,最终得出整个 测试过程的实施成本。实施成本可以表示为测试投入的人时数。根据实施成本与项目预期成本投入和时间进行比较,判断待测试对象的成本是否在可以接受的范围 里,如果可以接受,就可以根据相应简约算法生成最终需要的测试用例库。如果实施成本无法接受,可以重新调整用例简约算法,降低或者提高测试强度,重新计算 实施成本,直到满足预算要求。

  4、结论

  回归测试研究有着广阔的空间,尤其对于系统结构复杂,构成要素多的大型系统软件回归测试,本文提出的自动化回归测试方法,对于降低回归测试代价,提高回归测试质量和效率具有及其重要的作用。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-05 10:14:42

大型软件回归测试方法研究的相关文章

MAC中快速安装卸载大型软件的技巧

  MAC新手用户们一定都想知道MAC系统是不是也可以通过Setup.exe之类的文件进行软件安装.其实这个在MAC系统中是可以做到的,今天小编就给介绍一下这种方法吧,有兴趣的用户可以看看. 安装软件: 获得了光盘或DMG文件后我们挂接到系统上,进入镜像中很直观的就能找到安装程序用的执行文件,一般是不会找错的.(如下图) 之后会出现一些关于版权信息或安装配置的步骤,再下一步就开始安装了,在安装完成前的最后一步就是更新系统相关的配置信息,在Mac OS X上几乎所有大型软件的安装都会进行系统配置信

解决电脑运行大型软件卡的问题

  解决电脑运行大型软件卡的问题 在我的电脑点击鼠标右键→属性→高级→设置→高级→虚拟内存→更改(默认C盘运行大型软件就会很卡) →(改为电脑磁盘大的磁盘)→(例:D)→自定义大小→(初始大小1000MB 最大1000MB大小可自己设置) →设置→确定 电脑开机速度影响 在我的电脑点击鼠标右键→属性→高级→设置→高级→启动和故障恢复→显示操作系统列表的时间→(可 自定义更改)

消灭bug秘籍 如何处理大型软件中的错误和异常

[51CTO.com快译] "我在测试中没有发现任何bug,这就意味着没有bug--对吗?"千万不要这样认为.由于大型软件的复杂程度很高,不管你做了多少测试,都不可能达到零bug的程度.因为你并不能揣测出用户的所有使用方式,因此,了解应用程序中错误和异常之间的差异,是非常重要的.为此,你要选择正确的方式来处理这些错误和异常,以积极的态度来确保应用的正常运行,对你的开发团队和最终用户负责. 测试的本身亦是个问题 即便你的测试是最彻底的,你依然只是在测试特定的情况,而且自己的偏好也在测试过

对大型软件公司说不!开源塑造新经济格局

要说当前的经济衰退有什么好处,那就是彻底揭露出各大软件公司采用的伎俩--通过多年许可协议,牢牢锁定客户.按照这些协议,每年的许可费都在上涨,几乎从来没有降过,哪怕客户缩小了业务规模,也是如此. 各大软件公司的策略主要采用折扣手段,导致"搁置软件"(shelfware)和续约陷阱,并辅以额外收费的手段.比如针对在企业部门之间迁移软件,使用最新硬件,或者客户通过互联网访问内部数据等情况额外收费. 这门"艺术"在过去四十年来不断得到完善,并且让许多人大发其财.今天这一幕仍

云计算环境下软件性能测试技术研究

云计算环境下软件性能测试技术研究 王立群  李兆翠  孙庆波 / 山东协和学院计算机学院 随着互联网.物联网.虚拟化等技术的发展,云计算给软件性能测试带来了新的机遇与挑战.本文以软件性能测试为落脚点,分析云计算环境下软件性能测试的可行性,阐述了云计算环境下软件性能测试的优势和其面临的挑战,在此基础上,对云计算环境下软件性能测试进行展望,提出下一步需要研究解决的问题. 云计算环境下软件性能测试技术研究

软件开发质量控制研究

[摘要]本文指出了软件开发过程中质量控制的重要性,通过分析开发过程中存在的问题,提出了一些提高软件开发质量的方法的对策措施. [关键词]软件开发:软件工程:质量控制 软件质量是指开发出来的软件不仅可以满足客户明确提出来的要求还要满足某些没有明确提出来的要求,软件质量越高,客户需求满足度就越高.软件项目质量控 制不仅仅是控制软件设计的最终结果,它其实要求贯穿于软件设计项目的全过程,从软件开发初期的客户需求调查,到最终的软件交付评审,每个阶段都要进行仔细 的控制,才能提高软件开发的质量. 一.软件开

为类提供软件约定“.NET研究”

根据一种很好的旧软件开发做法,应在每个方法的顶部(即实现任何重要行为之前)放置一个条件语句作为屏障. 每个条件语句都检查输入值必须验证的不同条件. 如果条件未通过验证,代码会引发异常. 这种模式通常称为 If-Then-Throw. 但是,有了 If-Then-Throw,我们就可以编写出高效正确的代码吗? 是不是在所有情况下,这都足够了? If-Then-Throw 不是在所有情况下都能解决所有问题,这不是什么新观点. 根据约定设计 (DbC) 是 Bertrand Meyer 几年前提出的方

Win8运行大型软件时提示虚拟内存不足的原因

  原因分析: 1.物理内存比较小,运行大的软件比较吃力; 2.运行了许多窗口或者是游戏的时候物理内存分配不过来.当出现这个的时候,我们的系统就会用我们的硬盘空间当成虚拟内存来执行一些操作.

软件质量保证复审研究

[摘要]软件质量保证是软件开发的重要内容.软件质量保证复审则是软件质量保证的重要组成.本文就软件质量保证复审系统性和应用性做些探讨. [关键词]软件质量保证体系:系统性 一.软件质量 软件质量是"与软件产品满足规定和隐含需求的能力有关的全体特征(或特性)".为满足软件的各项规定的或隐含的功能.性能需求,符合文档化开发标准,就 需要相应地设计出一些质量特性及其组合,质量目标,作为在软件开发与维护中的重要考虑因素.如果这些质量特性及其组合都能在产品中得到满足,则这个软件产 品的质量就是高的