掌桥专利:专业的专利平台
掌桥专利
首页

回归测试方法、装置、设备及介质

文献发布时间:2024-04-18 20:00:50


回归测试方法、装置、设备及介质

技术领域

本申请涉及半实物仿真自动化测试的技术领域,尤其涉及一种回归测试方法、回归测试装置、回归测试设备及计算机可读存储介质。

背景技术

在当前的半实物仿真自动化测试中,主要靠人工设计和编写测试用例,要求测试人员具有一定的经验和专业水平,这样导致在人工设计测试用例的过程中难以保证测试的覆盖度。同时,不同测试人员水平不同,大型项目需要数量庞大的测试用例,但不是由同一测试人员编写所有的测试用例,难以保证所编写的测试用例的统一性。

为了避免出现上述情况,通常会采用测试用例库形式保证统一性,即建立完整的测试用例库,在测试用例库中挑选不同测试项目所需的测试用例并修改输入输出值,以此完成测试用例的设计。但是这样的方式会导致测试用例在不断使用的过程逐渐丧失“敏感度”,无法通过测试用例排查出软件产品的问题。即测试用例库中的测试用例无法覆盖所有的测试问题,其中的测试用例具有局限性,软件产品仅能通过测试用例库中的已有测试用例进行测试,测试用例库的适用性差。虽然每次都能通过测试用例库中测试用例的测试,但是也只是能通过测试用例库中测试用例的测试,在实际交付软件产品之后,往往会出现测试用例库中测试用例未涵盖的问题。

发明内容

本申请的主要目的在于提供一种回归测试方法、回归测试装置、回归测试设备及计算机可读存储介质,旨在解决常规技术中半实物仿真自动化测试不准确且覆盖度低的技术问题。

为实现上述目的,本申请提供一种回归测试方法,所述方法包括:

对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;

根据分析处理结果对所述测试用例进行优化,生成目标测试用例;

基于所述目标测试用例进行下一轮回归测试。

示例性的,所述对测试用例的测试结果进行聚类分析的步骤,包括:

根据测试用例的测试结果剔除回归测试中的相似或者低敏感度的测试用例。

示例性的,所述对测试用例的测试结果进行失败率预测的步骤,包括:

基于失败率预测模型分析测试用例通过或失败的热点图,基于所述热点图对下一轮回归测试推送易失败的测试用例。

示例性的,所述对测试用例的测试结果进行用例挖掘的步骤,包括:

对所述热点图中对应的易失败的测试用例生成高支持度的测试用例,进行颗粒度更小的模板复用。

示例性的,所述对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理的步骤之前,包括:

根据回归测试的场景要求生成所述回归测试的应用场景,并基于所述应用场景生成所述回归测试的接口模型;

通过所述接口模型加载测试用例和所述应用场景,在回归测试环境中运行所述应用场景下的所述测试用例,得到所述测试用例的测试结果。

示例性的,所述测试用例包括原始测试用例和/或扩展测试用例,所述根据回归测试的场景要求生成所述回归测试的应用场景的步骤之前,包括:

获取待测控制器的功能需求规范,并生成所述功能需求规范的逻辑关系图;

基于所述逻辑关系图生成原始测试用例,并对所述原始测试用例进行分解和扩展,得到扩展测试用例。

示例性的,所述生成所述功能需求规范的逻辑关系图的步骤,包括:

解析所述功能需求规范得到所述功能需求规范的测试步骤,划分所述测试步骤的功能得到所述功能需求规范的功能块;

基于所述功能块的功能内容生成所述功能需求规范的逻辑关系图。

示例性的,所述对所述原始测试用例进行分解和扩展,得到扩展测试用例的步骤,包括:

随机增加所述原始测试用例的有效值,选定所述原始测试用例的特征值,处理所述原始测试用例的边界值,增加所述原始测试用例的反向和/或故障测试用例,得到扩展测试用例。

示例性的,所述根据分析处理结果对所述测试用例进行优化,生成目标测试用例的步骤,包括:

对测试问题数量超过预设值的功能块,增加所述功能块对应测试用例的测试密度;

对测试问题数量未超过预设值的功能块,减少所述功能块对应测试用例的测试相似度。

本申请还提供一种回归测试装置,所述回归测试装置包括:

分析模块,用于对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;

优化模块,用于根据分析处理结果对所述测试用例进行优化,生成目标测试用例;

切换模块,用于基于所述目标测试用例进行下一轮回归测试。

本申请还提供一种回归测试设备,所述回归测试设备包括:存储器、处理器、及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的回归测试方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的回归测试方法的步骤。

本申请实施例提出的一种回归测试方法、回归测试装置、回归测试设备及计算机可读存储介质,对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;根据分析处理结果对所述测试用例进行优化,生成目标测试用例;基于所述目标测试用例进行下一轮回归测试。

在本申请中,在执行完成测试用例并收集测试结果后,对测试结果进行聚类分析,失败率预测和用例挖掘三个操作。通过上述操作后,对之前生成的测试用例进行优化,对测试问题较多的功能块增加测试密度,保证测试的可靠性,以期望发现更多的问题点。对于测试问题较少的功能块,对原有的测试用例进行优化,减少测试相似度,保证测试效率。修改后的测试用例可以作为该待测控制器的下一轮回归测试时进行使用,并在回归测试结束后,按照上述的方式进行重复分析处理和优化。

在本申请中,1、提出了一种智能生成半实物仿真自动化测试的测试用例的架构,在该架构里,不仅可以根据需求生成测试用例,亦可以根据测试结果对当前生成的测试用例进行优化,从而保证能不断发现待测控制器在测试过程中的问题点;2、设计了对测试结果分析的方法,即聚类分析,失败率预测和用例挖掘,通过上述分析处理的互相配合,可以摒弃传统方案里的测试用例库概念,可以对测试结果构建不同的分析模型,以判断当前测试用例对于整体测试过程的影响,保证所生成的测试用例一直对待测控制器的软件具有较高的“敏感度”,不断发现待测控制器中的软件缺陷。

附图说明

图1是本申请实施例方案涉及的硬件运行环境的运行设备的结构示意图;

图2为本申请实施例方案涉及的回归测试方法一实施例的流程示意图;

图3为本申请实施例方案涉及的回归测试方法另一实施例的流程示意图;

图4为本申请实施例方案涉及的回归测试方法一应用场景的原理架构图;

图5为本申请实施例方案涉及的第一回归测试装置的示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,图1为本申请实施例方案涉及的硬件运行环境的运行设备结构示意图。

如图1所示,该运行设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的结构并不构成对运行设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及计算机程序。

在图1所示的运行设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本申请运行设备中的处理器1001、存储器1005可以设置在运行设备中,所述运行设备通过处理器1001调用存储器1005中存储的计算机程序,并执行以下操作:

对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;

根据分析处理结果对所述测试用例进行优化,生成目标测试用例;

基于所述目标测试用例进行下一轮回归测试。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述对测试用例的测试结果进行聚类分析的步骤,包括:

根据测试用例的测试结果剔除回归测试中的相似或者低敏感度的测试用例。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述对测试用例的测试结果进行失败率预测的步骤,包括:

基于失败率预测模型分析测试用例通过或失败的热点图,基于所述热点图对下一轮回归测试推送易失败的测试用例。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述对测试用例的测试结果进行用例挖掘的步骤,包括:

对所述热点图中对应的易失败的测试用例生成高支持度的测试用例,进行颗粒度更小的模板复用。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理的步骤之前,包括:

根据回归测试的场景要求生成所述回归测试的应用场景,并基于所述应用场景生成所述回归测试的接口模型;

通过所述接口模型加载测试用例和所述应用场景,在回归测试环境中运行所述应用场景下的所述测试用例,得到所述测试用例的测试结果。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述测试用例包括原始测试用例和/或扩展测试用例,所述根据回归测试的场景要求生成所述回归测试的应用场景的步骤之前,包括:

获取待测控制器的功能需求规范,并生成所述功能需求规范的逻辑关系图;

基于所述逻辑关系图生成原始测试用例,并对所述原始测试用例进行分解和扩展,得到扩展测试用例。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述生成所述功能需求规范的逻辑关系图的步骤,包括:

解析所述功能需求规范得到所述功能需求规范的测试步骤,划分所述测试步骤的功能得到所述功能需求规范的功能块;

基于所述功能块的功能内容生成所述功能需求规范的逻辑关系图。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述对所述原始测试用例进行分解和扩展,得到扩展测试用例的步骤,包括:

随机增加所述原始测试用例的有效值,选定所述原始测试用例的特征值,处理所述原始测试用例的边界值,增加所述原始测试用例的反向和/或故障测试用例,得到扩展测试用例。

在一实施例中,处理器1001可以调用存储器1005中存储的计算机程序,还执行以下操作:

所述根据分析处理结果对所述测试用例进行优化,生成目标测试用例的步骤,包括:

对测试问题数量超过预设值的功能块,增加所述功能块对应测试用例的测试密度;

对测试问题数量未超过预设值的功能块,减少所述功能块对应测试用例的测试相似度。

本申请实施例提供了一种回归测试方法,参照图2,在回归测试方法的一实施例中,所述方法包括:

步骤S10,对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;

在本实施例中,半实物仿真自动化测试包括虚拟控制器+实际对象的快速控制原型(RCP)仿真系统,以及实际控制器+虚拟对象的硬件在回路(HiL)仿真系统。其中,硬件在环仿真是将真的控制器连接假的被控对象(用实时仿真硬件来模拟,以一种高效、低成本的方式对控制器进行全面测试。一般而言,做HIL测试的前提是控制器已经开发好,需要在理想或安全的环境下,测试控制器的功能是否正常。在该应用场景中,实时仿真硬件(或者说HIL台架)充当被控对象,以实时的方式运行被控对象模型,并模拟各类故障等。实时仿真硬件(或者说HIL台架)本质上来说,就是要尽可能逼真地模拟真实被控对象,以有效地欺骗控制器,让控制器以为它正在控制一个真实的被控对象。

在本实施例中,对正在执行的测试用例的每一个测试步骤进行动态判定,判定每个测试步骤的测试结果是否符合设计要求,并根据动态判定的结果生成最终的测试结果。在一实施例中,对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘中的一个或多个的分析处理。

示例性的,所述对测试用例的测试结果进行聚类分析的步骤,包括:

步骤S10A,根据测试用例的测试结果剔除回归测试中的相似或者低敏感度的测试用例。

在聚类分析的分析处理过程中,主要是基于测试用例的文本、测试脚本和/或执行结果构建多维度聚类分析模型,并进一步构建测试用例聚类流水线,自动根据测试用例的运行结果剔除测试任务中的相似或者“敏感度”较低的测试用例。

在一实施例中,根据测试结果显示功能策略(功能块)A的测试结果通过率较高,则该模块会利用将已生成的功能策略(功能块)A测试用例相似的测试用例数量进行剔除,也就是将正常没问题的功能块剔除,不需要再测试该功能块的测试用例,以保证在下一轮回归测试过程的执行效率。在该模块中,剔除相似的测试用例,将通过的功能块的各个测试属性精简为一个或若干个属性即可。

示例性的,所述对测试用例的测试结果进行失败率预测的步骤,包括:

步骤S10B,基于失败率预测模型分析测试用例通过或失败的热点图,基于所述热点图对下一轮回归测试推送易失败的测试用例。

在失败率预测的分析处理过程中,从测试用例执行和结果的记录中自动提取高价值特征,其中,高价值特征是指出现问题较多的特征,并构建失败率预测模型,通过失败率预测模型分析当前测试用例对于测试覆盖度的影响以及测试用例通过或失败的热点图,对下一轮回归测试时的候选测试用例进行排序,并主要推送易失败的测试用例,提前发现当前版本的软件问题。

示例性的,所述对测试用例的测试结果进行用例挖掘的步骤,包括:

步骤S10C,对所述热点图中对应的易失败的测试用例生成高支持度的测试用例,进行颗粒度更小的模板复用。

在用例挖掘的分析处理过程中,构建多维度关联关系模型,结合失败率预测的分析处理过程中的测试用例通过或失败的热点图,对测试失败较多的功能点进行挖掘和细化流程图,并获取测试用例基线化的结果,从而对该功能点生成更多高支持度的测试用例。也就是对预测模型确定的出问题概率较大的测试用例,进行颗粒度更小的模板复用,设计更精细的测试用例,通过全自动的流程避免了传统重新设计测试用例的大量人工操作。

在一实施例中,在结果判定模块中,会将测试用例基线化,测试用例基线化的主要作用是根据测试用例运行的结果,只保留能满足每个功能策略(功能块)最基本的测试用例(包含基本正向测试和反向故障测试等),并作为后续生成更多测试时的模板,在操作完成后将其整合结合并反馈至上位机,展示模板和结果,为下一次测试做准备,最终模板用在流程图/状态图等逻辑关系中。

步骤S20,根据分析处理结果对所述测试用例进行优化,生成目标测试用例;

步骤S30,基于所述目标测试用例进行下一轮回归测试。

在执行完成测试用例并收集测试结果后,对测试结果进行聚类分析,失败率预测和用例挖掘三个操作。通过上述操作后,对之前生成的测试用例进行优化,对测试问题较多的功能块增加测试密度,保证测试的可靠性,以期望发现更多的问题点。对于测试问题较少的功能块,对原有的测试用例进行优化,减少测试相似度,保证测试效率。修改后的测试用例可以作为该待测控制器的下一轮回归测试时进行使用,并在回归测试结束后,按照上述的方式进行重复分析处理和优化。

在本实施例中,对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;根据分析处理结果对所述测试用例进行优化,生成目标测试用例;基于所述目标测试用例进行下一轮回归测试。

在本实施例中,1、提出了一种智能生成半实物仿真自动化测试的测试用例的架构,在该架构里,不仅可以根据需求生成测试用例,亦可以根据测试结果对当前生成的测试用例进行优化,从而保证能不断发现待测控制器在测试过程中的问题点;2、设计了对测试结果分析的方法,即聚类分析,失败率预测和用例挖掘,通过上述分析处理的互相配合,可以摒弃传统方案里的测试用例库概念,可以对测试结果构建不同的分析模型,以判断当前测试用例对于整体测试过程的影响,保证所生成的测试用例一直对待测控制器的软件具有较高的“敏感度”,不断发现待测控制器中的软件缺陷。

本申请实施例提供了一种回归测试方法,参照图3,在回归测试方法的另一实施例中,所述对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理的步骤之前,包括:

步骤C,根据回归测试的场景要求生成所述回归测试的应用场景,并基于所述应用场景生成所述回归测试的接口模型;

步骤D,通过所述接口模型加载测试用例和所述应用场景,在回归测试环境中运行所述应用场景下的所述测试用例,得到所述测试用例的测试结果。

在对测试用例的测试结果进行分析处理之前,还需要进行一系列准备工作。在本实施例中,回归测试的上位机根据回归测试的场景要求(如HIL仿真机的型号版本和自动化HIL测试软件的型号版本等)生成回归测试的应用场景,并将对应的应用场景生成为回归测试的接口模型,其中,接口模型类似于编译器,用于把测试用例的脚本转换为应用场景中的运行语言。

在生成接口模型之后,将测试用例和应用场景加载至回归测试的接口模型里,从而在回归测试环境中运行应用场景下的测试用例,以此得到测试用例的测试结果。

在一实施例中,在正式开始测试时,接口模型将加载的测试用例和配置的应用场景下发至测试环境中执行,让测试环境搭建该配置的应用场景、搭建测试脚本对应运行语言的运行环境,并在测试过程中,对正在执行测试用例的每一个测试步骤进行动态判定,并根据动态判定的结果生成最终的测试结果。

示例性的,所述测试用例包括原始测试用例和/或扩展测试用例,所述根据回归测试的场景要求生成所述回归测试的应用场景的步骤之前,包括:

步骤A,获取待测控制器的功能需求规范,并生成所述功能需求规范的逻辑关系图;

步骤B,基于所述逻辑关系图生成原始测试用例,并对所述原始测试用例进行分解和扩展,得到扩展测试用例。

在根据回归测试的场景要求生成回归测试的应用场景之前,还需要生成测试用例,生成的测试用例包括原始测试用例和/或扩展测试用例。在本实施例中,获取待测控制器的功能需求规范,将待测控制器的功能需求规范加载至上位机,然后根据功能需求规范的具体功能内容,通过关键词提取等方式从文本文档中自动生成功能流程图/状态图/遍历图等逻辑关系图。接着,基于逻辑关系图生成原始测试用例,也就是在测试仿真环境中生成能够运行的、能被识别的匹配功能流程图/状态图/遍历图等的脚本。并对原始测试用例进行分解和扩展,得到扩展测试用例。

示例性的,所述生成所述功能需求规范的逻辑关系图的步骤,包括:

步骤A1,解析所述功能需求规范得到所述功能需求规范的测试步骤,划分所述测试步骤的功能得到所述功能需求规范的功能块;

步骤A2,基于所述功能块的功能内容生成所述功能需求规范的逻辑关系图。

上位机对加载的功能需求规范进行解析,根据其测试步骤的功能划分成不同的功能策略(功能块)。例如某条测试用例中可能包含了10条测试步骤,但是按照功能划分可以将其划分三个功能,可以得到功能A,功能B和功能C三个功能块。也就是将各个测试用例的用例脚本中的测试步骤经过功能划分,从而得到各测试用例的功能块,功能块与测试用例的用例脚本的代码块对应。然后,再根据各功能块的功能内容生成功能需求规范的逻辑关系图。

示例性的,所述对所述原始测试用例进行分解和扩展,得到扩展测试用例的步骤,包括:

随机增加所述原始测试用例的有效值,选定所述原始测试用例的特征值,处理所述原始测试用例的边界值,增加所述原始测试用例的反向和/或故障测试用例,得到扩展测试用例。

基于对原始测试用例进行分解和扩展,将其分解和扩展得到扩展测试用例。扩展测试用例主要是对原始测试用例的补充,包括随机增加有效值,特征值选定,边界值处理及反向/故障测试用例。其中,有效值可以是区间边界值;特征值选定可以是将问题频发的区间边界值选定为特征值;边界值处理可以是将问题很少发生的区间边界值删除。

示例性的,所述根据分析处理结果对所述测试用例进行优化,生成目标测试用例的步骤,包括:

步骤S20A,对测试问题数量超过预设值的功能块,增加所述功能块对应测试用例的测试密度;

步骤S20B,对测试问题数量未超过预设值的功能块,减少所述功能块对应测试用例的测试相似度。

在执行完成测试用例并收集测试结果后,对测试结果进行聚类分析,失败率预测和用例挖掘三个操作。通过上述操作后,对之前生成的测试用例进行优化,对测试问题数量超过预设值的测试问题较多的功能块增加测试密度,保证测试的可靠性,以期望发现更多的问题点。对于测试问题数量未超过预设值的测试问题较少的功能块,对原有的测试用例进行优化,减少测试相似度,保证测试效率。修改后的测试用例可以作为该待测控制器的下一轮回归测试时进行使用,并在回归测试结束后,按照上述的方式进行重复分析处理和优化。

参照图4,在本申请一种回归测试方法的一应用场景中,提供一种基于半实物仿真的快速自动化测试的方法。

1、上位机通过自动读取并解析待测控制器功能需求规范,并根据其生成功能流程遍历图。

2、根据不同功能的流程遍历图首先生成一条原始测试用例,并根据该条原始测试用例生成扩展测试用例。扩展测试用例主要是对原始测试用例的补充,包括随机增加有效值,特征值选定,边界值处理及反向/故障测试用例。

3、同时上位机根据需要测试的应用场景,即HIL测试的仿真机型号及自动化测试软件类型及版本,生成对应的接口文件,用于加载上述的测试用例。

4、在执行完成测试用例并收集测试结果后,需要对测试结果进行聚类分析,失败率预测和用例挖掘三个操作。通过上述操作后,将分析后的测试结果进行机器学习,并将机器学习后的结果对之前生成的测试用例进行优化,对测试问题较多的功能块增加测试密度,保证测试的可靠性,以期望发现更多的问题点。对于测试问题较少的功能块,对原有的测试用例进行优化,减少测试相似度,保证测试效率。

5、修改后的测试用例可以作为该待测控制器的下一轮回归测试时进行使用,并在回归测试结束后,按照上述的方式进行重复机器学习和优化。

在该应用场景中,以HIL测试为例,其具体实施过程如下:

将待测控制器需求规范通过步骤1加载至上位机,上位机将对该需求规范进行解析,并根据其功能通过步骤2划分成不同的功能策略(功能块)。例如某条测试用例中可能包含了10条测试步骤,但是按照功能划分可以将其划分三个功能(功能A,功能B和功能C)。[解析所述功能需求规范得到所述功能需求规范的测试步骤,划分所述测试步骤的功能得到所述功能需求规范的功能块]

不同的功能测试策略(功能块)通过步骤3根据其功能的具体内容生成功能流程图/状态图/遍历图等,通过关键词提取的方式从文本文档中生成的逻辑关系流程。[基于所述功能块的功能内容生成所述功能需求规范的逻辑关系图]

并通过步骤4根据上述生成的功能流程图/状态图/遍历图,生成一条原始的测试用例,该原始的测试用例只包含基本的正向测试内容。也就是在Hil测试的仿真环境中生成能够运行的、能被识别的匹配功能流程图/状态图/遍历图等的脚本。[基于所述逻辑关系图生成原始测试用例]

基于原始的测试用例,通过步骤5对原始测试用例进行分解和扩展,将其分解和扩展成扩展测试用例。[对所述原始测试用例进行分解和扩展,得到扩展测试用例]

扩展测试用例主要是对原始测试用例的补充,包括随机增加有效值,特征值选定,边界值处理及反向/故障测试用例。有效值:区间边界值;特征值选定:将问题频发的区间边界值选定为特征值;边界值处理:将问题很少发生的区间边界值删除。[随机增加所述原始测试用例的有效值,选定所述原始测试用例的特征值,处理所述原始测试用例的边界值,增加所述原始测试用例的反向和/或故障测试用例,得到扩展测试用例]

上位机根据HIL测试的场景要求(如HIL仿真机的型号版本,自动化HIL测试软件的型号版本)通过步骤18生成应用场景,并通过步骤8将对应的应用场景生成为HIL测试的接口模型(类似于编译器,把测试用例的脚本转换为应用场景中的运行语言)。[根据回归测试的场景要求生成所述回归测试的应用场景,并基于所述应用场景生成所述回归测试的接口模型]

在接口模型生成后,上述生成的原始测试用例和扩展测试用例分别通过步骤6和步骤7将测试用例加载至HIL测试的接口模型里。[通过所述接口模型加载测试用例和所述应用场景]

在正式开始测试时,HIL测试接口模型将加载的测试用例和配置的应用场景通过步骤9下发至HIL测试环境中执行,让测试环境搭建该配置的应用场景、搭建测试脚本对应运行语言的运行环境,并在测试过程中,通过步骤10对正在执行测试用例的每一个测试步骤进行动态判定(现有技术,每个测试步骤的测试结果是否符合设计要求,都需要判定),并通过步骤11根据动态判定的结果生成最终的HIL测试结果。[在回归测试环境中运行所述应用场景下的所述测试用例,得到所述测试用例的测试结果]

根据步骤11生成的最终HIL测试结果,通过步骤13设计三个模块对该测试结果进行分析和处理,分别为聚类分析模块,失败率预测模块和用例挖掘模块。[对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理]

很难在一轮测试中排除所有的问题,需要多轮修改后的测试才能确定所有问题。随机设定随机数等步骤,并不知道这些步骤的后果,因此根据这3个模块对获取到的实际测试结果,进行分析,确定问题所在,比如何处问题较多或较少,哪里覆盖度较高或较低,哪里测试结果不稳定需重复测试或稳定能通过,最后得到收敛的结果。机器模块将学习后的结果通过步骤15传递至流程图/状态图/遍历图以便于开展下一轮回归测试。[基于所述目标测试用例进行下一轮回归测试]

其中,在聚类分析模块中,主要功能是基于测试用例文本/脚本/执行结果构建多维度聚类分析模型,并进一步构建测试用例聚类流水线,自动根据测试用例的运行结果剔除测试任务中的相似或者“敏感度”较低的测试用例。例如,根据测试结果显示,功能策略(功能块)A的测试结果通过率较高,则该模块会利用将已生成的功能策略(功能块)A测试用例相似的测试用例数量进行剔除(将正常没问题的功能块剔除,不需要再测试该功能块的测试用例),以保证在下一轮回归测试过程的执行效率。在该模块中,剔除相似的测试用例:将通过的功能块的各个测试属性,精简为一个或若干个属性即可。[根据测试用例的测试结果剔除回归测试中的相似或者低敏感度的测试用例]

其中,在失败率预测模块里,主要是从测试用例执行和结果的记录中,自动提取高价值特征:出现问题较多的特征,并构建失败率预测模型,分析当前测试用例对于测试覆盖度的影响和测试用例通过/失败的热点图,并对下一轮回归测试时的候选测试用例进行排序,主要推送易失败的测试用例,提前发现当前版本的软件问题。[基于失败率预测模型分析测试用例通过或失败的热点图,基于所述热点图对下一轮回归测试推送易失败的测试用例]

其中,在用例挖掘模块里,主要是构建多维度关联关系模型,结合“失败率预测模块”里的测试用例通过/失败热点图,对测试失败较多的功能点进行挖掘和细化流程图,并根据步骤17获取测试用例基线化的结果,以对该功能点生成更多高支持度的测试用例,对预测模型确定的出问题概率较大的测试用例,进行颗粒度更小的模板复用,设计更精细的测试用例,通过全自动的流程避免了传统重新设计测试用例的大量人工操作。[对所述热点图中对应的易失败的测试用例生成高支持度的测试用例,进行颗粒度更小的模板复用]

其中,在结果判定模块里,会通过步骤12将测试用例基线化,测试用例基线化的主要作用是根据测试用例运行的结果,只保留能满足每个功能策略(功能块)最基本的测试用例(包含基本正向测试和反向故障测试等)并作为后面生成更多测试时的模板,在操作完成后将其整合结合通过步骤18反馈至上位机。展示模板和结果,为下一次测试做准备,模板通过图中箭头16、15用在流程图/状态图中。

其中,对于“机器学习模块”而言,一、其有三个输入量:即聚类分析模块(剔除测试任务中的相似或者“敏感度”较低的测试用例),失败率预测模块(下一轮回归测试时的候选测试用例进行排序,主要推送易失败的测试用例)和用例挖掘模块(对该功能点生成更多高支持度的测试用例)的输出结果(下称“三个模块”)。其具有两个输出量:分别是传给“上位机模块”当前的汇总学习信息,即告知测试人员下一轮需要开展的测试用例,同时将学习结果反馈至“流程图/状态图”模块。

二、当第一轮测试结束后,“机器学习模块”主要起到的是传输,记录和汇总的作用。首先是汇总和记录,即“机器学习模块”首先根据上述三个模块传入的信息,将第一轮测试的信息进行记录,包含基本的测试用例和对应三个模块的分析结果,并根据分析结果将第二轮待执行测试用例信息反馈至“上位机模块”和“流程图/状态图”模块。

三、当第二轮测试结束后,“机器学习模块”在上述功能的基础上会增加对比分析功能,即第一轮测试的结果和第二轮测试的结果进行比对。

例如当第一轮测试结果后,发现A功能模块的问题点数量较多,而当软件工程师修改完成软件,“机器学习模块”再增加A功能模块的测试用例,并减少B功能模块的测试用例的基础上,开始进行第二轮测试时,发现A功能块问题已经得到基本解决(测试全部通过或者测试失败率小于5%),但是原本测试通过的B功能块开始出现问题(测试失败率大于20%)。此时“机器学习模块”在不会按照原本的三个模块输入量提供方案完成后续操作,即减少A功能块的测试问题点,而增加B功能块的测试点。

此时“机器学习模块”判定,虽然A模块在第二轮测试时的问题得到解决,但是在第一轮测试时发现很多问题,所以“机器学习模块”会在保留A功能模块最小测试内容的基础上,会按照一定的权重值,随机增加第一轮测试时A功能模块通过的测试用例和测试失败的测试用例,其增加的测试用例数量占第一轮A功能模块所有测试用例的40%。并按照三个模块提供的建议,增加B功能块的测试点。

四、继续完成第三轮测试后,如果A功能模块仍然全部测试通过(或者小于5%),则同样按照上述的方式,将增加的测试用例数量从第二轮的40%降低至30%,如果A功能模块出现了超过一定权重(如超过20%的测试失败率),则将同样按照上述的方式,将增加的测试用例数量从第二轮的40%提升至50%。

五、在执行若干轮测试后,由上可见,当A功能模块连续四轮测试的测试失败率均小于5%,则认为A功能模块“真正”通过测试,在后期的测试中仅保留最小的测试内容。若A功能模块在后期的测试中又出现失败率大于5%的情况,则按照上述操作重复执行。

在该应用场景的一种典型应用案例中,其具体实施的过程如下:

当测试人员需要对某个控制器进行HIL测试时,测试人员首先将该控制器的功能规范导入至上位机。上位机在解析该功能规范后,首先将功能规范划分成三个功能策略(功能块),并根据其上述的三个功能策略生成流程图/状态图/遍历图等。

上位机根据生成的流程图/状态图/遍历图,分别对三个功能策略ABC(功能块)各生成一条原始的测试用例,并基于此原始的测试用例,根据“随机增加有效值,特征值选定,边界值处理及反向/故障”的原则,随机生成若干条扩展测试用例(如A生成10条,B生成20条,C生成30条)。同时上位机根据所测试的HIL环境生成对应的HIL测试接口模型。

在HIL测试接口模型中,将上述的测试用例(A生成10条,B生成20条,C生成30条)和HIL测试环境进行整合,并完成测试工作。

在测试结束后,首先将所执行的共计60条测试用例根据聚类分析模块,失败率预测模块和用例挖掘模块对测试结果进行处理,同时在“测试用例基线化”模块里,对测试用例进行基线化操作,只保留功能策略ABC(功能块)最基本的测试用例并作为后面生成更多测试时的模板。

在完成对测试结果和测试用例处理后,将测试结果发送至机器学习单元用于自学习的过程,并根据学习后的结果优化当前的测试用例,以便于在下一次开展回归测试时更有发现更多的软件问题。

此外,参照图5,本申请实施例还提供一种回归测试装置,所述回归测试装置包括:

分析模块M1,用于对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理;

优化模块M2,用于根据分析处理结果对所述测试用例进行优化,生成目标测试用例;

切换模块M3,用于基于所述目标测试用例进行下一轮回归测试。

示例性的,所述分析模块还用于:

根据测试用例的测试结果剔除回归测试中的相似或者低敏感度的测试用例。

示例性的,所述分析模块还用于:

基于失败率预测模型分析测试用例通过或失败的热点图,基于所述热点图对下一轮回归测试推送易失败的测试用例。

示例性的,所述分析模块还用于:

对所述热点图中对应的易失败的测试用例生成高支持度的测试用例,进行颗粒度更小的模板复用。

示例性的,所述回归测试装置还包括加载模块,用于:

所述对测试用例的测试结果进行聚类分析、失败率预测和用例挖掘的分析处理的步骤之前:

根据回归测试的场景要求生成所述回归测试的应用场景,并基于所述应用场景生成所述回归测试的接口模型;

通过所述接口模型加载测试用例和所述应用场景,在回归测试环境中运行所述应用场景下的所述测试用例,得到所述测试用例的测试结果。

示例性的,所述测试用例包括原始测试用例和/或扩展测试用例,所述加载模块还用于:

所述根据回归测试的场景要求生成所述回归测试的应用场景的步骤之前:

获取待测控制器的功能需求规范,并生成所述功能需求规范的逻辑关系图;

基于所述逻辑关系图生成原始测试用例,并对所述原始测试用例进行分解和扩展,得到扩展测试用例。

示例性的,所述加载模块还用于:

解析所述功能需求规范得到所述功能需求规范的测试步骤,划分所述测试步骤的功能得到所述功能需求规范的功能块;

基于所述功能块的功能内容生成所述功能需求规范的逻辑关系图。

示例性的,所述加载模块还用于:

随机增加所述原始测试用例的有效值,选定所述原始测试用例的特征值,处理所述原始测试用例的边界值,增加所述原始测试用例的反向和/或故障测试用例,得到扩展测试用例。

示例性的,所述优化模块还用于:

对测试问题数量超过预设值的功能块,增加所述功能块对应测试用例的测试密度;

对测试问题数量未超过预设值的功能块,减少所述功能块对应测试用例的测试相似度。

本申请提供的回归测试装置,采用上述实施例中的回归测试方法,解决常规技术中半实物仿真自动化测试不准确且覆盖度低的技术问题。与常规技术相比,本申请实施例提供的回归测试装置的有益效果与上述实施例提供的回归测试方法的有益效果相同,且回归测试装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。

此外,本申请实施例还提供一种回归测试设备,所述回归测试设备包括:存储器、处理器、及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的回归测试方法的步骤。

此外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的回归测试方法的步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对常规技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

技术分类

06120116545939