一种回归测试驱动的软件版本管理方法、系统及存储介质与流程

文档序号:17720864发布日期:2019-05-22 02:09阅读:207来源:国知局
一种回归测试驱动的软件版本管理方法、系统及存储介质与流程

本发明涉及一种回归测试驱动的软件版本管理方法、系统及存储介质,属于软件演化分析技术领域。



背景技术:

传统软件开发过程规定了软件开发的固定模式,如瀑布模型将软件开发过程划分为计划制定、需求分析、软件设计、程序编写、软件测试、运行维护等六个基本阶段,研发人员按序依次完成。然而,随着软件行业的快速发展,软件规模越来越大、复杂程序越来越高,软件开发周期、开发成本失控的问题日益严重。此时,强调迭代式开发、增量交付、持续集成、反馈推动的敏捷开发模型应运而生,并凭借其快速研发、快速交付、快速响应能力得到了业界的广泛认可。在敏捷开发过程中,一个大项目可能会被分解为多个相互联系、可独立运行的子项目分别开发,在开发时遇到需求改变会要求研发人员主动拥抱变化,由此会产生多个不同形式的软件版本。此时,需要应用软件版本管理工具svm(softwareversionmanagement,软件版本管理)进行记录和管理,来帮助研发人员更好地了解软件在不同时期的功能和性能。

目前,软件版本管理已经成为当前软件研发过程中的重要组成部分,学术界和工业界也相继提出了多种软件版本管理方法,并研发了多种成熟的svm工具(如cvs、svn、git等)。通过svm工具,研发人员可以存储目录和文件的修改历史、支持软件的配置管理活动、追踪多个版本的开发和维护活动、发布软件的相关信息,这些功能对提高软件产品的研发效率起到了至关重要的作用。然而,虽然当前svm工具已对软件源程序的管理提供了很好的支持,但对软件所包含测试代码的管理还未提供有效的支持。传统svm工具大多将测试代码看作为软件源程序的一部分,研发人员需要自己维护每个软件版本的测试代码;此外在新版本提交时,由于功能更改、错误修正、格式调整等原因,前一版本的测试用例可能存在不可用、不充足等情况,需要人工对其进行修正和补充、耗时费力。



技术实现要素:

本发明的目的在于克服现有技术中的不足,提供一种回归测试驱动的软件版本管理方法、系统及存储介质,能够有效解决当前svm工具难以有效支持测试代码的管理、回归测试信息无法充分利用的难题,进而帮助研发人员提高软件版本管理质量,提高软件产品研发效率。

为达到上述目的,本发明是采用下述技术方案实现的:

第一方面,本发明提供了一种回归测试驱动的软件版本管理方法,所述方法包括如下步骤:

采用前一版本软件源程序所对应测试程序中的可用测试用例对新提交源程序进行第一阶段验证,获取第一次覆盖结果;

根据第一次覆盖结果,对新提交源程序开展测试用例自动生成;

采用所生成的测试用例对新提交源程序进行第二阶段验证,获取第二次覆盖结果;

根据第二次覆盖结果,编写新测试用例,生成新提交源程序的测试程序;

计算测试程序的校验文件和版本号,结合新提交源程序的校验文件和版本号生成新版本软件。

结合第一方面,进一步的,所述可用测试用例的获取方法包括:

根据给定的软件仓库和当前软件版本的源程序,查找前一软件版本的测试用例;

对前一软件版本的测试用例进行可用性分析,将分析获取的可用测试用例作为新版本软件源程序的可用测试用例。

结合第一方面,进一步的,所述第二阶段验证的方法包括:

以给定的当前软件版本的源程序、第一次覆盖结果和最大窗口宽度,该宽度用于限定测试自动生成结果的最大数目,以第一次覆盖结果以外的语句作为测试目标,生成基于随机策略的异常错误测试用例;

采用所述异常错误测试用例检测新提交源程序所包含的异常错误。

结合第一方面,进一步的,若所述新提交源程序未能通过第一阶段验证或第二阶段验证,则返回修改所述新版本软件源程序。

结合第一方面,进一步的,生成所述新版本软件的方法包括:

采用checksum算法分别计算测试程序二进制版本的总校验和、新版本软件源程序二进制版本的总校验和,并由此生成测试程序的校验文件、新版本软件源程序的校验文件;

根据测试程序的校验文件、新版本软件源程序的校验文件生成新版本软件校验文件;

采用gnu或windows或.netframework风格制订测试程序的版本号、新版本软件源程序的版本号;

将测试程序的版本号、新版本软件源程序的版本号相结合生成新版本软件版本号;

根据新版本软件校验文件、新版本软件版本号生成新版本软件。

结合第一方面,进一步的,所述校验文件中包括奇偶校验码、异或校验码、crc校验码、lrc校验码、格雷码校验码、md5校验码。

第二方面,本发明实施例提供了一种回归测试驱动的软件版本管理系统,其特征在于,所述系统包括:

第一验证模块:用于采用前一版本软件源程序所对应测试程序中的可用测试用例对新提交源程序进行第一阶段验证,获取第一次覆盖结果;

测试用例生成模块:用于根据第一次覆盖结果,对新提交源程序开展测试用例自动生成;

第二验证模块:用于采用所生成的测试用例对新提交源程序进行第二阶段验证,获取第二次覆盖结果;

编写模块:用于根据第二次覆盖结果,编写新测试用例,生成新提交源程序的测试程序;

计算模块:用于计算测试程序的校验文件和版本号;

新版本软件生成模块:用于根据测试程序的校验文件和版本号、新提交源程序的校验文件和版本号生成新版本软件。

第三方面,本发明实施例还提供了一种回归测试驱动的软件版本管理系统,包括处理器及存储介质;

所述存储介质用于存储指令;

所述处理器用于根据所述指令进行操作以执行根据前述方法的步骤。

第四方面,本发明实施例提供了计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述方法的步骤。

综上,本发明实施例提供的回归测试驱动的软件版本管理方法、系统及存储介质,能够有效解决当前svm工具难以有效支持测试代码的管理、回归测试信息无法充分利用的难题,进而帮助研发人员提高软件版本管理质量,提高软件产品研发效率。

附图说明

图1是本发明实施提供的一种回归测试驱动的软件版本管理方法的流程图;

图2是图1中软件版本自动验证方法的流程图;

图3是图1中测试用例自动生成方法的流程图;

图4是图1中测试版本自动管理方法的流程图;

图5是图1中软件版本自动管理方法的流程图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

图1为本发明实施提供的一种回归测试驱动的软件版本管理方法的流程图,包括如下步骤:

step1软件版本自动验证:针对用户新提交的源程序版本,分析该版本前一版本源程序所对应测试程序中的可用测试用例,并用其检测新提交源程序中的缺陷:若存在缺陷,则表明源程序存在问题,需要修改后重新提交;否则表明源程序通过第一阶段验证,此时输出可用测试用例及其覆盖信息,用以指导下一阶段测试自动生成。

step2测试用例自动生成:以上一步未覆盖语句为测试目标针对新提交源程序开展测试自动生成,在生成的同时不断执行新生成的测试用例,用以观察新提交源程序是否发生异常错误:若发生异常,则表明源程序存在问题,需要修改后重新提交;否则表明源程序通过第二阶段验证,此时输出新生成的测试用例及覆盖信息,用以指导下一阶段测试用例编写。在测试自动生成过程中,以前一阶段未覆盖结果的满足情况构建停止准则。

step3测试版本自动管理:以前两步未覆盖语句作为测试目标针对新提交源程序进行测试用例编写,在编写的同时不断执行新生成的测试用例,用以检测新提交源程序中的缺陷:若存在缺陷,则表明源程序存在问题,需要修改后重新提交;否则表明源程序通过第三阶段验证,此时基于前两步生成测试用例生成新的测试程序,并计算测试程序的校验码,输出测试程序的校验文件。

step4软件版本自动管理:计算生成新提交源程序的版本号,并协同测试程序版本号生成软件的版本号;分析生成新提交源程序的校验文件,并协同测试程序的校验文件生成软件的校验文件;软件版本号、校验文件生成后,连同新提交源程序及其对应的测试程序保存至软件仓库中,完成软件新版本的生成和注册。

图2为软件版本自动验证的流程图。针对新提交的源程序版本,通过分析前一版本对应的测试程序识别新提交源程序可用的测试用例,对其进行执行来自动验证新提交的源程序,同时生成覆盖信息为测试自动生成提供指导。具体步骤如下:

步骤1:起始状态;

步骤2:输入软件仓库sr、源程序的当前版本pi;

步骤3:判断pi是否为初始版本p0,若是则执行步骤4,否则执行步骤6;

步骤4:初始化测试用例集toldi为空null;

步骤5:初始化toldi的覆盖信息cov(toldi)为空null,执行步骤10;

步骤6:从sr中取出pi前一版本所在软件版本vi-1=<idvi-1,pi-1,ti-1,cc_file_vi-1>,idvi-1、pi-1、ti-1、cc_file_vi-1分别表示vi-1的版本号、源程序、测试程序和校验文件;

步骤7:在ti-1中识别所有pi可用的测试用例构成toldi;

步骤8:应用pi执行toldi,根据执行结果将toldi进一步划分为成功测试用例集told_passedi和失败测试用例集told_failedi,并记录toldi的覆盖信息;

步骤9:判断told_failedi中内容是否为空null,若是则执行步骤10,否则执行步骤11;

步骤10:pi通过第1阶段验证,输出toldi和cov(toldi),执行步骤12;

步骤11:pi未通过第1阶段验证,输出told_failedi;

步骤12:结束状态。

图3为测试用例自动生成的流程图。以前一版本测试程序未能覆盖的代码区域作为测试目标开展测试自动生成,并在同时利用新生成程序开展新版本源程序的异常错误检测,记录自动生成测试用例的覆盖信息。在测试生成时以代码覆盖情况构建停止准则。具体步骤如下:

步骤1:起始状态;

步骤2:输入源程序的当前版本pi、pi在toldi上的覆盖信息cov(toldi)和窗口宽度window;

步骤3:计算pi中未覆盖的代码区域uncov(toldi);

步骤4:初始化测试用例集tnew_autoi为空null,初始化覆盖序列listcov=<cov1,cov2,…,covwindow>中各个元素的值为空;

步骤5:针对pi随机生成一个测试用例t;

步骤6:执行t并计算覆盖信息cov(t);

步骤7:判断执行t时是否发生异常,若是则执行步骤14,否则执行步骤8;

步骤8:添加t到tnew_autoi中,即:tnew_autoi=tnew_autoi∪{t};

步骤9:更新覆盖序列listcov;

步骤10:判断cov(tnew_autoi)是否包含了uncov(toldi)中所有语句,若是则执行步骤13,否则执行步骤11;

步骤11:判断tnew_autoi中测试用例的数量是否大于window,若是则执行步骤12,否则执行步骤5;

步骤12:判断listcov中各个元素的值是否相同,若是则执行步骤13,否则执行步骤5;

步骤13:pi通过第2阶段验证,输出tnew_autoi和cov(tnew_autoi),执行步骤15;

步骤14:pi未通过第2阶段验证,输出引发pi异常的测试用例t;步骤15:结束状态。

图4为测试版本自动管理的流程图。以前一版本测试程序和自动生成测试用例未能覆盖的代码区域作为测试目标进行测试用例编写,并用此检测新提交源程序中的缺陷。源程序验证通过后,组合生成新提交源程序对应的测试程序及其版本号和校验文件。具体步骤如下:

步骤1:起始状态;

步骤2:输入源程序的当前版本pi、前一版本可用的测试用例toldi及覆盖信息cov(toldi)和自动生成的测试用例tnew_autoi及覆盖信息cov(tnew_autoi);

步骤3:计算pi中未覆盖的代码区域uncov(toldi∪tnew_autoi);

步骤4:以uncov(toldi∪tnew_autoi)作为测试目标针对pi编写新的测试用例tnew_manuali;

步骤5:应用pi执行tnew_manuali,根据执行结果将tnew_manuali进一步分为成功测试用例集tnew_manual_passedi和失败测试用例集tnew_manual_failedi;

步骤6:判断tnew_manual_failedi是否为空null,若是则执行步骤7,否则执行步骤12;

步骤7:将toldi、tnew_autoi和tnew_manuali合并生成pi对应的测试程序ti;

步骤8:采用gnu、windows、.netframework等风格制订测试程序ti的版本号idti;

步骤9:采用奇偶校验、异或校验、crc校验、lrc校验、格雷码校验、md5校验等方式生成toldi、tnew_autoi、tnew_manuali等文件的校验码;

步骤10:采用checksum算法计算ti二进制版本的总校验和,并由此生成ti的校验文件cc_file_ti,其内容包括toldi、tnew_autoi、tnew_manuali、ti等文件的校验码;

步骤11:pi通过第3阶段验证,输出ti、idti和cc_file_ti,执行步骤13;

步骤12:pi未通过第3阶段验证,输出tnew_manual_failedi;步骤13:结束状态。

图5为软件版本自动管理的流程图。分析生成新提交源程序的版本号,并协同测试程序的版本号生成新版本软件的版本号;分析生成新提交源程序的校验文件,并协同测试程序的校验文件生成新版本软件的校验文件;添加新版本至软件仓库中,完成软件新版本的注册和发布。具体步骤如下:

步骤1:起始状态;

步骤2:输入源程序的当前版本pi及对应测试程序ti、测试程序版本号idti和校验文件cc_file_ti;

步骤3:采用gnu、windows、.netframework等风格制订源程序的版本号idpi;

步骤4:将源程序版本号和测试程序版本号组合生成软件版本号idvi=<idpi,idti>;

步骤5:采用checksum算法计算pi二进制版本的总校验和,并由此生成pi的校验文件cc_file_pi,其内容包括cc_file_pi等文件的校验码;

步骤6:将cc_file_pi和cc_file_ti中内容组合生成软件版本vi的校验文件cc_file_vi,其内容包括pi、toldi、tnew_autoi、tnew_manuali、ti等文件的校验码;

步骤7:将软件版本vi=<idpi、pi、ti、cc_file_vi>添加到软件仓库sr中;

步骤8:输出当前软件仓库sr和软件版本vi;

步骤9:结束状态。

综上所述,本发明解决了当前svm工具难以有效支持测试代码的管理、回归测试信息未充分利用的难题,从而能增强svm工具软件产品功能,帮助研发人员提升软件版本管理质量,最终起到了提高软件产品研发效率和保障软件产品质量的目的。

本发明实施例还提供了一种回归测试驱动的软件版本管理系统,所述系统能够用于执行前述的回归测试驱动的软件版本管理方法,包括:

第一验证模块:用于采用前一版本软件源程序所对应测试程序中的可用测试用例对新提交源程序进行第一阶段验证,获取第一次覆盖结果;

测试用例生成模块:用于根据第一次覆盖结果,对新提交源程序开展测试用例自动生成;

第二验证模块:用于采用所生成的测试用例对新提交源程序进行第二阶段验证,获取第二次覆盖结果;

编写模块:用于根据第二次覆盖结果,编写新测试用例,生成新提交源程序的测试程序;

计算模块:用于计算测试程序的校验文件和版本号;

新版本软件生成模块:用于根据测试程序的校验文件和版本号、新提交源程序的校验文件和版本号生成新版本软件。

本发明实施例还提供了一种回归测试驱动的软件版本管理系统,也能够用于执行前述的回归测试驱动的软件版本管理方法,包括处理器及存储介质;

所述存储介质用于存储指令;

所述处理器用于根据所述指令进行操作以执行根据前述方法的步骤。

本发明实施例还提供了计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法的步骤。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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