CN113900953A - 一种基于反射机制的软件自动化测试架构方法 - Google Patents

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

Info

Publication number
CN113900953A
CN113900953A CN202111261715.9A CN202111261715A CN113900953A CN 113900953 A CN113900953 A CN 113900953A CN 202111261715 A CN202111261715 A CN 202111261715A CN 113900953 A CN113900953 A CN 113900953A
Authority
CN
China
Prior art keywords
test
keywords
result
translated
software automation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111261715.9A
Other languages
English (en)
Inventor
阎星娥
赵万亮
刘慰慰
杨昆
严荣明
张�林
王月铭
武红年
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Huafei Data Technology Co ltd
Original Assignee
Nanjing Huafei Data Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Huafei Data Technology Co ltd filed Critical Nanjing Huafei Data Technology Co ltd
Priority to CN202111261715.9A priority Critical patent/CN113900953A/zh
Publication of CN113900953A publication Critical patent/CN113900953A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种基于反射机制的软件自动化测试架构方法
技术领域
本发明涉及一种基于反射机制实现业务流程与代码分离的软件自动化测试架构方法,该架构思想通用于软件自动化测试技术领域。
背景技术
在软件测试领域,自动化测试一般用于回归测试,相对于初次测试,测试人员已熟悉测试步骤及验证方式,此时如果采用自动化测试去自动执行测试步骤并输出验证结果将会节省很大的人力和时间。
目前,针对接口自动化测试,主要采用Requests库,针对web自动化测试,主要采用Selenium库,执行自动化测试的框架一般选用pytest或unittest。
然而,无论是Requests库还是Selenium库的使用,都要求测试人员掌握一定的代码功底,且了解对应库的工作原理,这就导致代码编写难度大,学习成本较高的问题。另一方面,用例数据、业务流程、代码全部冗杂在一起,造成代码普适性差,很难从一个项目迁移到另一个项目,此外也会导致用例修改起来非常麻烦,一旦业务需求变更,很可能会全局否定之前的代码,导致后期工作量大,维护起来不方便的问题。
发明内容
为解决以上技术问题,本发明提供一种基于反射机制的自动化测试架构,通过该架构及提供的方法可以实现业务流程与代码分离,普通测试人员无需代码功底便可进行项目的自动化测试。
本发明通过如下技术手段实现:一种基于反射机制的软件自动化测试架构方法,包括如下步骤:
1)测试系统读取测试用例文档,并将文档内的流程步骤组织输出用例数据;
2)测试系统调用用例数据,取出每个步骤的关键字,并将其编译具体测试方法,而后通过对应模块依次执行测试;
3)把每一步测试的执行状态、执行结果进行返回,并写入结果文件;
所述的用例文档包括关键字及相应的赋值,所述的用例文档为XLSX格式或者yaml格式。
步骤2中所述用例数据的调用采用pyest框架的参数化调用。
步骤3中,执行完每个测试步骤后,收集其执行状态及服务器的实际响应结果,对执行状态进行翻译,然后把翻译后的执行状态及响应结果返回给对应的测试步骤,并写入结果文件。
所述的关键字包括接口测试关键字与web测试关键字,所述的接口测试关键字及web测试关键字设置赋值个数依据具体的关键字而不同。
步骤2中的模块内置selenium库及requests库,所述的selenium库测试web程序,所述的requests库测试数据接口。
每一个测试步骤对应一个关键字方法,在模块完成相应的测试后会返回True或False的状态以及对应的服务器返回结果,所述的web程序测试中将返回状态翻译为PASS或FAIL写入结果文件中对应的测试步骤后面,所述的数据接口测试中将服务器返回结果以字符串的形式写入结果文件中对应的测试步骤后面。
本发明把业务流程与代码进行分离,构建了一套独立于应用程序的软件自动化测试框架,通过便于维护的外部文档来控制测试的业务流,解决了自动化测试中,项目迁移成本高、用例维护不方便的问题,此外通过构建通用操作关键字库,测试用例的编写就变成了测试数据和关键字的组合,并把这种组合工作简化为所有人都熟悉的表格填写任务,解决了自动化测试代码编写难度大,学习成本高的问题。
附图说明
图1为本发明的流程示意图;
图2为本发明反射机制说明示意图;
图3是本发明程序运行过程示意图;
图4是本发明的web测试用例编写格式示意图;
图5是本发明的接口测试用例编写格式示意图;
图6是本发明的用例输出格式示意图。
具体实施方式
下面结合说明书附图对本发明进行进一步详述:
参照附图1~6,在使用本发明架构前,需要搭建python环境以及安装pytest、pandas、requests、selenium等插件。以下将结合附图对本发明架构的原理及使用进行更为详细的介绍。
图1中整个实现流程包括预先构建通用操作关键字库;选用关键字编写业务流程测试步骤;读取测试用例并组织测试模块;反射运行对应的关键字;最终输出结果文件。实现程序的运行具体包括如下步骤:
1)基于测试类型选用对应的关键字库
架构中事先构建好web测试以及接口测试的关键字库,使用人员可根据测试类型选用对应的关键字库,该关键字库中集成了相关测试的通用操作,比如:点击操作、输入操作、发请求操作等,此外可根据实际需要对关键字库进行自定义补充。
表1 接口测试通用操作关键字库介绍
Figure DEST_PATH_IMAGE001
表2 web测试通用操作关键字库介绍
Figure DEST_PATH_IMAGE002
2)编写测试用例
为了便于后期的维护,测试用例的编写建议在excel中完成,此外为节省用例编写时间,使用人员可对项目的功能测试用例进行改编,拆分出详细的操作步骤并给每个步骤选用构建好的关键字,然后按照关键字库的介绍进行对应输入值的填写;
3)读取测试用例
以excel文档为例,文档的读取操作包括打开excel方法、获取sheet页面方法、切换sheet页面方法、逐行读取方法以及格式转换方法,在传入对应的用例文档后的操作中,包含的子步骤如下:
3-1)首先判断文档是否存在,不存在则抛出错误,然后判断文档类型是否为xlsx文件,如果是,则打开该文件。
3-2)把文件切换到要操作的sheet页,逐行读取该页面的用例数据,按照模块名、场景进行划分,把同一模块下所有场景的数据放到同一个列表中,不同模块的用例数据则以字典的形式输出;
图6即是用例数据输出的格式样例。
4)组织测试模块
测试模块的组织使用pytest框架实现,首先,构建测试类,接着,根据用例中模块名添加对应的测试函数,然后,利用框架自带的参数化装饰器给每个测试函数传入对应模块的列表数据,接着遍历列表数据,依次取出每个场景下的所有测试步骤,包括:用例名、关键字、输入值。
5)实现反射调用
参照附图2和附图3,程序通过运行主入口处理完读取的用例数据后,在pytest框架下调用参数化执行处理后的测试用例,从测试步骤中,取出对应的关键字并反射到构建好的通用操作关键字库中,调用已写好的方法传入输入值来实现方法的执行。
其中,反射机制的具体实现,分为以下几个子步骤:
5-1)按照类型把所有的通用操作以函数方法的形式封装在一个类中,该类中的所有方法通过调用selenium库或者requests库来分别实现web程序和接口的测试;
5-2)从测试用例中取出预期的关键字及对应的输入值;
5-3)引用类的实例,拿取出的关键字,强制调用其属性以获取web测试类或接口测试类中的方法,待对应属性的方法返回其指向的函数引用,再传入对应的输入值,以完成最终的反射调用。
6)输出结果
每一个测试步骤对应一个关键字方法,在执行反射调用的过程中,该方法完成相应的测试后会返回True或False的状态以及对应的服务器返回结果,此外,结果文件会自动生成,程序把返回状态翻译为PASS或FAIL写入结果文件中对应的测试步骤后面,把服务器返回结果以字符串的形式写入结果文件中对应的测试步骤后面。
借助上述技术方案,某一自动化测试架构不再只是支持单一类型的测试任务,采用同一套架构便可完成不限于接口、web程序等类型的自动化测试任务;架构通过事先构建好通用操作关键字库,省去使用人员编写代码的麻烦,且将其独立于测试执行代码以达到可重复使用的目的,此外以上关键字介绍表格中展示的仅为通用操作,使用人员可根据实际项目要求进行自定义的修改和补充;为尽量简化测试代码以及更好的维护测试用例,本架构实现业务流程与代码的分离,测试流程编写在外部文档,代码使用pytest驱动,带入对应的测试流程便可驱动测试的运行;从架构的整体上来看,进行对应的测试任务,基本无需代码的编写,使用普通的功能测试用例,并选用构建好的关键字方法,带入框架中,便可输出结果。

Claims (6)

1.一种基于反射机制的软件自动化测试架构方法,其特征在于:包括如下步骤:
1)测试系统读取测试用例文档,并将文档内的流程步骤组织输出用例数据;
2)测试系统调用用例数据,取出每个步骤的关键字,并将其编译具体测试方法,而后通过对应模块依次执行测试;
3)把每一步测试的执行状态、执行结果进行返回,并写入结果文件;
所述的用例文档包括关键字及相应的赋值,所述的用例文档为XLSX格式或者yaml格式。
2.根据权利要求1所述的软件自动化测试架构方法,其特征在于:步骤2中所述用例数据的调用采用pyest框架的参数化调用。
3.根据权利要求1所述的软件自动化测试架构方法,其特征在于:步骤3中,执行完每个测试步骤后,收集其执行状态及服务器的实际响应结果,对执行状态进行翻译,然后把翻译后的执行状态及响应结果返回给对应的测试步骤,并写入结果文件。
4.根据权利要求1所述的软件自动化测试架构方法,其特征在于:所述的关键字包括接口测试关键字与web测试关键字,所述的接口测试关键字及web测试关键字设置赋值个数依据具体的关键字而不同。
5.根据权利要求1所述的软件自动化测试架构方法,其特征在于:步骤2中的模块内置selenium库及requests库,所述的selenium库测试web程序,所述的requests库测试数据接口。
6.根据权利要求3所述的软件自动化测试架构方法,其特征在于:每一个测试步骤对应一个关键字方法,在模块完成相应的测试后会返回True或False的状态以及对应的服务器返回结果,所述的web程序测试中将返回状态翻译为PASS或FAIL写入结果文件中对应的测试步骤后面,所述的数据接口测试中将服务器返回结果以字符串的形式写入结果文件中对应的测试步骤后面。
CN202111261715.9A 2021-10-28 2021-10-28 一种基于反射机制的软件自动化测试架构方法 Pending CN113900953A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111261715.9A CN113900953A (zh) 2021-10-28 2021-10-28 一种基于反射机制的软件自动化测试架构方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111261715.9A CN113900953A (zh) 2021-10-28 2021-10-28 一种基于反射机制的软件自动化测试架构方法

Publications (1)

Publication Number Publication Date
CN113900953A true CN113900953A (zh) 2022-01-07

Family

ID=79026624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111261715.9A Pending CN113900953A (zh) 2021-10-28 2021-10-28 一种基于反射机制的软件自动化测试架构方法

Country Status (1)

Country Link
CN (1) CN113900953A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578500A (zh) * 2023-07-14 2023-08-11 安徽华云安科技有限公司 基于强化学习的代码测试方法、装置以及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006135607A2 (en) * 2005-06-09 2006-12-21 New England Controls, Inc. Method and system for rapid deployment and development of application and test software and documentation
CN104484269A (zh) * 2014-11-27 2015-04-01 北京广利核系统工程有限公司 一种自动生成测试脚本的方法
CN109614324A (zh) * 2018-12-03 2019-04-12 北京云测网络科技有限公司 一种测试用例生成方法和装置
CN112187580A (zh) * 2020-09-29 2021-01-05 苏州迈科网络安全技术股份有限公司 网关插件自动化测试框架及测试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006135607A2 (en) * 2005-06-09 2006-12-21 New England Controls, Inc. Method and system for rapid deployment and development of application and test software and documentation
CN104484269A (zh) * 2014-11-27 2015-04-01 北京广利核系统工程有限公司 一种自动生成测试脚本的方法
CN109614324A (zh) * 2018-12-03 2019-04-12 北京云测网络科技有限公司 一种测试用例生成方法和装置
CN112187580A (zh) * 2020-09-29 2021-01-05 苏州迈科网络安全技术股份有限公司 网关插件自动化测试框架及测试方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578500A (zh) * 2023-07-14 2023-08-11 安徽华云安科技有限公司 基于强化学习的代码测试方法、装置以及设备
CN116578500B (zh) * 2023-07-14 2023-09-26 安徽华云安科技有限公司 基于强化学习的代码测试方法、装置以及设备

Similar Documents

Publication Publication Date Title
CN109885488B (zh) 用例表驱动的卫星轨道计算软件自动化测试方法及系统
CN109189684B (zh) 基于Python的接口自动化测试方法
CN101339532B (zh) 一种Web应用系统的自动化测试方法及装置
CN100375057C (zh) 一种自动化测试辅助系统及相应的软件自动测试方法
CN107135390A (zh) 一种电视应用的自动化测试方法及系统
CN102722440A (zh) 一种嵌入式系统可执行代码的调试装置、调试方法及嵌入式系统
JPH0778728B2 (ja) ヘルプ・パネルのアップロード処理自動化方法
CN114741283A (zh) 一种基于python设计的接口自动化测试方法及装置
CN113051040A (zh) 一种异地远程分布式联合仿真方法
CN111737152B (zh) 通过网页录入数据实现web自动化测试的方法及装置
CN110737631A (zh) 一种基于Flink引擎的数据解析方法及装置
CN113900953A (zh) 一种基于反射机制的软件自动化测试架构方法
CN110861085B (zh) 一种基于VxWorks的机械臂指令解释器系统
CN116049014A (zh) Amba总线的验证平台生成方法及装置
CN117370217B (zh) 一种基于python的接口测试结果自动生成方法
US11341030B2 (en) Scriptless software test automation
CN112506772B (zh) web自动化测试方法、装置、电子设备和存储介质
CN113836014A (zh) 一种接口测试方法、装置、电子设备和存储介质
CN109885493A (zh) 一种基于Android平台和Java反射的自动化混合框架
CN100416512C (zh) 嵌入式设备调试方法及其调试工具
CN109144867B (zh) 一种测试方法及测试系统
CN112148611B (zh) 一种基于云架构的自动化测试中间接口方法与平台
CN1353835A (zh) 同类系统之间的协议确认
CN100468332C (zh) 程序执行方法
CN113064594B (zh) 一种自动生成ui界面的方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20220107