一种基于反射机制的软件自动化测试架构方法技术

技术编号:31807609 阅读:20 留言:0更新日期:2022-01-08 11:09
本发明专利技术涉及一种基于反射机制的软件自动化测试架构方法,包括如下步骤:1)测试系统读取测试用例文档,并将文档内的流程步骤组织输出用例数据;2)测试系统调用用例数据,取出每个步骤的关键字,并将其编译具体测试方法,而后通过对应模块依次执行测试;3)把每一步测试的执行状态、执行结果进行返回,并写入结果文件;所述的用例文档包括关键字及相应的赋值,所述的用例文档为XLSX格式或者yaml格式。本发明专利技术把业务流程与代码进行分离,解决了自动化测试中项目迁移成本高、用例维护不方便的问题,此外通过构建通用操作关键字库把这种组合工作简化为所有人都熟悉的表格填写任务,解决了自动化测试代码编写难度大,学习成本高的问题。题。题。

【技术实现步骤摘要】
一种基于反射机制的软件自动化测试架构方法


[0001]本专利技术涉及一种基于反射机制实现业务流程与代码分离的软件自动化测试架构方法,该架构思想通用于软件自动化测试


技术介绍

[0002]在软件测试领域,自动化测试一般用于回归测试,相对于初次测试,测试人员已熟悉测试步骤及验证方式,此时如果采用自动化测试去自动执行测试步骤并输出验证结果将会节省很大的人力和时间。
[0003]目前,针对接口自动化测试,主要采用Requests库,针对web自动化测试,主要采用Selenium库,执行自动化测试的框架一般选用pytest或unittest。
[0004]然而,无论是Requests库还是Selenium库的使用,都要求测试人员掌握一定的代码功底,且了解对应库的工作原理,这就导致代码编写难度大,学习成本较高的问题。另一方面,用例数据、业务流程、代码全部冗杂在一起,造成代码普适性差,很难从一个项目迁移到另一个项目,此外也会导致用例修改起来非常麻烦,一旦业务需求变更,很可能会全局否定之前的代码,导致后期工作量大,维护起来不方便的问题。

技术实现思路

[0005]为解决以上技术问题,本专利技术提供一种基于反射机制的自动化测试架构,通过该架构及提供的方法可以实现业务流程与代码分离,普通测试人员无需代码功底便可进行项目的自动化测试。
[0006]本专利技术通过如下技术手段实现:一种基于反射机制的软件自动化测试架构方法,包括如下步骤:1)测试系统读取测试用例文档,并将文档内的流程步骤组织输出用例数据;2)测试系统调用用例数据,取出每个步骤的关键字,并将其编译具体测试方法,而后通过对应模块依次执行测试;3)把每一步测试的执行状态、执行结果进行返回,并写入结果文件;所述的用例文档包括关键字及相应的赋值,所述的用例文档为XLSX格式或者yaml格式。
[0007]步骤2中所述用例数据的调用采用pyest框架的参数化调用。
[0008]步骤3中,执行完每个测试步骤后,收集其执行状态及服务器的实际响应结果,对执行状态进行翻译,然后把翻译后的执行状态及响应结果返回给对应的测试步骤,并写入结果文件。
[0009]所述的关键字包括接口测试关键字与web测试关键字,所述的接口测试关键字及web测试关键字设置赋值个数依据具体的关键字而不同。
[0010]步骤2中的模块内置selenium库及requests库,所述的selenium库测试web程序,所述的requests库测试数据接口。
[0011]每一个测试步骤对应一个关键字方法,在模块完成相应的测试后会返回True或False的状态以及对应的服务器返回结果,所述的web程序测试中将返回状态翻译为PASS或FAIL写入结果文件中对应的测试步骤后面,所述的数据接口测试中将服务器返回结果以字符串的形式写入结果文件中对应的测试步骤后面。
[0012]本专利技术把业务流程与代码进行分离,构建了一套独立于应用程序的软件自动化测试框架,通过便于维护的外部文档来控制测试的业务流,解决了自动化测试中,项目迁移成本高、用例维护不方便的问题,此外通过构建通用操作关键字库,测试用例的编写就变成了测试数据和关键字的组合,并把这种组合工作简化为所有人都熟悉的表格填写任务,解决了自动化测试代码编写难度大,学习成本高的问题。
附图说明
[0013]图1为本专利技术的流程示意图;图2为本专利技术反射机制说明示意图;图3是本专利技术程序运行过程示意图;图4是本专利技术的web测试用例编写格式示意图;图5是本专利技术的接口测试用例编写格式示意图;图6是本专利技术的用例输出格式示意图。
具体实施方式
[0014]下面结合说明书附图对本专利技术进行进一步详述:参照附图1~6,在使用本专利技术架构前,需要搭建python环境以及安装pytest、pandas、requests、selenium等插件。以下将结合附图对本专利技术架构的原理及使用进行更为详细的介绍。
[0015]图1中整个实现流程包括预先构建通用操作关键字库;选用关键字编写业务流程测试步骤;读取测试用例并组织测试模块;反射运行对应的关键字;最终输出结果文件。实现程序的运行具体包括如下步骤:1)基于测试类型选用对应的关键字库架构中事先构建好web测试以及接口测试的关键字库,使用人员可根据测试类型选用对应的关键字库,该关键字库中集成了相关测试的通用操作,比如:点击操作、输入操作、发请求操作等,此外可根据实际需要对关键字库进行自定义补充。
[0016]表1 接口测试通用操作关键字库介绍
表2 web测试通用操作关键字库介绍
2)编写测试用例为了便于后期的维护,测试用例的编写建议在excel中完成,此外为节省用例编写时间,使用人员可对项目的功能测试用例进行改编,拆分出详细的操作步骤并给每个步骤选用构建好的关键字,然后按照关键字库的介绍进行对应输入值的填写;3)读取测试用例以excel文档为例,文档的读取操作包括打开excel方法、获取sheet页面方法、切换sheet页面方法、逐行读取方法以及格式转换方法,在传入对应的用例文档后的操作中,
包含的子步骤如下:3

1)首先判断文档是否存在,不存在则抛出错误,然后判断文档类型是否为xlsx文件,如果是,则打开该文件。
[0017]3‑
2)把文件切换到要操作的sheet页,逐行读取该页面的用例数据,按照模块名、场景进行划分,把同一模块下所有场景的数据放到同一个列表中,不同模块的用例数据则以字典的形式输出;图6即是用例数据输出的格式样例。
[0018]4)组织测试模块测试模块的组织使用pytest框架实现,首先,构建测试类,接着,根据用例中模块名添加对应的测试函数,然后,利用框架自带的参数化装饰器给每个测试函数传入对应模块的列表数据,接着遍历列表数据,依次取出每个场景下的所有测试步骤,包括:用例名、关键字、输入值。
[0019]5)实现反射调用参照附图2和附图3,程序通过运行主入口处理完读取的用例数据后,在pytest框架下调用参数化执行处理后的测试用例,从测试步骤中,取出对应的关键字并反射到构建好的通用操作关键字库中,调用已写好的方法传入输入值来实现方法的执行。
[0020]其中,反射机制的具体实现,分为以下几个子步骤:5

1)按照类型把所有的通用操作以函数方法的形式封装在一个类中,该类中的所有方法通过调用selenium库或者requests库来分别实现web程序和接口的测试;5

2)从测试用例中取出预期的关键字及对应的输入值;5

3)引用类的实例,拿取出的关键字,强制调用其属性以获取web测试类或接口测试类中的方法,待对应属性的方法返回其指向的函数引用,再传入对应的输入值,以完成最终的反射调用。
[0021]6)输出结果每一个测试步骤对应一个关键字方法,在执行反射调用的过程中,该方法完成相应的测试后会返回True或False的状态以本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于反射机制的软件自动化测试架构方法,其特征在于:包括如下步骤:1)测试系统读取测试用例文档,并将文档内的流程步骤组织输出用例数据;2)测试系统调用用例数据,取出每个步骤的关键字,并将其编译具体测试方法,而后通过对应模块依次执行测试;3)把每一步测试的执行状态、执行结果进行返回,并写入结果文件;所述的用例文档包括关键字及相应的赋值,所述的用例文档为XLSX格式或者yaml格式。2.根据权利要求1所述的软件自动化测试架构方法,其特征在于:步骤2中所述用例数据的调用采用pyest框架的参数化调用。3.根据权利要求1所述的软件自动化测试架构方法,其特征在于:步骤3中,执行完每个测试步骤后,收集其执行状态及服务器的实际响应结果,对执行状态进行翻译,然后把翻译后的执行状态及响应结果返回给对应的测试步骤,并写入结果文件。4.根据...

【专利技术属性】
技术研发人员:阎星娥赵万亮刘慰慰杨昆严荣明张林王月铭武红年
申请(专利权)人:南京华飞数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1