CN107678942A - 一种api自动化测试方法 - Google Patents
一种api自动化测试方法 Download PDFInfo
- Publication number
- CN107678942A CN107678942A CN201710778862.0A CN201710778862A CN107678942A CN 107678942 A CN107678942 A CN 107678942A CN 201710778862 A CN201710778862 A CN 201710778862A CN 107678942 A CN107678942 A CN 107678942A
- Authority
- CN
- China
- Prior art keywords
- test
- api
- document
- data
- testing methods
- 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
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本发明公开一种API自动化测试方法,包括:s1,获取一个Scrum过程的迭代需求;s2,评审迭代需求,确定现有API测试用例是否需要调整;s3,若需要调整API测试用例,则根据迭代需求确定API测试用例调整范围,否则执行步骤s5;s4,将API测试用例套用至测试用例模板文件生成新的测试文档;s5,向测试框架导入测试文档执行测试并输出测试报告;s6,将执行通过的测试文档提交至测试库保存。通过上述方式,本发明提供一种API自动化测试方法,解决了传统自动化测试中的问题,提高了整个测试开发过程的效率,而且测试结果更容易暴露API的BUG。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种API自动化测试方法。
背景技术
在一个敏捷迭代中,需求的新增及修改往往带来了繁多的工作量。如何保证后端API的质量关乎着整个产品是否能正常发布。传统的手工测试根本无法保证在一个迭代周期中对所有的API变动进行及时验证,随着后端部署的频繁,利用传统手工验证API的方式早已摈弃;传统的自动化接口测试,存在着验证点单一,测试工具依赖,无法胜任繁多的测试场景,无法及时有效的发现BUG等问题,真正的BUG往往淹没在一片错误中。
发明内容
本发明主要解决的技术问题是提供一种API自动化测试方法,解决了传统自动化测试中的问题,提高了整个测试开发过程的效率,而且测试结果更容易暴露API的BUG。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种API自动化测试方法,包括:
s1,获取一个Scrum过程的迭代需求;
s2,评审迭代需求,确定现有API测试用例是否需要调整;
s3,若需要调整API测试用例,则根据迭代需求确定API测试用例调整范围,否则执行步骤s5;
s4,将API测试用例套用至测试用例模板文件生成新的测试文档;
s5,向测试框架导入测试文档执行测试并输出测试报告;
s6,将执行通过的测试文档提交至测试库保存。
在本发明一个较佳实施例中,所述s4步骤中的测试用例模板文件以数据表结构存储测试用例,单行数据对应单项测试用例,每行数据包含需要验证的对象数据项、输入参数数据项、验证期望值数据项、测试用例描述数据项以及请求信息数据项。
在本发明一个较佳实施例中,所述s5步骤中的执行测试过程包含以下步骤:
s501,组合请求,测试框架读取测试文档和配置文件,拼接出对应的API地址,同时提取测试文档中的输入参数数据拼接出API完整请求;
s502,调用测试环境,将API完整请求发送至测试环境尝试建立连接,并返回请求结果;
s503,调用验证方法,根据验证点信息从方法库中加载相应验证方法,将服务器返回值与验证期望值比对并结合测试文档中的测试用例描述数据输出验证结果,所述验证结果存储至结果数据集,并关联样式文件生成测试报告。
在本发明一个较佳实施例中,所述s5步骤中执行测试过程采用单独和批量两种执行模式,当采用单独执行模式时,测试框架仅读取单个测试文档;当采用批量执行模式时,测试框架仅读取单个测试计划文件,所述测试计划文件中记录了多个测试文档文件名。
在本发明一个较佳实施例中,所述s5步骤中执行测试过程均采用单线程运行的方式。
在本发明一个较佳实施例中,所述请求信息包含请求类型、请求超时时间以及请求接口流经数据项。
在本发明一个较佳实施例中,所述验证点信息包含需要验证的对象数据、输入参数数据以及验证期望值数据。
本发明的有益效果是:本发明提供的一种API自动化测试方法,解决了传统自动化测试中的问题,提高了整个测试开发过程的效率,而且测试结果更容易暴露API的BUG。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
图1是本发明一种API自动化测试方法的一较佳实施例的流程图。
具体实施方式
下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明实施例包括:
一种API自动化测试方法,包括:
s1,获取一个Scrum过程的迭代需求,例如新增API、调整现有API入参、增加输出项等;
s2,评审迭代需求,确定现有API测试用例是否需要调整;
s3,若需要调整API测试用例,则根据迭代需求确定API测试用例调整范围,例如新增测试用例、变更测试用例等,否则执行步骤s5;
s4,将API测试用例套用至测试用例模板文件生成新的测试文档;
s5,向测试框架导入测试文档执行测试并输出测试报告;上述方式,测试结果数据是框架本身生成的,把一些与被测程序无关的日志进行了统一过滤,只保留该汇报的,与测试用例中的预期不符的结果,并记录上下文,并生成可以点击,可以随时跳转至API的HTML报告.使得测试结果分析变得更便捷,10分钟之内即可看完一份2000个左右用例的测试结果报告。
s6,将执行通过的测试文档提交至测试库保存。
其中,所述s4步骤中的测试用例模板文件以数据表结构存储测试用例,单行数据对应单项测试用例,每行数据包含需要验证的对象数据项、输入参数数据项、验证期望值数据项、测试用例描述数据项以及请求信息数据项。
进一步的,所述s5步骤中的执行测试过程包含以下步骤:
s501,组合请求,测试框架读取测试文档和配置文件,拼接出对应的API地址,同时提取测试文档中的输入参数数据拼接出API完整请求;
s502,调用测试环境,将API完整请求发送至测试环境尝试建立连接,并返回请求结果;
s503,调用验证方法,根据验证点信息从方法库中加载相应验证方法,将服务器返回值与验证期望值比对并结合测试文档中的测试用例描述数据输出验证结果,所述验证结果存储至结果数据集,并关联样式文件生成测试报告。
进一步的,所述s5步骤中执行测试过程采用单独和批量两种执行模式,当采用单独执行模式时,测试框架仅读取单个测试文档;当采用批量执行模式时,测试框架仅读取单个测试计划文件,所述测试计划文件中记录了多个测试文档文件名。
进一步的,所述s5步骤中执行测试过程均采用单线程运行的方式。
进一步的,所述请求信息包含请求类型、请求超时时间以及请求接口流经数据项。
进一步的,所述验证点信息包含需要验证的对象数据、输入参数数据以及验证期望值数据。
如附图1所示的测试环境1、测试环境2、测试环境3等可以是任一具有IP地址的PC客户机。运用上述方法,利用Controller PC或使用Jenkins控制PC客户机向服务器单线程发起执行测试任务;服务器依次返回数据,PC客户机进行结果比对并生成结果测试执行完成后,PC客户机汇总测试结果并生成html测试报告,最终实现完整的自动化测试过程。
传统测试方法存在如下缺陷:
1.验证点单一:
传统的自动化测试依赖JMeter,SoapUI等接口自动化测试工具,由于工具的限制以及扩展的不稳定性,常常带来了验证点不敢放太多,验证项目容易误报、漏报等问题;
2.测试工具依赖:
传统的自动化测试往往都首先基于测试工具,在测试工具的基础上进行了某种程度的优化.存在着工具依赖性强,无法结合使用多种工具的情况;
3.无法胜任繁多的测试场景:
传统的自动化API测试工具,如Jmeter,当一个测试计划非常庞大时,往往意味着一个超大的测试文档(jmx),这对测试开发工程师来说就是灾难;
4.测试结果繁多,无法有效发现BUG:
传统自动化测试的结果一般由工具自动生成,或者经过简单改良.但是经常的看到测试报告中有大量的错误描述,而往往这些描述的并不是程序BUG,而是自动化测试框架的代码错误,当这种错误很多时,往往在执行完一大批用例后,需要花半小时甚至更多才能把结果分析完。
本发明的创新点:
1.本专利的研发核心环境是JDK1.8,在API接口方面使用了httpclient,在接口返回验证方面使用了最新的jsonpath包,支持各种最新的jsonpath调用方式,稳定可靠。结合这些最新的jsonpath调用方法,本专利编写了一套基于json对象的各种数据验证方法,基于这些方法,可以覆盖目前需要的所有验证点,包括但不至于:
-值验证
-数字比较,日期比较
-抓取List中的count,并进行比较
-数据上下文关联,对比
-数字/日期的排序
-验证数组中是否包含某个值
-有条件的验证数组中的某个特定的节点中子节点的值
2.本专利的设计遵循了可插拔式的框架思想,在驱动层可以统一调度多种测试工具。如JMeter,WebDriver,UIAutomater,httpclient等,让这些不同的测试工具在各自适合的范围中各展所长。同时,框架做到了统一驱动,方法库仍可部分重用等优势。
3.在本专利中,测试计划只是一份测试用例的名称列表(.txt),而测试用例也都是以一个数据文件的形式而存在的(.xlsx),在每一个数据文件,每一行中,规定了这条用例即将运行的环境,API地址,传递参数以及返回结果的预期(包括但不限于以上的7中验证类型)。最大化的简化测试用例开发工作量,使测试人员专注于待测程序,而不是测试代码开发,是本专利的一个核心目标。
综上所述,本发明提供了一种API自动化测试方法,解决了传统自动化测试中的问题,提高了整个测试开发过程的效率,而且测试结果更容易暴露API的BUG。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种API自动化测试方法,其特征在于,该方法包括:
s1,获取一个Scrum过程的迭代需求;
s2,评审迭代需求,确定现有API测试用例是否需要调整;
s3,若需要调整API测试用例,则根据迭代需求确定API测试用例调整范围,否则执行步骤s5;
s4,将API测试用例套用至测试用例模板文件生成新的测试文档;
s5,向测试框架导入测试文档执行测试并输出测试报告;
s6,将执行通过的测试文档提交至测试库保存。
2.根据权利要求1所述的API自动化测试方法,其特征在于,所述s4步骤中的测试用例模板文件以数据表结构存储测试用例,单行数据对应单项测试用例,每行数据包含需要验证的对象数据项、输入参数数据项、验证期望值数据项、测试用例描述数据项以及请求信息数据项。
3.根据权利要求1所述的API自动化测试方法,其特征在于,所述s5步骤中的执行测试过程包含以下步骤:
s501,组合请求,测试框架读取测试文档和配置文件,拼接出对应的API地址,同时提取测试文档中的输入参数数据拼接出API完整请求;
s502,调用测试环境,将API完整请求发送至测试环境尝试建立连接,并返回请求结果;
s503,调用验证方法,根据验证点信息从方法库中加载相应验证方法,将服务器返回值与验证期望值比对并结合测试文档中的测试用例描述数据输出验证结果,所述验证结果存储至结果数据集,并关联样式文件生成测试报告。
4.根据权利要求1所述的API自动化测试方法,其特征在于,所述s5步骤中执行测试过程采用单独和批量两种执行模式,当采用单独执行模式时,测试框架仅读取单个测试文档;当采用批量执行模式时,测试框架仅读取单个测试计划文件,所述测试计划文件中记录了多个测试文档文件名。
5.根据权利要求1所述的API自动化测试方法,其特征在于,所述s5步骤中执行测试过程均采用单线程运行的方式。
6.根据权利要求1所述的API自动化测试方法,其特征在于,所述请求信息包含请求类型、请求超时时间以及请求接口流经数据项。
7.根据权利要求3所述的API自动化测试方法,其特征在于,所述验证点信息包含需要验证的对象数据、输入参数数据以及验证期望值数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710778862.0A CN107678942A (zh) | 2017-08-30 | 2017-08-30 | 一种api自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710778862.0A CN107678942A (zh) | 2017-08-30 | 2017-08-30 | 一种api自动化测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107678942A true CN107678942A (zh) | 2018-02-09 |
Family
ID=61135160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710778862.0A Pending CN107678942A (zh) | 2017-08-30 | 2017-08-30 | 一种api自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107678942A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108572919A (zh) * | 2018-05-30 | 2018-09-25 | 平安普惠企业管理有限公司 | 自动化测试方法、装置、计算机设备及存储介质 |
CN108776642A (zh) * | 2018-06-01 | 2018-11-09 | 平安普惠企业管理有限公司 | 测试报告生成方法、装置、计算机设备和存储介质 |
CN108897687A (zh) * | 2018-06-29 | 2018-11-27 | 泰华智慧产业集团股份有限公司 | 一种基于数据驱动的api自动化测试方法和系统 |
CN108959065A (zh) * | 2018-05-17 | 2018-12-07 | 烽火通信科技股份有限公司 | 软件接口测试参数的验证方法及系统 |
CN109062801A (zh) * | 2018-08-01 | 2018-12-21 | 四川长虹电器股份有限公司 | 软件接口自动转换系统 |
CN109376285A (zh) * | 2018-10-30 | 2019-02-22 | 上海掌门科技有限公司 | 基于json格式的数据排序验证方法、电子设备及介质 |
CN110659198A (zh) * | 2018-06-28 | 2020-01-07 | 亿度慧达教育科技(北京)有限公司 | 应用程序的测试用例执行方法、装置和软件测试系统 |
CN110688294A (zh) * | 2018-07-05 | 2020-01-14 | 飞狐信息技术(天津)有限公司 | 一种基于Srum游戏开发的敏捷测试方法及系统 |
US11102081B1 (en) | 2020-09-28 | 2021-08-24 | Accenture Global Solutions Limited | Quantitative network testing framework for 5G and subsequent generation networks |
CN115426300A (zh) * | 2022-08-15 | 2022-12-02 | 成都北中网芯科技有限公司 | 一种基于数据包自动化测试np芯片api接口的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329652A (zh) * | 2008-07-30 | 2008-12-24 | 中兴通讯股份有限公司 | 一种回归测试自动化系统及方法 |
CN102096631A (zh) * | 2009-12-11 | 2011-06-15 | 华为技术有限公司 | 接口测试方法及装置 |
US20150205704A1 (en) * | 2005-01-07 | 2015-07-23 | John Joseph Michelsen | Graphical model for test case viewing, editing, and reporting |
CN106649127A (zh) * | 2016-12-29 | 2017-05-10 | 广东浪潮大数据研究有限公司 | 一种适用于软件敏捷开发的自动化测试方法及模型 |
-
2017
- 2017-08-30 CN CN201710778862.0A patent/CN107678942A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150205704A1 (en) * | 2005-01-07 | 2015-07-23 | John Joseph Michelsen | Graphical model for test case viewing, editing, and reporting |
CN101329652A (zh) * | 2008-07-30 | 2008-12-24 | 中兴通讯股份有限公司 | 一种回归测试自动化系统及方法 |
CN102096631A (zh) * | 2009-12-11 | 2011-06-15 | 华为技术有限公司 | 接口测试方法及装置 |
CN106649127A (zh) * | 2016-12-29 | 2017-05-10 | 广东浪潮大数据研究有限公司 | 一种适用于软件敏捷开发的自动化测试方法及模型 |
Non-Patent Citations (1)
Title |
---|
李季: "敏捷测试实践与相关问题", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959065A (zh) * | 2018-05-17 | 2018-12-07 | 烽火通信科技股份有限公司 | 软件接口测试参数的验证方法及系统 |
CN108572919A (zh) * | 2018-05-30 | 2018-09-25 | 平安普惠企业管理有限公司 | 自动化测试方法、装置、计算机设备及存储介质 |
CN108776642A (zh) * | 2018-06-01 | 2018-11-09 | 平安普惠企业管理有限公司 | 测试报告生成方法、装置、计算机设备和存储介质 |
CN108776642B (zh) * | 2018-06-01 | 2023-04-11 | 平安普惠企业管理有限公司 | 测试报告生成方法、装置、计算机设备和存储介质 |
CN110659198A (zh) * | 2018-06-28 | 2020-01-07 | 亿度慧达教育科技(北京)有限公司 | 应用程序的测试用例执行方法、装置和软件测试系统 |
CN108897687B (zh) * | 2018-06-29 | 2022-04-01 | 泰华智慧产业集团股份有限公司 | 一种基于数据驱动的api自动化测试方法和系统 |
CN108897687A (zh) * | 2018-06-29 | 2018-11-27 | 泰华智慧产业集团股份有限公司 | 一种基于数据驱动的api自动化测试方法和系统 |
CN110688294A (zh) * | 2018-07-05 | 2020-01-14 | 飞狐信息技术(天津)有限公司 | 一种基于Srum游戏开发的敏捷测试方法及系统 |
CN109062801A (zh) * | 2018-08-01 | 2018-12-21 | 四川长虹电器股份有限公司 | 软件接口自动转换系统 |
CN109376285A (zh) * | 2018-10-30 | 2019-02-22 | 上海掌门科技有限公司 | 基于json格式的数据排序验证方法、电子设备及介质 |
CN109376285B (zh) * | 2018-10-30 | 2021-03-02 | 上海掌门科技有限公司 | 基于json格式的数据排序验证方法、电子设备及介质 |
US11102081B1 (en) | 2020-09-28 | 2021-08-24 | Accenture Global Solutions Limited | Quantitative network testing framework for 5G and subsequent generation networks |
EP3975482A1 (en) * | 2020-09-28 | 2022-03-30 | Accenture Global Solutions Limited | Quantitative network testing framework for 5g and subsequent generation networks |
CN115426300A (zh) * | 2022-08-15 | 2022-12-02 | 成都北中网芯科技有限公司 | 一种基于数据包自动化测试np芯片api接口的方法 |
CN115426300B (zh) * | 2022-08-15 | 2023-12-01 | 成都北中网芯科技有限公司 | 一种基于数据包自动化测试np芯片api接口的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107678942A (zh) | 一种api自动化测试方法 | |
US6993747B1 (en) | Method and system for web based software object testing | |
EP1214656B1 (en) | Method for web based software object testing | |
CN103150249B (zh) | 一种自动化测试的方法和系统 | |
US8954397B2 (en) | Creation and replay of a simulation workload using captured workloads | |
CN110297774A (zh) | 一种基于python的接口自动化测试方法 | |
CN108897687A (zh) | 一种基于数据驱动的api自动化测试方法和系统 | |
CN102521354B (zh) | 一种数据库协议审计测试方法及装置 | |
US20100115496A1 (en) | Filter generation for load testing managed environments | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
US20080155514A1 (en) | Method and System for Graphical User Interface Testing | |
CN107678962A (zh) | 一种cli接口的自动化测试方法及装置 | |
CN103631713A (zh) | Erp软件自动化测试系统及方法 | |
CN105760296A (zh) | 自动化测试控制方法、装置及终端 | |
CN109460367A (zh) | 基于Jmeter可持续集成自动化性能测试的方法 | |
CN110471853A (zh) | App测试方法、装置、计算机设备及存储介质 | |
CN106886493A (zh) | 一种自动化测试系统的建立方法与装置 | |
CN106649090A (zh) | 一种自动化测试系统及方法 | |
CN112260885A (zh) | 一种工控协议自动测试方法、系统、装置及可读存储介质 | |
CN105550103B (zh) | 一种基于自定义测试脚本的自动化测试方法 | |
CN105117347B (zh) | 测试数据的模拟方法、系统及自动化测试方法、系统 | |
CN117290255A (zh) | 一种基于Python和Locust框架的批量接口性能测试方法 | |
JPH0456445A (ja) | ネットワークシステム試験方式 | |
CN112700083A (zh) | 构建资源综合利用和服务指数指标体系场景的方法及装置 | |
CN111782557B (zh) | 一种web应用权限的测试方法及其系统 |
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 |
Application publication date: 20180209 |
|
RJ01 | Rejection of invention patent application after publication |