CN111651342A - 基于Charles录制会话的HTTP接口自动化测试框架 - Google Patents

基于Charles录制会话的HTTP接口自动化测试框架 Download PDF

Info

Publication number
CN111651342A
CN111651342A CN201910159902.2A CN201910159902A CN111651342A CN 111651342 A CN111651342 A CN 111651342A CN 201910159902 A CN201910159902 A CN 201910159902A CN 111651342 A CN111651342 A CN 111651342A
Authority
CN
China
Prior art keywords
test
charles
interface
test case
recording
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
CN201910159902.2A
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.)
Fudan University
Original Assignee
Fudan University
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 Fudan University filed Critical Fudan University
Priority to CN201910159902.2A priority Critical patent/CN111651342A/zh
Publication of CN111651342A publication Critical patent/CN111651342A/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/3688Test management for test execution, e.g. scheduling of test suites
    • 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

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)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及一种基于Charles录制会话的HTTP接口自动化测试框架,该测试框架包括:测试用例录制单元:用以实现以Charles为基础,录制HTTP会话并提取会话参数存放在测试用例池中;中间件服务单元:用以连通测试用例池中的测试用例与服务端,即向服务端发送请求同时接收服务端的响应,完成从测试用例池中调用请求参数,构建完整的http请求,同时自动校验响应是否正确;持续集成测试单元:以单元测试框架为基础,调用中间件服务,执行测试用例,生成测试结果。与现有技术相比,本发明具有提高测试效率、增强扩展性、接口自动化测试等优点。

Description

基于Charles录制会话的HTTP接口自动化测试框架
技术领域
本发明涉及HTTP接口拓展领域,尤其是涉及一种基于Charles录制会话的HTTP接口自动化测试框架设计方法。
背景技术
在当前互联网产品迭代频繁的背景下,接口回归测试的时间越来越少,app后端的功能越来越复杂,人工设计测试用例耗时耗力,且在每个版本迭代中对所有功能做完整的回归已经不现实。
现有的HTTP接口测试工具功能单一,可扩展性差,而且测试数据需要手动输入,无法测试加密接口等。基于上述考虑,需要一个强有力的http接口测试工具代替现有测试方式与方法,提高接口测试效率,增强工具扩展性,实现无人值守的HTTP接口自动化测试。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于Charles录制会话的HTTP接口自动化测试框架。
本发明的目的可以通过以下技术方案来实现:
一种基于Charles录制会话的HTTP接口自动化测试框架,该测试框架包括:
测试用例录制单元:用以实现以Charles为基础,录制HTTP会话并提取会话参数存放在测试用例池中;
中间件服务单元:用以连通测试用例池中的测试用例与服务端,即向服务端发送请求同时接收服务端的响应,完成从测试用例池中调用请求参数,构建完整的http请求,同时自动校验响应是否正确;
持续集成测试单元:以单元测试框架为基础,调用中间件服务,执行测试用例,生成测试结果。
该测试框架功能包括录制接口测试用例部分和接口自动化测试部分。
所述的录制接口测试用例具体为:
以Charles为基础,利用Python的json和xlwt库构建脚本解析Charles导出的.har文件,提取测试用例的参数,装入Excel测试用例池。
所述的接口自动化测试具体为:
以Unittest单元测试框架和持续集成平台Jenkins为基础,从测试用例池中提取测试用例,以单元测试的形式嵌入到Unittest中,通过中间件服务向服务端发送请求数据与校验接口响应,同时使用HTMLTestRunner生成测试结果。
通过构建SendMail模块发送测试结果及相关报警信息。
测试用代码托管于Git服务器,Jenkins平台从Git服务器获取代码,执行持续集成测试。
与现有技术相比,本发明具有以下优点:
本发明提出了一个强有力的http接口测试工具,在测试人员在客户端安装待测应用进行功能测试时,监听工具自动采集接口测试用例,提高接口测试效率,增强工具扩展性,实现无人值守的HTTP接口自动化测试。
附图说明
图1为接口自动化测试框架设计架构结构图。
图2为接口自动化测试框架工作流程图。
图3为接口自动化测试框架工程设计流程图。
图4为接口测试用例录制结构图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,本发明提供一种基于Charles录制会话的HTTP接口自动化测试框架,测试框架在架构上分为三部分:测试用例录制单元,中间件服务单元,持续集成测试单元。
(1)测试用例录制单元
以Charles为基础,录制HTTP会话,提取会话参数,存放于测试用例池中。
(2)中间件服务单元
连通测试用例池中的测试用例与服务端,即向服务端发送请求同时接收服务端的响应。其完成从测试用例池中调用请求参数,构建完整的http请求,同时自动校验响应是否正确。
(3)持续集成测试单元
以单元测试框架为基础,调用中间件服务,执行测试用例,生成测试报告。此外,持续集成平台定时调用单元测试框架,自动化执行接口测试,并且向指定邮箱发送测试报告。另外,测试过程如有异常,将异常信息报警至指定邮箱。
本发明的工作流程如下:
如图2所示,当客户端开发人员完成应用开发并且转交给测试人员后,测试人员在客户端安装待测应用进行功能测试的同时,监听工具自动采集接口测试用例,其具体流程如下:启动Charles,客户端连接代理服务器;测试人员进行客户端功能测试,Charles录制客户端与服务端交互过程中所调用的接口以及传递的参数信息;通过调用Python脚本,提取Charles录制的接口请求数据,生成测试用例;测试人员完善测试用例并且添加接口响应校验规则后装入单元测试框架;持续集成平台以任务的形式定时运行单元测试框架,其分别完成向服务端发送接口请求数据,接收服务端响应并与预先填写的检验规则作对比,发送测试结果三项任务。
具体工程方案为:
如图3所示,在工程上接口自动化测试框架主要由Charles+Python+Unittest+Git+Jenkins构成,主要分为两部分:录制接口测试用例与接口自动化测试。
录制接口测试用例部分以Charles为基础,利用Python的json和xlwt库构建脚本解析Charles导出的“.har”文件,提取测试用例的参数,装入Excel测试用例池。接口自动化测试部分则以Unittest单元测试框架和持续集成平台Jenkins为基础,从测试用例池中提取测试用例,以单元测试的形式在其嵌入至Unittest,通过中间件服务向服务端发送请求数据与校验接口响应,同时使用HTMLTestRunner生成测试报告。另外,构建了SendMail模块发送测试报告及相关报警信息。测试代码托管于Git服务器,Jenkins平台从Git服务器拉取代码,执行持续集成测试。
实施例:
1、录制接口测试
如图4所示,录制接口测试用例部分以Charles为核心,Python脚本将HTTP会话过程转换成可用的测试用例。测试人员在进行功能测试的同时,Charles录制客户端与服务端会话,测试结束后,导出“.har”格式文件。经过白名单与黑名单过滤后,接口测试用例存入测试用例池。
当客户端连接Charles后,客户端后端所有的请求参数通过Charles转发至服务端,服务端的响应又通过Charles下发至客户端。对于某款特定的移动应用,其接口一般归于一个或多个域名,而Charles将客户端与服务端会话过程中所有的数据按照域名进行归类,后期导出Har格式文件后,方便查看会话详情。
2、构建接口测试用例池
用例池结构如表1所示,它是一个方便维护的Excel表格,其中一行为一条测试用例,每条用例包含完整的HTTP请求信息及服务端响应,涉及到的主要方法描述如表2所示。
表1测试用例池结构
Figure BDA0001984247190000041
表2构建测试用例主要方法
Figure BDA0001984247190000042
3、构建http请求与校验接口响应
构建单元以Python的requests库为基础,将测试用例中参数组装成一个完整的HTTP请求。requests库支持HTTP协议中的所有请求方法,并且其能携带所有的HTTP请求信息。
服务端解析构建单元的请求之后,会将响应以Response对象的形式返回。而在移动应用软件开发中,大多数移动应用基本采用Json格式耦合客户端与服务端。借助于Python中的json库,将HTTP响应报文转换成json格式,方便校验其响应内容。
为了方便请求,将requests和json库进一步封装,实现完整的请求方法:
Figure BDA0001984247190000043
Figure BDA0001984247190000051
对于接口响应内容的校验,有两种校验方式。一种是使用Json Schema;另一种方式是使用断言(Assert)。Json Schema用于检验Json数据的一致性检验。它可以验证值的数据类型是否正确,是否包含所需的数据,数据的组成结构是否正确,值的范围是否符合预期等。对于断言的方式,在Unittest框架中,TestCase类提供了较多的方法用于对接口响应结果的校验,表3列出了几个常用的断言方法。
表3 TestCase类常用断言方法
方法 检查
assertEqual(a,b) a==b
assertNotEqual(a,b) a!=b
assertTrue(x) bool(x)is True
assertFalse(x) bool(x)is False
assertIs(a,b) a is b
以“assertEqual”为例:
Figure BDA0001984247190000052
Figure BDA0001984247190000061
4、生成测试报告
测试报告是以html的格式存在,在给定html文件的保存路径之后,完整的接口测试框架遍搭建完毕。如下列代码所示,调用unittest的TestSuite()后,向测试集合中添加测试用例便可执行,最后将测试结果保存至指定路径。
filename='./report/testresult.html'
fp=open(filename,'wb')
suite=unittest.TestSuite()
suite.addTest(TestMethod('test01'))
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,
title='测试报告',description='测试结果如下:')
runner.run(suite)
fp.close()
5、发送报告模块
使用python中的“smtplib”库构建发送报告模块,发送形式为邮件,其中“content”为测试报告,“mail_to”支持多接收者。核心代码如下:
Figure BDA0001984247190000062
Figure BDA0001984247190000071
6、持续集成测试
Jenkins平台安装Git插件后,将托管在Git服务器的测试框架代码更新至测试环境后做持续集成测试。待配置的项目为:
源码管理:Git
Repositories:仓库地址
Poll SCM:测试时间间隔
邮件通知:异常信息报警邮箱。

Claims (6)

1.一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,该测试框架包括:
测试用例录制单元:用以实现以Charles为基础,录制HTTP会话并提取会话参数存放在测试用例池中;
中间件服务单元:用以连通测试用例池中的测试用例与服务端,即向服务端发送请求同时接收服务端的响应,完成从测试用例池中调用请求参数,构建完整的http请求,同时自动校验响应是否正确;
持续集成测试单元:以单元测试框架为基础,调用中间件服务,执行测试用例,生成测试结果。
2.根据权利要求1所述的一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,该测试框架功能包括录制接口测试用例部分和接口自动化测试部分。
3.根据权利要求2所述的一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,所述的录制接口测试用例具体为:
以Charles为基础,利用Python的json和xlwt库构建脚本解析Charles导出的.har文件,提取测试用例的参数,装入Excel测试用例池。
4.根据权利要求2所述的一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,所述的接口自动化测试具体为:
以Unittest单元测试框架和持续集成平台Jenkins为基础,从测试用例池中提取测试用例,以单元测试的形式嵌入到Unittest中,通过中间件服务向服务端发送请求数据与校验接口响应,同时使用HTMLTestRunner生成测试结果。
5.根据权利要求4所述的一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,通过构建SendMail模块发送测试结果及相关报警信息。
6.根据权利要求4所述的一种基于Charles录制会话的HTTP接口自动化测试框架,其特征在于,测试用代码托管于Git服务器,Jenkins平台从Git服务器获取代码,执行持续集成测试。
CN201910159902.2A 2019-03-04 2019-03-04 基于Charles录制会话的HTTP接口自动化测试框架 Pending CN111651342A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910159902.2A CN111651342A (zh) 2019-03-04 2019-03-04 基于Charles录制会话的HTTP接口自动化测试框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910159902.2A CN111651342A (zh) 2019-03-04 2019-03-04 基于Charles录制会话的HTTP接口自动化测试框架

Publications (1)

Publication Number Publication Date
CN111651342A true CN111651342A (zh) 2020-09-11

Family

ID=72342468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910159902.2A Pending CN111651342A (zh) 2019-03-04 2019-03-04 基于Charles录制会话的HTTP接口自动化测试框架

Country Status (1)

Country Link
CN (1) CN111651342A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799940A (zh) * 2021-01-26 2021-05-14 中国工商银行股份有限公司 回归测试方法、装置、计算机系统和计算机可读存储介质
CN113760757A (zh) * 2021-08-31 2021-12-07 成都安恒信息技术有限公司 一种基于har文件生成测试模型的方法及系统
CN115934574A (zh) * 2023-03-02 2023-04-07 云账户技术(天津)有限公司 接口测试用例的自动化录制方法、系统、电子设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572469A (zh) * 2015-01-23 2015-04-29 广东能龙教育股份有限公司 一种基于模拟http请求的接口自动化测试方法和系统
WO2018120722A1 (zh) * 2016-12-30 2018-07-05 上海壹账通金融科技有限公司 异步接口测试方法、终端、设备、系统及存储介质
CN108733569A (zh) * 2018-05-25 2018-11-02 北京五八信息技术有限公司 一种接口自动化测试方法、装置、存储介质及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572469A (zh) * 2015-01-23 2015-04-29 广东能龙教育股份有限公司 一种基于模拟http请求的接口自动化测试方法和系统
WO2018120722A1 (zh) * 2016-12-30 2018-07-05 上海壹账通金融科技有限公司 异步接口测试方法、终端、设备、系统及存储介质
CN108733569A (zh) * 2018-05-25 2018-11-02 北京五八信息技术有限公司 一种接口自动化测试方法、装置、存储介质及设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
888米兔: "python + requests接口自动化测试框架实例详解教程", 《HTTPS://MY.OSCHINA.NET/U/3041656/BLOG/820023》 *
JASONGO: "HttpRunner自动化测试框架", 《HTTPS://WWW.CNBLOGS.COM/YINJIA/P/10415920.HTML》 *
王大伟: "基于Python的Web API自动化测试方法研究", 《电子科学技术》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112799940A (zh) * 2021-01-26 2021-05-14 中国工商银行股份有限公司 回归测试方法、装置、计算机系统和计算机可读存储介质
CN112799940B (zh) * 2021-01-26 2024-02-06 中国工商银行股份有限公司 回归测试方法、装置、计算机系统和计算机可读存储介质
CN113760757A (zh) * 2021-08-31 2021-12-07 成都安恒信息技术有限公司 一种基于har文件生成测试模型的方法及系统
CN113760757B (zh) * 2021-08-31 2023-08-22 成都安恒信息技术有限公司 一种基于har文件生成测试模型的方法及系统
CN115934574A (zh) * 2023-03-02 2023-04-07 云账户技术(天津)有限公司 接口测试用例的自动化录制方法、系统、电子设备和介质

Similar Documents

Publication Publication Date Title
CN107992409B (zh) 测试用例生成方法、装置、计算机设备和存储介质
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
CN112965871A (zh) 车辆故障提示信息获取方法、装置及存储介质
US20060179363A1 (en) Online testing unification system with remote test automation technology
CN111651342A (zh) 基于Charles录制会话的HTTP接口自动化测试框架
CN110750458A (zh) 大数据平台测试方法、装置、可读存储介质及电子设备
CN109324975B (zh) 一种基于移动云测平台的持续集成方法
CN112241360A (zh) 一种测试用例生成方法、装置、设备及存储介质
CN112463588A (zh) 一种自动化测试系统及方法、存储介质、计算设备
CN115048257A (zh) 系统业务功能验证方法、装置、计算机设备和存储介质
Grambow et al. Using application benchmark call graphs to quantify and improve the practical relevance of microbenchmark suites
US10417113B1 (en) System, method, and computer program for web testing and automation offline storage and analysis
CN112650688A (zh) 自动化回归测试方法、关联设备以及计算机程序产品
CN112882948A (zh) 一种应用的稳定性测试方法、装置、系统及存储介质
CN106484601B (zh) 客户端的用户数据分析方法及系统
CN116431522A (zh) 一种低代码对象存储网关自动化测试方法及系统
CN113934642B (zh) 一种基于动静态结合的软件兼容性测试方法
CN113238901B (zh) 多设备的自动化测试方法及装置、存储介质、计算机设备
CN113434382A (zh) 数据库性能监控方法、装置、电子设备及计算机可读介质
CN114880239A (zh) 一种基于数据驱动的接口自动化测试框架及方法
CN114285840A (zh) 车辆数据的获取方法、智能终端及存储介质
CN116467156A (zh) 联调测试方法、装置、存储介质及电子设备
CN115878448A (zh) 数据库测试方法、分布式数据库、存储介质
CN111813662A (zh) 用户行为驱动的可持续集成的测试方法、装置和设备
CN112015645A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200911