1、天津科技大学外文资料翻译1外文资料翻译C程序的回归测试选择Nashat Mansour and Wael Statieh(著)我们目前正在对 C 程序回归测试选择技术进行研究。 C是比较新颖的,并且经常被微软使用的语言。.Net 框架给程序员提供了一个坚实的基础来开发各种应用。回归测试是在修改程序后进行的。回归测试的选择是指从原始的测试套件,以便让程序再运行,目的是在有信心的的前提下确定修改的部分是正确的,并没有影响到程序的其他未修改部分选择的测试用例一个合适的子集。在本文提出的回归测试选择技术 C个体特征占了很大的一部分比例 。我们的技术是基于三个阶段:第一阶段建立一个受影响的类图,包括那些
2、受源代码影响而产生变化的类。第二阶段从基于 C的特定功能受影响的类图生成一个C 类间图( CIG) 。在这个阶段,我们减少选择的测试用例的数量。第三阶段包括进一步减少和分配权重测试用例优先选择的测试用例一个新的度量。我们已经通过案例研究经验验证所提出的技术。实证结果显示了 C.Net 程序所提出的回归测试技术的实用性。1. 介绍测试软件是一个程序的生产生命周期的重要组成部分。测试是一种花费大量精力和时间的工作。因此,合适的测试方法是必要的,这样才能确保程序的可靠性。回归测试的目的是有信心提供其修改后的程序的正确性。在计划程序的最初发展阶段,有一个集合T=t1, t2 , ,tN 其中,N 个测
3、试案例保存和测试用例,方法覆盖信息的表才能确定。当一个程序被修改以后,回归测试选择需要的测试用例的子集,R,也可以选自集合 T,为能够再次运行提供可信任的证明,即重新运行上修改的程序,没有意外的影响造成的变形这个目的。这将是昂贵的回归测试,汇集了大量的人力和财力。用例的回归测试重复整套 T 用于最初的发展项目和不可靠的测试用例的选择一个随机子集从 T。因此,有必要从 T 合适的子集中选择测试用例来运行。回归测试选择通过将注意力集中在发生在程序的变化来降低测试成本。天津科技大学外文资料翻译2一些回归测试选择的办法已经制定。数的方法和技术已经解决了回归测试的程序的程序的问题。的程序为基础的技术的例
4、子是:切片,数据流,防火墙和优化1-4 ;以及其他已经处理过面向对象程序( OO)的计划。有些面向对象技术的回归测试选择是基于 UML图和只利用设计信息。这些技术的例子将在 5-9 中会具体介绍 。此外,面向对象的防火墙技术已经被提出,在10中有详细说明 。提出了面向对象回归测试扩展防火墙的 11 。他们的算法使得受影响的组件,并检查组件之间的区别。然后,它会检测所有直接或间接调用改性成分的元件。这些被称为故障。作者发现,扩展防火墙发现比正常的防火墙技术更能够发现细微大量的故障。基于面向对象的技术都是基于 Java 和 c+处理程序间控制流和这些语言的特性。处理 Java 结构和功能,回归测试
5、选择算法已经开发了构建一个Java 类间图的控制流图 12 的延伸。罗瑟梅尔等。13已经解决了回归测试选择 c+软件技术问题,这是一个基于代码技术,构建一个年级之间的控制流图为了找到原始的和新项目的区别,是建立在为了寻找原来的和新的方案之间的差异的组间控制流图基于代码的技术。Jang 等。 14 提出了 C + +软件的另一个回归测试技术。作者主要集中在应该在 C + +程序进行复检功能。他们确定变化的类型,并且在防火墙其类型是为了找到语句之间的依赖关系来确定。一个单位的防火墙是一组需要单位水平复检成员函数;集成防火墙是一组需要集成度复检成员函数之间的相互作用。最近, Li 和哈罗德 15 提
6、出了基于约束的切尔诺夫随机测试选择的方法。 Chittimalli 和哈罗德 16根据系统要求进行回归测试选择技术。此外,曲等。 17 利用组合互动测试,配置采样,以及不断变化的优先级软件系统的配置提出了感知回归测试技术。C是集成在微软的。net 框架的应用程序开发一个相当新的面向对象编程语言。然而,没有工作一直报道了回归测试 C应用程序与他们的特定功能。本文的目的是介绍,第一次,对 C 程序代码为基础的回归测试选择技术。这种技术是一种三个阶段的技术。在第一阶段,我们建立一个受影响的类图,涵盖了由这种变化在源代码中改变或影响的类。在第二阶段,我们开发了一个 C类间图,它表示的方法中考虑的类的控
7、制流在受影响的类图和它们的相互关系。这一阶段覆盖的 C特定功能扩展了以前的面向对象技术。在第三阶段,我们分配权重,利用建议的指标来测试案例。根据权重,我们重新排序需要重新运行测试用例。我们表明我们的方法的有用性由呈递应用到的几个例子的结果。本文的结构如下。第 2 节提出了一些假设,并说明所需的数据结构。第 3-5 节描述我们的技术从试验的初始套件选择测试用例。第 6 节提出并讨论我们的实证结果。第 7 条提天津科技大学外文资料翻译3出进一步的工作。第 8 节总结全文。2. 假设和符号我们假设我们有测试套件,T,包括方案的初期开发阶段确定的测试案例。每个测试案例 T 中涉及的类的一个或多个方法。
8、我们使用邻接表来表示测试用例,方法覆盖信息。在修改程序之后,我们还保存设置的直接改变方法,M1,和该组的删除方法,M2。这组受影响的方法为直接或间接调用更改,添加或删除方法的方法。这些方法从由。NET 框架生成的跟踪文件中收集的。跟踪文件的主要目的是测试和优化的应用程序后,编译和发布。我们的仪器跟踪文件写入每个调用另一个方法,方法的信息(例如,上午来电亿元,其中 A 和 B 是类; m 和 n 的方法) 。 表 1 列出了本文的其余部分中使用的符号。天津科技大学外文资料翻译43. 技术概述我们的技术测试例选择由三个阶段组成。阶段 1。根据受影响的类图(ACD)的测试用例的选择。步骤 1.生成包
9、含 ACD:所有包含修改和/或删除的方法的类 ;基类和派生类中改变类;使用该改变的类(包含直接或间接调用的方法修改方法)的类。除了上课,排队机还可以包含以下内容:接口; Web 和 Windows 服务,它是利用外部方法或类中的服务器或互联网上的程序外; COM +组件这是由净注册和部署在服务器上,这样很多应用程序可以使用它的服务组件。使用 COM 组件的优点是它的可重用性。步骤 2.这一步涉及到在 ACD 的基础上选择子集合 T T。我们使用的测试方法覆盖表和测试套件 T 代表发现 T覆盖 ACD。 阶段 2.基于 C类间图(CIG )测试用例的选择。步骤 3.产生这是涉及到类的 ACD 中
10、所有受影响的方法控制流图的 CIG。该图作为输入的类集合中的 ACD,并建立其受影响的方法的控制流图。 步骤 4.这一步涉及到在 CIG 集合的基础上,选择集合 T T。由于旧的和修改过的程序的 CIG 图中,我们遍历两个 CIG 图形相同的路径遍历的边缘,直到我们到达目标节点的差异。这个优势将被标记为受影响或可能受影响的边缘,将被保存。任何测试用例覆盖此优势将被选定为重新运行。我们遍历两个图的所有路径,直到找到所有的设置受影响或可能受影响的边缘,然后用选择测试用例 T T来覆盖它们。 阶段 3.进一步减少和优先级。第 5 步.该步骤包括减少从所述第一或第二相位选择的测试用例的数目。在第一阶段
11、中,对于每个受影响的方法,我们随机选择一个测试用例覆盖此方法。在第二阶段,我们随机选择一个测试用例覆盖每个受影响或可能受影响的边缘。 步骤 6.优先测试用例 T和 T的基础上,测试仪的选择是否去两相或止步于第一阶段。天津科技大学外文资料翻译5这六个步骤进行了详细的在下面的章节中说明。4. 基于 ACD 测试选择我们建立一个受影响的类图包括含有修改或删除的方法的类。然后,这些类的超类型确定并添加到受影响的类图。我们将继续寻找派生类的所有类的 ACD。但是,我们只选择包含一个方法覆盖修改/删除的方法的类。在 ACD 中边缘符号有以下几种。(一)继承边缘:一个是父边从派生类将基类。 (二)使用边缘:
12、用于当一个类包含显式调用另一个类的方法。(三)间接亚型边缘:用于当一个类包含一个重写的方法和类包含一个方法重写该方法。他们的将是两个类之间的间接亚型边缘。算法 1 给出了用于构建一个受影响的类图的算法。该 ACD 包括必须的类,接下来,扩大了在 C类间图。 在这个阶段的测试案例的选择包括选择的测试用例集 T,涵盖了类 ACD 受影响的方法。算法 2 示出了该算法,用于选择 T。5. 基于 CIG 测试选择5.1。建立了 C类间图。在 C类间图(CIG )是根据受影响的类图。这个图表示的类的 ACD 的不同方法之间的控制流。为了选择需要被重新运行测试案例,我们必须构建两个 CIG 图的原始和修改
13、程序。我们开始遍历两个方案的相同边缘,直到我们发现相同的边缘不同的目标节点。我们纪念这个优势,因为受影响或可能受影响,并将其添加到组受影响或可能受影响的边缘。遍历整个 CIG 图之后,我们得到了一组边标记为受影响或可能受影响。从这些优势,我们选择的测试用例 T T覆盖它们。在下面的小节中,我们将详细描述 CIG。5.1.1。边符号为 CIG 图。在 C类间图使用一组边的识别方法调用和方法中语句之间的控制流的类型。控制流边表示的连续报表的方法内的流动。呼叫边表示一个方法的显式天津科技大学外文资料翻译6调用。外部路径的边缘是标识调用外部组件,例如类库或 COM +组件的边缘。此边表示该应用程序用于
14、执行特定功能的外部组件的存在。道路边表示或通过调用方法总结了路径。在 C类间图每条边都有用,导致被绑定到调用该方法接收器实例的类型的标签。用于 CIG 图形边缘符号表示如下:控制流边 (方法)调用边缘 外部边缘的路径 道路边缘5.1.2 。节点表示在 CIG 图。类库:是一组你用你的程序中编译的类。它们不展开,因为它是一个可重用组件。C 程序实例化该类的一个对象,并使用它的方法。我们代表用虚线圆圈节点和出口节点调用一个类库。它们之间的路径边代表了类 library。我们编码类库的名称,里面的路径,称为类库节点的类和方法。如果我们改变了调用方法的类的库里面,调用这个类库中的所有节点肯定会被检测到
15、。所用的符号被表示在图 1。调用一个 Web 服务。我们把这些服务做了一定的计算并返回一个值,该值使用的 C 程序。这些类执行特定的功能在互联网上。我们代表通过调用和返回节点调用一个 Web服务。我们编码 Web 服务节点名称和里面的 call 方法。这使我们能够检测到调用 web 服务的类。的符号被表示在图 2。代表:像老的函数指针,它们指的是基于它实例化对象的类型的一些方法。天津科技大学外文资料翻译7天津科技大学外文资料翻译8天津科技大学外文资料翻译9代表可以是多态的,允许委托绑定到许多方法。的符号被表示在图 3。 指针:示于图 4。 COM +组件。它们不会改变;它们被视为黑盒子。在 C
16、OM +组件注册到服务器上找到类库,可以从 C程序调用。另外该组件可能是在互联网上。我们编码组件的名称,类别,以及调用的方法。这个符号被表示在图 5。 从 XML 文件中读取并调用文件。有可能是 C程序和 XML 文件之间的相互作用。阅读弗罗曼的 XML 文件中的调用将被视为等同于调用一个内部方法。我们进行编码的 XML 文件的名称和节点内该文件的路径。这使我们能够检测到调用的XML 文件的类。这个符号被表示在图 6。调用执行存储过程。 C程序与存储过程通过发送存储过程的名称 SQL 服务器序执行它进行交互。这些程序运行某些查询数据库并将结果返回给程序。我们代表呼吁通过调用和返回节点的任何调用
17、一个内部方法的存储过程。该节点将包含有关存储过程的名称和位置信息。这个符号被表示在图 7。C中的事件就像调用一个方法来处理。每个事件都由一个事件处理程序处理。你通过天津科技大学外文资料翻译10提供处理程序的地址引发事件;将接收事件的方法。调用一个处理程序类似于调用程序中的任何内部方法。我们编码称为节点内部的方法的名称。每次调用处理程序是通过调用和返回节点表示。这个符号被表示在图 8。活动与多个处理程序。事件可能由多个处理程序办理;处理该事件的所有方法都执行。引发事件的节点将与所有的处理程序相关联,如果事件 x 是处理 Y,Z ,和 q 相关的代码。当事件被引发,处理程序执行的顺序将是 Y,Z 和 q 。这个符号被表示在图 9。异常处理。当一个 C 应用程序遇到一个运行时错误,它会引发一个异常,并在应用程序终止。 C允许结构化异常处理,这是一种让你的应用程序从意想不到的错误中恢复,或者至少有机会在关闭之前保存的数据。 C的. NET 包含内置的异常处理程序向我们提供有关异常的信息。此外,程序员可以创建 catch 块捕捉抛出的异常。例外的是像对待程
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。