[发明专利]基于机器学习的动态比例测试用例排序选择方法及系统有效
| 申请号: | 202110901585.4 | 申请日: | 2021-08-06 |
| 公开(公告)号: | CN113672506B | 公开(公告)日: | 2023-06-13 |
| 发明(设计)人: | 李梓劼;崔炳轶;张震宇 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N20/00 |
| 代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 李文涛 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 机器 学习 动态 比例 测试 排序 选择 方法 系统 | ||
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.一种基于机器学习的动态比例测试用例排序选择系统,其特征在于,包括机器学习模型训练模块、测试用例信息采集模块、测试用例排序模块、动态测试比例计算模块和动态测试选择模块;其中,
机器学习模型训练模块:对于训练阶段的构建,采集待测程序的历史版本执行结果并制作训练样本,该待测程序的历史版本执行结果包括程序版本的代码改变信息、构建的测试结果、构建的必要测试时间、各测试用例的执行结果和执行时间,使用不同程序的训练样本组成通用训练集,利用该通用训练集进行机器学习模型的训练;
测试用例信息采集模块:用于对待测程序的测试用例信息进行采集和存储,包括:使用版本管理工具收集构建所对应的程序版本发生修改的文件名称,获取该程序版本下的测试用例文件名;根据构建日志,记录测试用例的历史执行时间及测试用例的历史执行结果;根据执行结果保持测试用例历史执行时间及历史执行结果的更新;
测试用例排序模块:用于根据测试用例的历史执行时间、测试用例的历史执行结果、测试用例名称与版本发生修改的文件名称之间的文本相似度,生成测试用例的各组分的优先度;基于构建的所有测试用例的各组分的优先度结果的统计分布,对各组分优先度进行归一化处理;对于每个测试用例,累加其不同组分的归一化的优先度数值,获得总优先度;然后基于总优先度,对测试用例进行降序排列,得到测试用例排序列表;
动态测试比例计算模块:用于对于每一个构建,对其测试结果进行预测;如果预测结果为构建测试失败,则对其进行完全测试,即以全部作为动态测试用例选择比例;如果预测结果为构建测试成功,则进一步使用必要测试比例预测模型进行预测,使用预测的必要测试比例作为其动态测试用例选择比例;其中对于每一个构建,指定一种测试用例排序方法,按该方法排序时,检测到第一个失败测试用例的时间为必要测试时间,执行所有测试用例的时间为总测试时间,则必要测试时间和总测试时间的比值为所述必要测试比例;
动态测试选择模块:用于根据测试用例排序列表和动态测试用例选择比例,按照降序进行测试用例集的选择执行,包括:获取测试用例集,读取其中包含的测试用例的历史执行时间,加和后作为总测试时间的估计值;使用该总测试时间的估计值与动态测试用例选择比例相乘,得到测试时间上限;按照测试用例排序列表,基于优先度降序执行测试用例;执行测试用例过程中记录测试时间,如果测试时间超过测试时间上限,则停止错误过程;测试过程中如果发现失败测试用例,则取消测试时间上限,改为执行全部测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110901585.4/1.html,转载请声明来源钻瓜专利网。





