0


接口测试+postman

能够分析HTTP协议的请求和响应数据,完成指定接口的API文档解析

1. 接口测试理论

接口:系统之间(外部系统与内部系统,内部系统与内部系统)数据交换的通道

接口测试:校验接口回发的响应数据与预期结果是否一致。

接口测试,可以绕过前端页面, 直接对服务器进行测试!

价值:

  • 1)可以发现页面测试发现不了的问题
  • 2)符合质量控制前移理念

实现方式:

工具:

1)postman: 使用简单,上手难度低,功能较少。

2)jmeter:使用难度较大。 上手难度大,功能齐全

代码:

1)python+requests+unittest

2)java+httpclient

2. HTTP协议

超文本传输协议

  • URL:协议://hostname[:port]/path/[?查询参数1&查询参数2]

3. HTTP请求

产生端:客户端,当客户端给服务器发送请求时,使用该协议。

格式:

  • 请求行: 请求方法、URL、协议版本
  • 请求头: k:v
  • 空行 代表请求头结束
  • 请求体:发送给服务器请求时携带的数据

示例:

POST http://demo.zentao.net/user-login.html HTTP/1.1
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1

account=demo&password=efc4a3b32e48054865e5a8321cfda3e4

Content-Type: 指定请求体的数据类型:

  • application/json: 请求体数据类型为json
  • applicaiton/x-www-form-urlencoded: 请求体的数据类型为 表单类型

4. HTTP响应

产生于服务端,当服务端接收到http请求协议之后,发出http响应协议。

格式:

  • 响应行:协议版本、状态码、状态码描述
  • 响应头:k:v
  • 空行:代表响应头结束
  • 响应体:服务端回发给客户端的数据

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
<head></head>
<body>...</body>
</html>

状态码:

1xx 指示信息 2xx成功 3xx 重定向 4xx 客户端错误 5xx 服务端错误

5. 接口测试的流程

  1. 需求分析(产品经理的需求文档)
  2. 接口文档解析(开发编写的接口api文档)
  3. 设计接口测试用例(excel表格形式)
  4. 准备接口测试脚本
  5. 执行测试用例,跟踪缺陷
  6. 生成接口测试报告
  7. 接口自动化持续集成

6. 接口文档解析

也叫API文档,一般由后端开发工程师编写。 用来描述接口信息的文档。

解析的核心目标:

  1. 请求报文关键数据:请求方法、URL、请求数据(请求头、请求体)
  2. 响应报文关键数据:响应状态码、响应体

7. postman基础使用

是一款支持调试和测试的工具,开发、测试工程师都可以使用

功能测试:

1)单接口功能测试:

一个单独的业务,对应一个独立的接口,比如:登录业务对应登录接口

2)业务场景功能测试:

多个接口被连续调用 (模拟用户的实际使用场景)

单接口测试:

正向:

1)必选参数。所有必选项,给正确数据

2)组合参数。所有必选+任意可选,给正确数据

3)全部参数。所有必选+所有可选,给正确数据

反向:

1)功能异常

2)数据异常(空、类型不符、长度不符)

3)参数异常(多参、少参、无参、错误参数)

测试点:

登录:

8. postman 断言

让postman工具代替人工自动判断,预期结果和实际结果是否一致

断言代码书写在 Tests标签页中,查看断言结果在 Test Results 标签页

1)断言响应状态码

status code: code is 200

pm.test("status code is 200",function(){
    pm.response.to.have.status(200);  //响应结果中应该有响应状态码 200.
});

pm: postman的实例

test() postman实例的测试方法。参数1是在断言结束后显示给用户,可以随意修改,参数2是一个匿名函数调用

2)断言包含某字符串

Response body: Contains string

pm.test("Body matches string",function(){
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});//期望响应文本中,包含你想要搜索的字符串

3)断言json数据

Response body:JSON value Check

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
}); //期望json结果中指定key的数值为xx

postman断言的工作原理

9. postman关联

当接口和接口之间,有依赖关系时,需要借助postman关联技术来实现。

例如:登录接口返回的令牌数据,被添加员工接口依赖。

实现步骤:

核心代码:

//1.获取响应数据,转为json格式,保存在变量jsonData中

var jsonData = pm.response.json()

//2.1 使用全局变量做容器

pm.globals.set("全局变量名",全局变量值)

//2.2 使用环境变量做容器

pm.environment.set("环境变量名",环境变量值)

//3.在postman页面中 (URL\请求头headers\请求体body)提取全局、环境变量数据。

{{全局变量名}}/{{环境变量名}}

创建环境:

全局变量:在整个postman中都可以使用的变量,不需要单独创建测试环境;

环境变量:在特定的环境下,才能使用的变量。需要给此变量创建单独的环境。

案例1:

  1. 使用postman 关联,实现下面的案例:

从获取天气接口,https://weather.cma.cn/api/now/54398

获取返回结果中的城市名称

调用百度搜索:“ http://www.baidu.com/S?wd=顺义 ”,把获取到的城市名称,如:顺义,作为请求参数

var jsonData = pm.response.json()
var city = jsonData.data.location.name

pm.globals.set("w_city",city)

案例2:

使用环境变量

var jsonData = pm.response.json()
var city2 = jsonData.data.location.path

pm.environment.set("w_city2",city2)

10. postman参数化

将测试数据,组织到数据文件中,通过脚本的反复迭代,使用不同的数据, 达到测试不同用例的目的。

应用场景:测试同一个接口的不同测试点时,只有测试数据不同,考虑用参数化

  1. csv:数据量大, 数据格式简单
  2. json:数据量较少,数据组织格式复杂

案例:

需求:批量查询 手机号 所属运营商,校验运营商数据正确性

接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678

读取数据文件

1.请求参数(请求行/请求头/请求体)

csv: {{字段名}} json:{{键名}}

  1. 代码(Tests)中,使用数据文件中的数据

使用postman中内置的关键字data,索引字段名或键名

csv:data.字段名; json:data.键名

json格式:

json.cn 网址可以检测json格式数据。

[
    {"mobile":"13012345678","sp":"移动"},
    {"mobile":"13712345678","sp":"联通"},
    {"mobile":"18912345678","sp":"电信"}
]

使用方式和csv一致。

11. postman的测试报告

1)安装node.js

使用npm -v 测试是否安装成功

2)安装 newman

npm install -g newman

使用 newman -v 测试是否安装成功

3)安装newman插件

npm install -g newman-reporter-htmlextra

使用newman生成报告

newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporter-htmlextra-export 测试报告名.html

-e 和 -d不是必须的,如果没有使用环境,不需要指定 -e,如果没有数据文件不需要指定-d

标签: postman 测试工具

本文转载自: https://blog.csdn.net/qq_34741790/article/details/137006164
版权归原作者 测试晓菲 所有, 如有侵权,请联系我们删除。

“接口测试+postman”的评论:

还没有评论