软件自动化测试框架及测试方法转让专利

申请号 : CN201910442962.5

文献号 : CN110232024B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李迎龙陈晓敬

申请人 : 必成汇(成都)科技有限公司

摘要 :

本发明公开了一种软件自动化测试框架及测试方法,测试框架包括测试代码生成模块、执行器调度模块、接口入参处理模块、数据库监听模块、断言调度模块、测试结果处理及展示平台;软件自动化测试包括:步骤1,自动生成软件测试代码或测试用例,步骤2,根据测试类型进行执行器调度和入参处理;步骤3,对软件测试过程设置监听;步骤4,对测试结果设置断言;步骤5,对测试结果进行统计、分析和展示;本发明的框架能够方便的对软件进行测试,覆盖面广,无需人工编码,节约了软件测试成本。

权利要求 :

1.软件自动化测试框架,其特征在于,包括测试代码生成模块、执行器调度模块、接口入参处理模块、数据库监听模块、断言调度模块、测试结果处理及展示平台;

所述测试代码生成模块用于通过Java反射找出接口入参所需的字段和属性值,根据接口入参所需字段和属性值,将被测项目的原始代码自动生成适于检测的测试用例代码或测试用例xls文件,xls文件中包含测试方法需要的参数和预期效果;

所述执行器调度模块用于根据测试类型调度测试引擎,测试引擎的底层框架选择TestNG或Junit单元测试框架;

所述接口入参处理模块用于根据入参字段的正常值和异常值,对入参数据进行排列组合,获得适用于不同测试类型的入参数据;

所述数据库监听模块用于对软件测试过程的测试系统数据进行监听,在测试执行完成后根据用户选择进行数据回滚;

所述断言调度模块用于对测试方法或接口返回结果进行录制,并根据录制的正确测试结果对重复测试的返回值进行校验;

所述测试结果处理及展示平台用于对软件测试过程中的所有数据进行统计、筛选、处理和分析,将测试结果与历史测试结果进行比对,分析测试结果出错原因,并根据测试结果构建报表、图形,进行多维度展示。

2.应用权利要求1所述软件自动化测试框架的软件自动化测试方法,其特征在于,具体包括以下步骤:步骤1,测试代码生成模块使用maven创建工程并添加依赖及插件,选择代码或xls类型,如果使用代码模式,则自动生成待测项目的测试代码,若选用xls文件则使用maven插件自动生成测试用例模板,在模板中设计测试用例;

步骤2,测试代码或测试用例设计完成,执行器调度模块根据测试用例类型调度测试引擎,测试引擎底层框架选择TestNG或Junit单元测试框架,接口入参处理模块根据入参字段的正常值和异常值,对入参数据进行排列组合,获得不同结果的入参数据,并将入参数据存储在数据库中;

步骤3,选择是否进行数据监听,若选择进行监听则为测试框架添加方法注释,将入参数据输入测试数据库进行测试,在每轮测试执行前对当前数据库状态进行监听,测试执行完毕后,用户选择是否进行数据回滚,若进行数据回滚,数据库监听模块根据监听结果将数据库数据恢复至测试执行前的状态,若不进行数据回滚,数据库监听模块存储监听数据即可;

步骤4,断言调度模块在软件测试过程中对测试方法或接口返回结果进行录制,在录制结果准确的情况下,将录制结果作为基准测试,对重复执行的测试返回值进行校验,判断测试结果是否满足预期要求;

步骤5,测试结果处理及展示平台对所有测试结果进行统计、筛选、处理和分析,并将处理结果制成报表、图形,进行多维度展示。

3.根据权利要求2所述的软件自动化测试方法,其特征在于,所述步骤2中测试用例类型有单元测试、集成测试、接口测试,所述根据测试用例类型调度测试引擎指的是将不同测试类型的测试代码输入对应的测试数据库。

4.根据权利要求2所述的软件自动化测试方法,其特征在于,所述步骤2中接口入参处理模块使用等价类法、边界值法对入参字段进行排列组合,得出适用于对应测试类型的入参数据。

说明书 :

软件自动化测试框架及测试方法

技术领域

[0001] 本发明属于数据测试技术领域,特别是涉及一种软件自动化测试框架及测试方法。

背景技术

[0002] 现有技术中web软件自动化测试过程中,需要人工编写测试用例,耗费了大量人力和时间,人工编写的测试用例出错率高,场景覆盖度差,对软件测试有局限性,使得测试结果不够准确;测试完成后测试数据库无法恢复,导致重复回归测试困难,软件测试对测试人员的要求较高,软件测试过程中测试人员参与度高,使得测试结果不够准确。

发明内容

[0003] 本发明的目的在于提供一种软件自动化测试框架,实现软件测试时测试代码和测试用例的自动生成,减少技术人员的工作量和出错率,提高了软件测试效率,还避免了人工编写所带来的覆盖度差、覆盖不全面等问题,软件测试中使用数据监听技术实现对测试前后数据变更的监控,解决了测试数据回滚的问题,利用测试报告展示平台,对测试数据和测试结果进行统一分析和处理,提高了数据分析处理效率和效果。
[0004] 本发明的目的还在于提供一种软件自动化测试方法,使得软件测试更为简便、可控,测试结果能直观查看、分析,有利于软件的错误查询与改进。
[0005] 本发明所采用的技术方案是,软件自动化测试框架,包括测试代码生成模块、执行器调度模块、接口入参处理模块、数据库监听模块、断言调度模块、测试结果处理及展示平台;
[0006] 所述测试代码生成模块用于通过Java反射找出接口入参所需的字段和属性值,根据接口入参所需字段和属性值,将被测项目的原始代码自动生成适于检测的测试用例代码或测试用例xls文件,xls文件中包含测试方法需要的参数和预期效果;
[0007] 所述执行器调度模块用于根据测试类型调度测试引擎,测试引擎的底层框架选择TestNG或Junit单元测试框架;
[0008] 所述接口入参处理模块用于根据入参数据的正常值和异常值,对入参数据进行排列组合,获得适用于不同测试类型的入参数据;
[0009] 所述数据库监听模块用于对软件测试过程的测试系统数据进行监听,在测试执行完成后根据用户选择进行数据回滚;
[0010] 所述断言调度模块用于对测试方法或接口返回结果进行录制,并根据录制的正确测试结果对重复测试的返回值进行校验;
[0011] 所述测试结果处理及展示平台用于对软件测试过程中的所有数据进行统计、筛选、处理和分析,将测试结果与历史测试结果进行比对,分析测试结果出错原因,并根据测试结果构建报表、图形,进行多维度展示。
[0012] 软件自动化测试方法,具体包括以下步骤:
[0013] 步骤1,测试代码生成模块使用maven创建工程并添加依赖及插件,选择代码或xls类型,如果使用代码模式,则自动生成待测项目的测试代码,若选用xls文件则使用maven插件自动生成测试用例模板,在模板中设计测试用例;
[0014] 步骤2,测试代码或测试用例设计完成,执行器调度模块根据测试用例类型调度测试引擎,测试引擎底层框架选择TestNG或Junit单元测试框架,接口入参处理模块根据入参字段的正常值和异常值,对入参数据进行排列组合,获得不同结果的入参数据,并将入参数据存储在数据库中;
[0015] 步骤3,选择是否进行数据监听,若选择进行监听则为软件测试框架添加方法注释,将入参数据输入测试数据库进行测试,在每轮测试执行前对当前数据库状态进行监听,测试执行完毕后,用户选择是否进行数据回滚,若进行数据回滚,数据库监听模块根据监听结果将数据库数据恢复至测试执行前的状态,若不进行数据回滚,数据库监听模块存储监听数据即可;
[0016] 步骤4,断言调度模块在软件测试过程中对测试方法或接口返回结果进行录制,在录制结果准确的情况下,将录制结果作为基准测试,对重复执行的测试返回值进行校验,判断测试结果是否满足预期要求;
[0017] 步骤5,测试结果处理及展示平台对所有测试结果进行统计、筛选、处理和分析,并将处理结果制成报表、图形,进行多维度展示。
[0018] 进一步的,所述步骤2中测试用例类型有单元测试、集成测试、接口测试,所述根据测试用例类型调度测试引擎指的是将不同测试类型的测试代码输入对应的测试数据库。
[0019] 进一步的,所述步骤2中接口入参处理模块使用等价类法、边界值法对入参字段进行排列组合,得出适用于对应测试类型的入参数据。
[0020] 本发明的有益效果是:1、本发明通过自动生成测试代码,减少了工作人员的工作量和代码出错率,提高了测试效率;2、本发明实现了测试用例的自动化生成,避免了人工编写测试用例造成的覆盖度差、覆盖不全面;3、本发明通过数据监听实现了对测试前后数据变更的监控,避免了测试过程中出现数据回滚;4、本发明利用测试报告展示平台,对测试数据和测试结果进行统一的分析、展示,展示效果好。

附图说明

[0021] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022] 图1是软件自动化测试流程图。
[0023] 图2是软件自动化测试框架的界面图。

具体实施方式

[0024] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0025] 软件自动化测试框架,包括测试代码生成模块、执行器调度模块、接口入参处理模块、数据库监听模块、断言调度模块、测试结果处理及展示平台。
[0026] 测试代码生成模块通过Java反射找出接口入参需要的字段和属性值,自动生成测试用例代码或测试用例的xls文件,xls文件中包含测试方法需要的参数以及预期结果,测试人员可以选择采用自动生成的测试用例代码进行参数的组合测试,也可以在xls文件中设计不同参数值以及预期结果进行测试,测试框架能够智能识别xls文件中的测试用例,并将不同的参数传递给待测方法,比较实际结果与测试用例的预期结果;使用测试代码生成模块极大地提高了软件测试的效率,更加有效的覆盖软件测试的不同分支组合,最大程度提高了软件测试的覆盖率,同时采用xls文件进行软件测试对测试人员的编码能力要求降低,测试人员仅需要在xls文件中设计及维护软件测试用例,利用等价类、边界值等方法对入参字段以及预期结果进行排列组合得出入参数据,测试框架自动完成识别及测试工作。
[0027] 执行器调度模块在软件测试代码编写完成或者测试用例的xls文件设计完成后,根据测试类型调度测试引擎,即根据测试类型将测试代码输入不同的测试数据库,测试引擎底层框架选择TestNG或Junit,对底层框架进行优化和升级,测试过程中选择调度多数据源,将测试数据存储在mysql或redis中,并结合maven构建测试;测试类型包括单元测试、集成测试和接口测试。
[0028] 接口入参处理模块根据入参数据中入参字段的正常值和异常值,使用等价类法、边界值法对入参字段进行排列组合,获得不同结果的入参数据。
[0029] 数据库监听模块在测试中选择是否进行数据的回滚,如果选择进行数据回滚,则在软件测试开始前对测试系统当前数据进行监听,在测试执行完成后根据监听结果恢复测试系统数据至测试前,以保证测试环境数据的干净,避免脏数据对测试结果产生影响,如果选择不进行数据回滚,仅对测试过程进行监听,存储监听数据;通过方法注释即可决定是否在测试过程中对数据库进行监听。
[0030] 断言调度模块用于验证测试结果是否符合预期结果,如果没有断言很难保证测试结果的准确性,现有的测试框架只是比较预期结果和实际结果,而本发明的测试框架在比较预期结果和实际结果的基础上,在测试过程中对测试方法或接口返回结果进行录制,录制内容包括方法响应结果的每个参数值和类型,若录制的测试结果正确,则将录制的测试结果定义为基准测试,在后续测试根据基准测试对重复执行的测试返回值进行准确性和一致性校验,实现自动化断言以判断软件测试是否能够通过。
[0031] 测试结果处理及展示平台对软件测试过程中的所有数据进行统计、筛选、处理和分析,测试结果包含总览、类别、测试套件、图表、时间刻度、功能、包等7大部分,支持自定义诸多信息,包括附件添加、缺陷链接、案例链接、测试步骤、功能模块、用户故事、用例名称、用例描述等,将测试结果与历史测试结果进行比对,自动化分析测试用例测试结果出现错误的原因,并根据测试结果处理模块输出的测试结果构建报表、图形,直观的展示软件测试结果。
[0032] 软件测试框架的界面如图2所示,本发明的优势在于能够实现测试代码的自动生成和测试用例模型管理,测试框架在进行软件测试时对测试流程进行可视化编辑,对测试方法或接口返回结果进行精细化校验,软件测试过程中还能智能化识别、自动化驱动和持续集成;本发明的测试框架采用一站式编辑,自动生成测试代码或用例,采用TestNG或Junit作为测试引擎的底层框架,使用mysql或redis完成数据调度,在软件测试过程中对软件测试过程设置数据监听和断言,数据监听能够对数据库的测试数据进行回滚处理,断言根据录制的测试结果对重复测试返回值进行准确性和一致性校验,最后将测试结果输入解释结果处理及展示平台进行统计、筛选、处理和分析,并制成报表、图形进行展示。
[0033] 软件单元测试流程如图1所示,实例步骤如下:
[0034] 步骤1,测试代码生成模块使用maven创建工程并添加依赖及插件,选择代码或xls类型,如果使用代码模式,则自动生成待测项目的测试代码,若选用xls文件则使用maven插件自动生成测试用例模板,在模板中设计测试用例;
[0035] 步骤2,测试用例设计完成,测试框架智能分析测试用例参数及预期结果,执行器调度模块根据测试用例类型调度测试引擎,接口入参处理模块对入参字段进行处理获得不同结果的入参数据,并将入参数据存储在数据库中;
[0036] 步骤3,选择是否进行数据监听,若选择进行监听则为测试框架添加方法注释,在测试中将入参数据输入测试数据库进行测试,在每轮测试执行前监听数据库对当前数据库状态进行监听,测试执行完毕后,用户选择是否进行数据回滚,若进行数据回滚数据库监听模块根据监听结果将数据库数据恢复至测试执行前的状态,测试结果数据存储在配置的数据库中,若不进行数据回滚,则仅将测试数据存储在配置的数据库中;
[0037] 步骤4,在数据监听过程中可以选择是否进行断言录制,若选择进行录制,测试框架自动记录测试结果,以便后续调用,断言调度模块根据测试项目的预期结果对测试结果进行断言,判断测试结果是否满足预期要求;还可选择回放功能,根据录制的测试结果对重复测试结果进行准确性和一致性校验,实现自动化断言,以判断软件测试是否能够通过,此过程必须保证录制测试结果的正确性;
[0038] 步骤5,测试结果处理及展示平台自主选择TestNG或Junit、调用数据分析平台,对所有测试结果进行统计、筛选、处理和分析,并将处理结果制成报表、图形,进行多维度展示。
[0039] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0040] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。