快速上手|HTTP 接口功能自动化测试

简介: HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。

来源:http://www.51testing.com

无论是浏览器上运行的Web应用还是移动端的H5应用,都离不开HTTP接口。Web应用通常是分为前后台开发的,后台提供接口调用返回Json对象,前台使用JS框架去加载后台返回的Json。而H5页面动态获取内容的方式则是采用ajax异步请求后台数据实时刷新,用GET/POST的HTTP请求后台接口,再将返回的数据(一般是json或xml格式)渲染在页面上。因此,HTTP接口功能测试是确保Web应用和H5应用页面内容数据正确的关键。

  简而言之,HTTP接口功能测试是对服务后台一系列HTTP接口功能测试:

  输入:根据接口描述构造不同的参数输入值;

  输出:json。

  HTTP接口功能测试

  的相关知识

 1http相关知识

 1)、HTTP协议的URL

  HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

  HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[:port][abs_path],其中http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

  eg.:

  a、输入:www.guet.edu.cn 浏览器自动转换成:http://www.guet.edu.cn/

  b、http://192.168.0.116:8080/index.jsp

 2)、HTTP协议的请求

  http请求由三部分组成,分别是:请求行、消息报头、请求正文。

  请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF,其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

  请求方法(所有方法全为大写)有多种,各个方法的解释如下:

  GET:请求获取Request-URI所标识的资源;

  POST:在Request-URI所标识的资源后附加新的数据;

  HEAD:请求获取由Request-URI所标识的资源的响应消息报头;

  PUT:请求服务器存储一个资源,并用Request-URI作为其标识;

  DELETE:请求服务器删除Request-URI所标识的资源;

  TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;

  OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求应用;

  PATCH:实体中包含一个表,表中说明与该URI所表示的原内容的区别;

  MOVE:请求服务器将指定的页面移至另一个网络地址;

  COPY:请求服务器将指定的页面拷贝至另一个网络地址;

  LINK:请求服务器建立链接关系;

  UNLINK:断开链接关系;

  WRAPPED:允许客户端发送经过封装的请求;

  Extension-mothed:在不改动协议的前提下,可增加另外的方法。

  3)、HTTP协议的响应

  在接收和解释请求消息后,服务器返回一个HTTP响应消息,HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

  a、状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。

  状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

  1xx:指示信息–表示请求已接收,继续处理;

  2xx:成功–表示请求已被成功接收、理解、接受;

  3xx:重定向–要完成请求必须进行更进一步的操作;

  4xx:客户端错误–请求有语法错误或请求无法实现;

  5xx:服务器端错误–服务器未能实现合法的请求;

  b、响应正文就是服务器返回的资源的内容。

 2JSON

  JSON(JavascriptObjectNotation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。JSON建构有两种结构:

  1)、”名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。

  2)、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

eg:

  a、表示名称 / 值对 { "firstName": "Brett" }

  b、表示数组

  {

"people": [

  { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

  { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

  { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

  ]

}

实现方法

 实现Hju li实现

  1) 使用Python语言驱动测试;

  2) 调用http接口采用pycurl模块;

  3) 设置断言,对比实际返回结果和预期结果的正确性;

  4) 首次执行测试采用半自动化的方式,即人工检查输出的json文件是否正确,一旦正确将封存json文件,为后续回归测试的预期结果,如果发现错误手工修正为预期文件。(注意不是每次测试都人工检查该文件,只首次测试的时候才检查)

  5) 增加测试套件,按照逻辑,或者说按照测试组的理解把测试用例划分成不同的部分,每个部分就是一个test suite。

  6) 使用HTMLTestRunner模块生成测试报告

  举例说明

  Hju li实现

  以监控宝的2个接口为例

 1查看接口文档

  1)、用户管理相关-列出所有用户接口

  2)、网站监控相关-创建网站监控任务

  2编写测试用例

  1)、列出所有用户

  封装的get请求

 2)、创建网站监控任务

目录
相关文章
|
5天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
27 7
Jmeter实现WebSocket协议的接口测试方法
|
5天前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
16 5
|
21天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
19天前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。
|
19天前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
27 0
|
Java Apache
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
hbase从集群中有8台regionserver服务器,已稳定运行了5个多月,8月15号,发现集群中4个datanode进程死了,经查原因是内存 outofMemory了(因为这几台机器上部署了spark,给spark开的...
805 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
Datanode的日志中看到: 10/12/14 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.
684 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
zookeeper watch的定义如下:watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher。
923 0
|
Web App开发 前端开发 测试技术
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一、迁移步骤 1.首先安装最新版本gitlab(gitlab7.2安装) 2.停止旧版本gitlab服务 3.将旧的项目文件完整导入新的gitlab   bundle exec rake gitlab:import:r...
704 0