基于IIGRTCP的回归测试性能分析

基于IIGRTCP算法的专有和非专有工具在工业回归测试中的性能分析

K. 希玛·尚卡里,R. 特鲁马莱塞爾维,和 N.V. 巴拉苏布拉马尼安

1 引言

回归测试是任何软件开发方法论中不可或缺的一部分。在极限编程方法中,设计文档通常被在整个软件开发生命周期的每个阶段对整个软件包进行广泛、可重复和自动化测试所取代。因此,回归测试不是一个孤立的一次性功能,而是一项范围和前提条件各异且高度依赖上下文的全面活动。已有多种技术被提出并进行了实证评估;但在许多情况下,这些技术具有特定上下文适用性,难以推广到一般用途。本研究讨论了当前回归测试方法的局限性,并提出了一种结合变更影响分析、业务规则模型、成本风险评估和测试用例管理的实用技术。该技术为修改后的软件提供了信心。后续本文的章节详细阐述了如何根据缺陷检测率、检测到的故障百分比以及 Selenium 工具的应用等因素对回归测试用例进行优先级排序。

2 工业应用程序回归测试中的问题

2.1 问题

大规模业务系统的回归测试通常存在两个主要问题。首先,随着系统的变化,无法准确定义回归测试覆盖率;其次,由于参数组合的增加,测试用例数量急剧增长,导致在规定时间内以合理成本完成最低覆盖率要求的回归测试变得不可行。

自动化功能测试工具经常被引入到大型业务系统的测试中。这些工具提供了基本的测试手段,但由于缺乏自动功能测试管理框架,导致自动化功能测试往往难以有效实施和开展。根本原因在于,功能测试基于业务,具有很强的行业相关性,而自动化功能测试工具与业务无关,因此无法自动适应各行各业的具体业务需求,在测试实施过程中需要大量人工干预,结果往往难以达到预期。

大规模业务系统的回归测试往往受到截止期限和预算限制的制约,且测试的工程特性决定了其无法完全按照理论描述实现。在时间和资源有限的情况下,为了更合理地安排测试,在测试规划阶段亟需一种决策机制,该机制基于风险评估和(测试)成本估算的前提,对资源(时间、人力、预算)进行约束以支持决策。

2.1.1 方法论

前述提到的测试模型依赖于软件开发过程,因此缺乏回归测试的实际实施方法。与开发过程中的单元测试、集成测试和性能测试不同,回归测试反复强调累积性,这种累积性可以通过结构和业务规则建模方法来实现,从而推动回归测试周期的进行。

要构建用于决策的回归测试支撑平台,首先需要扫描和分析核心业务系统的源代码,并进行设置建立应用程序描述模型;同时,应建立工业专家知识库以收集和提炼业务信息。然后,建立业务规则模型来表达业务信息。最后,根据工业应用和测试实施的特点建立风险评估模型[3]。如果业务系统因需求变更、系统维护变化等原因发生改变;如果开发部门发布了软件的新版本,则回归测试的实施步骤如下:
1. 扫描并分析新版本中的源代码,基于应用模型进行变更分析,并自动识别系统变更;
2. 通过变更影响分析,准确指出受版本变更直接影响或间接影响的功能业务范围;
3. 结合业务规则的应用,由专家和分析师确定回归测试范围;
4. 在成本与风险的评估模型中生成测试套件,并使用优化算法对其进行压缩;
5. 通过复用库中的测试用例或开发新的测试用例,完成自动化测试。

2.1.2 APFD指标的局限性

前面介绍的APFD指标依赖于两个假设:(1)所有缺陷的严重性相同,(2)所有测试用例的成本相同。然而在实践中,存在这些假设不成立的情况:缺陷的严重性不同,测试用例的成本也不同。在这种情况下,APFD指标可能会提供不满意的结果[4, 5]。

(i) 平均百分比块覆盖率(ABC)。该指标衡量优先级测试套件覆盖块的速度。
(ii) 平均百分比决策覆盖率(ADC)。该指标衡量优先级测试套件覆盖决策(分支)的速度。
(iii) 平均百分比语句覆盖率(ASC)。该指标衡量优先级测试套件覆盖语句的速度。
(iv) 平均百分比循环覆盖率(ALC)。该指标衡量优先级测试套件覆盖循环的速度。
(v) 平均百分比条件覆盖率(ACC)。该指标衡量优先级测试套件覆盖条件的速度。
(vi) 问题跟踪报告(PTR)指标 PTR 指标是分析测试优先级排序有效性的另一种方法。

请记住,一种有效的优先级排序技术会将最有可能检测到缺陷的测试用例放在测试序列的开头。它将有助于计算在发现所有缺陷之前必须执行的测试用例的百分比。PTR 的计算方法如下:
Ptr(t, p) = nd / n
设 t 为待评估的测试套件,n 为在被测程序 p 中检测出所有缺陷所需的测试用例总数。

3 面向工业的应用的回归测试方法

构建回归测试的决策支持平台为回归测试在工业应用中提供了可行的解决方案。该构建涉及业务规则模型、应用描述模型、变更影响分析、成本风险评估和测试用例管理模型[7]。

3.1 业务规则的提取与加载

业务规则被定义为业务结构和运营的约束和规范。它们是企业业务运营和管理决策的重要资源[8]。

业务规则应由基于规则的系统进行管理,从而将应用逻辑与应用系统的业务流程逻辑分离。规则引擎是应用程序中的嵌入式组件。其任务是将规则提交的对象数据与原始规则进行测试和比较,激活符合当前数据状态的规则,并根据执行逻辑中声明的规则触发应用程序中的相应操作。

构建支持回归测试的业务规则模型,旨在继承高级分析师积累的知识,使实际使用的规则具有明确的表达。在此基础上,结合测试理论与规则集成及优化算法,并应用于用例,可建立一个生成系统,其效率不低于手动测试中平均水平的用例生成系统[1]。

业务规则的来源通常包括:
1. 源自业务需求的规则(Rdbn)
2. 源自理论测试原则的规则(Rdtp)
3. 源自行业传统的规则(Rdit)
4. 源自行业常识的规则(Rcsi)

这表明测试套件缩减技术已在实际工业应用程序中得到应用。在产品开发周期中,具有请求和管理应用程序变更的流程[2]。

业务规则模型的基础是手动测试用例操作中积累的一系列设计规则、工业标准和特殊约束。业务规则模型用于表达手动测试中的这些规则,并建立可加载规则的规则引擎结构。利用这些规则,可在决策支持系统中为特定业务流程生成基本模板测试用例。

加载规则是将规则添加到规则库中。关键是如何表达适用条件并指定优化算法。

业务规则的表达是具体的,其基本形式为 If(业务规则的适用条件)Then op,其中 Op 既表示测试点的生成,也表示用例算法[6]。

对于目标系统而言,不可能穷尽所有可能性,只能逐步推进。因此,应允许手动添加,并将其视为业务规则模型的学习过程。对于工业应用,源代码分析工具还需要提取业务流程与组件、组件与组件、组件与类层次结构、组件与相关数据库表之间的一些关系。

4 案例研究

简单案例研究

该系统由学生使用 Java 开发,并通过 Selenium 测试工具进行测试。共使用了六个测试用例来测试其功能,并使用以下公式对测试用例排序(TCR)进行优先级排序。
TCR = (S × N) / time
在此公式中,N 是使用该测试用例时检测到的缺陷数量,time 是使用该测试用例进行测试的分钟数,S 是检测到的缺陷的严重性值(由测试人员指定)。当检测到多个缺陷时,公式中采用加权求和。该公式的完整说明见我们之前在2016年国际工程师和计算机科学家多会议上发表的论文。共有6个测试用例,在这些测试中共检测到8个缺陷。下表以二进制格式给出在六次测试中检测到了哪些缺陷(零表示未检测到,一表示检测到)。

然而,一旦将风险严重性和测试时间纳入考虑,优先级序列便变为 T4、T2、T5、T1、T6、T3,如我们论文中所述。

4.1 所提方法考虑的因素

我们为所提出的优先级排序技术考虑了三个因素。这些因素讨论如下。

(i) 故障检测率
故障检测率(RFD)定义为测试用例k每分钟发现缺陷的平均数量。
RFDk = (Nk / timek) × 6 (1)

(ii) 故障检测百分比
测试用例 Tk 的检测到的故障百分比(PFD)可以通过数量来计算。
PFDk = Nk (2)

(iii) 风险检测能力
根据故障对软件的影响,为每个故障分配了风险值。每个故障的风险值均基于10分制进行分配,具体如下所示。
极高风险:RV值为10;高风险:RV值为8;中等风险:RV值为6;较低风险:RV值为4;最低风险:RV值为2。

对于测试用例 Tk,RDAk 使用严重性值 Sk 计算得出,Nk 是 Tk 发现的缺陷数量,timek 是 Tk 发现这些缺陷所需的时间。RDA 的计算公式可表示如下。
RDA = (Sk × Nk) / timek (3)

4.2 测试用例排序

测试用例排序是 RFD、PFD 和 RDA 这三个因素的总和。对于测试用例 Tk,测试用例排序(TCRk)可通过下方给出的公式计算:
TCRk = RFDk + PFDk + RDAk (4)

C.IIGRTCP(用于回归测试用例优先排序的改进型行业导向遗传算法)。

所提出的优先级排序技术表达如下。
测试套件 TK 以及每个测试用例的测试用例排名(TCR)是该算法的输入。

使用IIGRTCP算法对基于行业的回归测试中专有和非专有工具的性能分析

测试用例的优先顺序算法
步骤1. 开始。
步骤2. 将 TK 置空。
步骤3. 对每个测试用例 Tk ∈ T1 执行。
步骤4. 使用公式(4)计算测试用例排序。
步骤5. 结束循环。
步骤6. 按 TCR 值的降序对 TK 进行排序。
步骤7. 将 TK 设为 T。
步骤8. 结束。

5 Selenium工具

5.1 Selenium工具的功能

Selenium 是一个可移植的软件测试框架,用于 Web 应用程序。Selenium 提供了一个录制/回放工具,用于编写测试而无需学习测试脚本语言(Selenium IDE)。它还提供了一种测试领域特定语言(Selenese),可用于使用多种流行的编程语言编写测试,包括 C#、Groovy、Java、Perl、PHP、Python、Ruby 和 Scala。这些测试随后可以在大多数现代 Web 浏览器上运行。Selenium 可在 Windows、Linux 和 OS X 平台上部署。它是开源软件,根据 Apache 2.0 许可证发布,可以免费下载和使用。

Selenium 目前是最强大的开源自动化测试工具。它由杰森·哈金斯及其团队开发,以 Apache 2.0 许可证发布,可免费下载和使用。Selenium 易于上手,适用于 Web 应用程序的简单功能测试。它支持对基于 Web 的应用程序进行测试的录制和回放功能。Selenium 支持多线程特性,即可以在不同浏览器上运行脚本的多个实例。

TestMakers 集成 Selenium 以提供以下功能和优势:
1. Selenium 支持多种语言,包括 Java、Perl、Python、C#、Ruby、Groovy、JavaScript 和 VBScript 等。
2. Selenium 支持多种操作系统,如 Windows、Macintosh、Linux、Unix 等。
3. Selenium 支持多种浏览器,如 Internet Explorer、Chrome、Firefox、Opera、Safari 等。
4. Selenium 可与 ANT 或 Maven 类似的框架集成,用于源代码编译。
5. Selenium 可与 TestNG 测试框架集成,用于测试我们的应用程序并生成报告。
6. Selenium 可与 Jenkins 或 Hudson 集成,实现持续集成。
7. Selenium 可与其他开源工具集成,以支持其他功能。
8. Selenium 可用于基于 Android、iPhone、黑莓等的应用程序测试。
9. Selenium 在脚本执行过程中占用的 CPU 和内存非常少。
10. Selenium 拥有不同的组件,为其父级提供支持,这些组件包括 Selenium IDE、Selenium Grid 和 Selenium 远程控制(RC)。

6 实验与分析

改进的工业遗传算法非常适合用于解决解空间巨大且穷举搜索耗时过长的问题。本示例出于激励目的,假设事先已知测试用例集T在程序P中检测到的缺陷。

例如,假设回归测试套件 T 包含六个测试用例,其初始顺序为 {T1, T2, T3, T4, T5, T6},如表1和表2所述。

在表3中,出于激励目的,本示例假设先验地知道 T 在程序 P 中检测到的缺陷。

表1 故障矩阵
| 缺陷/测试用例 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
|---------------|----|----|----|----|----|----|----|----|
| T1 | X | X | | X | X | X | X | X |
| T2 | X | | | | | | | |
| T3 | X | | | | | X | | |
| T4 | | X | X | | | | | X |
| T5 | | | | X | | X | | X |
| T6 | | X | | X | | X | | |

表2 测试用例的二进制表示
| 测试用例 | 二进制形式 |
|----------|----------------|
| T1 | 11011111 |
| T2 | 10000000 |
| T3 | 10001000 |
| T4 | 01100001 |
| T5 | 00010101 |
| T6 | 01010100 |

表3 每个测试用例检测到的缺陷数量、检测缺陷所需时间以及每个测试用例的风险严重性值
| 测试用例 | 覆盖(缺陷数) | 执行 time(分钟) | 风险严重性 |
|----------|----------------|--------------------|-------------|
| T1 | 2 | 12 | 8 |
| T2 | 3 | 14 | 10 |
| T3 | 1 | 11 | 4 |
| T4 | 4 | 10 | 20 |
| T5 | 2 | 10 | 12 |
| T6 | 2 | 13 | 6 |

表4 RFD, PFD, RDA 对于测试用例 T1-T6
| 测试用例 | RFD | PFD | RDA |
|----------|--------|-----|---------|
| T1 | 1 | 2 | 1.333 |
| T2 | 1.285 | 3 | 2.142 |
| T3 | 0.54 | 1 | 0.3636 |
| T4 | 2.4 | 4 | 8 |
| T5 | 1.2 | 2 | 2.4 |
| T6 | 0.9 | 2 | 0.923 |

表5 测试用例排序分别为 T1-T6
| 测试用例 | TCR = RFD + PFD + RDA |
|----------|------------------------|
| T1 | 4.33 |
| T2 | 6.427 |
| T3 | 1.909 |
| T4 | 14.4 |
| T5 | 5.6 |
| T6 | 3.8 |

测试用例 T1-T6 的故障检测率(RFD)、检测到的故障百分比(PFD)和风险检测能力(RDA)的值分别通过使用公式(1)、(2)和(4)计算得出。表4分别表示所有三个因素(即RFD、PFD、RDA)针对测试用例T1-T6的值。

对于测试用例T1-T6,根据以下给出的公式(4)计算TCR值。表5显示了每个测试用例的测试用例排序。

执行时,测试用例按TCR的降序排列。测试用例的排序方式是TCR值较大的优先执行(表6)。

表6 所提方法与先前工作的测试用例排序
| 测试用例 | 优先顺序 |
|----------|-----------|
| T1 | T4 |
| T2 | T2 |
| T3 | T5 |
| T4 | T1 |
| T5 | T6 |
| T6 | T3 |

6.1 基于行业的案例研究

安得拉邦首个燃气电厂(APGPCL)是安得拉邦和南印度地区首家建设的燃气发电厂,体现了安得拉邦电力委员会(APSEB)的开拓性努力以及安得拉邦工业界的创业精神。APGPCL是一种创新的公私合作伙伴关系商业模式。

APGPCL是印度国内成本最低的燃气发电站。APGPCL的第一阶段和第二阶段电厂均提前建成,并且建设成本控制在预算范围内。

本案例研究展示了一个复杂的工业应用程序,通过具体的案例研究示例,说明了测试工程师如何利用集成测试环境进行工作。

本案例研究揭示了当前工业实践中回归测试旨在与复杂的测试环境集成的问题。应开发新的方法论和技术来解决此问题。

此处将测试用例划分为多个集合,每个测试用例集合称为一个测试套件。因此,Tn 表示第n个测试套件,tjk 表示第k个测试套件中的第j个测试用例。在优先级排序中使用了遗传算法。

该过程包括:
步骤1。将测试用例手动组织成测试套件中的集合。
步骤2。确定下一次发布的范围,并确定哪些变更请求将包含在下一个构建中。
步骤3。为每组变更请求记录需求、功能需求、功能规格说明和实施计划。
步骤4。实施变更。
步骤5。测试或验证变更。单元测试由进行变更的人员(通常是程序员)完成。功能测试用于测试系统的功能区域,以确保所有内容按预期工作。
步骤6。发布。

仅选择了前80%的测试套件进行变异,剩余20%保持不变。变异涉及在成对的测试套件之间进行简单的(且随机的)测试用例交换。因此,遗传算法并未增加测试套件数量或测试用例数量,而仅仅是改变了分组方式。

下表给出了测试中检测到的缺陷数量、执行时间以及加权风险严重性。首次进行回归测试时的测试套件,以及基于工业案例研究中提出的公式(表7)对测试套件进行的测试用例排序。

6.1.1 与先前工作的比较

在本节中,将所提出的优先顺序与先前工作进行比较(表8)。

在图1中,比较了RFT和Selenium工具的APFD百分比。

表7 工业案例研究的测试用例
| 测试用例 | 测试用例名称 | 描述 | 测试用例优先级 |
|----------|--------------------------------------|--------------------------------------------|----------------|
| 1 | 登录访问–APGPCL 凭据 | APGPCL控制面板 具有有效 凭据 | 5 |
| 1 | 控制面板–有效 | APGPCL控制面板 具有有效 凭据 | 5 |
| 2 | 登录访问–APGPCL | APGPCL控制面板 应用程序具有无效 凭据 | 5 |
| 2 | 控制面板 – 无效 凭据 | APGPCL控制面板 应用程序具有无效 凭据 | 5 |
| 3 | 访问 APGPCL 网页 | 访问实际的 APGPCL 应用程序从 控制面板应用程序 | 2 |
| 3 | 控制面板应用程序 | 访问实际的 APGPCL 应用程序从 控制面板应用程序 | 2 |
| 4 | 密码重置页面 – APGPCL控制面板 | 密码重置,适用于 APGPCL控制面板 | 3 |
| 5 | 密码重置页面 – APGPCL控制面板 – 使用有效邮箱 | 为有效用户重置密码 APGPCL用户 | 4 |
| 6 | 密码重置 – APGPCL | 为无效用户重置密码 APGPCL用户 | 3 |
| 6 | 控制面板 – 包含无效
电子邮件 | 为无效用户重置密码 APGPCL用户 | 3 |
| 7 | 密码重置 – APGPCL | 为有效用户重置密码 APGPCL用户 | 4 |
| 7 | 控制面板 – 取消 | 为有效用户重置密码 APGPCL用户 | 4 |
| 9 | 主页 – 控制 | 验证内容 APGPCL。控制面板 主页 | 3 |

表8 APFD百分比 for RFT 工具 and Selenium 工具
| 优先级排序技术 | APFD百分比 |
|----------------------------------|------------|
| IIGRTCP与RFT工具 | 88% |
| IIGRTCP与Selenium工具 | 91% |

7 结论

本文提出了一种面向工业应用的回归测试方法论,以克服当前存在的诸如自动化程度低和定义测试覆盖率困难等局限性。该方法论与不同的使用APFD指标的优先级排序技术相结合。我们对测试套件执行过程中检测到的缺陷数量取加权平均数。结果证实了该方案的有效性。测试用例优先级排序(TCP)是一种有效且实用的技术,可用于监控回归测试。建议未来将加权缺陷密度(WDD)、缺陷去除效率(DRE)、基于故障严重性的加权百分比(WPFS)以及常用的风险指标等其他因素纳入考虑。所提出的方法论可轻松与Selenium工具集成。任何旨在优化时间和人力资源以提升回归测试功能的努力,都将带来更优质的软件产品。

内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合Koopman算子理论与递归神经网络(RNN)的数据驱动建模方法,旨在对非线性纳米定位系统进行有效线性化建模,并实现高精度的模型预测控制(MPC)。该方法利用Koopman算子将非线性系统映射到高维线性空间,通过递归神经网络学习系统的动态演化规律,构建可解释性强、计算效率高的线性化模型,进而提升预测控制在复杂不确定性环境下的鲁棒性与跟踪精度。文中给出了完整的Matlab代码实现,涵盖数据预处理、网络训练、模型验证与MPC控制器设计等环节,具有较强的基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)可复现性和工程应用价值。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及自动化、精密仪器、机器人等方向的工程技术人员。; 使用场景及目标:①解决高精度纳米定位系统中非线性动态响应带来的控制难题;②实现复杂机电系统的数据驱动建模与预测控制一体化设计;③为非线性系统控制提供一种可替代传统机理建模的有效工具。; 阅读建议:建议结合提供的Matlab代码逐模块分析实现流程,重点关注Koopman观测矩阵构造、RNN网络结构设计与MPC控制器耦合机制,同时可通过替换实际系统数据进行迁移验证,深化对数据驱动控制方法的理解与应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值