用于使用机器学习为软件系统回归测试自动选择测试的方法、系统和计算机程序产品与流程
未命名
07-20
阅读:60
评论:0

1.此公开的主题大体上涉及用于软件系统回归测试的方法、系统和产品,并且在一些特定实施例或方面中,涉及用于为软件系统回归测试自动选择测试的方法、系统和计算机程序产品。
背景技术:
2.软件系统通常需要彻底的验证检查和测试,以确认功能方面满足项目要求。测试还有助于将漏洞和其他不需要的功能减到最少,使得能够高质量地交付软件系统。由于在开发生命周期期间对系统的增量变更的性质,通常需要更加频繁地对软件系统进行质量检查和测试。对于软件系统,质量检查和测试包括回归测试,其执行所有软件测试以检测可能通过增量变更(例如,代码变更、代码签入、投入、集成)引入的漏洞和缺陷。
3.通常,在对软件系统的每次增量变更之后执行回归测试。例如,在软件开发人员对特征的代码变更(例如,新特征、修改、实施)进行集成之后,执行整个回归测试套件以捕获由该特定代码变更引入的任何缺陷。执行整个回归测试套件可能是耗时的,并且当将小的变更集成到系统中时,执行整个套件的益处可能极小。可以在集成代码变更后手动选择特定测试,但这可能消耗大量的时间和资源,并且可能导致测试被错过而不被执行。
4.为了维持系统质量,回归测试的执行应当是系统化的,使得测试与引入系统的代码变更相关,但所执行的测试的数目不过度耗时且不消耗大量资源。对系统的代码变更可能是频繁的,并且可以由多个开发人员在相同时间或不同时间集成。在回归测试套件中执行与每个代码变更无关的测试会消耗时间和资源。
技术实现要素:
5.因此,提供了用于软件系统回归测试的改进的方法、系统和产品。
6.根据一些非限制性实施例或方面,提供了一种计算机实施的方法,包括:利用至少一个处理器生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;利用所述至少一个处理器和至少一个机器学习模型,基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;利用所述至少一个处理器接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;利用所述至少一个处理器和所述至少一个机器学习模型,基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;利用所述至少一个处理器和所述至少一个机器学习模型,基于对应于所述至少一个测试的密钥值来确定所述多个测试中的测试子集;以及利用所述至少一个处理器与所述软件储存库一起执行所述测试子集。
7.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:利用所述至少一个处理器基于所述测试子集的执行来生成测试结果;以及向所述至少一个机器学习
模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
8.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:生成所述测试映射包括:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;以及基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
9.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
10.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:确定所述测试子集包括:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;以及将所述推荐测试子集格式化为可执行格式。
11.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:所述至少一个机器学习模型使用监督学习和预测来确定所述测试子集。
12.在一些非限制性实施例或方面中,所述计算机实施的方法进一步包括:存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。
13.根据一些非限制性实施例或方面,提供了一种系统,包括:测试选择系统;至少一个机器学习模型;软件储存库;以及至少一个处理器,其中,所述至少一个处理器被编程或配置成:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;并且与所述软件储存库一起执行所述测试子集。
14.在一些非限制性实施例或方面中,所述系统进一步包括:所述至少一个处理器被进一步编程或配置成:基于所述测试子集的执行生成测试结果;并且向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
15.在一些非限制性实施例或方面中,所述系统进一步包括:生成所述测试映射,所述至少一个处理器被编程或配置成:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;并且基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
16.在一些非限制性实施例或方面中,所述系统进一步包括:所述至少一个源文件是
新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
17.在一些非限制性实施例或方面中,所述系统进一步包括:当确定所述测试子集时,所述至少一个处理器被编程或配置成:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;并且将所述推荐测试子集格式化为可执行格式。
18.在一些非限制性实施例或方面中,所述系统进一步包括:所述至少一个机器学习模型使用监督学习和预测来确定所述测试子集。
19.在一些非限制性实施例或方面中,所述系统进一步包括:存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。
20.根据一些非限制性实施例或方面,提供了一种计算机程序产品,所述计算机程序产品包括至少一个非暂态计算机可读介质,所述至少一个非暂态计算机可读介质包括一个或多个指令,所述一个或多个指令在由至少一个处理器执行时使所述至少一个处理器:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;并且与所述软件储存库一起执行所述测试子集。
21.在一些非限制性实施例或方面中,所述计算机程序产品进一步包括:所述一个或多个指令进一步使所述至少一个处理器:基于所述测试子集的执行生成测试结果;并且向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
22.在一些非限制性实施例或方面中,所述计算机程序产品进一步包括:当生成所述测试映射时,所述一个或多个指令进一步使所述至少一个处理器:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;并且基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
23.在一些非限制性实施例或方面中,所述计算机程序产品进一步包括:所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
24.在一些非限制性实施例或方面中,所述计算机程序产品进一步包括:当确定所述测试子集时,所述一个或多个指令进一步使所述至少一个处理器:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;并且将所述推荐测试子集格式化为可执行格式。
25.在一些非限制性实施例或方面中,所述计算机程序产品进一步包括:存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。
26.在以下编号条款中阐述另外的实施例或方面:
27.条款1:一种计算机实施的方法,包括:利用至少一个处理器生成测试映射,所述测
试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;利用所述至少一个处理器和至少一个机器学习模型,基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;利用所述至少一个处理器接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;利用所述至少一个处理器和所述至少一个机器学习模型,基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;利用所述至少一个处理器和所述至少一个机器学习模型,基于对应于所述至少一个测试的密钥值来确定所述多个测试中的测试子集;以及利用所述至少一个处理器与所述软件储存库一起执行所述测试子集。
28.条款2:根据条款1所述的计算机实施的方法,进一步包括:利用所述至少一个处理器基于所述测试子集的执行来生成测试结果;以及向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
29.条款3:根据条款1或2所述的计算机实施的方法,其中,生成所述测试映射包括:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;以及基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
30.条款4:根据条款1-3中任一项所述的计算机实施的方法,其中,所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
31.条款5:根据条款1-4中任一项所述的计算机实施的方法,其中,确定所述测试子集包括:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;以及将所述推荐测试子集格式化为可执行格式。
32.条款6:根据条款1-5中任一项所述的计算机实施的方法,其中,所述至少一个机器学习模型使用监督学习和预测来确定所述测试子集。
33.条款7:根据条款1-6中任一项所述的计算机实施的方法,其中,存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。
34.条款8:一种系统,包括:测试选择系统;至少一个机器学习模型;软件储存库;以及至少一个处理器,其中,所述至少一个处理器被编程或配置成:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;并且与所述软件储存库一起执行所述测试子集。
35.条款9:根据条款8所述的系统,其中,所述至少一个处理器被进一步编程或配置成:基于所述测试子集的执行生成测试结果;并且向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
36.条款10:根据条款8或9所述的系统,其中,当生成所述测试映射时,所述至少一个处理器被编程或配置成:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;并且基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
37.条款11:根据条款8-10中任一项所述的系统,其中,所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
38.条款12:根据条款8-11中任一项所述的系统,其中,当确定所述测试子集时,所述至少一个处理器被编程或配置成:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;并且将所述推荐测试子集格式化为可执行格式。
39.条款13:根据条款8-12中任一项所述的系统,其中,所述至少一个机器学习模型使用监督学习和预测来确定所述测试子集。
40.条款14:根据条款8-13中任一项所述的系统,其中,存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。
41.条款15:一种计算机程序产品,所述计算机程序产品包括至少一个非暂态计算机可读介质,所述至少一个非暂态计算机可读介质包括一个或多个指令,所述一个或多个指令在由至少一个处理器执行时使所述至少一个处理器:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;并且与所述软件储存库一起执行所述测试子集。
42.条款16:根据条款15所述的计算机程序产品,其中,所述一个或多个指令进一步使所述至少一个处理器:基于所述测试子集的执行生成测试结果;并且向至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。
43.条款17:根据条款15或16所述的计算机程序产品,其中,当生成所述测试映射时,所述一个或多个指令进一步使所述至少一个处理器:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;并且基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。
44.条款18:根据条款15-17中任一项所述的计算机程序产品,其中,所述至少一个源
文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。
45.条款19:根据条款15-18中任一项所述的计算机程序产品,其中,当确定所述测试子集时,所述一个或多个指令进一步使所述至少一个处理器:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;并且将所述推荐测试子集格式化为可执行格式。
46.条款20:根据条款15-19中任一项所述的计算机程序产品,其中,存储在所述数据库中的映射文件用作至少一个机器学习模型的输入以进行进一步训练。
47.在参考附图考虑以下描述和所附权利要求书之后,当前公开的主题的这些和其它特征和特性,以及相关结构元件和各部分组合的操作方法和功能以及制造经济性将变得更加显而易见,所有附图形成本说明书的部分,其中相同的附图标记表示各图中的对应部分。然而,应明确地理解,图式仅出于说明和描述目的,并非旨在作为所公开主题的限制的定义。除非上下文另外明确规定,否则在本说明书和权利要求书中所用时,单数形式“一”及“所述”包括多个指示物。
附图说明
48.下文参考附图中示出的示例性实施例或方面更详细地解释所公开主题的额外优点和细节,在附图中:
49.图1是根据一些非限制性实施例或方面的用于使用机器学习为软件系统回归测试自动选择测试的系统的示意图;
50.图2是根据一些非限制性实施例或方面的用于使用机器学习为软件系统回归测试自动选择测试的示例性测试选择系统的示意图;
51.图3是根据当前公开的主题的原理的用于使用机器学习为软件系统回归测试自动选择测试的过程的非限制性实施例或方面的流程图;
52.图4是图1的一个或多个装置的部件的非限制性实施例或方面的图;以及
53.图5是根据一些非限制性实施例或方面的用于使用机器学习为软件系统回归测试自动选择测试的测试选择系统的部件的示意图。
具体实施方式
54.下文出于描述的目的,术语“端”、“上”、“下”、“右”、“左”、“竖直”、“水平”、“顶部”、“底部”、“横向”、“纵向”以及其衍生词应涉及所公开主题如其在附图中的定向。然而,应理解,除了明确指定相反情况之外,所公开主题可以采用各种替代变化和步骤序列。还应理解,附图中示出的以及在以下说明书中描述的特定装置和过程仅仅是所公开主题的示例性实施例或方面。因此,除非另有指示,否则与本文公开的实施例或方面相关联的特定维度和其它物理特性不应被视为限制。
55.本文所使用的方面、组件、元件、结构、动作、步骤、功能、指令等都不应当被理解为关键的或必要的,除非明确地如此描述。并且,如本文所使用,冠词“一”希望包括一个或多个项目,且可与“一个或多个”和“至少一个”互换使用。此外,如本文所使用,术语“集合”希望包括一个或多个项目(例如,相关项目、不相关项目、相关项目与不相关项目的组合等),并且可与“一个或多个”或“至少一个”互换使用。在希望仅有一个项目的情况下,使用术语“一个”或类似语言。且,如本文所使用,术语“具有”等希望是开放式术语。另外,除非另外明确陈述,否则短语“基于”希望意味着“至少部分地基于”。
56.如本文所使用,术语“通信”和“传送”可指信息(例如,数据、信号、消息、指令、命令等)的接收、接受、发送、传送、提供等。一个单元(例如,装置、系统、装置或系统的组件、其组合等)与另一单元通信意味着所述一个单元能够直接或间接地从所述另一单元接收信息和/或向所述另一单元发送信息。这可以指代在本质上有线和/或无线的直接或间接连接(例如,直接通信连接、间接通信连接等)。另外,尽管所发送的信息可以在第一单元与第二单元之间被修改、处理、中继和/或路由,但这两个单元也可以彼此通信。例如,即使第一单元被动地接收信息且不会主动地将信息发送到第二单元,第一单元也可以与第二单元通信。作为另一示例,如果至少一个中间单元(例如,位于第一单元与第二单元之间的第三单元)处理从第一单元接收的信息且将处理后的信息传送到第二单元,则第一单元可以与第二单元通信。在一些非限制性实施例或方面中,消息可以指代包括数据的网络分组(例如,数据分组等)。应了解,可能有许多其它布置。
57.如本文所使用,术语“计算装置”可以指被配置成处理数据的一个或多个电子装置。在一些示例中,计算装置可以包括接收、处理和输出数据的必要组件,例如处理器、显示器、存储器、输入装置、网络接口等。计算装置可以是移动装置。作为示例,移动装置可以包括蜂窝电话(例如,智能手机或标准蜂窝电话)、便携式计算机、可穿戴装置(例如,手表、眼镜、镜片、服装等)、个人数字助理(pda),和/或其它类似装置。计算装置还可以是台式计算机或其它形式的非移动计算机。
58.如本文所使用,术语“服务器”可指代经由网络(例如,公用网络、因特网、专用网络等)与客户端装置和/或其它计算装置通信且在一些示例中促进其它服务器和/或客户端装置之间的通信的一个或多个计算装置(例如,处理器、存储装置、类似的计算机组件等)。应了解,可能有各种其它布置。
59.如本文所使用,术语“系统”可指代一个或多个计算装置或计算装置的组合(例如,处理器、服务器、客户端装置、软件应用程序、这些计算装置的组件等)。如本文所使用对“装置”、“服务器”、“处理器”等的提及可指代陈述为执行先前步骤或功能的先前陈述的装置、服务器或处理器、不同的服务器或处理器,和/或服务器和/或处理器的组合。例如,如说明书和权利要求书所使用,陈述为执行第一步骤或第一功能的第一服务器或第一处理器可指代陈述为执行第二步骤或第二功能的相同或不同服务器或相同或不同处理器。
60.所公开主题的非限制性实施例或方面涉及用于自动测试选择,包括但不限于使用机器学习为软件系统回归测试自动选择测试的系统、方法和计算机程序产品。例如,所公开主题的非限制性实施例或方面提供:生成包括测试(例如,测试文件、测试案例、测试对象、测试方法等)的测试映射,所述测试对应于源文件(例如,源代码、源代码文件、项目文件等),其中,测试和源文件包括在软件储存库(例如,代码储存库、项目、代码项目、软件项目等)中;基于历史测试数据确定每个测试的缺陷得分,所述历史测试数据包括测试失败(例如,先前的测试失败、记录的测试失败、存储的测试失败等)和测试执行(例如,先前的测试执行、记录的测试执行、存储的测试执行等);接收对应于源文件的部件(例如,软件部件、系统部件等)关键性得分和缺陷定义;基于缺陷得分、部件关键性得分和缺陷定义生成对应于测试映射的至少一个条目的关键值;基于对应于测试映射的至少一个条目的关键值确定测
试子集;以及与软件储存库一起执行(例如,运行等)测试子集。此类实施例提供了技术和系统,所述技术和系统使用机器学习从用于回归测试的系统测试套件自动选择测试以实现最大代码覆盖度,同时在软件储存库中基于检测到的代码变更(例如,代码签入、投入、文件变更、推送的变更、代码集成等)来仅执行所需的测试。此类实施例可以改进软件开发项目中的连续集成活动,并且在集成代码变更时需要更少的计算资源来测试软件储存库。此类实施例可以减少在软件储存库内执行回归测试所需的时间量。此类实施例可以允许训练机器学习模型以基于先前的测试选择和先前的测试执行来持续改进测试选择。此类实施例可以选择对应于待集成的检测到的代码变更的测试,并且允许为每个检测到的代码变更选择最相关的测试。此类实施例可以在持续集成流水线中实现产品质量的改进,其中,对软件储存库的变更被频繁集成。
61.出于说明的目的,在以下描述中,虽然关于用于自动测试选择(例如,用于软件系统回归测试)的方法、系统和计算机程序产品描述了当前公开的主题,但本领域的技术人员将认识到所公开主题不限于说明性实施例或方面。例如,本文所述的方法、系统和计算机程序产品可以与各种各样的设置一起使用,所述各种各样的设置是例如适合于使用此类自动测试选择的任何设置(例如,使用测试来测试系统的任何应用程序)中的软件系统和/或集成软件硬件系统。
62.现在参考图1,图1是根据一些非限制性实施例或方面的用于为软件系统回归测试自动选择测试的系统100的示意图。系统100可以包括测试选择系统102、机器学习模型104和软件储存库106。测试选择系统102可以包括一个或多个计算装置,其执行被配置成在软件开发中连续集成的一个或多个软件应用程序。连续集成可以包括应用代码变更、使用版本控制系统检测代码变更、将代码变更集成到软件储存库106中、将软件储存库106构建到可执行软件项目中、与可执行项目一起执行测试等。测试选择系统102可以与机器学习模型104和软件储存库106通信。在一些非限制性实施例或方面中,测试选择系统102可以包括机器学习模型104和软件储存库106,并且可以在同一台计算装置上执行。在其他非限制性实施例或方面中,测试选择系统102、机器学习模型104和软件储存库106的每一个可以驻留在一个或多个单独的计算装置上并且在一个或多个单独的计算装置上执行,并且可以经由通信网络通信。在一些非限制性实施例或方面中,测试选择系统102可以包括驻留在一个或多个计算装置上的一个或多个存储部件,或者可以与所述一个或多个存储部件通信。
63.机器学习模型104可以包括人工智能模型(例如,人工神经网络、卷积神经网络、深度学习模型等)。机器学习模型104可以与测试选择系统102和软件储存库106通信。机器学习模型104可以与驻留在一个或多个计算装置上的一个或多个存储部件408通信。
64.软件储存库106可以包括对应于软件项目的文件,例如源文件、测试文件等。软件储存库106可以驻留在一个或多个计算装置上,并且可能能够经由通信网络从一个计算装置传送和复制到另一计算装置。软件储存库106可以与驻留在一个或多个计算装置上的一个或多个数据库通信。
65.现在参考图2,图2是用于使用机器学习为软件系统回归测试自动选择测试的测试选择系统。测试选择系统200可以包括软件储存库202、测试204、源文件206、测试列表208、源文件列表210、测试映射212、机器学习模型214、数据库216、映射文件218和测试结果220。
66.如图2所示,软件储存库202可以包括测试204和源文件206。软件储存库202可以与
软件储存库106相同或相似。在一些非限制性实施例或方面中,软件储存库202可以结合版本控制系统操作。例如,软件储存库202可以结合或工作。软件储存库202可以结合其它版本控制系统操作,使得能够检测软件储存库202内的代码变更。在一些非限制性实施例或方面中,软件储存库202可以结合自动化服务器(例如,)操作。出于测试和开发的目的,软件储存库202可能能够被复制(例如,克隆)。软件储存库202可以作为同时驻留在不同计算装置上的多个副本存在。软件储存库202可以作为多个不同版本(例如,包括版本之间的不同代码变更)存在,并且不同版本可以驻留在不同计算装置(例如装置400)上。
67.测试204可以包括软件测试(例如,测试文件、测试案例、测试方法、自动化脚本等)。测试204可以包括新开发的测试、回归测试、单元测试、部件测试、集成测试等。在一些非限制性实施例或方面中,测试204可以分为多种类别的测试。测试204可以分组为程序包、文件、模块或类似分组策略。测试204可以用任何合适的软件语言编写,只要测试204可以格式化为可执行格式并由处理器404执行即可。当改变或编辑测试204时,版本控制系统可以检测到对测试204的代码变更。对测试204的代码变更可以包括删除测试、编辑测试、重命名测试或创建新测试。
68.继续参考图2,源文件206可以包括新开发的源文件、定义文件、实施文件、类文件、配置文件、文档文件、用户界面文件等。源文件206可以分组为程序包、部件、模块或类似分组策略。在一些非限制性实施例或方面中,部件可以由单个源文件206涵盖。源文件206可以用任何合适的软件语言编写,只要源文件206可以由计算装置解释并且格式化为可执行格式并由处理器404执行即可。当改变或编辑源文件206时,版本控制系统可以检测到对源文件206的代码变更。对源文件206的代码变更可以包括删除源文件、编辑源文件、重命名源文件或创建新源文件。
69.测试列表208可以包括测试名称、测试文件名或其它合适的标识符(例如,散列)的列表,以标识测试。测试列表208可以包括基于测试204到源文件206的预定义映射而对应于源文件206的测试204的标识符。测试列表208可以由处理器404生成。
70.继续参考图2,源文件列表210可以包括源文件名或其它合适的标识符(例如,散列)的列表,以标识源文件。源文件列表210可以包括与版本控制系统检测到的代码变更相对应的源文件206的标识符。源文件列表210可以由处理器404生成。
71.测试映射212可以包括测试204到源文件206的映射。例如,测试映射212可以包括数据结构,该数据结构包括测试204与源文件206之间的映射(例如,记录的对应关系)。测试204到源文件206的映射可以包括对应关系,例如一对一、一对多或多对多的对应关系。只要测试映射212可以由计算装置和/或机器学习模型214解释,记录的对应关系就可以任何可想到的方式进行结构化。测试映射212可以从测试列表208和源文件列表210生成。测试映射212可以被输入到机器学习模型214中以训练机器学习模型214并生成映射文件218。测试映射212中的每个测试-源文件映射可以由机器学习模型214分配一个或多个密钥值。在一些非限制性实施例或方面中,测试映射212可以包括来自映射到测试204和源文件206的测试列表208的多种类别的测试204。在一些非限制性实施例或方面中,测试映射212可以被存储以用于机器学习模型214的未来训练。
72.继续参考图2,机器学习模型214可以包括人工智能模型(例如,人工神经网络、卷
积神经网络、深度学习模型等)。在一些非限制性实施例或方面中,机器学习模型214可以与机器学习模型104相同或相似。在一些非限制性实施例或方面中,测试选择系统200可以包括一个或多个机器学习模型214。机器学习模型214可以从测试列表208和源文件列表210生成测试映射212。机器学习模型214可以接收测试映射212作为输入以生成映射文件218和/或训练机器学习模型214。在一些非限制性实施例或方面中,机器学习模型214可以与数据库216通信。
73.在一些非限制性实施例或方面中,机器学习模型214可以从数据库216接收信息,例如历史测试映射文件、历史映射文件和历史测试结果。机器学习模型214可以从数据库216接收历史缺陷得分、历史部件关键性得分和历史缺陷定义。机器学习模型214可以从数据库216接收对应于测试映射212中标识的测试204或源文件206的缺陷得分、部件关键性得分和缺陷定义。
74.机器学习模型214可以生成映射文件218。机器学习模型214可以首先生成待包括在映射文件218中的推荐测试子集。机器学习模型214可以基于对应于测试映射212的密钥值生成推荐测试子集。机器学习模型214可以为测试映射212中的每个测试到源文件条目生成密钥值作为输出。可以基于缺陷得分、部件关键性得分和缺陷定义生成密钥值。在一些非限制性实施例或方面中,机器学习模型214可以接收测试结果220作为输入以训练机器学习模型214。
75.继续参考图2,映射文件218可以包含关于被标识为与软件储存库202一起执行的测试204的测试子集。在一些非限制性实施例或方面中,映射文件218可以包括数据结构,所述数据结构包括测试204、源文件206和/或测试类别之间的映射(例如,记录的对应关系)。映射可以包括记录的对应关系的一个或多个条目。例如,映射文件218可以包括测试204的数据结构,具有记录的与源文件206和/或测试类别的对应关系,其中在映射文件218中包括推荐测试,具有记录的与一个或多个测试类别和一个或多个源文件206的对应关系。映射可以包括对应关系,例如一对一、一对多和/或多对一的对应关系。只要映射文件218可以由计算装置和/或机器学习模型214解释,记录的对应关系就可以任何可想到的方式进行结构化。映射文件218中列出的测试204可以表示要与可执行软件项目一起执行的测试子集。在一些非限制性实施例或方面中,测试子集可以或可以不与测试映射212中标识的测试204相同、相似和/或包括测试映射中标识的测试。映射文件218中的测试子集可以由机器学习模型214或另一机器学习模型基于机器学习模型214生成的推荐测试子集来确定。映射文件218可以由机器学习模型214生成。可以将映射文件218输入到另一机器学习模型和/或软件部件中,以用于读取测试子集,获取映射文件218中标识的测试子集,并且将测试子集中的每个测试格式化为可执行格式的目的。在一些非限制性实施例或方面中,映射文件218可以存储在数据库216中以供未来使用。
76.测试结果220可以包括映射文件218中标识的测试子集中的每个已执行测试的失败或通过的指示。在一些非限制性实施例或方面中,测试结果220可以包括具有每个通过/失败指示的附加信息,例如,执行持续时间、覆盖的源文件206的标识、覆盖的源文件206的百分比等。例如,测试结果220可以包括表格,其中,行可以包括测试204、测试204失败的次数、测试204在执行时通过或失败的指示、测试204的执行持续时间、源文件206内覆盖的代码的百分比等。只要测试结果220可以由计算装置和/或机器学习模型214解释,测试结果
220就可以任何可想到的方式进行结构化。测试结果220可以包括诸如代码变更的标识(例如,拉取请求编号、投入散列等)、受影响部件或受影响源文件206的信息。测试结果220可以包括是集成还是拒绝检测到的代码变更的度量。例如,测试结果220可以在集成检测到的代码变更之前确定是否满足(例如,符合或超过)测试子集的通过测试的阈值百分比。测试结果220可以被输入到机器学习模型214中用于训练。另外或替代地,测试结果220可以存储在数据库216中以供稍后使用或训练。
77.现在参考图3,图3是根据一些非限制性实施例或方面的用于使用机器学习为系统回归测试自动选择测试的过程300。图3所示的步骤仅用于示例目的。应了解,在非限制性实施例或方面,可使用附近的、更少的、不同的和/或不同次序的步骤。在一些非限制性实施例或方面中,过程300的一个或多个步骤可以(例如,完全地、部分地等)由一个或多个系统100执行。在一些非限制性实施例或方面中,用于自动测试选择的过程的一个或多个步骤可以(例如,完全地、部分地等)由与第一计算装置分开或包括所述第一计算装置的另一系统、另一装置、另一组系统或另一组装置执行。
78.如图3所示且参考图1和2,在步骤302处,过程300可以包括生成测试映射212。例如,测试选择系统100、200可以生成测试映射212,所述测试映射包括对应于与软件储存库106、202相关联的源文件206的多个测试204。测试映射212可以对应于与软件储存库106、202相关联的源文件206中检测到的代码变更。在一些非限制性实施例或方面中,测试选择系统100、200可以基于源文件到测试(例如,测试文件、测试案例等)的预定义映射来生成测试映射212。在一些非限制性实施例或方面中,预定义映射可以是一对一、一对多或多对一映射。源文件到测试的预定义映射可以基于部件分组、使用案例流、源文件的数据流测试、源文件的控制流测试等。测试映射212中的每个源文件206可以与对源文件和/或相关源文件的相应代码变更相关联。相关源文件可以包括属于共同部件的源文件206。
79.在一些非限制性实施例或方面中,测试映射212可以响应于检测到源文件206中的代码变更而自动生成。测试选择系统100、200可以通过基于源文件到测试的预定义映射来选择对应于包含代码变更的源文件206的测试204来生成测试映射212。在一些非限制性实施例或方面中,当代码变更与软件储存库106、202集成(例如,签入、投入、推送等)时,检测代码变更可能发生。附加地或替代地,可以在对源文件进行变更之后但在源文件与软件储存库106、202集成之前检测代码变更。无论检测代码变更的发展阶段如何,当版本控制系统检测到代码变更时,可以生成包括测试到源文件的映射的测试映射212。
80.继续参考图3,如在步骤304处所示,过程300可以包括基于历史测试数据确定(例如,软件储存库106、202内的多个测试204中的)每个测试204的缺陷得分。例如,测试选择系统100、200可以通过指示在软件储存库106、202的使用寿命期间测试204在与对应的源文件206和/或可执行软件项目一起执行时的失败总数来确定对应于源文件206的测试204的缺陷得分。附加地或替代地,测试选择系统100、200可以通过指示在软件储存库106、202的使用寿命期间测试204的失败总数来确定测试204的缺陷得分,而与对应的源文件206无关。在一些非限制性实施例或方面中,可以通过基于包括预定评分量表的评分算法分配缺陷得分来确定缺陷得分。例如,可以为测试分配1-3的缺陷得分。如果测试204的历史测试数据包括小于测试204的阈值失败次数,则可以为测试204分配缺陷得分1。如果测试204的历史测试数据包括大于阈值失败次数,则可以为测试204分配缺陷得分3。如果测试204的历史测试数
据包括在指定范围内的失败次数,则可以为测试204分配缺陷得分2。应当理解,本文提供的评分算法是为了说明而提供的示例性非限制性实施例,并且评分算法可以是用以确定测试204的缺陷得分的任何可行的评分算法。评分算法可以包括测试204的缺陷的度量的任何此类量表、计算、公式、表示等。
81.在一些非限制性实施例或方面中,历史测试数据可以包括每个测试204的记录的测试失败和记录的测试执行。包括记录的测试失败的历史测试数据可以包括在测试204的生命周期期间随时间推移捕获的测试204的测试失败总数。包括记录的测试执行的历史测试数据可以包括在测试204的生命周期期间随时间推移捕获的测试204的测试执行总数。历史测试数据可以存储在数据库216或存储部件中,使得测试选择系统100、200可访问历史测试数据。
82.继续参考图3,如在步骤306处所示,过程300可以包括接收对应于源文件206的部件关键性得分和缺陷定义。例如,测试选择系统100、200可以基于对应于检测到的代码变更的源文件206或多个源文件206接收相应的部件关键性得分。部件关键性得分可以是分配给源文件206所属的部件(例如,软件部件、软件模块、软件程序包等)的得分。附加地或替代地,部件关键性得分可以是分配给对应的检测到的代码变更中识别的源文件206或多个源文件206的得分。在一些非限制性实施例或方面中,可以经由通过输入部件的输入从测试选择系统100、200的用户接收部件关键性得分。附加地或替代地,可以从存储部件关键性得分的数据库216或其它存储部件接收部件关键性得分。
83.部件关键性评分可以基于评分算法。部件关键性得分可以通过考虑诸如业务使用案例、系统可用性、开发部件的成本、部件的要求等的任何相关因素而基于源文件206或部件的重要性。例如,部件或源文件206可以由用户分配部件关键性得分5(其中5可以指示部件的高重要性),其中该部件或源文件是应用程序的用户登录部件的一部分。相比之下,部件或源文件可以由用户分配部件关键性得分1(其中1可以指示部件的低重要性),其中该部件或源文件是用于改变应用程序的用户界面的颜色的设置部件的一部分。应当理解,本文提供的评分算法是为了说明而提供的示例性非限制性实施例,并且评分算法可以是用以确定部件的部件关键性得分的任何可行的评分算法。评分算法可以包括部件关键性的度量的任何此类量表、计算、公式或表示。
84.在一些非限制性实施例或方面中,对应于与检测到的代码变更相关联的源文件206的缺陷定义可以是基于源文件中发现的问题的预定义得分、评级或定义。问题可以包括漏洞、测试失败、客户投诉、错误报告等。问题可存储在问题跟踪数据库(例如,devops server等)中。另外,随着时间的推移,可以收集并存储源文件206的问题。在一些非限制性实施例或方面中,测试选择系统100、200可以通过与问题跟踪数据库通信来接收缺陷定义。在一些非限制性实施例或方面中,问题可能与源文件206所属的部件有关。例如,当在属于应用程序的用户登录部件的源文件206中检测到代码变更时,测试选择系统100、200可以从与用户登录部件有关的问题跟踪数据库接收缺陷定义,但问题可能并不与对应的源文件206直接相关。在其他非限制性实施例或方面中,问题可能与和检测到的代码变更相关联的对应的源文件206直接相关。
85.在一些非限制性实施例或方面中,缺陷定义可以包括由正在使用的特定问题数据库定义的缺陷评级。在一些非限制性实施例或方面中,缺陷定义可以由评分算法定义。例
如,如果在或软件储存库的其它类似问题跟踪平台上跟踪问题,则缺陷定义可以包括p0(中断)、p1(关键)、p2(默认)、p3(需要)或p4(例如,文档中的拼写错误)评级。应当理解,本文描述的评分算法和缺陷定义可以应用于源文件206或软件系统的部件。以下示例将参考部件。例如,如果部件包括p0或p1缺陷,则可以为该部件分配1或“真”的缺陷定义标志。如果部件不包括p0或p1缺陷,则可以为该部件分配0或“假”的缺陷定义标志。应当理解,本文提供的评分算法是为了说明而提供的示例性非限制性实施例,并且评分算法可以是用以确定部件的缺陷定义的任何可行的评分算法。评分算法可以包括部件的缺陷水平的度量的任何此类量表、计算、公式或表示。例如,具有p0缺陷的部件可以被分配缺陷定义5(其中5可以指示关键缺陷)。相比之下,具有p4缺陷的部件可以被分配缺陷定义1(其中1可以指示微小缺陷)。在其它问题跟踪系统中,缺陷可以被分配严重性评级、风险评级、优先级评级等。此类评级可以用于定义部件的缺陷定义。在一些非限制性实施例中,可以在定义时间段内捕获部件的缺陷定义。例如,可以针对在过去一年或几个月内发生的问题向部件分配缺陷定义。在测试选择系统100、200接收到缺陷定义时,问题可以被定义为在问题跟踪数据库中已解决或未解决。附加地或替代地,定义缺陷定义的问题可以与测试选择系统100、200检测到的代码变更相关或无关。
86.继续参考图3,如在步骤308处所示,过程300可以包括基于测试204的缺陷得分、对应于检测到的代码变更的部件或源文件206的部件关键性得分以及对应于检测到的代码变更的缺陷定义,为测试映射212中的每个条目生成密钥值。例如,测试选择系统100、200可以通过对缺陷得分、部件关键性得分和缺陷定义求和来为对应于检测到的代码变更的测试映射212的条目生成密钥值。在此情况下,较高密钥值可以指示对应于检测到的代码变更的部件或源文件206的质量较低,而其重要性可能较高。因此,检测到的代码变更可能需要执行较多测试204。相比之下,较低密钥值可以指示对应于检测到的代码变更的部件或源文件206的质量较高,而其重要性可能较低。因此,检测到的代码变更可能需要执行较少测试204。应当理解,本文提供的评分算法是为了说明而提供的示例性非限制性实施例,并且评分算法可以是用以确定部件的密钥值的任何可行的评分算法。评分算法可以包括测试映射212的条目的密钥值的度量的任何此类量表、计算、公式或表示等。例如,可以对检测到的代码变更的缺陷得分、部件关键性得分和缺陷定义求平均以确定密钥值。在一些非限制性实施例或方面中,较高密钥值可以指示高质量和低重要性,而较低密钥值可以指示低质量和高重要性。
87.在一些非限制性实施例或方面中,可以使用机器学习模型214生成密钥值,所述机器学习模型接收和处理对应于测试映射212中的测试到源文件条目的缺陷得分、部件关键性得分和缺陷定义作为输入。在一些非限制性实施例或方面中,机器学习模型214可以使用来自先前检测到的代码变更的存储的历史测试数据(例如,先前生成的测试映射212)作为输入以增强其学习并影响密钥值输出。另外或替代地,机器学习模型214可以使用历史测试数据(例如,来自先前执行的测试204的测试结果220)作为输入以增强其学习能力并影响密钥值输出。
88.继续参考图3,如步骤310中所示,过程300可以包括基于对应于测试映射212中的条目的密钥值来确定测试204的子集。在一些非限制性实施例或方面中,机器学习模型214可以用于基于对应于测试映射212中的条目的密钥值来确定测试204的子集。机器学习模型
214可以基于密钥值和预定义测试类别生成推荐测试204的子集。例如,测试204可以被分类为类别s1、s2和s3。对于对应于检测到的代码变更的测试映射212,可以生成多个密钥值得分。例如,测试映射212中含有测试到源文件映射的一个条目可以被分配一个密钥值。测试到源文件映射可以具有低密钥值得分,其可指示较高质量或较低重要性。然后,推荐的测试204可以选自单个类别s1。相比之下,如果密钥值得分指示低质量或较高重要性,则可以从类别s1、s2和s3中选择推荐测试204以最大化代码覆盖度。推荐测试204可以通过机器学习模型214连同对应的测试类别和/或源文件206记录在映射文件218中。映射文件218中包括的测试的数目、测试204的身份或测试的类别不应被理解为受到测试映射212中包括的测试204的限制。换句话说,机器学习模型214可以基于机器学习模型214的模型性能推荐更多、更少或相同的记录在测试映射212中的测试204。
89.继续参考图3,如步骤312中所示,过程300可以包括与可执行软件项目一起执行测试子集。在一些非限制性实施例或方面中,软件储存库202可以被编译并构建到可执行软件项目中。测试204的子集可以被格式化,并以待与可执行软件项目一起执行的可执行格式提供给计算装置。可执行软件项目和可执行测试204的子集可以同时执行以测试检测到的代码变更。在一些非限制性实施例或方面中,一旦测试204的子集已完成与可执行软件项目一起的执行,可以基于测试204的子集的执行来生成包括测试结果220的测试报告。
90.现在参考图4,图4是装置400的示例性部件的图。装置400可以对应于测试选择系统102的一个或多个装置、机器学习模型104的一个或多个装置和/或软件储存库106的一个或多个装置。在一些非限制性实施例或方面中,测试选择系统102、机器学习模型104、214和/或软件储存库106、202可以包括至少一个装置400和/或装置400的至少一个部件。如图4所示,装置400可以包括总线402、处理器404、存储器406、存储部件408、输入部件410、输出部件412和通信接口414。
91.总线402可以包括准许装置400的部件之间的通信的部件。在一些非限制性实施例或方面中,处理器404可以硬件、软件、固件和/或其任何组合实施。例如,处理器404可以包括处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)、加速处理单元(apu)等)、微处理器、数字信号处理器(dsp),和/或可被编程为执行某一功能的任何处理组件(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)等。存储器406可以包括随机存取存储器(ram)、只读存储器(rom),和/或存储供处理器404使用的信息和/或指令的另一种类型的动态或静态存储装置(例如,闪存存储器、磁存储器、光学存储器等)。
92.存储部件408可存储与装置400的操作和使用相关的信息和/或软件。例如,存储部件408可以包括硬盘(例如,磁盘、光盘、磁光盘、固态磁盘等)、压缩光盘(cd)、数字多功能光盘(dvd)、软盘、盒带、磁带和/或另一种类型的计算机可读介质,以及对应的驱动器。
93.输入部件410可以包括准许装置400例如经由用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关、麦克风、摄像头等)接收信息的部件。另外或替代地,输入部件410可以包括用于感测信息的传感器(例如,全球定位系统(gps)部件、加速度计、陀螺仪、致动器等)。输出部件412可以包括从装置400提供输出信息的部件(例如,显示器、扬声器、一个或多个发光二极管(led)等)。
94.通信接口414可以包括收发器式部件(例如,收发器、单独的接收器和发送器等),其使得装置400能够例如经由有线连接、无线连接或有线和无线连接的组合与其它装置通
信。通信接口414可准许装置400从另一装置接收信息和/或提供信息给另一装置。例如,通信接口414可以包括以太网接口、光学接口、同轴接口、红外接口、射频(rf)接口、通用串行总线(usb)接口、接口、接口、接口、蜂窝网络接口等。
95.装置400可执行本文中所描述的一个或多个过程。装置400可基于处理器404执行由存储器406和/或存储部件408等计算机可读介质存储的软件指令来执行这些过程。计算机可读介质(例如,非瞬态计算机可读介质)在本文中定义为非瞬态存储器装置。非瞬态存储器装置包括位于单个物理存储装置内部的存储器空间或散布于多个物理存储装置上的存储器空间。
96.软件指令可通过通信接口414从另一计算机可读介质或从另一装置读取到存储器406和/或存储部件408中。在被执行时,存储在存储器406和/或存储部件408中的软件指令可使处理器404执行本文中所描述的一个或多个过程。另外或替代地,硬接线电路系统可以替代或结合软件指令使用以执行本文中所描述的一个或多个过程。因此,本文所描述的实施例或方面不限于硬件电路系统和软件的任何特定组合。
97.提供图4中示出的部件的数目和布置作为示例。在一些非限制性实施例或方面中,与图4中所示的那些部件相比,装置400可以包括额外部件、更少部件、不同部件或以不同方式布置的部件。另外或替代地,装置400的一组部件(例如一个或多个部件)可执行被描述为由装置400的另一组部件执行的一个或多个功能。
98.现在参考图5,图5是根据一些非限制性实施例或方面的用于使用机器学习为软件系统回归测试自动选择测试的测试选择系统500的部件的示意图。如图5所示,测试选择系统500可以包括测试文件504和源文件506。测试文件504可以与测试204相同或相似,并且源文件506可以与源文件206相同或相似。在一些非限制性实施例或方面中,测试选择系统500可以包括控制器508。控制器508可以与测试选择系统102相同或相似。控制器508可能能够控制测试文件504、源文件506、智能引擎514和软件储存库502之间的执行流和数据共享。
99.在一些非限制性实施例或方面中,测试选择系统500可以包括智能引擎514。智能引擎514可以与机器学习模型104、214相同或相似。智能引擎514可以包括一个或多个部件,所述一个或多个部件包括一个或多个机器学习模型104、214,例如决策模块、映射模块和监听器。在一些非限制性实施例或方面中,智能引擎514可以从源文件506的列表和测试文件504的列表生成可以与测试映射212相同或相似的数据文件。决策模块可以与机器学习模型214相同或相似。决策模块可以接收数据文件作为输入,并且可以基于对应于特定测试504的缺陷得分、部件关键性得分和缺陷定义来生成密钥值。在一些非限制性实施例或方面中,决策模块可以基于对应于测试504的密钥值和预定义测试类别生成推荐测试子集。决策模块可以将推荐测试子集发送至映射模块,以创建映射文件。
100.在一些非限制性实施例或方面中,智能引擎514可以包括映射模块。映射模块可以从决策模块接收推荐测试子集。在一些非限制性实施例或方面中,映射模块可以基于推荐测试子集和源文件506生成映射文件。所述映射文件可以与映射文件218相同或相似。在一些非限制性实施例或方面中,可以将映射文件发送至控制器508以获取包括在映射文件中的测试子集的测试504。
101.在一些非限制性实施例或方面中,测试选择系统500可以包括软件储存库502。软件储存库502可以包括版本控制系统或结合该版本控制系统操作。例如,如图5所示,软件储
存库502可以结合操作。在一些非限制性实施例或方面中,软件储存库502可以包括连续集成管理工具(自动化服务器、连续集成服务器等)。软件储存库502可以与控制器508通信。例如,软件储存库502可以将变更的源文件506的列表传送到控制器508。变更的源文件506的列表可以与源文件列表210相同或相似。
102.在一些非限制性实施例或方面中,测试选择系统500可以与软件储存库502的可执行软件项目一起执行包括在映射文件中的测试子集。在一些非限制性实施例或方面中,软件储存库502可以被编译并构建到可执行软件项目中。测试504的子集可以被映射模块格式化,并以待与可执行软件项目一起执行的可执行格式提供给控制器508。可执行软件项目和可执行测试504的子集可以同时执行以测试检测到的代码变更。在一些非限制性实施例或方面中,一旦测试504的子集已完成与可执行软件项目一起的执行,可以基于测试504的子集的执行来生成测试报告。
103.在一些非限制性实施例或方面中,测试报告可以传送到智能引擎514的监听器,以作为输入提供给决策模块以供进一步处理。在一些非限制性实施例或方面中,测试报告可以被存储以供决策模块或其它机器学习模型214未来使用。
104.尽管已出于说明的目的而基于当前被认为是最实用和优选的实施例或方面详细描述了所公开主题,但应理解,此类细节仅用于所述目的,且所公开主题不限于所公开实施例或方面,而是相反,旨在涵盖在所附权利要求书的精神和范围内的修改和等效布置。例如,应理解,当前公开的主题尽可能地预期任何实施例或方面的一个或多个特征可以与任何其它实施例或方面的一个或多个特征组合。
技术特征:
1.一种计算机实施的方法,包括:利用至少一个处理器生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;利用所述至少一个处理器和至少一个机器学习模型,基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;利用所述至少一个处理器接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;利用所述至少一个处理器和所述至少一个机器学习模型,基于所述缺陷得分、所述部件关键性得分和所述缺陷定义生成对应于所述至少一个测试的密钥值;利用所述至少一个处理器和所述至少一个机器学习模型,基于对应于所述至少一个测试的密钥值来确定所述多个测试中的测试子集;以及利用所述至少一个处理器与所述软件储存库一起执行所述测试子集。2.根据权利要求1所述的计算机实施的方法,还包括:利用所述至少一个处理器基于所述测试子集的执行来生成测试结果;以及向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。3.根据权利要求1所述的计算机实施的方法,其中,生成所述测试映射包括:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;以及基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。4.根据权利要求3所述的计算机实施的方法,其中,所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。5.根据权利要求1所述的计算机实施的方法,其中,确定所述测试子集包括:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;以及将所述推荐测试子集格式化为可执行格式。6.根据权利要求1所述的计算机实施的方法,其中,所述至少一个机器学习模型使用监督学习和预测确定所述测试子集。7.根据权利要求5所述的计算机实施的方法,其中,存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。8.一种系统,包括:测试选择系统;至少一个机器学习模型;软件储存库;以及
至少一个处理器,其中所述至少一个处理器被编程或配置成:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义来生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;以及与所述软件储存库一起执行所述测试子集。9.根据权利要求8所述的系统,其中所述至少一个处理器被进一步编程或配置成:基于所述测试子集的执行生成测试结果;以及向所述至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。10.根据权利要求8所述的系统,其中,当生成所述测试映射时,所述至少一个处理器被编程或配置成:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;以及基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。11.根据权利要求10所述的系统,其中,所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。12.根据权利要求8所述的系统,其中,当确定所述测试子集时,所述至少一个处理器被编程或配置成:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;以及将所述推荐测试子集格式化为可执行格式。13.根据权利要求8所述的系统,其中,所述至少一个机器学习模型使用监督学习和预测确定所述测试子集。14.根据权利要求12所述的系统,其中,存储在所述数据库中的映射文件用作所述至少一个机器学习模型的输入以进行进一步训练。15.一种计算机程序产品,所述计算机程序产品包括至少一个非暂态计算机可读介质,所述至少一个非暂态计算机可读介质包括一个或多个指令,所述一个或多个指令在由至少一个处理器执行时使所述至少一个处理器:生成测试映射,所述测试映射包括对应于至少一个源文件的多个测试中的至少一个测试,其中,所述多个测试和所述至少一个源文件与软件储存库相关联;
基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述至少一个源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、所述部件关键性得分和所述缺陷定义来生成对应于所述至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;以及与所述软件储存库一起执行所述测试子集。16.根据权利要求15所述的计算机程序产品,其中所述一个或多个指令还使所述至少一个处理器:基于所述测试子集的执行生成测试结果;以及向至少一个机器学习模型输入所述测试结果以进一步训练所述至少一个机器学习模型。17.根据权利要求15所述的计算机程序产品,其中,当生成所述测试映射时,所述一个或多个指令还使所述至少一个处理器:基于对至少一个源文件的变更来检测所述至少一个源文件,其中,所述变更包括所述至少一个源文件的第一版本与所述至少一个源文件的第二版本之间的差异;基于源文件到测试的预定义映射来选择对应于所述至少一个源文件的至少一个测试;编译源文件列表和测试列表,其中,所述源文件列表包括所述至少一个源文件的源文件名,并且所述测试列表包括所述至少一个测试的测试文件名;以及基于源文件到测试的预定义映射,通过将所述源文件名映射到其对应的测试文件名,从所述源文件列表和所述测试列表生成所述测试映射。18.根据权利要求17所述的计算机程序产品,其中,所述至少一个源文件是新源文件,并且所述变更包括添加到所述软件储存库的新源文件。19.根据权利要求15所述的计算机程序产品,其中,当确定所述测试子集时,所述一个或多个指令还使所述至少一个处理器:基于所述密钥值和预定义测试类别生成推荐测试子集;基于所述推荐测试子集和所述至少一个源文件生成映射文件;将所述映射文件存储在数据库中;以及将所述推荐测试子集格式化为可执行格式。20.根据权利要求19所述的计算机程序产品,其中,存储在所述数据库中的映射文件用作至少一个机器学习模型的输入以进行进一步训练。
技术总结
所提供的是使用机器学习为软件系统回归测试自动选择测试的计算机实施的方法、系统和计算机程序产品,其包括生成测试映射,所述测试映射包括对应于源文件的多个测试中的至少一个测试。所述多个测试和至少一个源文件与软件储存库相关联。此外,基于所述至少一个测试的历史测试数据确定所述至少一个测试的缺陷得分;接收对应于所述源文件的部件关键性得分和缺陷定义;基于所述缺陷得分、部件关键性得分和缺陷定义生成对应于至少一个测试的密钥值;基于对应于所述至少一个测试的密钥值来确定所述多个测试的测试子集;以及与所述软件储存库一起执行所述测试子集。存库一起执行所述测试子集。存库一起执行所述测试子集。
技术研发人员:普里扬卡 P
受保护的技术使用者:维萨国际服务协会
技术研发日:2023.01.13
技术公布日:2023/7/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/