CN115982055A - 一种专门服务于java语言开发程序的测试方法 - Google Patents
一种专门服务于java语言开发程序的测试方法 Download PDFInfo
- Publication number
- CN115982055A CN115982055A CN202310165775.3A CN202310165775A CN115982055A CN 115982055 A CN115982055 A CN 115982055A CN 202310165775 A CN202310165775 A CN 202310165775A CN 115982055 A CN115982055 A CN 115982055A
- Authority
- CN
- China
- Prior art keywords
- test
- interface
- code
- codes
- java language
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种专门服务于java语言开发程序的测试方法,包括调用测试代码模板,使用代码生成器生成测试类的接口测试代码或单元测试对应的方法级测试代码、以及excel文件;使用测试套件生成器,将所有测试代码打包为测试套件;基于excel文件,执行测试套件中所有接口的接口测试代码或所有方法的方法级测试代码;收集执行结果。本发明适用于java语言开发程序的接口或单元测试,有效提高冒烟测试用例的编写效率,单个测试用例编写时间大幅减少,其代码可复用、可共享,并且通过不同参数达成验证不同场景的效果。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种专门服务于java语言开发程序的测试方法。
背景技术
开发者为了提升或提测代码的的质量,通常会做一些单元测试或基于端到端的接口冒烟测试,甚至部分公司会强制要求开发者完成单元测试,而接口测试一般会使用其他工具来实现。
单元测试中,开发者会进行单元测试代码的编写,单元测试代码编写费时,通常比编写业务代码更耗费时间,并且测试代码非常冗余,同一个被测接口会写出非常多的测试代码。而接口测试后续的冒烟用例无法在团队内部共享;并且无法在每次提交代码时都进行验证,持续使用这些冒烟用例。以上均成为所属技术人员亟待解决的技术问题。
因此,本发明提供了一种专门服务于java语言开发程序的测试方法,以至少解决上述技术问题。
发明内容
本发明要解决的技术问题是:提供一种专门服务于java语言开发程序的测试方法,以至少解决上述技术问题。
为实现上述目的,本发明采用的技术方案如下:
一种专门服务于java语言开发程序的测试方法,包括以下步骤:
步骤1、调用测试代码模板,使用代码生成器生成测试类的测试代码和excel文件,所述测试代码为接口测试对应的接口测试代码或单元测试对应的方法级测试代码,所述excel文件包含接口测试或单元测试对应测试用例的信息;
步骤2、使用测试套件生成器,将所有测试代码打包为测试套件;
步骤3、基于excel文件,执行测试套件中所有接口的接口测试代码或所有方法的方法级测试代码;
步骤4、收集执行结果。
进一步地,所述测试代码包括@DataProvider注解代码和@Test注解代码,并且@DataProvider注解代码和@Test注解代码成对出现。
进一步地,所述步骤1包括:获取测试类的文件路径,将代码生成器中的静态属性修改为文件路径下的包路径,自动生成对应的excel文件;调用测试代码模板进行参数替换,生成所述包路径各接口的接口测试代码;调用测试代码模板进行参数替换,并根据所述包路径中带有@Test注解的方法,生成对应方法的方法级测试代码。
进一步地,所述excel文件包含同一接口或多个方法的多条测试用例的信息。
进一步地,所述测试用例的信息包括测试用例编号、标题、是否执行、请求参数、断言、接口请求或方法请求、测试账号和预处理SQL。
进一步地,所述预处理SQL包括构造数据SQL和恢复数据SQL。
进一步地,所述接口测试代码执行包括:从excel文件中加载对应的请求参数,依次进行接口鉴权处理、执行数据准备、执行预处理SQL,通过接口请求发起http请求方式并调用被测接口,最后对被测接口的返回内容进行断言,使用恢复数据SQL恢复数据。
进一步地,所述方法级测试代码执行包括:注入或初始化测试类的一个json对象;基于excel文件的请求参数,执行数据准备、执行预处理SQL,在方法级测试代码中组装测试参数类型并构造入参顺序,通过方法请求调用被测方法,最后对被测方法返回内容进行断言,使用恢复数据SQL恢复数据。
进一步地,所述数据准备包括:使用默认账号或者指定账号进行登录操作;根据配置文件中配置的数据库环境进行数据库连接准备。
与现有技术相比,本发明具有以下有益效果:
本发明适用于java语言开发程序的接口或单元测试,有效提高冒烟测试用例的编写效率,单个测试用例编写时间大幅减少。本发明应用于接口测试时,所述方法嵌入到被测应用中,测试代码也会被合并到对应的测试和开发分支中,并且其测试代码和excel文件被提交到代码仓库中,其他开发和测试者均能使用,从而达成复用和共享目的。本发明应用于单元测试时,同一个方法只需要生成一个被测方法,减少测试代码量,通过维护excel文件,由不同的入参来达成测试不同场景的目的。
附图说明
图1为本发明的方法流程图。
实施方式
技术名词:
TestNG:java中的开源自动化测试框架;
SQL:具有数据操纵和数据定义等多种功能的数据库语言。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明提供的一种专门服务于java语言开发程序的测试方法,包括以下步骤:
步骤1、调用测试代码模板,使用代码生成器生成测试类的测试代码和excel文件,所述测试代码为接口测试对应的接口测试代码或单元测试对应的方法级测试代码,所述excel文件包含接口测试或单元测试对应测试用例的信息;
步骤2、使用测试套件生成器,将所有测试代码打包为测试套件;
步骤3、基于excel文件,执行测试套件中所有接口的接口测试代码或所有方法的方法级测试代码;
步骤4、收集执行结果。
本发明适用于java语言开发程序的接口或单元测试,有效提高冒烟测试用例的编写效率,单个测试用例编写时间大幅减少,编写时间可减少5分钟。应用于接口测试时,所述方法嵌入到被测应用中,测试代码也会被合并到对应的测试和开发分支中,并且其测试代码和excel文件被提交到代码仓库中,其他开发和测试者均能使用,从而达成复用和共享目的。应用于单元测试时,同一个方法只需要生成一个被测方法,减少测试代码量,通过维护excel文件,由不同的入参来达成测试不同场景的目的。
在部分实施例中,每个测试类包含多个测试代码,每个测试代码包括@DataProvider注解代码和@Test注解代码,并且@DataProvider注解代码和@Test注解代码成对出现。@DataProvider注解代码的功能是从excel文件中获取对应的测试用例的信息,@Test注解代码则是基于获取到的测试用例的信息,根据某些测试用例的信息进行后续操作。
在部分实施例中,所述步骤1包括:获取测试类的文件路径,将代码生成器中的静态属性修改为文件路径下的包路径,自动生成对应的excel文件;调用测试代码模板进行参数替换,生成所述包路径各接口的接口测试代码;调用测试代码模板进行参数替换,并根据所述包路径中带有@Test注解的方法,生成对应方法的方法级测试代码。如果需要一次生成多个测试类的包路径,则直接将修改代码生成器中的静态属性为包路径,则会生成该包路径下所有的接口测试代码或方法级测试代码。
单元测试常规分为两个步骤:测试代码编写、测试代码调试,常规的测试代码编写需要初始化被测类对象,初始化被测方法的入参,然后调用方法,最后再对调用接口进行断言,而本发明所述的方法仅需要配置一个被测类的包路径,即可生成以上所有内容。并且,同一个被测方法或者接口测试代码只有一组测试代码,通过维护excel文件,即可达成测试多个用例的目录。例如:登录接口入参为Username和Password,第一个用例用户名不能为空,则入参为:{"Username":"","Password":"123456”};第二个用例密码不能为空,则另起一行,入参为:{“Username":"admin","Password":""},通过不同的入参来达成测试不同场景的目的。
本发明基于TestNG框架,需要用测试套件将被执行的测试代码打包执行,使用测试套件生成器,根据自定义修改生成器中的目录,将所有测试代码打包为测试套件。所述测试代码模板为代码生成器提供模板,使得生成的测试代码与模板内容一致,测试代码模板为TestNG框架提供。特别地,用于单元测试的模板有两套,一套为需要注入对象的测试类提供,另一套为无对象注入的工具类类型的测试类提供。
在部分实施例中,所述excel文件包含同一接口或多个方法的多条测试用例的信息。excel文件集合或整合了多个测试用例的信息,便于管理、更新和维护。
在部分实施例中,所述测试用例的信息包括测试用例编号、标题、是否执行、请求参数、断言、接口请求或方法请求、测试账号和预处理SQL,所述预处理SQL包括构造数据SQL和恢复数据SQL。具体地,@Test注解代码基于获取到的测试用例的信息,轮询执行预处理SQL处理、接口请求或方法请求,断言等处理。接口测试代码与单元测试代码对应的测试用例,其请求参数具有较大差异:接口测试的入参全是由json对象完成,不管真实业务是json或者form表单,统一由json对象处理;单元测试是方法级别,入参可能是由多个参数组成,所以需要构造以参数名称为key的json对象,然后再在测试代码中组装出对应的入参类型和入参顺序。
在部分实施例中,所述接口测试代码执行包括:从excel文件中加载对应的请求参数,依次进行接口鉴权处理、执行数据准备、执行预处理SQL,通过接口请求发起http请求方式并调用被测接口,最后对被测接口的返回内容进行断言,使用恢复数据SQL恢复数据。
在部分实施例中,所述方法级测试代码执行包括:注入或初始化测试类的一个json对象;基于excel文件的请求参数,执行数据准备、执行预处理SQL,在方法级测试代码中组装测试参数类型并构造入参顺序,通过方法请求调用被测方法,最后对被测方法返回内容进行断言,使用恢复数据SQL恢复数据。
所述接口测试代码和方法级测试代码执行中,数据准备包括:使用默认账号或者指定账号进行登录操作;根据配置文件中配置的数据库环境进行数据库连接准备。
由于本方法底层是依赖TestNG框架,执行完各测试代码后,可以直接通过TestNG收集测试结果。
最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种专门服务于java语言开发程序的测试方法,其特征在于,包括以下步骤:
步骤1、调用测试代码模板,使用代码生成器生成测试类的测试代码和excel文件,所述测试代码为接口测试对应的接口测试代码或单元测试对应的方法级测试代码,所述excel文件包含接口测试或单元测试对应测试用例的信息;
步骤2、使用测试套件生成器,将所有测试代码打包为测试套件;
步骤3、基于excel文件,执行测试套件中所有接口的接口测试代码或所有方法的方法级测试代码;
步骤4、收集执行结果。
2.根据权利要求1所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述测试代码包括@DataProvider注解代码和@Test注解代码,并且@DataProvider注解代码和@Test注解代码成对出现。
3.根据权利要求2所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述步骤1包括:获取测试类的文件路径,将代码生成器中的静态属性修改为文件路径下的包路径,自动生成对应的excel文件;调用测试代码模板进行参数替换,生成所述包路径各接口的接口测试代码;调用测试代码模板进行参数替换,并根据所述包路径中带有@Test注解的方法,生成对应方法的方法级测试代码。
4.根据权利要求1所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述excel文件包含同一接口或多个方法的多条测试用例的信息。
5.根据权利要求1所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述测试用例的信息包括测试用例编号、标题、是否执行、请求参数、断言、接口请求或方法请求、测试账号和预处理SQL。
6.根据权利要求5所述的一种专门服务于java语言开发程序的测试方法,所述预处理SQL包括构造数据SQL和恢复数据SQL。
7.根据权利要求5所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述接口测试代码执行包括:从excel文件中加载对应的请求参数,依次进行接口鉴权处理、执行数据准备、执行预处理SQL,通过接口请求发起http请求方式并调用被测接口,最后对被测接口的返回内容进行断言,使用恢复数据SQL恢复数据。
8.根据权利要求5所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述方法级测试代码执行包括:注入或初始化测试类的一个json对象;基于excel文件的请求参数,执行数据准备、执行预处理SQL,在方法级测试代码中组装测试参数类型并构造入参顺序,通过方法请求调用被测方法,最后对被测方法返回内容进行断言,使用恢复数据SQL恢复数据。
9.根据权利要求7或权利要求8所述的一种专门服务于java语言开发程序的测试方法,其特征在于,所述数据准备包括:使用默认账号或者指定账号进行登录操作;根据配置文件中配置的数据库环境进行数据库连接准备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165775.3A CN115982055B (zh) | 2023-02-27 | 2023-02-27 | 一种专门服务于java语言开发程序的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165775.3A CN115982055B (zh) | 2023-02-27 | 2023-02-27 | 一种专门服务于java语言开发程序的测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115982055A true CN115982055A (zh) | 2023-04-18 |
CN115982055B CN115982055B (zh) | 2023-06-23 |
Family
ID=85959801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310165775.3A Active CN115982055B (zh) | 2023-02-27 | 2023-02-27 | 一种专门服务于java语言开发程序的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982055B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028276B1 (en) * | 2007-06-29 | 2011-09-27 | Oracle America, Inc. | Method and system for generating a test file |
CN107729243A (zh) * | 2017-10-12 | 2018-02-23 | 上海携程金融信息服务有限公司 | 应用编程接口自动化测试方法、系统、设备及存储介质 |
CN110134604A (zh) * | 2019-05-16 | 2019-08-16 | 极智(上海)企业管理咨询有限公司 | 一种无需代码的单元或接口测试方法、装置和计算机设备 |
CN112241369A (zh) * | 2020-10-16 | 2021-01-19 | 四川长虹电器股份有限公司 | 基于python的接口自动化测试方法 |
CN113138922A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 基于TestNG参数化读取Excel测试数据的方法 |
EP4053824A1 (en) * | 2012-04-16 | 2022-09-07 | SHL Group Ltd | Testing system |
CN115525534A (zh) * | 2021-06-25 | 2022-12-27 | 上海际链网络科技有限公司 | 基于swagger的接口测试的测试用例生成方法、生成平台 |
-
2023
- 2023-02-27 CN CN202310165775.3A patent/CN115982055B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8028276B1 (en) * | 2007-06-29 | 2011-09-27 | Oracle America, Inc. | Method and system for generating a test file |
EP4053824A1 (en) * | 2012-04-16 | 2022-09-07 | SHL Group Ltd | Testing system |
CN107729243A (zh) * | 2017-10-12 | 2018-02-23 | 上海携程金融信息服务有限公司 | 应用编程接口自动化测试方法、系统、设备及存储介质 |
CN110134604A (zh) * | 2019-05-16 | 2019-08-16 | 极智(上海)企业管理咨询有限公司 | 一种无需代码的单元或接口测试方法、装置和计算机设备 |
CN112241369A (zh) * | 2020-10-16 | 2021-01-19 | 四川长虹电器股份有限公司 | 基于python的接口自动化测试方法 |
CN113138922A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 基于TestNG参数化读取Excel测试数据的方法 |
CN115525534A (zh) * | 2021-06-25 | 2022-12-27 | 上海际链网络科技有限公司 | 基于swagger的接口测试的测试用例生成方法、生成平台 |
Non-Patent Citations (5)
Title |
---|
MEENAKSHI AGARWAL: "How to Save Selenium WebDriver TestNG Result to Excel", pages 1 - 17, Retrieved from the Internet <URL:《https://www.techbeamers.com/save-selenium-webdriver-testng-result-excel/》> * |
VINODKUMAR H KIRANAGI等: "Feature Driven Hybrid Test Automation Framework (FDHTAF) for web based or cloud based application testing", 《2017 INTERNATIONAL CONFERENCE ON SMART TECHNOLOGIES FOR SMART NATION (SMARTTECHCON)》, pages 1 - 5 * |
YXCHUN: "TestNG 安装、常用注解、断言、参数化、生成测试报告、测试套件、执行Excel测试用例", pages 1 - 20, Retrieved from the Internet <URL:《https://www.cnblogs.com/ychun/p/14282795.html》> * |
全栈测试笔记: "TestNG基本使用", pages 1 - 15, Retrieved from the Internet <URL:《https://www.cnblogs.com/uncleyong/p/15867747.html》> * |
陈思民: "一种支持用例自动生成的自动化测试系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 138 - 434 * |
Also Published As
Publication number | Publication date |
---|---|
CN115982055B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11099823B2 (en) | Systems and methods for transformation of reporting schema | |
US10235142B1 (en) | Code generator tool for building software applications with reusable components | |
Memon | Automatically repairing event sequence-based GUI test suites for regression testing | |
CN110309071B (zh) | 测试代码的生成方法及模块、测试方法及系统 | |
Xie et al. | Using a pilot study to derive a GUI model for automated testing | |
Tsai et al. | Scenario-based functional regression testing | |
US6182245B1 (en) | Software test case client/server system and method | |
EP2228726B1 (en) | A method and system for task modeling of mobile phone applications | |
US6907546B1 (en) | Language-driven interface for an automated testing framework | |
US6701514B1 (en) | System, method, and article of manufacture for test maintenance in an automated scripting framework | |
US9465718B2 (en) | Filter generation for load testing managed environments | |
CN112394942B (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
LaMantia et al. | Analyzing the evolution of large-scale software systems using design structure matrices and design rule theory: Two exploratory cases | |
del Mar Gallardo et al. | Debugging UML designs with model checking | |
Manner et al. | Troubleshooting serverless functions: a combined monitoring and debugging approach | |
CN111078555B (zh) | 一种测试文件的生成方法、系统、服务器和存储介质 | |
US20050114838A1 (en) | Dynamically tunable software test verification | |
Remenska et al. | Using model checking to analyze the system behavior of the LHC production grid | |
Lipka et al. | A method for semi-automated generation of test scenarios based on use cases | |
Beurer-Kellner et al. | Round-trip migration of object-oriented data model instances. | |
Motan et al. | Android App Testing: A Model for Generating Automated Lifecycle Tests | |
CN115982055A (zh) | 一种专门服务于java语言开发程序的测试方法 | |
Kuznetsov et al. | What do all these buttons do? statically mining android user interfaces at scale | |
CN114003500A (zh) | 软件测试方法及装置 | |
Polo‐Usaola et al. | Analysing the combination of cost reduction techniques in Android mutation testing |
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 |