CN108446223B - 一种基于动态编译的业务场景自动化测试方法 - Google Patents

一种基于动态编译的业务场景自动化测试方法 Download PDF

Info

Publication number
CN108446223B
CN108446223B CN201810181164.7A CN201810181164A CN108446223B CN 108446223 B CN108446223 B CN 108446223B CN 201810181164 A CN201810181164 A CN 201810181164A CN 108446223 B CN108446223 B CN 108446223B
Authority
CN
China
Prior art keywords
data
database
test
checking
codes
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.)
Active
Application number
CN201810181164.7A
Other languages
English (en)
Other versions
CN108446223A (zh
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.)
Jiqi Chengdu Technology Co ltd
Original Assignee
Jiqi Chengdu 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 Jiqi Chengdu Technology Co ltd filed Critical Jiqi Chengdu Technology Co ltd
Priority to CN201810181164.7A priority Critical patent/CN108446223B/zh
Publication of CN108446223A publication Critical patent/CN108446223A/zh
Application granted granted Critical
Publication of CN108446223B publication Critical patent/CN108446223B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3664Environments for testing or debugging software
    • 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)

Abstract

本发明公开了一种基于动态编译的业务场景自动化测试方法,包括如下步骤:A、构建DSL;B、在线调试;C、任务预编译;D、结果校验;本发明采用简单易用的DSL,降低业务场景自动化测试对编码能力的要求;用例代码在线调试,提高自动化测试实施效率;此外,基于数据类型识别以及数据源整合,提供强大易用的结果校验能力。

Description

一种基于动态编译的业务场景自动化测试方法
技术领域
本发明涉及自动化测试技术领域,具体为一种基于动态编译的业务场景自动化测试方法。
背景技术
现有的Web自动化测试方法,主要针对每个接口进行独立的测试,无法支持完整业务场景的自动化测试,或支持的成本非常大;大部分Web自动化测试方法都是以离线形式提供服务,自动化测试的实现是一个静态的代码工程,测试用例和数据通过文本文件进行管理,在多人协作、并行任务、实时更新等方面能力薄弱;现有的Web自动化测试方法在响应结果校验方面通常使用正则匹配方式,难以支持对复杂的响应数据结构的校验,如数组校验、数组指定元素校验等,而这类响应数据结构在当前的互联网系统中很常见;现有的Web自动化测试方法缺少对数据库操作的整合,如数据预置、数据清理和数据表数据检查等。
发明内容
本发明的目的在于提供一种基于动态编译的业务场景自动化测试方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于动态编译的业务场景自动化测试方法,包括如下步骤:
A、构建DSL:将请求数据包的构建、接口调用、响应数据解析、结果校验、数据源获取和数据库操作自动化测试的关键步骤用更规范、可读性更强的方式提供给测试实施人员;
B、在线调试:在新设计一个用例的时候,可以直接在网页进行在线调试,以确认用例是否达到预期的测试目的;
C、任务预编译:将测试用例代码保存到数据库之前会使用动态编译技术对该测试用例代码进行一次编译,以检测可能的编译期异常,如果编译不通过,将提示用户进行调试排查,并放弃保存该次内容,从而确保每次任务执行时,从数据库中获取到的测试用例代码是没有编译错误的;
D、结果校验:包括对HTTP响应数据校验和数据库数据校验;校验响应数据,先获取响应报文,将其解析为一个结构体对象,校验时通过指定的路径表达式从结构体中获取目标数据进行数据类型和值的验证;校验数据库数据,先使用动态数据源管理方法管理所有被测产品数据库,校验时根据用例信息获取对应的数据源连接数据库数据进行查询操作,根据查询的匹配条数来确认校验是否通过。
优选的,所述步骤B具体流程为:在设计一个新用例,直接通过在线页面将用例代码以字符串格式传递到服务端,服务端基于动态编译技术,对收到的字符串代码进行处理后直接进行编译,通过反射获取测试逻辑对象并执行相应的测试逻辑,从而完成指定的测试内容;具体是自定义一个Compiler类,负责将接收到的原始测试代码进行基本的格式校验和默认依赖补全,进而构建成源代码文件对象并交给一个文件管理器对象,然后使用JDK提供的JavaCompiler编译得到对应的字节码文件对象以及编译诊断信息,进而通过该类持有的自定义classloader来进行加载,由此得到一个Class对象,最后基于反射机制获取到该Class的实例来执行测试代码中的测试逻辑。
优选的,所述步骤D中检验HTTP响应数据时先获取响应数据报文,对其结构和每个属性值的类型进行解析,得到一个结构体对象,校验时通过指定的路径表达式获取到目标属性的对象,再判断该对象的数据类型和值是否与预期相符。
优选的,所述步骤D中数据库数据校验流程:当某个产品有首个需要操作数据库的用例时,则根据产品基础信息中的数据库信息创建一个数据源,并将其置于一个数据源管理池中,要操作数据库时,根据产品从该池中获取数据源,建立数据库连接,使用用例信息中SQL语句的完成数据查询操作,根据查询的匹配条数来判断校验是否通过;每次更新产品的数据库连接信息时,将创建新的数据源来替换管理池中的旧数据源,以保证数据源的有效性。
与现有技术相比,本发明的有益效果是:本发明采用简单易用的DSL,降低业务场景自动化测试对编码能力的要求;用例代码在线调试,提高自动化测试实施效率;此外,基于数据类型识别以及数据源整合,提供强大易用的结果校验能力。
附图说明
图1为本发明创建测试用例和更新测试用例的流程图;
图2为本发明自动化测试任务运行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种基于动态编译的业务场景自动化测试方法,包括如下步骤:
A、构建DSL:将请求数据包的构建、接口调用、响应数据解析、结果校验、数据源获取和数据库操作自动化测试的关键步骤用更规范、可读性更强的方式提供给测试实施人员,在尽量保留灵活性的前提下,对用例构造进行了规范和简化;
B、在线调试:在新设计一个用例的时候,可以直接在网页进行在线调试,以确认用例是否达到预期的测试目的;
C、任务预编译:将测试用例代码保存到数据库之前会使用动态编译技术对该测试用例代码进行一次编译,以检测可能的编译期异常,如果编译不通过,将提示用户进行调试排查,并放弃保存该次内容,从而确保每次任务执行时,从数据库中获取到的测试用例代码是没有编译错误的;
D、结果校验:包括对HTTP响应数据校验和数据库数据校验;校验响应数据,先获取响应报文,将其解析为一个结构体对象,校验时通过指定的路径表达式从结构体中获取目标数据进行数据类型和值的验证;校验数据库数据,先使用动态数据源管理方法管理所有被测产品数据库,校验时根据用例信息获取对应的数据源连接数据库数据进行查询操作,根据查询的匹配条数来确认校验是否通过。
本发明中,所述步骤B具体流程为:在设计一个新用例,直接通过在线页面将用例代码以字符串格式传递到服务端,服务端基于动态编译技术,对收到的字符串代码进行处理后直接进行编译,通过反射获取测试逻辑对象并执行相应的测试逻辑,从而完成指定的测试内容;具体是自定义一个Compiler类,负责将接收到的原始测试代码进行基本的格式校验和默认依赖补全,进而构建成源代码文件对象并交给一个文件管理器对象,然后使用JDK提供的JavaCompiler编译得到对应的字节码文件对象以及编译诊断信息,进而通过该类持有的自定义classloader来进行加载,由此得到一个Class对象,最后基于反射机制获取到该Class的实例来执行测试代码中的测试逻辑。
本发明中,步骤D中检验HTTP响应数据时先获取响应数据报文,对其结构和每个属性值的类型进行解析,得到一个结构体对象,校验时通过指定的路径表达式获取到目标属性的对象,再判断该对象的数据类型和值是否与预期相符。
本发明中,步骤D中数据库数据校验流程:当某个产品有首个需要操作数据库的用例时,则根据产品基础信息中的数据库信息创建一个数据源,并将其置于一个数据源管理池中,要操作数据库时,根据产品从该池中获取数据源,建立数据库连接,使用用例信息中SQL语句的完成数据查询操作,根据查询的匹配条数来判断校验是否通过;每次更新产品的数据库连接信息时,将创建新的数据源来替换管理池中的旧数据源,以保证数据源的有效性
综上所述,本发明采用简单易用的DSL,降低业务场景自动化测试对编码能力的要求;用例代码在线调试,提高自动化测试实施效率;此外,基于数据类型识别以及数据源整合,提供强大易用的结果校验能力。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (4)

1.一种基于动态编译的业务场景自动化测试方法,其特征在于:包括如下步骤:
A、构建DSL:将请求数据包的构建、接口调用、响应数据解析、结果校验、数据源获取和数据库操作自动化测试的关键步骤用更规范、可读性更强的方式提供给测试实施人员;
B、在线调试:在新设计一个用例的时候,可以直接在网页进行在线调试,以确认用例是否达到预期的测试目的;
C、任务预编译:将测试用例代码保存到数据库之前会使用动态编译技术对该测试用例代码进行一次编译,以检测可能的编译期异常,如果编译不通过,将提示用户进行调试排查,并放弃保存该次内容,从而确保每次任务执行时,从数据库中获取到的测试用例代码是没有编译错误的;
D、结果校验:包括对HTTP响应数据校验和数据库数据校验;校验响应数据,先获取响应报文,将其解析为一个结构体对象,校验时通过指定的路径表达式从结构体中获取目标数据进行数据类型和值的验证;校验数据库数据,先使用动态数据源管理方法管理所有被测产品数据库,校验时根据用例信息获取对应的数据源连接数据库数据进行查询操作,根据查询的匹配条数来确认校验是否通过。
2.根据权利要求1所述的一种基于动态编译的业务场景自动化测试方法,其特征在于:所述步骤B具体流程为:在设计一个新用例,直接通过在线页面将用例代码以字符串格式传递到服务端,服务端基于动态编译技术,对收到的字符串代码进行处理后直接进行编译,通过反射获取测试逻辑对象并执行相应的测试逻辑,从而完成指定的测试内容;具体是自定义一个Compiler类,负责将接收到的原始测试代码进行基本的格式校验和默认依赖补全,进而构建成源代码文件对象并交给一个文件管理器对象,然后使用JDK提供的JavaCompiler编译得到对应的字节码文件对象以及编译诊断信息,进而通过该类持有的自定义classloader来进行加载,由此得到一个Class对象,最后基于反射机制获取到该Class的实例来执行测试代码中的测试逻辑。
3.根据权利要求1所述的一种基于动态编译的业务场景自动化测试方法,其特征在于:所述步骤D中检验HTTP响应数据时先获取响应数据报文,对其结构和每个属性值的类型进行解析,得到一个结构体对象,校验时通过指定的路径表达式获取到目标属性的对象,再判断该对象的数据类型和值是否与预期相符。
4.根据权利要求1所述的一种基于动态编译的业务场景自动化测试方法,其特征在于:所述步骤D中数据库数据校验流程:当某个产品有首个需要操作数据库的用例时,则根据产品基础信息中的数据库信息创建一个数据源,并将其置于一个数据源管理池中,要操作数据库时,根据产品从该池中获取数据源,建立数据库连接,使用用例信息中SQL语句的完成数据查询操作,根据查询的匹配条数来判断校验是否通过;每次更新产品的数据库连接信息时,将创建新的数据源来替换管理池中的旧数据源,以保证数据源的有效性。
CN201810181164.7A 2018-03-06 2018-03-06 一种基于动态编译的业务场景自动化测试方法 Active CN108446223B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810181164.7A CN108446223B (zh) 2018-03-06 2018-03-06 一种基于动态编译的业务场景自动化测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810181164.7A CN108446223B (zh) 2018-03-06 2018-03-06 一种基于动态编译的业务场景自动化测试方法

Publications (2)

Publication Number Publication Date
CN108446223A CN108446223A (zh) 2018-08-24
CN108446223B true CN108446223B (zh) 2021-07-27

Family

ID=63193607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810181164.7A Active CN108446223B (zh) 2018-03-06 2018-03-06 一种基于动态编译的业务场景自动化测试方法

Country Status (1)

Country Link
CN (1) CN108446223B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110189049A (zh) * 2019-06-05 2019-08-30 重庆两江新区管理委员会 一种基于预警机制的监管系统
CN110287120B (zh) * 2019-06-28 2023-09-08 深圳前海微众银行股份有限公司 一种单元测试系统及测试方法
CN110674355B (zh) * 2019-09-25 2022-07-01 上海依图信息技术有限公司 描述数据标注任务的dsl应用系统及其方法
CN111507080B (zh) * 2020-03-18 2023-06-23 北京百度网讯科技有限公司 数据质检方法、装置、电子设备及存储介质
CN111865726B (zh) * 2020-07-29 2022-03-08 中国工商银行股份有限公司 业务消息测试方法、装置、计算机系统和存储介质
CN112817847A (zh) * 2021-01-28 2021-05-18 杭州网易再顾科技有限公司 数据处理任务的测试方法、装置、电子设备及存储介质
CN113342323B (zh) * 2021-06-29 2024-03-29 银清科技有限公司 软件在线开发的方法及装置
CN113723061A (zh) * 2021-08-30 2021-11-30 上海幻电信息科技有限公司 基于多人协作框架的数据处理方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707263B2 (en) * 2010-04-19 2014-04-22 Microsoft Corporation Using a DSL for calling APIS to test software
CN104111885B (zh) * 2013-04-22 2017-09-15 腾讯科技(深圳)有限公司 接口测试结果的校验方法和装置
CN104516818B (zh) * 2014-12-29 2017-08-22 北京四方继保自动化股份有限公司 一种适用于逻辑组态软件中编译器的自动化测试系统及其方法
CN104750606B (zh) * 2015-03-03 2017-11-07 北京空间飞行器总体设计部 一种基于反射的自动化测试方法
CN106354624B (zh) * 2015-07-17 2020-09-22 北京奇虎科技有限公司 一种自动化测试方法和装置
CN107153609B (zh) * 2016-03-04 2020-12-22 创新先进技术有限公司 一种自动化测试方法和装置
CN106095673B (zh) * 2016-06-07 2018-12-14 深圳市泰久信息系统股份有限公司 基于web接口的自动化测试方法及系统
CN106933745A (zh) * 2017-03-30 2017-07-07 携程计算机技术(上海)有限公司 Web接口自动化测试方法和系统

Also Published As

Publication number Publication date
CN108446223A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
CN108446223B (zh) 一种基于动态编译的业务场景自动化测试方法
US11379348B2 (en) System and method for performing automated API tests
US8954930B2 (en) System and method for reducing test effort by object risk analysis
CN103092761B (zh) 基于差异信息文件识别和检查修改代码块的方法及装置
US9411575B2 (en) Systems and methods for quality assurance automation
US20080295085A1 (en) Integrated code review tool
CN101515232A (zh) 一种软件持续集成系统及方法
CN112241360B (zh) 一种测试用例生成方法、装置、设备及存储介质
Fisher et al. Utilizing Atlassian JIRA for large-scale software development management
CN103914564A (zh) 基于ArcGIS的城市管线更新入库的方法及系统
CN104636252A (zh) 基于SonarQube的在线代码审核方法和系统
CN111966738A (zh) 一种通过选择前端配置自动实现后端编程的系统
CN110764998A (zh) 基于Django框架的数据比对方法、装置、设备及存储介质
CN116107589B (zh) 软件代码的自动编译方法、装置、设备及存储介质
CN110740071A (zh) 一种网络接口监控的方法、装置及系统
CN104899134A (zh) 域名注册服务器自动化测试系统和方法
CN112100078A (zh) 一种生成接口测试用例的方法、装置及设备
CN114185791A (zh) 一种数据映射文件的测试方法、装置、设备及存储介质
CN108427645B (zh) 无命令行接口自动测试平台中实现无人值守的方法及系统
CN110928760B (zh) 一种嵌入式系统中的单元测试方法与装置
CN108595656B (zh) 一种数据的处理方法及系统
CN109508204B (zh) 一种前端代码质量检测方法及装置
CN111240981A (zh) 一种接口测试方法、系统及平台
CN111078193A (zh) 一种面向数据分析系统的软件开发方法及系统
CN111143221B (zh) 一种测试方法及装置

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
GR01 Patent grant
GR01 Patent grant