CN113672506B - 基于机器学习的动态比例测试用例排序选择方法及系统 - Google Patents
基于机器学习的动态比例测试用例排序选择方法及系统 Download PDFInfo
- Publication number
- CN113672506B CN113672506B CN202110901585.4A CN202110901585A CN113672506B CN 113672506 B CN113672506 B CN 113672506B CN 202110901585 A CN202110901585 A CN 202110901585A CN 113672506 B CN113672506 B CN 113672506B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- time
- proportion
- case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 448
- 238000010801 machine learning Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims description 86
- 238000012549 training Methods 0.000 claims abstract description 65
- 238000004364 calculation method Methods 0.000 claims abstract description 12
- 238000004519 manufacturing process Methods 0.000 claims abstract description 7
- 238000010276 construction Methods 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 21
- 238000010606 normalization Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000010187 selection method Methods 0.000 abstract description 4
- 238000013522 software testing Methods 0.000 abstract description 3
- 230000010354 integration Effects 0.000 description 12
- 238000002474 experimental method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000013145 classification model Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于机器学习的动态比例测试用例排序选择方法及系统,属于软件测试领域技术,采集待测程序的历史版本执行结果并制作训练样本,使用不同程序的训练样本组成通用训练集,利用该通用训练集训练机器学习模型;采集待测程序的测试用例信息,对测试用例信息进行优先度计算,生成测试用例排序列表;使用机器学习模型预测测试结果,计算动态测试用例选择比例;根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行。
Description
技术领域
本发明基于机器学习和回归测试中常用的测试用例排序技术,实现了动态比例的测试用例选择方法,属于软件测试领域技术。
背景技术
随着计算机工业的发展,软件在生活生产中的应用越来越广泛。软件工程通常是一个团队工作。传统的实践方式是,团队中的每个成员分别完成自己的工作,然后进行代码的集成。但是,代码集成的过程中,不同成员的代码可能彼此冲突,产生程序错误。为了解决该问题,软件开发团队开始使用持续集成方法。持续集成鼓励团队中的每个成员频繁地进行代码提交和集成,以期尽早发现代码集成过程中可能出现的错误。但是,持续集成需要频繁的继承和测试,因此会产生大量开销。为了在尽可能保证持续集成效果的同时,节省其开销,研究人员提出了一系列方法。在持续集成中,每个集成周期被称为一个构建,每个构建对应一个程序版本。节省持续集成开销的方法可以分为两类,第一类是节省每个构建的开销,第二类是跳过部分构建。给定错误程序P,其测试用例集为T={t1,t2,…,tm}。其中,tm指单元测试用例。对于每个构建,如果T中的任何测试用例未能通过测试,则其检测到程序中包含的错误,称其为失败测试用例。如果一个构建的测试结果中包含失败测试用例,则称该构建为测试失败构建;反之则为测试成功构建。
第一类方法的代表性技术是测试用例排序选择技术。软件测试过程中,可以收集到测试用例的一系列信息,基于此计算测试用例的执行优先度。然后,对测试用例进行排序,按照优先度从高到低的顺序,依次执行测试用例。为了节省开销,对于每个构建,该技术会选择一定比例的测试用例执行,以期在有限开销内,执行优先度高的测试用例。
第二类方法是跳过部分构建,代表性技术是构建测试失败预测技术。该技术假定,如果一个构建不是测试失败构建,则可以跳过其测试步骤,以节省持续集成的总体开销。该技术使用机器学习方法,在构建进行测试之前,对测试结果进行预测;如果预测结果为构建测试失败,则执行其测试用例集,反之则跳过其测试用例集。
节省持续集成开销的方法很多,相关的研究也在不断开展。然而,以上述两种代表性技术为例,测试用例排序选择技术对不同构建使用相同的测试比例,忽略了不同构建间的差异性;构建测试失败预测技术对不同的构建具有区分度,但是其执行结果为二分法结果。如果机器学习模型预测产生假阴性结果,即将测试失败构建误分类为测试成功构建,则无法检测到程序中存在的错误。发展一套动态比例的测试用例排序选择方法,可以既具有不同构建的区分度,同时保证对假阴性结果的容忍度,实现更高效的软件测试。
发明内容
本发明的目的是提供一种基于机器学习的动态比例测试用例排序选择方法及系统,在传统测试用例排序选择技术的基础上,增加对不同构建的区分能力,并提供相应的实验结果分析工具。该工具的使用包括训练阶段和工作阶段,训练阶段收集历史信息,训练机器学习模型;工作阶段进行基于机器学习的动态比例测试用例排序选择工作。
本发明采用的技术方案如下:
一种基于机器学习的动态比例测试用例排序选择方法,包括以下步骤:
采集待测程序的历史版本执行结果并制作训练样本,使用不同程序的训练样本组成通用训练集,利用该通用训练集训练机器学习模型;
采集待测程序的测试用例信息,对测试用例信息进行优先度计算,生成测试用例排序列表;
使用机器学习模型预测测试结果,计算动态测试用例选择比例;
根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行。
进一步地,待测程序的历史版本执行结果包括:程序版本的代码改变信息、构建的测试结果、构建的必要测试时间、各测试用例的执行结果和执行时间。
进一步地,制作训练样本的方法为:使用程序版本的代码改变信息作为训练集,使用构建的测试结果和构建的必要测试时间分别作为测试集,由该训练集和测试集构成训练样本。
进一步地,训练机器学习模型的方法为:共训练两组机器学习模型,均使用程序版本的代码改变信息作为训练集,第一组机器学习模型为构建测试失败预测模型,预测构建的测试结果,使用构建的测试结果作为标签;第二组机器学习模型为必要测试比例预测模型,预测使用测试用例排序的前提下,检测到第一个失败测试用例所必需的测试时间比例,该模型使用构建的必要测试时间作为标签。
进一步地,所述待测程序的测试用例信息包括:测试用例名称、版本发生修改的文件名称、测试用例的历史执行时间和测试用例的历史执行结果。
进一步地,对待测程序的测试用例信息进行优先度计算,生成测试用例排序列表的步骤包括:
根据测待测程序的测试用例信息的文本相似度,生成测试用例的各组分的优先度;
根据构建的所有测试用例的各组分的优先度的统计分布,对各组分的优先度进行归一化;
对于每个测试用例,累加其不同组分的归一化的优先度数值,得到总优先度;
基于总优先度对测试用例进行降序排列,得到测试用例排序列表。
进一步地,使用三个组分计算测试用例的优先度,包括:第一个组分为历史执行结果,使用历史中的失败次数除以总的执行次数作为该组分的优先度;第二个组分是执行时间,对于测试用例执行时间t,当前版本包含的所有测试用例的最大执行事件max(t),其优先度为1-(t/max(t));第三个组分是文本相似度,使用TF-IDF方法计算测试用例名和发生修改的文件名之间的相似度。
进一步地,使用机器学习模型预测测试结果,计算动态测试用例选择比例,包括:
对于每一个构建,对其测试结果进行预测;
如果预测结果为构建测试失败,则对其进行完全测试,即以全部作为动态测试用例选择比例;
如果预测结果为构建测试成功,则进一步使用必要测试比例预测模型进行预测,使用预测的必要测试比例作为其动态测试用例选择比例。
进一步地,根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行,包括:
获取测试用例集,读取其中包含的测试用例的历史执行时间,加和后作为总测试时间的估计值;使用该总测试时间的估计值与动态测试用例选择比例相乘,得到测试时间上限;
按照测试用例排序列表,基于优先度降序执行测试用例;
执行测试用例过程中记录测试时间,如果测试时间超过测试时间上限,则停止错误过程;
测试过程中如果发现失败测试用例,则取消测试时间上限,改为执行全部测试用例。
一种基于机器学习的动态比例测试用例排序选择系统,其包括机器学习模型训练模块、测试用例信息采集模块、测试用例排序模块、动态测试比例计算模块和动态测试选择模块;其中,
机器学习模型训练模块:对于训练阶段的构建,采集待测程序的历史版本执行结果并制作训练样本,该待测程序的历史版本执行结果包括程序版本的代码改变信息、构建的测试结果、构建的必要测试时间、各测试用例的执行结果和执行时间,使用不同程序的训练样本组成通用训练集,利用该通用训练集进行机器学习模型的训练;
测试用例信息采集模块:用于对待测程序的测试用例信息进行采集和存储,包括:使用版本管理工具收集构建所对应的程序版本发生修改的文件名称,获取该程序版本下的测试用例文件名;根据构建日志,记录测试用例的历史执行时间及测试用例的历史执行结果;根据执行结果保持测试用例历史执行时间及历史执行结果的更新;
测试用例排序模块:用于根据测试用例的历史执行时间、测试用例的历史执行结果、测试用例名称与版本发生修改的文件名称之间的文本相似度,生成测试用例的各组分的优先度;基于构建的所有测试用例的各组分的优先度结果的统计分布,对各组分优先度进行归一化处理;对于每个测试用例,累加其不同组分的归一化的优先度数值,获得总优先度;然后基于总优先度,对测试用例进行降序排列,得到测试用例排序列表;
动态测试比例计算模块:用于对于每一个构建,对其测试结果进行预测;如果预测结果为构建测试失败,则对其进行完全测试,即以全部作为动态测试用例选择比例;如果预测结果为构建测试成功,则进一步使用必要测试比例预测模型进行预测,使用预测的必要测试比例作为其动态测试用例选择比例;
动态测试选择模块:用于根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行,包括:获取测试用例集,读取其中包含的测试用例的历史执行时间,加和后作为总测试时间的估计值;使用该总测试时间的估计值与动态测试用例选择比例相乘,得到测试时间上限;按照测试用例排序列表,基于优先度降序执行测试用例;执行测试用例过程中记录测试时间,如果测试时间超过测试时间上限,则停止错误过程;测试过程中如果发现失败测试用例,则取消测试时间上限,改为执行全部测试用例。
本发明与现有技术相比的优点在于:
(1)对不同的构建提供不同的测试比例,提高了对不同构建的针对性;
(2)使用动态测试比例代替跳过方法,提高了对假阴性结果的容忍度;
(3)计算流程可编辑:实验中,机器学习模型和测试用例排序方法可以在控制脚本中修改,不需要修改代码结构,提高工具灵活性。
附图说明
图1为一种基于机器学习的动态比例测试用例排序选择系统结构图;
图2为一种机器学习模型训练流程图;
图3为一种机器学习模型特征表;
图4为一种测试用例信息采集流程图;
图5为一种测试用例排序流程图;
图6为一种动态测试比例计算流程图;
图7为一种动态测试选择流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步说明。
如图1所示为一种基于机器学习的动态比例测试用例排序选择系统结构图,本实施例基于Ubuntu 18.04LTS操作系统平台,对持续集成中的程序进行动态比例的测试用例排序选择工作。平台使用csv文件存储采集的中间信息。更具体地,包含以下几个模块:机器学习模型训练模块、测试用例信息采集模块、测试用例排序模块、动态测试比例计算模块和动态测试选择模块,另外还可选择性地增加一实验分析模块。
(1)由于工具基于机器学习方法,机器学习模型需要使用一部分数据进行训练。工具分为训练阶段和工作阶段。训练阶段使用历史版本作为训练集,获得机器学习模型。工作阶段对待测版本进行动态比例的测试用例排序选择,并进行实验结果的分析。
(2)在训练阶段,对于历史构建对应的程序版本,读取Travis CI构建日志,获取其历史信息,得到构建信息文件、构建测试用例执行结果文件,保存在csv文件中。使用各程序的训练集,整合得到总训练集。为了消除不同程序自身特征产生的系统偏差,对训练集进行了项目归一化处理。然后,使用XGBoost方法,训练得到机器学习模型。训练得到的模型使用pickle工具保存,以备后续工作阶段使用。
(3)在工作阶段,对于每一个构建,工具会基于机器学习模型和测试用例排序选择技术,对该构建进行动态地测试用例选择。工具对程序的测试用例计算优先度,然后使用机器学习模型计算动态的测试用例执行比例,然后根据优先度降序执行测试用例。排序过程中,会首先计算三种组分优先度,归一化后得到总优先度。机器学习方面,工具使用训练阶段得到的两个模型,为每一个构建提供一个动态的测试比例。
(4)用户可以对测试用例动态排序选择的实验结果进行进一步分析。实验平台以平均节省比例和平均召回率作为指标,评估方法的有效性。为了研究各组成部分的作用,该工具可以选择使用的机器学习模型和测试用例排序方法。实验平台可以使用现有技术进行实验,和本发明进行实验效果的对比。
上述实现过程具体实施如下:
1.机器学习模型训练模块
该模块的实现过程如图2所示:
(1)模块输入为待测程序历史版本的构建信息,信息源为构建日志;
(2)基于TravisTorrent数据集的方法,分析程序版本间的特征变化,组建为特征集合用于后续训练,如图3所示。
(3)收集模型标签信息。本发明两组机器学习模型。第一组是构建测试失败预测模型。基于构建日志获取历史版本的测试用例执行结果,如果包含失败测试用例,则标记为构建测试失败,否则标记为测试成功。第二组是必要测试比例预测模型。对每一个构建,指定一种测试用例排序方法,按该方法排序时,检测到第一个失败测试用例的时间时必要测试时间,执行所有测试用例的时间为总测试时间。测试时间信息由构建日志获得。必要测试时间和总测试时间的比值为必要测试比例,即第二组模型的训练标签。
(4)对特征进行项目归一化。为了保证训练集效果,训练集由多个待测程序的历史版本信息构成。对于每个特征,在每个程序项目内统计其特征值的平均值和标准差,基于此进行归一化。
(5)模型训练部分,本发明训练两组机器学习模型。两组模型均使用项目归一化得到的特征集合。构建测试失败预测是一个分类问题,仅包含两种标签,使用XGBClassifier作为模型,交叉熵作为损失函数进行训练;必要测试比例预测是一个回归任务,其标签为0到1之间的连续值,使用XGBRegressor作为模型,均方误差作为损失函数进行训练。
2.测试用例信息采集模块
该模块的实现过程如图4所示:
(1)模块输入为一个程序版本的测试用例信息。该部分由两部分来源,一部分为训练阶段的历史版本,由读取日志获得测试用例信息;另一部分为工作阶段的测试用例信息更新,由程序测试用例选择执行的输出结果获得信息。
(2)模块收集该程序版本的相关文本信息。具体包括,发生修改的文件名,可以使用git工具分析得到;该版本包含的所有测试用例文件名。本方法中,测试用例排序使用文件粒度,因此直接使用文件名作为测试用例的文本信息。
(3)模块收集记录测试用例的历史执行结果。对于每个测试用例,程序采集其两个方面的信息,一个是该测试用例是否是失败测试用例,即其是否检测到程序中存在的错误;另一个是该测试用例的执行时间。
(4)模块对测试用例信息进行更新记录。对于每个程序项目,该模块使用哈希表建立测试用例名到历史信息的映射。对于一个新的测试用例,则在哈希表中新建一个记录。对于每个测试用例,模块使用列表维护其历史执行结果和执行时间。更新该测试用例的记录时,在列表末尾添加最新一次执行的结果。
3.测试用例排序模块
该模块的实现过程如图5所示:
(1)该部分输入为测试用例信息,即各测试用例的名称、历史执行结果和历史执行时间。
(2)该模块使用三个组分计算测试用例的优先度。第一个组分为历史执行结果,其假设为,曾检测到程序中错误的测试用例,更有可能再次检测到失败测试用例。其计算方法为,使用历史中的失败次数除以总的执行次数,作为优先度。第二个组分是执行时间。由于测试用例的真实执行时间未知,因此使用其上一次测试时的执行时间作为代替。假设测试用例执行时间为t,该版本包含的所有测试用例的最大执行事件为max(t),则其优先度为1-(t/max(t))。第三个组分是文本相似度,使用TF-IDF方法,计算测试用例名和发生修改的文件名之间的相似度。
(3)模块对三种组分进行整合。首先进行归一化处理。对于每个组分,假设测试用例优先度为p,该构建中所有测试用例该组分最大值为max(p),则归一化优先度为p/max(p)。然后,对三种组分进行加和,得到总优先度。使用归一化原因在于,防止一种组分对结果产生过于明显的影响。
(4)根据总优先度降序排列,得到测试用例排序列表。
4.动态测试比例计算模块
该模块的实现过程如图6所示:
(1)使用机器学习模型进行预测。对于当前待测程序的待测版本,使用机器学习模型进行预测,分别得到其构建测试结果和必要测试比例的预测结果。
(2)基于以上预测结果,计算其动态测试比例。如果分类模型预测结果为构建测试失败,则执行全部测试用例,即测试比例为无限大。(之所以使用无限大,是因为总测试时间为根据测试历史估计的值,实际的总测试时间可能大于估计值。)如果预测结果为构建测试成功,则使用必要测试比例预测模型的输出结果作为动态测试比例。
5.动态测试选择模块
该模块的实现过程如图7所示:
(1)基于动态测试比例,计算测试时间上限。获得测试用例排序列表后,使用测试用例的上一次执行时间,作为其本次执行时间的估计值,然后求和得到估计的总测试时间。使用估计的总测试时间和动态测试比例相乘,得到测试时间上限。初始化测试时间为0。
(2)执行测试用例排序列表中最优先的测试用例,然后从列表中移除该项。
(3)判断测试过程是否结束。如果测试用例排序列表为空,即所有测试用例已经执行,结束测试。如果已经出现失败测试用例,则测试结果修正为构建测试失败,不结束测试。否则,将测试时间与上一个执行的测试用例的执行时间相加,如果大于测试时间上限,结束测试;反之不结束测试。如果不结束测试,返回步骤(2)执行。
(4)获得该构建测试结果,包括每个测试用例是否执行、测试结果、执行时间信息,输入实验分析模块,同时反馈测试用例信息采集模块,以更新测试用例的历史执行结果,以供后续的测试用例排序环节中使用。
6.结果分析模块
对待测程序进行测试用例排序选择后,可以获得每个构建的执行结果。对于每个构建,其实际执行的测试时间,占实际所有测试用例执行时间之和的比例,即为其测试时间比例;使用1减测试时间比例,即为节省时间比例;检测到的失败测试用例个数,占所有失败测试用例的比例,即为召回率。所有构建的节省时间比例和检测比例的平均值,即为平均节省比例和平均召回率。相同的平均节省比例下,平均召回率越高,则该技术的检测失败测试用例的能力越强。
在评价实验中,为了评估方法的有效性,使用来自超过100个程序项目的约115000个版本进行实验。实验工具可以对比本实验方法和现有技术的实验效果,确定性能的差异。
表1展示了本方法在实际工程中的实验效果。行名Retecs和COLEMAN是现有的测试用例排序选择技术,SBS是现有的构建测试失败预测技术。DTS是本工具的方法名称,本实施例同时使用两种模型,作为分类模型的构建测试失败预测模型和作为回归模型的必要测试比例预测模型。DTSclf是仅使用分类模型的方法,DTSreg是仅使用回归模型的方法,DTSmix是同时使用两种模型的方法。横坐标是三种指标,其中综合效率是前两行的调和平均数。由表格可知,在相近的节省比例下,本方法的平均召回率显著高于现有技术,证明了本方法的有效性。
表1.实验结果
方法 | 平均节省比例 | 平均召回率 | 综合效率 |
DTSclf | 0.490 | 0.879 | 0.629 |
DTSreg | 0.487 | 0.837 | 0.616 |
DTSmix | 0.488 | 0.886 | 0.629 |
Retecs | 0.487 | 0.671 | 0.565 |
COLEMAN | 0.487 | 0.677 | 0.567 |
SBS | 0.495 | 0.698 | 0.579 |
以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定,不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (9)
1.一种基于机器学习的动态比例测试用例排序选择方法,其特征在于,包括以下步骤:
采集待测程序的历史版本执行结果并制作训练样本,使用不同程序的训练样本组成通用训练集,利用该通用训练集训练机器学习模型;
采集待测程序的测试用例信息,对测试用例信息进行优先度计算,生成测试用例排序列表;
使用机器学习模型预测测试结果,计算动态测试用例选择比例,包括:如果预测结果为构建测试失败,则对其进行完全测试,即以全部作为动态测试用例选择比例;如果预测结果为构建测试成功,则进一步使用必要测试比例预测模型进行预测,使用预测的必要测试比例作为其动态测试用例选择比例;其中对于每一个构建,指定一种测试用例排序方法,按该方法排序时,检测到第一个失败测试用例的时间为必要测试时间,执行所有测试用例的时间为总测试时间,则必要测试时间和总测试时间的比值为所述必要测试比例;
根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行。
2.如权利要求1所述的方法,其特征在于,待测程序的历史版本执行结果包括:程序版本的代码改变信息、构建的测试结果、构建的必要测试时间、各测试用例的执行结果和执行时间。
3.如权利要求2所述的方法,其特征在于,制作训练样本的方法为:使用程序版本的代码改变信息作为训练集,使用构建的测试结果和构建的必要测试时间分别作为测试集,由该训练集和测试集构成训练样本。
4.如权利要求3所述的方法,其特征在于,训练机器学习模型的方法为:共训练两组机器学习模型,均使用程序版本的代码改变信息作为训练集,第一组机器学习模型为构建测试失败预测模型,预测构建的测试结果,使用构建的测试结果作为标签;第二组机器学习模型为必要测试比例预测模型,预测使用测试用例排序的前提下,检测到第一个失败测试用例所必需的测试时间比例,该模型使用构建的必要测试时间作为标签。
5.如权利要求1所述的方法,其特征在于,所述待测程序的测试用例信息包括:测试用例名称、版本发生修改的文件名称、测试用例的历史执行时间和测试用例的历史执行结果。
6.如权利要求1或5所述的方法,其特征在于,对待测程序的测试用例信息进行优先度计算,生成测试用例排序列表的步骤包括:
根据测待测程序的测试用例信息的文本相似度,生成测试用例的各组分的优先度;
根据构建的所有测试用例的各组分的优先度的统计分布,对各组分的优先度进行归一化;
对于每个测试用例,累加其不同组分的归一化的优先度数值,得到总优先度;
基于总优先度对测试用例进行降序排列,得到测试用例排序列表。
7.如权利要求6所述的方法,其特征在于,使用三个组分计算测试用例的优先度,包括:第一个组分为历史执行结果,使用历史中的失败次数除以总的执行次数作为该组分的优先度;第二个组分是执行时间,对于测试用例执行时间t,当前版本包含的所有测试用例的最大执行时间max(t),其优先度为1-(t/max(t));第三个组分是文本相似度,使用TF-IDF方法计算测试用例名和发生修改的文件名之间的相似度。
8.如权利要求1所述的方法,其特征在于,根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行,包括:
获取测试用例集,读取其中包含的测试用例的历史执行时间,加和后作为总测试时间的估计值;使用该总测试时间的估计值与动态测试用例选择比例相乘,得到测试时间上限;
按照测试用例排序列表,基于优先度降序执行测试用例;
执行测试用例过程中记录测试时间,如果测试时间超过测试时间上限,则停止错误过程;测试过程中如果发现失败测试用例,则取消测试时间上限,改为执行全部测试用例。
9.一种基于机器学习的动态比例测试用例排序选择系统,其特征在于,包括机器学习模型训练模块、测试用例信息采集模块、测试用例排序模块、动态测试比例计算模块和动态测试选择模块;其中,
机器学习模型训练模块:对于训练阶段的构建,采集待测程序的历史版本执行结果并制作训练样本,该待测程序的历史版本执行结果包括程序版本的代码改变信息、构建的测试结果、构建的必要测试时间、各测试用例的执行结果和执行时间,使用不同程序的训练样本组成通用训练集,利用该通用训练集进行机器学习模型的训练;
测试用例信息采集模块:用于对待测程序的测试用例信息进行采集和存储,包括:使用版本管理工具收集构建所对应的程序版本发生修改的文件名称,获取该程序版本下的测试用例文件名;根据构建日志,记录测试用例的历史执行时间及测试用例的历史执行结果;根据执行结果保持测试用例历史执行时间及历史执行结果的更新;
测试用例排序模块:用于根据测试用例的历史执行时间、测试用例的历史执行结果、测试用例名称与版本发生修改的文件名称之间的文本相似度,生成测试用例的各组分的优先度;基于构建的所有测试用例的各组分的优先度结果的统计分布,对各组分优先度进行归一化处理;对于每个测试用例,累加其不同组分的归一化的优先度数值,获得总优先度;然后基于总优先度,对测试用例进行降序排列,得到测试用例排序列表;
动态测试比例计算模块:用于对于每一个构建,对其测试结果进行预测;如果预测结果为构建测试失败,则对其进行完全测试,即以全部作为动态测试用例选择比例;如果预测结果为构建测试成功,则进一步使用必要测试比例预测模型进行预测,使用预测的必要测试比例作为其动态测试用例选择比例;其中对于每一个构建,指定一种测试用例排序方法,按该方法排序时,检测到第一个失败测试用例的时间为必要测试时间,执行所有测试用例的时间为总测试时间,则必要测试时间和总测试时间的比值为所述必要测试比例;
动态测试选择模块:用于根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行,包括:获取测试用例集,读取其中包含的测试用例的历史执行时间,加和后作为总测试时间的估计值;使用该总测试时间的估计值与动态测试用例选择比例相乘,得到测试时间上限;按照测试用例排序列表,基于优先度降序执行测试用例;执行测试用例过程中记录测试时间,如果测试时间超过测试时间上限,则停止错误过程;测试过程中如果发现失败测试用例,则取消测试时间上限,改为执行全部测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110901585.4A CN113672506B (zh) | 2021-08-06 | 2021-08-06 | 基于机器学习的动态比例测试用例排序选择方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110901585.4A CN113672506B (zh) | 2021-08-06 | 2021-08-06 | 基于机器学习的动态比例测试用例排序选择方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672506A CN113672506A (zh) | 2021-11-19 |
CN113672506B true CN113672506B (zh) | 2023-06-13 |
Family
ID=78541752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110901585.4A Active CN113672506B (zh) | 2021-08-06 | 2021-08-06 | 基于机器学习的动态比例测试用例排序选择方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672506B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253867B (zh) * | 2022-03-02 | 2022-06-14 | 北京仁科互动网络技术有限公司 | 基于神经网络模型的自动化测试方法、装置及系统 |
WO2023240589A1 (en) * | 2022-06-17 | 2023-12-21 | Nokia Shanghai Bell Co., Ltd. | Apparatus, method and computer program |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109816A (zh) * | 2018-02-01 | 2019-08-09 | 华为技术有限公司 | 测试用例选择方法和装置 |
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
CN111274126A (zh) * | 2020-01-14 | 2020-06-12 | 华为技术有限公司 | 测试用例筛选方法、装置及介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866317B (zh) * | 2010-06-29 | 2012-07-25 | 南京大学 | 一种基于聚类分析的回归测试用例选择方法 |
CN101908020B (zh) * | 2010-08-27 | 2012-05-09 | 南京大学 | 一种基于分类挖掘和版本变更的测试用例优先化方法 |
US20150378879A1 (en) * | 2014-06-30 | 2015-12-31 | Li Ding | Methods, software, and systems for software testing |
CN106776290B (zh) * | 2016-11-28 | 2020-05-22 | 北京一铭铭鑫软件有限公司 | 一种增量学习的智能持续集成测试方法 |
CN107577603B (zh) * | 2017-08-31 | 2019-11-12 | 中国科学院软件研究所 | 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法 |
US10474562B2 (en) * | 2017-09-20 | 2019-11-12 | Salesforce.Com | Machine learning based ranking of test cases for software development |
CN109976990A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | 一种用于确认软件测试用例优先级的方法及系统 |
CN108228469B (zh) * | 2018-02-23 | 2021-10-08 | 科大讯飞股份有限公司 | 测试用例选取方法及装置 |
CN110134588B (zh) * | 2019-04-16 | 2023-10-10 | 江苏大学 | 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统 |
KR102226204B1 (ko) * | 2019-06-11 | 2021-03-11 | 한국원자력연구원 | 시험용 테스트 케이스 생성 장치 및 방법 |
US11119895B2 (en) * | 2019-08-19 | 2021-09-14 | International Business Machines Corporation | Risk-focused testing |
US11249887B2 (en) * | 2019-08-27 | 2022-02-15 | Nec Corporation | Deep Q-network reinforcement learning for testing case selection and prioritization |
CN110633222B (zh) * | 2019-11-01 | 2023-01-20 | 中国银行股份有限公司 | 一种回归测试用例的确定方法及装置 |
CN111427802B (zh) * | 2020-06-09 | 2021-06-22 | 南京大学 | 利用集成学习进行测试用例优先级排序的测试方法和系统 |
CN111597121B (zh) * | 2020-07-24 | 2021-04-27 | 四川新网银行股份有限公司 | 一种基于历史测试用例挖掘的精准测试方法 |
CN112559365A (zh) * | 2020-12-23 | 2021-03-26 | 上海品顺信息科技有限公司 | 一种测试用例筛选方法、装置、计算机设备和存储介质 |
CN112948274A (zh) * | 2021-04-21 | 2021-06-11 | 深圳前海微众银行股份有限公司 | 测试用例评分模型训练方法和测试用例选择方法 |
-
2021
- 2021-08-06 CN CN202110901585.4A patent/CN113672506B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109816A (zh) * | 2018-02-01 | 2019-08-09 | 华为技术有限公司 | 测试用例选择方法和装置 |
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
CN111274126A (zh) * | 2020-01-14 | 2020-06-12 | 华为技术有限公司 | 测试用例筛选方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113672506A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108345544B (zh) | 一种基于复杂网络的软件缺陷分布影响因素分析方法 | |
US20200349169A1 (en) | Artificial intelligence (ai) based automatic data remediation | |
CN113672506B (zh) | 基于机器学习的动态比例测试用例排序选择方法及系统 | |
US9354867B2 (en) | System and method for identifying, analyzing and integrating risks associated with source code | |
CN108491991B (zh) | 基于工业大数据产品工期的约束条件分析系统与方法 | |
CN106201871A (zh) | 基于代价敏感半监督的软件缺陷预测方法 | |
CN111259947A (zh) | 一种基于多模态学习的电力系统故障预警方法和系统 | |
CN107844414A (zh) | 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法 | |
CN108614778B (zh) | 基于高斯过程回归的安卓App程序演化变更预测方法 | |
Chen et al. | Software process evaluation: A machine learning approach | |
Chang et al. | Integrating in-process software defect prediction with association mining to discover defect pattern | |
CN113010389A (zh) | 一种训练方法、故障预测方法、相关装置及设备 | |
CN110895506A (zh) | 测试数据的构造方法和构造系统 | |
CN112287603A (zh) | 一种基于机器学习的预测模型构建方法、装置和电子设备 | |
Nagwani et al. | A data mining model to predict software bug complexity using bug estimation and clustering | |
KR20210065751A (ko) | 결측값 대체 시스템 및 결측값 대체 방법 | |
Schuh et al. | Event log-based weaknesses detection in business processes | |
KR102647438B1 (ko) | 화학공정의 기저원인 분석 및 이를 이용한 수율 예측 모델링 방법 | |
Singh et al. | An investigation of the effect of discretization on defect prediction using static measures | |
Duan et al. | Process mining of duplicate tasks: A systematic literature review | |
Karthik et al. | Defect association and complexity prediction by mining association and clustering rules | |
CN115599621A (zh) | 微服务异常诊断方法、装置、设备及存储介质 | |
CN112907055A (zh) | 数据处理时效测试方法和装置 | |
JP2010128841A (ja) | プロセス管理システム、管理方法およびプログラム | |
Yi et al. | Novel Approach to Discover Precise Process Model by Filtering out Log Chaotic Activities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |