回归测试方法及系统与流程

文档序号:18301439发布日期:2019-07-31 10:11阅读:442来源:国知局
回归测试方法及系统与流程

本发明涉及测试技术领域,特别是涉及一种回归测试方法及系统。



背景技术:

基于模型开发是指一种开发方式,即用模型的形式实现算法,比如matlab/simulink模型。如今基于模型开发越来越多运用在汽车领域的软件开发中,图形化的编程方式使工程师更关注于算法本身而不是编程语言,同时开发出的模型也更具有可读性,模型的早期验证和文档管理也比传统的手写代码方便。软件测试作为基于模型开发过程中的一个重要环节也越来越趋近于自动化,各种自动化测试的方法层出不穷。

在模型测试验证通过后,还会有很多次的版本迭代,每一次的版本迭代后都需要进行回归测试,为了确认每次更新模型后没有引入新的错误或导致其他模型错误。回归测试是软件生命周期中一个很重要的部分,如何能够提高回归测试的效率成为本领域技术人员迫切解决的一个技术问题。



技术实现要素:

本发明的一个目的是要提供一种回归测试方法及系统,以解决回归测试效率低、成本高的问题。

本发明一个进一步的目的是对上一次的基线测试用例库自动进行筛选、修改和删除,在测试完成后自动保存测试用例和测试结果,形成新的基线测试用例库,大大提高了测试用例的编写效率,减少测试用例的增长速度。

一方面,本发明提供了一种回归测试方法,包括:

识别并删除初始基线测试用例库中的不可复用测试用例;

获取所述初始基线测试用例库中与模型变更部分相对应的待更新测试用例;

按照新的模型功能和测试需求修改所述待更新测试用例,生成最终基线测试用例库;

运行所述最终基线测试用例库以实现回归测试。

可选地,所述识别并删除初始基线测试用例库中的不可复用测试用例包括:

判断模型中是否有部分模型发生更改,所述部分模型发生更改包括但不限于其输入输出接口的数量、顺序和定义中的至少一项发生变化;

若所述部分模型发生更改,则判定与之相对应的测试用例为不可复用测试用例。

可选地,所述获取所述初始基线测试用例库中与模型变更部分相对应的待更新测试用例包括:

运行删除了所述不可复用测试用例后的初始基线测试用例;

判断剩余的可复用测试用例的覆盖度;

若所述覆盖度不为零,则判定当前的可复用测试用例覆盖了变更后的模型。

可选地,在所述按照新的模型功能和测试需求修改所述待更新测试用例后,还包括:

在修改过的基线测试用例库中增加新的测试用例以形成最终基线测试用例库。

可选地,所述运行所述最终基线测试用例库以实现回归测试包括:

将所述最终基线测试用例库保存成excel数据;

读取所述excel数据,自动调用simulink的工具箱的api把测试用例的输入输出与模型的输入输出对应上;

导入所述测试用例后自动执行mil仿真,得到mil仿真的测试结果;

将模型自动生成代码后执行sil仿真,得到sil仿真的测试结果;

自动比对测试用例编写的期望输出结果、mil仿真的输出结果和sil仿真的输出结果,判断三者之间的误差是否在给定的误差范围内;

根据仿真结果、状态、决策、覆盖率报告、软件版本信息、模型概述信息生成测试报告;

若测试报告合格,则自动保存本次测试的测试用例和测试结果,形成新的基线测试用例库。

可选地,在所述删除初始基线测试用例库中的不可复用测试用例之前还包括:

根据测试需求选择模型或者模型中的一个子系统,自动调用simulink的工具箱的接口函数,生成针对测试对象的测试框架,并保存成新的文件;

选取并加载模型仿真和生成代码必须的变量到matlab工作区;

读取初始基线测试用例库。

另一方面,本发明还提供了一种回归测试系统,包括:

处理单元,用于识别并删除初始基线测试用例库中的不可复用测试用例;

获取单元,用于获取所述初始基线测试用例库中与模型变更部分相对应的待更新测试用例;

修正单元,用于按照新的模型功能和测试需求修改所述待更新测试用例,生成最终基线测试用例库;

运行单元,用于运行所述最终基线测试用例库以实现回归测试。

可选地,所述处理单元还配置成在模型中有部分模型发生更改时判定与之相对应的测试用例为不可复用测试用例,其中,

所述部分模型发生更改包括但不限于其输入输出接口的数量、顺序和定义中的至少一项发生变化。

可选地,所述获取单元还配置成在运行删除了所述不可复用测试用例的初始基线测试用例时判定覆盖了变更后的模型的可复用测试用例。

可选地,还包括:

添加单元,用于在修改过的基线测试用例库中增加新的测试用例以形成最终基线测试用例库。

本发明的回归测试方法,首先自动识别并删除初始基线测试用例库中的不可复用测试用例;然后获取初始基线测试用例库中与模型变更部分相对应的待更新测试用例;其次按照新的模型功能和测试需求修改待更新测试用例,生成最终基线测试用例库;最后,运行最终基线测试用例库以实现回归测试。采用上述方法,自动将基线测试用例库的测试用例分成无需修改、需修改和不可复用三类。对上一次的基线测试用例库进行筛选、修改和删除,在测试完成后自动保存测试用例和测试结果,形成新的基线测试用例库。测试人员无需再花精力去整理原测试用例,大大提高了测试用例的编写效率,可以有效减少测试用例的增长速度。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:

图1是根据本发明一个实施例的回归测试方法的示意性流程图;

图2是根据本发明另一个实施例的回归测试方法的示意性流程图;

图3是根据本发明的一个实施例的回归测试系统的示意性系统图。

图中的附图标记为:

1-处理单元,2-获取单元,3-修正单元,4-运行单元。

具体实施方式

图1是根据本发明一个实施例的回归测试方法的示意性流程图。图2是根据本发明另一个实施例的回归测试方法的示意性流程图。图3是根据本发明的一个实施例的回归测试系统的示意性系统图。下面参照图1至图3来描述本发明实施例的回归测试方法及系统。

参考图1,本实施例中的回归测试方法包括:

步骤s101,自动识别并删除初始基线测试用例库中的不可复用测试用例;

步骤s102,获取初始基线测试用例库中与模型变更部分相对应的待更新测试用例;

步骤s103,按照新的模型功能和测试需求修改待更新测试用例,生成最终基线测试用例库;

步骤s104,运行最终基线测试用例库以实现回归测试。

采用上述方法,自动将基线测试用例库的测试用例分成无需修改、需修改和不可复用三类。对上一次的基线测试用例库进行筛选、修改和删除,在测试完成后自动保存测试用例和测试结果,形成新的基线测试用例库。测试人员无需再花精力去整理原测试用例,大大提高了测试用例的编写效率,可以有效减少测试用例的增长速度。

进一步地,在本实施例中,识别并删除初始基线测试用例库中的不可复用测试用例包括:

判断模型中是否有部分模型发生更改,部分模型发生更改包括但不限于其输入输出接口的数量、顺序和定义中的至少一项发生变化;

若部分模型发生更改,则判定与之相对应的测试用例为不可复用测试用例。

进一步地,在本实施例中,获取初始基线测试用例库中与模型变更部分相对应的待更新测试用例包括:

运行删除了掉不可复用测试用例后的初始基线测试用例;

判断剩余的可复用测试用例的覆盖度;

若覆盖度不为零,则判定当前的可复用测试用例覆盖了变更后的模型。

在一个进一步的实施例中,在按照新的模型功能和测试需求修改待更新测试用例后,还包括:

在修改过的基线测试用例库中增加新的测试用例以形成最终基线测试用例库。

进一步地,在本实施例中,运行最终基线测试用例库以实现回归测试包括:

将最终基线测试用例库保存成excel数据;

读取excel数据,自动调用simulink的工具箱的api把测试用例的输入输出与模型的输入输出对应上;

导入测试用例后自动执行mil仿真,得到mil仿真的测试结果;

将模型自动生成代码后执行sil仿真,得到sil仿真的测试结果;

自动比对测试用例编写的期望输出结果、mil仿真的输出结果和sil仿真的输出结果,判断三者之间的误差是否在给定的误差范围内;

根据仿真结果、状态、决策、覆盖率报告、软件版本信息、模型概述信息生成测试报告;

若测试报告合格,则自动保存本次测试的测试用例和测试结果,形成新的基线测试用例库。

进一步地,在一个实施例中,在删除初始基线测试用例库中的不可复用测试用例之前还包括:

根据测试需求选择模型或者模型中的一个子系统,自动调用simulink的工具箱的接口函数,生成针对测试对象的测试框架,并保存成新的文件;

选取并加载模型仿真和生成代码必须的变量到matlab工作区;

读取初始基线测试用例库。

参考图2和图3,在本实施例中的回归测试系统包括处理单元1、获取单元2、修正单元3和运行单元4。处理单元1用于识别并删除初始基线测试用例库中的不可复用测试用例。获取单元2用于获取初始基线测试用例库中与模型变更部分相对应的待更新测试用例。修正单元3用于按照新的模型功能和测试需求修改待更新测试用例,生成最终基线测试用例库。运行单元4用于运行最终基线测试用例库以实现回归测试。

在本实施例中,处理单元1进一步配置成:

判断模型中是否有部分模型发生更改,部分模型发生更改包括但不限于其输入输出接口的数量、顺序和定义中的至少一项发生变化;

若部分模型发生更改,则判定与之相对应的测试用例为不可复用测试用例。

在本实施例中,获取单元2进一步配置成:

运行删除了不可复用测试用例的初始基线测试用例;

判断可复用测试用例的覆盖度;

若覆盖度不为零,则判定当前测试用例覆盖了变更后的模型。

在一个进一步的实施例中,回归测试系统还包括:

添加单元,用于在修改过的基线测试用例库中增加新的测试用例以形成最终基线测试用例库。

参考图2,下面详细介绍回归测试系统的测试方法:

1)根据测试需求选择模型或者模型中的一个子系统,自动调用simulink的工具箱simulinktesttool的api(接口函数),生成针对测试对象的testharness(测试框架),并保存成新的文件。

2)选取并加载模型仿真和生成代码必须的变量到matlab工作区,变量可以储存在*.mat或者*.m文件。

3)当没有基线测试用例库时(比如第一版软件测试时),自动读取待测试模型的顶层的输入(inport)、输入(outport)模块的名字,生成测试用例模板,测试人员按照输入输出对应名称编写测试用例。

4)如果有基线测试用例库,则自动先识别出是否有因模型输入输出变更导致的测试用例不可复用,其中,输入输出数量、顺序、定义等的变更都会导致测试用例不可复用。所以读取模型中的输入输出,与基线测试用例库比对,输入输出名称对应不上的即为不可复用测试用例,将不可复用测试用例删除。

5)对于可复用的测试用例,先自动对当前版本的测试模型运行一次,得到可复用测试用例对于当前测试模型的覆盖度。当一个测试用例没有覆盖变更部分的模型时,就不需要修改;对于覆盖了变更部分的模型时,列出这些测试用例,测试人员根据变更后的模型和新的测试需求修改、增加和删除测试用例。

6)经过以上步骤就得到了新的测试用例集合,以excel的形式保存下来。读取excel中的数据,自动调用simulink的工具箱simulinktesttool的api把测试用例的输入输出与模型的输入输出对应上。

7)导入测试用例后自动执行mil(modelinloop)仿真,得到mil仿真的测试结果。

8)把测试模型自动生成代码,执行sil(softwareinloop)仿真,得到sil仿真的测试结果。

9)自动比对测试用例编写的期望输出、mil仿真的输出和sil仿真的输出是否在给定的误差范围内,在误差范围内则通过测试。

10)读取仿真结果、condition(状态)、decision(决策)覆盖率报告、软件版本信息、模型概述信息生成测试报告。

11)如果测试通过并确认发布软件,则自动保存本次测试的测试用例和测试结果,形成新的基线测试用例库。

在上述实施例中的回归测试系统中,部分代码如下:

selectsystem();%选取需要测试模型

loadparameter();%加载数据

checktestcaselib();%检查测试用例

loadtestcase();%加载测试用例

simmodel();%mil仿真

generatecode();%生成代码

simcode();%sil仿真

generatereport();%生成测试报告

采用上述回归测试方法和系统,在形成一版基线版本的软件后,自动保存基线版本软件的测试用例和测试结果,作为下一次版本迭代后回归测试的基线测试用例库,在第二版软件以后,针对迭代后的模型,自动将上一次的基线测试用例库的测试用例分成无需修改、需修改和不可复用三类,对其进行筛选、修改和删除,在测试完成后自动保存测试用例和测试结果,形成新的基线测试用例库。

进一步地,原本的方案需要自己整理上个版本的测试用例,人工的分析需要删改哪些测试用例和修改哪些测试用例,这些工作都是比较繁琐的。在上述实施例中,当模型发生接口变动时,筛选出原基线测试用例库中因接口变动不可复用的测试用例,再根据原测试用例是否覆盖修改过的模型,把可复用的测试用例分成无需修改和需修改两类。这样,可以有效提高回归测试的测试用例编写效率。以上一次测试的测试用例和结果为基准,减少了一部分重复工作。同时,自动区分出无需修改、需修改和不可复用的测试用例,测试人员无需再花精力去整理原测试用例,大大提高了测试用例的编写效率。

另外,上述系统和方法可自动区分出了需修改的测试用例,一部分测试用例来自于修改原本的测试用例,可以有效减少测试用例的增长速度。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1