System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及一种面向软件集成开发系统的自动化测试工具和方法,属于软件。
技术介绍
1、在软件集成开发环境下,软件开发人员频繁地将开发的软件模块集成到主线代码库中。持续集成技术提高了软件开发效率,并缩短了软件发布时间,但也给软件开发的质量保障活动带来了挑战。回归测试受到影响主要表现为以下两个方面:首先,由于源代码和测试用例的频繁变化导致动态变化的测试环境;其次,回归测试对时效性有较高要求,具有严格的时间限制,需要频繁构建和测试代码。默认情况下,回归测试需要执行所有现有的测试用例,用来验证软件系统新变化不会改变现有功能。然而,测试用例的数量由代码库的大小所决定,可能具有巨大的规模,其执行通常需要许多服务器并行执行,并且需要运行几个小时甚至几天才能完成。测试用例自动化选择技术通过评价测试用例的优先级,并选择测试用例子集来应对该挑战。这些测试用例应该能够测试到软件系统的新变化,并且考虑到其潜在问题,同时能够尽可能早地检测到故障。这些技术通常使用代码覆盖分析、测试执行历史试探以及特定领域的探索规则等技术。此外,可以基于机器学习技术,通过结合所有信息来源启发式学习最佳选择,对测试用例进行优先排序。然而,必须改进现有的方法来处理持续集成的动态性和时效性问题,从而比测试用例全部执行的执行效率更高,执行速度更快,以避免快速构建中产生的延迟。
2、基于机器学习的测试用例优先排序的解决方案都需要处理大量的测试用例以及代码变更历史等测试数据,并且不断适应反映在新收集数据中系统和测试套件的变化。虽然监督式机器学习技术可以处理大量数据,但是对
3、本专利技术将测试用例优先化作为排序问题,将持续集成软件系统开发环境和测试代理之间的顺序交互建模为强化学习问题,采用成对排序、列表排序和点排序等三个不同排序模型,自动、持续学习测试用例优先化策略,尽可能使用最优测试用例及测试策略。同时,引入了基于三个等级模型的测试用例执行重放器,使用来自先前持续集成周期的连续输入测试用例执行历史来训练模型参数,以便在后续周期中优先化执行测试用例。通过重放测试用例的执行日志,在每个周期结束时向代理提供反馈,以确保代理策略有效且持续地适应系统和回归测试套件中的变化,该训练过程自适应执行并具有较高的准确性。
技术实现思路
1、本专利技术的目的:源代码和测试用例的频繁变化会导致动态变化的测试环境,回归测试对时效性有较高要求,具有严格的时间限制。本专利技术将测试用例优先化抽象为排序问题,将持续集成环境和测试代理之间的顺序交互建模为强化学习问题,使用逐点排序、成对排序和列表排序等三种排序模型,自动、持续学习测试用例优先化策略,尽可能接近最优测试用例的自动生成。
2、本专利技术技术解决方案:一种面向软件集成开发系统的自动化测试工具和方法,其特点在于实现步骤如下:
3、1、自动化测试环境的构建
4、测试代理和环境通过状态、奖励和动作来进行交互。代理考虑状态和奖励,根据底层强化学习技术更新策略,将所选择的动作传递给应用环境,并返回新的状态和反馈。结束条件取决于任务的性质,当任务完成则该阶段结束,主要包括以下步骤:
5、(1)测试代理观察当前环境状态,根据状态选择合适动作;
6、(2)测试代理执行动作序列,从初始状态转换到最新状态,并获得动作奖励;
7、(3)测试代理根据底层算法设定,探索并更新执行策略。
8、2、测试用例优先级排序策略制定
9、为了将测试用例优先化问题映射为强化学习问题,需要定义状态、动作、奖励和阶段结束条件。测试用例优先化可以抽象为排序问题,交互细节可以基于排序模型来定义,包括逐点排序、成对排序和列表排序等三种排序模型。
10、(1)逐点排序
11、根据单个测试用例的特征,使用预测模型,计算该测试用例的相关性分数。通过根据预测分数简单地对测试用例进行排序,每个测试用例的分数独立于其他测试用例的分数。将测试用例集转换为序列,初始状态设置为序列的第一个测试用例。然后,开始执行训练集,代理为每个测试用例确定一个分数,该分数是介于0和1之间的实数。环境通过以下方式执行动作:将所选分数保存在临时向量中;将向量的下一个测试用例设置为状态,更新状态值;根据奖励函数计算动作奖励值;根据保存在临时向量中测试用例分配的分数,对所有测试用例进行排序。
12、状态空间:单个测试用例的特征记录;
13、动作空间:介于0和1之间连续范围的测试用例排序分数;
14、奖励函数:以最佳排名为参考,根据分配的排名与最佳排名之间的距离计算奖励。然而,由于每个测试用例在训练期间单独评分,测试用例的最终排名直到训练集结束时才知道,因此通过归一化测试用例的最佳等级来计算距离。另一种只在阶段结束时提供奖励,会导致稀疏奖励问题,并使代理的训练效率低下。
15、(2)成对排序
16、一次分析一对测试用例,然后使用全部有序的测试用例对来确定所有测试用例的最佳顺序。将初始状态设置为一对测试用例,代理选择0或1对其进行初始化赋值,使用合并排序算法对所有测试用例的优先级进行排序,设定基准索引,其中基准索引左边为已经排序部分,基准索引右边为未排序部分。在排序的每次迭代中,会找到具有最高优先级的测试用例,并将其位置更改为基准索引,然后增加基准索引,并重复此过程,直到所有测试用例都被排序。
17、状态空间:每一对测试用例特征记录;
18、动作空间:表示为集合{0,1},其中0表示测试用例对中的第一个测试用例具有较高的优先级,1表示测试用例对中的第二个测试用例具有较高的优先级;
19、奖励函数:如果代理给予该对中唯一失败的测试用例更高的优先级,将获得最高的优先级奖励为1,否则不会收到任何奖励为0。此外,如果一对测试用例中的两个具有相同的判定,那么当代理将更高的优先级给予执行时间更少的测试用例,获得奖励为0.5。奖励值根据测试用例特点来设置,失败测试的优先级尽量高,具有相同结论的测试用例的执行时间尽量短。
20、(3)列表排序
21、考虑所有测试用例的列表,并给每个测试用例分配一个相对于其他测试用例的等级。设置包含所有测试用例特征向量的初始状态,根据周期中测试用例的最大数量来定义给定持续集成系统的状态空间大小,代理通过填充来处理所有周期。在准备初始状态之后,代理选择具有最高优先级的测试用例作为动作。环境将所选测试用例附加到输出序列;使用虚拟测试用例替换所选测试用例的特征记录来更新状态,以跟踪所选测试用例;计算所得到的奖励。
22、状态空间:测试用例数量与每个测试用例特征的乘积,随着测试次数而线性增长;
23、动作空间:动作捕获具有最高本文档来自技高网...
【技术保护点】
1.软件集成开发系统的自动化测试方法特征在于实现步骤如下:
【技术特征摘要】
1.软件集成开发系统的自动化测...
【专利技术属性】
技术研发人员:李扬,陈杉杉,张鼎,王晨程,秦和珂,
申请(专利权)人:神州数码系统集成服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。