软件测试 接口测试 接口测试的必备条件 接口测试用例设计 HTTP协议基础 Postman
文章目录
- 1 接口测试概述
- 1.1 接口测试的定义
- 1.2 接口测试的范围和适用场合
- 2 接口测试的必备条件
- 2.1 接口测试的要求
- 2.2 标准和规范的接口文档
- 2.3 如何获取接口信息
- 3 接口测试必须具备的知识
- 3.1 常见的接口传输协议
- 3.2 常见的接口测试工具
- 3.3 常见的接口数据组织形式
- 4 接口测试用例设计
- 4.1 用例设计方法
- 4.2 接口测试用例模板
- 5 HTTP协议基础
- 5.1 什么是HTTP协议
- 5.2 HTTP协议的工作原理
- 5.3 HTTP协议特性
- 5.4 与HTTPS协议的关系
- 5.5 HTTP请求消息结构(重点)
- 5.6 HTTP请求方法(重点)
- 5.7 HTTP响应的组成
- 5.8 HTTP响应头信息(了解)
- 5.10 HTTP响应状态码
- 6 Postman
- 6.1 Postman安装
- 6.2 Postman的应用
- 6.2.1 Postman发送请求
- 6.2.2 参数化运行
- 6.3 postman中的断言
- 6.3.1 postman提供的内置断言
- 6.3.2 使用断言
- 7 json
- 7.1 json定义
- 7.2 json的特点
- 8.3 json语法规则
- 7.4 json 文件
- 8 xml
- 8.1 什么是xml
- 8.2 xml用途
- 8.3 json VS xml(重点)
- 小结
1 接口测试概述
1.1 接口测试的定义
API (Application Program Interface)接口属于一种系统或程序的调用接口。
GUI(Graphic User Interface)接口属于一种图形界面的操作软件的系统。
尤其是APl,有些公司会制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式APl。
接口测试:测试系统内部各个组件间接口,以及系统与外部系统之间的交互点。
接口测试的主要内容:
检查数据的交换;
传递和控制管理过程;
系统间的相互逻辑依赖关系。
1.2 接口测试的范围和适用场合
接口测试的范围如下图:
接口测试的适用场合:
应用于多系统间交互开发;
适用于为其他系统提供服务的底层框架系统和中心服务系统;
适用于一个上次系统中的服务层接口。
总之,平台越复杂,系统越庞大,接口测试的效果越明显。
2 接口测试的必备条件
2.1 接口测试的要求
接口说明调用url;
请求方法(get/post);
请求参数、参数类型、请求参数说明返回参数说明。
2.2 标准和规范的接口文档
百度翻译API
2.3 如何获取接口信息
标准化的接口文档;
询问开发人员,获取预期结果,一般以预期结果为标准;
测试人员抓包获取数据和信息,得到的是实际运行的结果。
3 接口测试必须具备的知识
接口测试必须具备的知识有接口传输协议、接口测试工具和接口数据组织形式。
3.1 常见的接口传输协议
HTTP。超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
HTTPS 。HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
FTP。FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
JDBC。Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
3.2 常见的接口测试工具
谷歌浏览器。
火狐浏览器。
POSTMAN,只能用于http和https。
JMeter。
Fiddler,抓包工具。
3.3 常见的接口数据组织形式
html
json
String
xml
4 接口测试用例设计
接口测试用例设计与黑盒测试用例设计基本一致。
4.1 用例设计方法
等价类,边界值;因果图,判定表;正交试验法;场景法;错误猜测法;随机测试。
4.2 接口测试用例模板
5 HTTP协议基础
可以查看菜鸟教程,如下网站:
https://www.runoob.com/http/http-tutorial.html
5.1 什么是HTTP协议
HTTP协议是Hyper text Transfer Protocol(超文本传输协议)的缩写;
HTTP协议是从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传输协议;
HTTP是一个基于TCP/IP通信协议来传递数据(html文件,图片文件,音乐文件,视频文件,查询结果等)。
5.2 HTTP协议的工作原理
HTTP协议工作在客户端-服务端架构(C/S)上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
5.3 HTTP协议特性
HTTP是无连接。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP是媒体独立的。这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP协议通信流程,如下图:
5.4 与HTTPS协议的关系
超文本传输安全协议(Hypertext Transfer Protocol over Secure Socket Layer)是一种网络安全传输协议。HTTP协议传输的数据都是未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯,而HTTPS占用443端口通讯。
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS协议和HTTP协议的区别:
HTTPS协议需要到ca申请证书,一般免费证书很少,需要交费。
HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
HTTP的连接很简单,是无状态的 。
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议, 要比HTTP协议安全。
5.5 HTTP请求消息结构(重点)
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,请求报文的一般格式,如下图:
5.6 HTTP请求方法(重点)
HTTP1.0 定义了三种请求方法: GET、POST和HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
大多数情况下都是使用GET和POST方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
5.7 HTTP响应的组成
HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。具体格式如下图:
5.8 HTTP响应头信息(了解)
响应头 | 说明 |
---|---|
Allow | 服务器支持哪些请求方法(如GET、POST等)。 |
Content-Encoding | 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。 |
Content-Length | 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。 |
Content-Type | 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。 |
Date | 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 |
Expires | 应该在什么时候认为文档已经过期,从而不再缓存它? |
Last-Modified | 文档的最后改动时间。 |
Location | 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。 |
Refresh | 表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader(“Refresh”, “5; URL=http://host/path”)让浏览器读取指定的页面 |
Server | 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。 |
Set-Cookie | 设置和页面关联的Cookie。 |
WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息。在包含401(Unauthorized)状态行的应答中这个头是必需的。 |
5.10 HTTP响应状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。
下面是常见的 HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。
分类 | 描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
6 Postman
Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果,从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。
6.1 Postman安装
下方为Postman官方网站
https://www.postman.com/
6.2 Postman的应用
6.2.1 Postman发送请求
(1)不带参数的get请求
第一,打开Postman.
第二,创建一个Collection,名为demo,用于保存所有接口请求,如下图:
第三,创建一个请求,请求方法为get类型,请求的url为:,如下图:
第四,点击【Send】按钮,发送请求,如下图:
第五,在Rsopnse区域,分析服务器返回的信息,如下图:
Body区域:显示服务器返回的信息的主体。
Cookies区域:服务器返回的所有cookie值。(用于验证客户端和服务端的身份信息)
Headers区域:服务器返回的响应头部信息。
Test Results:断言。判断服务器返回的响应信息和预期结果是否一致。(重点)
响应的其他信息。Satus(状态码)、Time(响应时间)、Size(响应信息的大小)
第六,请求案例内容保存。(Ctrl + S)
第七,分析接口的响应结果时,高清楚每一个返回值是什么,及其取值范围。
(2)带参数的get请求
以百度翻译API为例子,API文档说明,下述链接:
https://api.fanyi.baidu.com/api/trans/product/apidoc#languageList
第一,打开Postman。
第二,创建一个Collection,用于保存所有接口请求,如下图:
第三,创建一个请求,请求方法为get类型,请求url为http://api.fanyi.baidu.com/api/trans/vip/translate
,如下图:
第四,添加参数,在请求区的Params里面添加参数:输入参数名及参数的值。如果有多个参数,依次输入,如下图:
第五,点击【Send】按钮,发送请求,如下图:
第六,在Response区域,分析服务器返回的信息,如下图:
Body区域:显示服务器返回的信息的主体。
Cookies区域:服务器返回的所有cookie值。(用于验证客户端和服务端的身份信息)
Headers区域:服务器返回的响应头部信息。
Test Results:断言。判断服务器返回的响应信息和预期结果是否一致。(重点)
响应的其他信息。Satus(状态码)、Time(响应时间)、Size(响应信息的大小)
第七,请求案例内容保存。(Ctrl + S)
第八,分析接口的响应结果时,搞清楚每一个返回值是什么,及其取值范围。
输出参数
返回结果是json格式,包含以下字段:
翻译源语言为英语,译文语言为中文,返回翻译结果,包含src和dst字段。原文为bass,译文为低音的。
(3)带参数的post请求
以QQ注册网页为例子
第一,在Chrome浏览器获取接口地址和参数信息。
接口地址,如下图:
参数信息,如下图:
第二,在Postman中设定参数,post形式,Bady下的form-data下设定参数,如下图:
6.2.2 参数化运行
什么是参数化?
使用变量代替常量的方式。
(1)设置参数
Postman中支持text文件和csv文件设计参数文件
例子:百度翻译API
将翻译的内容和签名写在csv文件中,如下图:
在postman中新建collection,输入url和参数,如下图:
(2)集合运行
新建runner,选中文件,输入迭代次数15,文件123.csv,保存响应和参数变化,点击运行,如下图:
6.3 postman中的断言
自动化测试关键的两个点,一是参数化,二是断言。
6.3.1 postman提供的内置断言
在postman中,test模块是对HTTP的响应结果进行判断的地方,如下图:
6.3.2 使用断言
断言就是在脚本之中的。
自动化测试的工具共性:都有设置参数化的模块;都有设置断言的模块;都能够处理一些脚本语言。
postman中脚本支持的语言:Javascript。(包含一个非常强大的Node.js)
postman中脚本应用的场合:
断言(test模块)。在接收到HTTP的响应后进行处理和运行。
预处理信息(pre-request script)。在HTTP请求发送之前进行数据的处理和运行,可以配合参数化进行。
控制请求的运行。跳转某一个请求,或者循环执行某一个请求。
脚本执行顺序:预处理信息→控制请求的运行→断言
例子:百度翻译API
第一添加测试的网址和参数,如下图:
第二,添加断言,状态码为200,响应时间少于500ms,如下图:
最后,点击【Send】按钮运行,查看结果,如下图:
插入一个json结果判断的断言。返回值是一个组合的(多个等级)字典行数据。
例子:百度翻译API测试后的结果如下代码:
{"from": "en","to": "zh","trans_result": [{"src": "bass","dst": "低音的"}]
}
分析上述代码:有个最外层的对象,对象里有3组键值对,第3组的值是一个列表,该列表里面有一个对象,该对象里有两组键值对。
要求:对上述json结果做断言
代码如下:
pm.test("翻译的源文语言", function () {var jsonData = pm.response.json();pm.expect(jsonData.from).to.eql("en");
});pm.test("翻译后的语言", function () {var jsonData = pm.response.json();pm.expect(jsonData.to).to.eql("zh");
});pm.test("需要翻译的单词", function () {var jsonData = pm.response.json();pm.expect(jsonData.trans_result[0].src).to.eql("bass");
});pm.test("该单词的中文意思", function () {var jsonData = pm.response.json();pm.expect(jsonData.trans_result[0].dst).to.eql("低音的");
});
点击【Send】按钮,运行结果如下图:
7 json
json:JavaScript Object Notation(JavaScript 对象表示法)
json是存储和交换文本信息的语法,类似 XML。
json比xml更小、更快,更易解析。
7.1 json定义
json指的是JavaScript对象表示法(JavaScript Object Notation)。
json是轻量级的文本数据交换格式。
json独立于语言。
json具有自我描述性,更易理解。
json使用JavaScript语法来描述数据对象,但是json仍然独立于语言和平台。
json捷信起和json库支持许多不同的编程语言。
7.2 json的特点
json是纯文本的。
json具有“自我描述性”(一看就看懂)。
json具有层级结构。
json可通过JavaScript进行解析。
8.3 json语法规则
JSON 语法是 JavaScript 语法的子集。
数据在名称/值对中。
数据由逗号分隔。
大括号 {}
保存对象。
中括号 []
保存数组,数组可以包含多个对象。
JSON 对象在大括号 {}
中书写:
{key1 : value1, key2 : value2, ... keyN : valueN }
例如:
{"sites": [{ "name":"百度" , "url":"www.百度.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" }]
}
这个sites对象是包含3个对象的数组。
7.4 json 文件
JSON 文件的文件类型是 .json
JSON 文本的 MIME 类型是 application/json
8 xml
XML 被设计用来传输和存储数据。
8.1 什么是xml
XML 指可扩展标记语言(EXtensible Markup Language)。
XML 是一种很像HTML的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
xml例子:
<sites><site><name>百度</name> <url>www.百度.com</url></site><site><name>google</name> <url>www.google.com</url></site><site><name>微博</name> <url>www.weibo.com</url></site>
</sites>
8.2 xml用途
xml把数据从html分离。
XML 简化数据共享。
XML 简化数据传输。
XML 简化平台变更。
8.3 json VS xml(重点)
JSON 与 XML 的相同之处:
JSON 和 XML 数据都是 “自我描述” ,都易于理解。
JSON 和 XML 数据都是有层次的结构。
JSON 和 XML 数据可以被大多数编程语言使用。
JSON 与 XML 的不同之处:
JSON 不需要结束标签。
JSON 更加简短。
JSON 读写速度更快。
JSON 可以使用数组。
最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。
小结
接口测试:测试系统内部各个组件间接口,以及系统与外部系统之间的交互点。
接口测试的要求:
接口说明调用url;
请求方法(get/post);
请求参数、参数类型、请求参数说明返回参数说明。
常见的接口传输协议:HTTP、HTTPS、FTP和JDBC。
常见的接口测试工具:谷歌浏览器、火狐浏览器、POSTMAN、JMeter和Fiddler抓包工具。
常见的接口数据组织形式:html、json、string和xml。
HTTP是一个基于TCP/IP通信协议来传递数据(html文件,图片文件,音乐文件,视频文件,查询结果等)。
HTTP是无连接、媒体独立的和无状态。
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTP的端口号为80,HTTPS端口号为443。
HTTP请求消息结构请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP请求方式主要是get和post。get请求指定的页面信息,并返回实体主体。post向指定资源提交数据进行处理请求。
HTTP响应由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果,从而验证响应中的结果数据是否和预期值相匹配。
postman断言在test模块中添加,test模块的右侧有现成的方法,可直接点击使用,或修改参数值使用。
软件测试 接口测试 接口测试的必备条件 接口测试用例设计 HTTP协议基础 Postman相关推荐
- 【理论了解】接口测试简介以及接口测试用例设计思路
接口测试简介 1.什么是接口 接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,就好比usb接口,他是系统向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是 ...
- 软件测试接口测试用例设计
接口测试用例设计 随着测试分析和分层测试的深化,"接口测试"出现在我们视野的频次越来越高.那么接口测的用例设计常用哪些方法呢?本文将详细描述. 接口测试 1.1 接口测试 接口: ...
- 全网最详细软件测试接口测试用例设计-怎么编写-模板(最详全)
目录:导读 一.前言 1.接口测试 2.接口测试发现的典型问题 二.接口测试用例设计 1.针对输入设计 1.1.数值型 1.2.字符串型 1.3.数组或链表类型 三.针对逻辑设计 1.约束条件分析 2 ...
- 软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!
软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!为什么这么说呢?是因为你们的思路有着天壤之别,来看吧: 相信不少朋友在笔试的时候都遇到过测试用例设计的笔试题.通常是一个登陆页面,上面有用户名,密 ...
- 软件测试之接口测试用例设计,全网独一份
1.接口测试用例设计简介 我们对系统的需求分析完成之后,即可设计对应的接口测试用例,然后用接口测试用例进行接口测试.接口测试用例的设计也需要用到黑盒测试方法,其与功能测试用例设计的方法类似,接口测试用 ...
- 接口测试用例设计的一点总结
背景 最近项目中也一直在推动接口测试,中途也遇到很多的问题:从最开始的接口文档管理,接口测试框架的选型,到后续接口测试用例的维护问题.最近在想接口测试的一个覆盖度问题.谈到覆盖度,又得回到接口测试的用 ...
- (转)接口测试用例设计
随着测试分析和分层测试的深化,"接口测试"出现在我们视野的频次越来越高.那么接口测的用例设计常用哪些方法呢?本文将详细描述. 1 接口测试 1.1 接口测试 接口:主要是子模块 ...
- 【转】接口测试用例设计
文章图片参考源地址: http://url.cn/5ZM37wg 随着测试分析和分层测试的深化,"接口测试"出现在我们视野的频次越来越高.那么接口测的用例设计常用哪些方法呢?本文将 ...
- (转)【腾讯 TMQ】 接口测试用例设计
导语 这是我在其他的开源社区看到的一篇分享帖子.这篇文章的目的只是为大家提供一个思路,但是实现成本太高了,因为一个接口设计的接口测试用例很多,一般公司的接口数量几百到上千不等,每一个接口都设计这么多测 ...
最新文章
- 【 MATLAB 】【 MATLAB 】DFT的性质讨论(三)序列的循环卷积及其 MATLAB 实现
- kettle中的switch_Kettle学习笔记(二)— 基本操作
- python自学网站 知乎-如何自学Python拿到25K的薪资?非常感谢这11个站点!
- caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
- openssl https 单向认证连接成功示例
- 22:00直播|当加班男程序猿 被美女主播~ 捕到后...
- PHP高性能输出UNICODE正则汉字列表 汉字转拼音多音字解决方案 搜索引擎分词细胞词库更新 搜狗词库提取TXT...
- idea 配置jdk版本_JDK 11 安装过程(同时已安装了JDK 8)以及Intellij IDEA 配置
- C# DateTime ToString
- c语言输入不定数量字符串并排序,请教多个字符串排序(不用数组)
- 良好的开端是成功的第一步———构建程序
- Python 快速入门,你想要的就在这里了!
- 《Tensorflow 实战》(完整版,附源码)
- BZOJ5074 小B的数字
- 【劲峰论道时空分析技术-学习笔记】4 如何度量时空变化
- 初探单点登录 SSO
- 微理财与玖富小金票接口对接项目文档
- html onclick点击事件失效,HTML onfocus,onclick事件不起作用
- echarts柱形图根据数据排序顺序要求更改颜色
- Video Caption Tutorial