基于活动图的回归测试方法研究硕士毕业论文(编辑修改稿)内容摘要:
测试是软件测试中一个很重要的环节。 其目的是保证程序在修改后不会引入新的错误 [2]。 而随着软件规模的日益庞大,回归测试的成本也相应增大,甚至达到整个测试成本的一半以上 [3]。 所以回归测试成为整个软件测试的关键,是软件质量的重要保证。 回归测试可以重用以前的测试过程,是一种比较有效地测试方法。 但是,回归测试需要前期投入,如何减少回归测试的代价,是整个软件回归测试研究的难点和重点。 在所有的难点和重点 中,回归测试用例选择( Regression Test Selection)是重点中的重点。 回归测试选择是复用已有用例基进行测试的方法。 其目的是选择一个尽可能小并且又能覆盖所有改变和影响的代码的测试用例集。 目前回归测试选浙江大学硕士学位论文 第 1 章 绪论 2 择的研究,主要包括: 1)基于代码信息的回归测试选择。 该方法主要研究在已知代码的情况下,对代码相关的用例进行选择。 2)基于历史记录的回归测试选择。 该方法主要是根据测试的历史记录进行回归测试选择。 统一建模语言( UML)在软件工程发展进程中具有里程碑的意义,统一建模语言( UML)的正式发展是从 1994 年开始的,它汇集了近 20 多年来各种建模技术。 自提出以来,后成为研究热点,并且迅速在工业界得到广泛的应用。 UML对开发高质量软件起了很大的促进作用,同时也给软件测试以及回归测试带来新的研究领域。 目前大多数回归用例选择技术多是基于代码的,有些是基于历史记录的。 基于代码的回归测试选择对测试人员要求很高,需要测试人员阅读并理解代码,这需要很多的时间花费,并且是依赖于编程语言的。 而基于历史记录的回归测试选择要求测试的所有记录非常完善,很多时候我们达不到要求。 而基于 UML 设计的回归测试选择不依赖于编程语言,比 代码级的回归测试选择更加容易且效率高。 所以本文吸收前人的研究成果,结合 UML 活动图的特点,提出了基于 UML活动图的回归测试选择技术,为了 对软件质量更有信心,又提出了基于风险的回归测试选择技术,作为 基于活动图的回归测试的有益补充。 国内外研究现状及进展 以前相关研究 回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。 在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。 浙江大学硕士学位论文 第 1 章 绪论 3 许多研究人员研究 了 回归测试技术。 他们的研究包含很广泛的课题。 例如,Brown 和 Hoffman[8] 研究了测试环境和自动化回归测试过程。 Harrold, Gupta 和Soffa[9]研究了测试用例管理技术。 Rothermel 和 Harrold[10] 研究了回归测试选择技术。 最近几年,大家的注意力被集中到回归测试测试用例选择领域。 大部分的技术是针对白盒测试 的 ,他们选择测试用例是基于 代码 的相关信息 [1112]。 只有少数的技术是针对黑盒 测试 ,测试用例选择基于系统本身特征 [1316]。 目前,回归测试选择的研 究主要包括以下两个方面: 1) 基于代码的回归测试选择。 该方法主要研究在已知代码的情况下,对代码相关的测试用例进行选择。 这个方法是通过比较修改前后对应代码对基线测试用例进行选择,从而得到回归测试用例集的一种技术 [28]。 先采用一些分解术将复杂的程序分解成一个个相对较小的片段来进行分析和维护。 这些片段就叫做程序切片。 任何一个程序都可以等价于一组程序切片的并集,而这些切片都是根据某个切片变量和切片准则计算出来的。 根据切片的定义 :所有能够影响到的语句、谓词等都被包含到该切片变量的切片中了。 所以对某个切片变量的修改一定不 会影响到其他切片变量的切片。 那么基于代码方法的回归测试思想可以描述如下 : 针对修改后的程序,首先找出被修改的变量信息,然后运用切片方法找到由于这些变量的变化所引起的直接定义一使用关系和间接定义一使用关系 (通常是一些语句或者控制流和数据流信息 ),将这些信息提取出来,组成一个程序片段,设计测试用例对这些程序片段进行测试,最后把这些测试用例加人到原程序测试用例中,构成新的回归测试用例集。 2) 基于历史记录的回归测试选择。 就是以测试用例执行的历史记录数据为依据进行回归测试选择 [29]。 每一轮测试都有一个测试状态与之相对 应,浙江大学硕士学位论文 第 1 章 绪论 4 该测试状态 ,该测试状态涵盖了当前测试中影响策略选择的因素 , 包括测试用例错误检测率要求 、 测试成本 、 测试频次。 这些就是测试的历史信息。 基于这些 测试历史信息 , 并根据当前测试 情况 来选择较为合适的回归测试 用例, 再将生成的回归测试用例进行用例优先排序 , 最后利用排序后的用例来进行测试 , 以进一步提高回归测试效率。 现存理论存在的问题 对于 基于代码的 回归测试选择技术来说存在一些问题。 基于代码的回归测试技术可以有效的应用到回归测试中的单元级别。 但是当我们试图测试一个大的或更加复杂的组件,比如一个子系统,我们要用基于代码的回 归测试技术从代码中取得所有所需信息就很困难,因此,基于代码的回归测试技术就很难适应较大的组件的测试,例如子系统的测试。 而且 ,基于代码的回归测试技术需要测试人员在一定程度上进入和理解代码[17]。 这个需要就会产生一些实际的问题。 测试人员不得不去花很多时间去读懂代码,而且对测试人员的要求会很高。 这是很费时,高成本 的方法。 最后,基于代码的回归测试技术是有编程语言的限制。 在一些软件系统里面,会使用超过一种的编程语言,比如,在 Web 系统里,我们可能会用到 Java, JSP,HTML 等语言。 这会导致分析代码的过程非常 复杂。 同样的对于基于历史信息的回归测试选择技术也存在着一些问题。 因为在这个选择过程中完全是根据测试的历史记录来进行的,那么就必定要求这个历史记录是完整,正确的。 但是,实际情况是,很多项目的测试历史记录是不完整的。 研究内容和研究目标 在 我们的 研究中,我们提出采用基于 活动图 的回归测试 选择技术和基于风险的回归测试选择技术, 作为有效和高效的解决以上所列问题的途径。 浙江大学硕士学位论文 第 1 章 绪论 5 下面是本论文的 主要工作 : 1) 我们说明了 需求 可追溯性对于 进行 和管理回归分析和测试的重要性。 我们 分析 了在需求 和测试用例之间 的联系。 2) 我们提供了一种新的选择 回归测试用例的策略。 我们的策略是基于 活动图 的。 将需求里的功能特征一一对应到活动图上,再通过活动图很直观地进行测试用例的选择。 3) 我们 分析 和描述了风险分析的用处, 怎么使用 风险敞口 (RE)可以用来衡量回归测试集的质量。 提供了基于风险的回归测试选择技术,作为基于活动图的回归测试技术的有效补充。 本文结构组织 文章剩下部分组织结构如下: 第二章:主要描述回归测试的背景知识,相关技术。 第三章:讨论了建立基于活动图的需求可跟踪性的方法,在次基础上建立了对回归分析和选择技术。 第四章: 讨论了风险分析,给出一个实用的风险模 式,可以在回归分析中使用。 第五章:讨论了基于风险的回归测试策略,并使用例子说明。 第六章: 用一个实验来验证我们提出的回归测试方法。 第七章:总结全文。 浙江大学硕士学位论文 第 2 章 回归测试 6 第 2章 回归测试 引言 Myers 发现对已经存在的程序进行修改比整个系统重新进行编码更容易产生bug[18]。 回归测试 是 被用来确认被修复的 bug 已经真正的被修复了,同时在这个过程中没有产生新的 bug,系统的功能还要符合需求的规定。 回归分析和测试概念 回归分析和测试是软件系统发生改变后的一个软件过程 [19]。 回归测试通常就是发生在被测试的系统发生改变时 ,原来的 bug 已经被完全修复,不会产生新的问题。 回归测试和开发过程中的测试最主要的区别是回归测试的测试用例集会不断的重用。 使用回归测试选择技术,我们仅仅重新运行被压缩过的回归测试用例,这些测试用例根据修改过的组件或系统而变化。 如果选择测试用例的代价少于重新测试所有测试用例的代价,那就说明测试用例选择技术是经济有效的 [20]。 回归测试技术 Rothermel和 Harrold 在自己的研究中描述回归测试技术如下所述 [9]: 程序 P, 修改后的程序 p’,程序 P 的测试用例集 T,回归分析和测试技术就是让 T的子集能满足程序 P’的质量要求 , 而从 p 到 P’的对应未改变部分功能不变。 回归测试基本上包含下面几个步骤: 1. 确定从 P 到 P’的改变的内容 2. 选择子集 T’∈ T, T’是基于 P 到 P’改变的测试集 3. 用 T’测试 P’,确认 P’的正确性 4. 如果需要,建立 T’’,是关于 P’的新的功能的或架构的测试用例集 5. 用 T’’测试 P’,确认 P’的准确性 浙江大学硕士学位论文 第 2 章 回归测试 7 6. 建立 T’’’,是 P’的回归测试集,结合了 T’和 T’’。 图 回归测试技术 回归分析的讨论 对仅仅发生少量变化的软件系统进行完全的测试是很昂贵的行为,尤其是对于大型系统。 利用回归分析和测试,我们可以仅仅重 新测试受到影响到得那部分软件系统。 回归分析和测试必须列出下面的这些基本问题 [21]: 1. 怎么确定因为某些组件代码的改变而受到影响的所有组件。 2. 要采取什么策略去重新测试这些受到影响的组件。 3. 对于这些重新测试的组件的覆盖标准是什么。 4. 怎么选择回归测试用例或改变原来的测试用例。 为了解决上述问题,对于回归分析和测试策略,下列的行动是很重要的。 浙江大学硕士学位论文 第 2 章 回归测试 8 下面是一个实用的回归测试策略: 1. 确定被影响的组件和选择回归测试覆盖标准。 2. 选择测试用例去测试被影响的组件。 3. 执行选择好的测试用例。 4. 获取和评估测试结果,包括评估发生改变的软 件系统的运行情况,报告回归测试集的覆盖率。 5. 修改测试计划以符合下一个阶段的回归分析和测试。 第 2 点是关于选择测试用例去重新执行的。 这些被执行的测试用例可能会是新的测试用例,当然也会有选出来的适当的老的测试用例。 在我们的研究当中,我们仅仅关注从原来的完整测试集中选择合适的测试用例的技术方法。 Luiu 将完整测试集中的测试用例分成两类 [19]: 1. 可以重新使用的测试用例:这些测试用例是用来测试没有更改部分的规格说明和相应未改变部分的执行。 当规格说明和执行改变后,这些测试用例都保持有效性,不需要重新运行。 2. 被影响到 得测试用例:这些测试用例是同发生改变的那些规格说明和执行相关的。 它们有两个分类: 1) 可以重新测试的测试用例:这些测试用例是依然有效,应当被重新执行的。 2) 过时的测试用例:这些测试用例对于发生改变的规格说明和执行已经是不相关或已经过时了。 测试用例 选择 过程图 22 所示。 浙江大学硕士学位论文 第 2 章 回归测试 9 图 回归测试用例选择 回归测试模式 Robert Binder 总结当前的回归测试选择策略,分成 三 个模式 [7]: 1. 再测试全部用例 :选择基线测试用例库中的全部测试用例组成回归测试包,这是一种比较安全的方法,再测试全部用例具有最低的遗漏回归 错误的风险,但测试成本最高。 全部再测试几乎可以应用到任何情况下,基本上不需要进行分析和重新开发,但是,随着开发工作的进展,测试用例不断增多,重复原先所有的测试将带来很大的工作量,往往超出了我们的预算和进度。 2. 基于操作剖面选择测试:如果基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。 回归测试所使用的测试用例个数可以由测试预算确定,回归测试可以优先选择那些针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别浙江大学硕士学位论文 第 2 章 回归测试 10 的风险,有助于尽早发现那些对可靠性有最大影响的故障。 这 种方法可以在一个给定的预算下最有效的提高系统可靠性,但实施起来有一定的难度。 3. 再测试修改的部分:当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。 通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。 在允许的条件下,回归测试尽可能覆盖受到影响的部分。 再测试全部用例的策略是最安全的策略,但已经运行过许多次的回归测试不太可能揭示新的错误,而且很多时候,由于时间、人员、设备和经费的原因,不允许选择再测试全部用例的回归测试 策略,此时,可以选择适当的策略进行缩减的回归测试。 每种回归测试模式都有其优点和缺点。 一种模式可能在某些情况下比另一种好,但是并不是在所有情况下都好。 软件维护的分类和回归测试的类型 在软件开发和维护阶段,当软件进行打补丁,升级或微调时,软件系统可能会发生许多变化。 根据软件维护预期目的的不同, White 将软件维护分成三类 [22]: 1. 纠错性维护 (Corrective maint。基于活动图的回归测试方法研究硕士毕业论文(编辑修改稿)
相关推荐
环比值控制系统 在主流量也需要控制的情况下,增加一个主流量闭环控制系统,单闭环比值控制系统就成为双闭环比值控制系统,见图 22 K 副 调 节 器 副 流 量 对 象副 执 行 器主 测 量 变 送副 测 量 变 送副 流 量主 流 量MFMKF SF副 流 量 给 定值主 流 量 对 象主 执 行 器主 调 节 器主 流 量 给 定值 MF 图 22双闭环比值控 制系统方框图
和增加就业的重要渠道。 在借鉴这些休闲农庄成功经验的基于浦口区星甸项目休闲农庄旅游资源的调查研究 同时, 我们也要找出他们在经营农庄过程中的不足,加以改正。 同时,形成我们规划园区的特色, 以便吸引更多的城市居民和国外友人前来观光旅游。 3.现有农庄状况比较 这些休闲农庄与我们此次规划中的农业园区有很多是相同的客源,大家都是被具有“苗木之乡”的美丽浦口所吸引 , 交通和宣传是吸引客源的途径之一,
厂商间只好祭出 “促销 ”法宝,天女散花般地撒出银两,面对面肉搏厮杀,即便是血流成河也难以罢手。 这就是商业竞争的现实,在中国,这种现实更是常态,随便踏进哪一家商场,都随处可见 “促销 ”招贴,而且促销的借口千奇百怪,从 “欢庆中秋 ”到 “新春志喜 ”,从 “公司五周年庆 ”到 “神舟五号升空举国欢腾 ”,琳琅满目不一而足。 在学理上, “促销 ”基本上可以分为 “销售促进 ”和 “价格促销
浇注系统可分为普通流道浇注系统和无流道浇注系统两大类。 浇注系统的设计对注射成型效率和制件质量有直接影响,是获得优质塑料制品的关键。 浇注系统各部分的作用 浇注系统一般由主流道、分流道、浇口和冷料穴等四部分组成,各部分作用如下。 (1)主流道 从注射机喷嘴与模具接触处起到分流道为止的一段料流通道,是熔体最先流经模具的部分,负责将塑料熔体从喷嘴引入模具。
象,使得摄磷和反硝化 (脱氮 )这两种不同的生物过程借助同一种细菌在同一过程完成。 总的来说,生物除磷机理可归纳如图 所示。 图 生物除磷机理 除磷工艺的选择 考虑到 反硝化除磷工艺现在并不成熟,对其研究还停留在实验研究阶段,工程实际应用研究有待进一步发展 [19]。 并且作为城市污水再生全程后续工艺的自养脱氮单元对氨氮浓度有要求,除磷单元应尽可能少的减小氮素损失。 以及反硝化除磷
天津是历史文化知名城市,文化底蕴和文化发展较为成熟,数千多年的文化基础应该发挥其自身价值,展现其城市形象、凝聚力和辐射力,合理的继承历史文化,强化保护历史文化的意识。 完整的保护昨天的历史和文明,页是现代社会的进步。 正确处理保护与发展之间的关系,建立好城市系统的视觉形象,城市的地标建筑和雕塑影像城镇集中,通过追求人与城市精神,提升城市的地位,城充分发挥天津的独特文化优势,丰富的旅游文化