CN108446223A - 一种基于动态编译的业务场景自动化测试方法 - Google Patents
一种基于动态编译的业务场景自动化测试方法 Download PDFInfo
- Publication number
- CN108446223A CN108446223A CN201810181164.7A CN201810181164A CN108446223A CN 108446223 A CN108446223 A CN 108446223A CN 201810181164 A CN201810181164 A CN 201810181164A CN 108446223 A CN108446223 A CN 108446223A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- test
- code
- case
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test 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语句的完成数据查询操作,根据查询的匹配条数来判断校验是否通过;每次更新产品的数据库连接信息时,将创建新的数据源来替换管理池中的旧数据源,以保证数据源的有效性。
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 true CN108446223A (zh) | 2018-08-24 |
CN108446223B 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) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110189049A (zh) * | 2019-06-05 | 2019-08-30 | 重庆两江新区管理委员会 | 一种基于预警机制的监管系统 |
CN110287120A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种单元测试系统及测试方法 |
CN110674355A (zh) * | 2019-09-25 | 2020-01-10 | 上海依图信息技术有限公司 | 描述数据标注任务的dsl应用系统及其方法 |
CN111507080A (zh) * | 2020-03-18 | 2020-08-07 | 北京百度网讯科技有限公司 | 数据质检方法、装置、电子设备及存储介质 |
CN111865726A (zh) * | 2020-07-29 | 2020-10-30 | 中国工商银行股份有限公司 | 业务消息测试方法、装置、计算机系统和存储介质 |
CN112817847A (zh) * | 2021-01-28 | 2021-05-18 | 杭州网易再顾科技有限公司 | 数据处理任务的测试方法、装置、电子设备及存储介质 |
CN113342323A (zh) * | 2021-06-29 | 2021-09-03 | 银清科技有限公司 | 软件在线开发的方法及装置 |
CN113723061A (zh) * | 2021-08-30 | 2021-11-30 | 上海幻电信息科技有限公司 | 基于多人协作框架的数据处理方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110258600A1 (en) * | 2010-04-19 | 2011-10-20 | Microsoft Corporation | Using a dsl for calling apis to test software |
CN104111885A (zh) * | 2013-04-22 | 2014-10-22 | 腾讯科技(深圳)有限公司 | 接口测试结果的校验方法和装置 |
CN104516818A (zh) * | 2014-12-29 | 2015-04-15 | 北京四方继保自动化股份有限公司 | 一种适用于逻辑组态软件中编译器的自动化测试系统及其方法 |
CN104750606A (zh) * | 2015-03-03 | 2015-07-01 | 北京空间飞行器总体设计部 | 一种基于反射的自动化测试方法 |
CN106095673A (zh) * | 2016-06-07 | 2016-11-09 | 深圳市泰久信息系统股份有限公司 | 基于web接口的自动化测试方法及系统 |
CN106354624A (zh) * | 2015-07-17 | 2017-01-25 | 北京奇虎科技有限公司 | 一种自动化测试方法和装置 |
CN106933745A (zh) * | 2017-03-30 | 2017-07-07 | 携程计算机技术(上海)有限公司 | Web接口自动化测试方法和系统 |
CN107153609A (zh) * | 2016-03-04 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种自动化测试方法和装置 |
-
2018
- 2018-03-06 CN CN201810181164.7A patent/CN108446223B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110258600A1 (en) * | 2010-04-19 | 2011-10-20 | Microsoft Corporation | Using a dsl for calling apis to test software |
CN104111885A (zh) * | 2013-04-22 | 2014-10-22 | 腾讯科技(深圳)有限公司 | 接口测试结果的校验方法和装置 |
CN104516818A (zh) * | 2014-12-29 | 2015-04-15 | 北京四方继保自动化股份有限公司 | 一种适用于逻辑组态软件中编译器的自动化测试系统及其方法 |
CN104750606A (zh) * | 2015-03-03 | 2015-07-01 | 北京空间飞行器总体设计部 | 一种基于反射的自动化测试方法 |
CN106354624A (zh) * | 2015-07-17 | 2017-01-25 | 北京奇虎科技有限公司 | 一种自动化测试方法和装置 |
CN107153609A (zh) * | 2016-03-04 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种自动化测试方法和装置 |
CN106095673A (zh) * | 2016-06-07 | 2016-11-09 | 深圳市泰久信息系统股份有限公司 | 基于web接口的自动化测试方法及系统 |
CN106933745A (zh) * | 2017-03-30 | 2017-07-07 | 携程计算机技术(上海)有限公司 | Web接口自动化测试方法和系统 |
Non-Patent Citations (2)
Title |
---|
SRINI PENCHIKALA: "Twist 2.0支持行为驱动开发和协同测试", 《HTTPS://WWW.INFOQ.CN/ARTICLE/2010/04/TWIST-2.0》 * |
娄不夜: "Web环境下Java表达式的动态编译与计算 ", 《中国科技信息》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110189049A (zh) * | 2019-06-05 | 2019-08-30 | 重庆两江新区管理委员会 | 一种基于预警机制的监管系统 |
CN110287120A (zh) * | 2019-06-28 | 2019-09-27 | 深圳前海微众银行股份有限公司 | 一种单元测试系统及测试方法 |
CN110287120B (zh) * | 2019-06-28 | 2023-09-08 | 深圳前海微众银行股份有限公司 | 一种单元测试系统及测试方法 |
CN110674355A (zh) * | 2019-09-25 | 2020-01-10 | 上海依图信息技术有限公司 | 描述数据标注任务的dsl应用系统及其方法 |
CN111507080A (zh) * | 2020-03-18 | 2020-08-07 | 北京百度网讯科技有限公司 | 数据质检方法、装置、电子设备及存储介质 |
CN111507080B (zh) * | 2020-03-18 | 2023-06-23 | 北京百度网讯科技有限公司 | 数据质检方法、装置、电子设备及存储介质 |
CN111865726A (zh) * | 2020-07-29 | 2020-10-30 | 中国工商银行股份有限公司 | 业务消息测试方法、装置、计算机系统和存储介质 |
CN112817847A (zh) * | 2021-01-28 | 2021-05-18 | 杭州网易再顾科技有限公司 | 数据处理任务的测试方法、装置、电子设备及存储介质 |
CN113342323A (zh) * | 2021-06-29 | 2021-09-03 | 银清科技有限公司 | 软件在线开发的方法及装置 |
CN113342323B (zh) * | 2021-06-29 | 2024-03-29 | 银清科技有限公司 | 软件在线开发的方法及装置 |
CN113723061A (zh) * | 2021-08-30 | 2021-11-30 | 上海幻电信息科技有限公司 | 基于多人协作框架的数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108446223B (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108446223A (zh) | 一种基于动态编译的业务场景自动化测试方法 | |
Jiang et al. | Co-evolution of infrastructure and source code-an empirical study | |
Barbour et al. | An empirical study of faults in late propagation clone genealogies | |
CN105718251B (zh) | 多语言sdk自动化实现方法及系统 | |
US9419884B1 (en) | Intelligent automated testing method for restful web services | |
Palomba et al. | RETRACTED ARTICLE: The smell of fear: on the relation between test smells and flaky tests | |
US11436128B2 (en) | System and computer implemented method for generating test scripts | |
Laghari et al. | Fine-tuning spectrum based fault localisation with frequent method item sets | |
CN108536593A (zh) | 基于ui的cs架构软件自动化测试方法及系统 | |
CN107463362A (zh) | 基于多个Jenkins的持续部署的方法和系统 | |
AU2010350247A1 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
US9304893B1 (en) | Integrated software development and test case management system | |
Clark et al. | Localizing SQL faults in database applications | |
US8832640B1 (en) | Component mapped software development workflow | |
Estero-Botaro et al. | Quantitative evaluation of mutation operators for WS-BPEL compositions | |
CN106708718A (zh) | 服务框架接口测试方法与装置 | |
Mateo et al. | Mutation at system and functional levels | |
Tramontana | Automatically characterising components with concerns and reducing tangling | |
Hassan et al. | As code testing: Characterizing test quality in open source ansible development | |
US8661305B2 (en) | Method and system for test vector generation | |
Mahmud et al. | Android API field evolution and its induced compatibility issues | |
Koyya et al. | Feedback for Programming Assignments Using Software‐Metrics and Reference Code | |
CN104298603B (zh) | 一种应用系统版本构建的正确性的检查方法 | |
Cannavacciuolo et al. | Smoke testing of cloud systems | |
Sneed et al. | The design and use of WSDL‐Test: a tool for testing Web services |
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 |