接口测试的概述(详细讲解接口测试)

接口测试【接口:系统与系统之间,组件与组件之间,数据传递交互的通道】

一、简介

1.1接口概念:指的是系统或组件之间的交互点,通过这些交互点可以实现数据的交互;可分为硬件接口和软件接口;

服务器开了个口,客户端发送请求

1.2接口的类型:

①按协议划分:http、tcp、ip②按语言划分:C 、java、php

③按范围划分,系统之间的接口和程序内部的接口

系统之间的接口:多个内部系统之间的交互【用户系统、订单系统、商品系统】,内部系统与外部系统【支付系统】之间的交互

程序内部的接口:方法与方法之间,函数与函数之间【传入不同的数据,输出不同的值,叫接口函数】,模块与模块之间的交互

1.3接口测试的概念

接口测试:对系统或组件之间的接口进行测试,校验传递的数据正确性和逻辑依赖关系(淘宝先登录才能看订单,即使复制了订单的网页,但是未登录,复制的订单网页打开还是跳转登录界面。)的正确性。【校验数据的交换、传递和控制管理的过程,以及相互逻辑依赖关系。】

1.4接口测试原理【接口测试主要测试目标:服务器,功能测试:测试客户端】

1>怎么测?模拟客户端,向服务器发送请求

2>用什么测?工具:Fiddler、postman、jmeter;代码:python UnitTest框架 Requests框架

3>测试什么?测试服务器针对客户端请求,回应的响应数据是否与预期结果一致

1.5特点

①测试可以提前介入,提早发现bug,符合质量控制前移的理念

②可以发现一些页面操作发现不了的问题

③接口测试低成本高效益(底层的一个bug能够引发上层8个左右bug,接口测试可以实现自动化)

④不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检查

1.6实现方式

工具:fiddler、postman、jmeter;代码:python Unittest框架 requests框架

1.7自动化接口测试

接口自动化测试:借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断 预期结果和实际结果是否一致。【是让程序或工具代替人工自动地完成对接口进行测试的一种过程】

二、HTTP协议

(超文本传输协议,基于请求与响应模式的,应用层协议,也是互联网上应用最为广泛的一种协议)【端口是用来找到应用】

2.1 协议:就是规则。要求通信的双方必须严格遵守。

2.2 特点

①支持客户端/服务器模式 ②简单快速 ③灵活 ④无连接 ⑤无状态

2.3 URL(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。

作用:在网络环境中,唯一的定义一个数据资源

2.4 URL语法格式(组成)【http:80;https:443】

http[协议] :// xxxxx[域名] : xxxx[端口:0~65535] / xxxxxx[资源路径] ? xx[k=value]&xx&x[查询参数]

协议:规定数据传输的方式

域名:在网络环境中找到主机 用://与协议分隔

端口(port)【常省略】:在网络主机上,标识一个进程(运行起来的应用程序) 本地主机用PID标识 用 :与域名分隔

资源路径:标识网络资源(文件、图片、音视频、变量.....) 用/与端口分隔

查询参数:参数传递给资源路径 用?与资源路径分隔,内部用&分隔

【当资源路径没有时,可以认为是“/”】

2.5 HTTP请求【请求包;请求报文】

1>作用:

客户端(app、浏览器),发送请求给服务器时,使用的协议--http请求协议

规定发送给服务器的数据传输的语法格式

2>整体格式

第一行:请求行:请求方法(空格)url(空格)协议版本

第二行:请求头:语法格式 【格式:key:value】

user-agent:描述发送端的本地浏览器类型

Content-Type:xxxx(描述请求体的数据类型)通常碰到form(表单类型)和json类型

空行:代表http请求头结束,请求体开始

请求体:请求发送时携带的数据。 数据类型(Content-Type)的值【post、put(相当于修改)有请求体,get、delete没有请求体】

3>fiddler抓包验证

先清空fiddler--访问网站--点开(一般第一条)请求--点击【raw】

4>请求行

http请求方法(大小写无所谓)【对应数据库增删改查】

GET:查询

POST:添加(常用在登录)

PUT:修改

DELETE:删除

5>请求头

语法格式:k:v

user-agent:产生请求浏览器类型

Content-Type:请求体数据类型

application/JSON:JSON数据格式(k:v)

application/x-www-form-urlencoded:form表单数据

6>请求体

数据值的组织形式,受Content-Type的值影响

k=v格式

get、delete方法没有请求体

post、put方法有请求体

接口测试的概述(详细讲解接口测试)(1)

2.6 HTTP响应

1>作用:服务器端,针对客户端发送的http请求,回发响应数据。 --http应答

规定回发给客户端的数据组织格式

2>整体格式【响应包;响应报文】

响应行(状态行):协议版本(空格)状态码(空格)状态描述【状态码和状态描述捆绑,状态码对应状态描述】

响应头:语法格式:k:v

Content-Type:描述响应体中数据类型

空行:代表响应头结束

响应体:绝大多数情况不为空(请求成功:回发数据,失败:回发错误数据)

数据类型受Content-Type值影响

3>状态码【有三位数字组成,第一个数字定义响应的类别】

1xx:指示信息--表示请求已接收,等待继续处理

**2xx:成功--表示请求已被成功接收、理解、接受:eg:200、201

3xx:重定向--待访问的资源,需求重新指定路径访问。【要完成请求必须进行更进一步的操作】

**4xx:客户端错误--请求有语法错误或请求无法实现 eg:404【请求文件不存在】/403【请求文件存在但拒绝被访问,也就是说没有权限访问】

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

4>状态码描述

一般与状态码唯一对应

5>响应头

语法格式:k:v

Content-Type:值为响应体的数据类型

Content-Length:响应体的大小【可不写,浏览器自动求取,一旦写,必须准确】

6>响应体(测试中的实际结果,预期结果从接口文档中来)

就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码

接口测试的概述(详细讲解接口测试)(2)

三、接口测试风格

1>传统风格

对用户进行操作的相关接口,包括增删改查

操作

请求方式

URL

成功状态

查询某个用户

GET/POST

http://127.0.0.1:8080/myweb/user/getUser?id=1

http://127.0.0.1:8080/myweb/user/getById?id=1

http://127.0.0.1:8080/myweb/getUserById?id=1

200

查询所有用户

GET/POST

http://127.0.0.1:8080/myweb/user/getUserList

http://127.0.0.1:8080/myweb/user/getUsers

200

添加用户

POST

http://127.0.0.1:8080/myweb/user/addUser

200

修改用户

POST

http://127.0.0.1:8080/myweb/user/updateUser

200

删除用户

GET/POST

http://127.0.0.1:8080/myweb/user/deleteUser?id=1

200

特点:

请求方法,只使用get和post即可

URL不唯一,不重复。同一个操作可以对应不同的URL

状态码的使用较单一。200最常见

2>RESTful风格接口【一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件】

REST:即(Representational State Transfer)的缩写,词组翻译是“表现层状态转化”【同一URL,对应的方法不同,对应的操作也不同】,如果一个架构符合REST原则,就称它为RESTful架构。

操作

请求方式

URL

成功状态

查询某个用户

GET

http://127.0.0.1:8080/myweb/users/1

200

查询所有用户

GET

http://127.0.0.1:8080/myweb/users

200

添加用户

POST

http://127.0.0.1:8080/myweb/users

201

修改用户

PUT

http://127.0.0.1:8080/myweb/users/1

201

删除用户

DELETE

http://127.0.0.1:8080/myweb/users/1

204

架构特点:

1.每一个URL代表一种资源;

2.客户端和服务器之间,传递这种资源的某种表现层;

3.客户端通过四个HTTP动词,对服务器端资源进行操作,实现“表现层状态转换”(数据的不同表现形式,图像、文字表现同一个数据对象)

4.接口之间传递的数据最常用格式为json。

四、接口测试流程
  1. 需求分析:主要依据需求文档(产品)
  2. 接口文档解析:一般是由开发人员编写的接口文档(API文档)
  3. 设计接口测试用例(根据接口文档产生用例,送审)
  4. 执行测试用例:使用接口测试工具实现(postman、jmeter);通过编写代码实现(python requests unittest)
  5. 接口缺陷的管理和跟踪
  6. 生成测试报告
  7. 接口自动化持续集成(可选)
五、接口文档的作用和展现形式

5.1接口文档

1>接口文档:又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。大家都根据这个接口文档进行开发,并需要一直维护和遵守。

2>作用

1.能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)

2.项目选代或者项目人员更迭时,方便后期人员查看和维护

3.方便测试人员进行接口测试

  1. 展现形式

【错误码:不是错误,与http状态码区分开,其实是状态码,描述状态】

形式:word文档形式、Excel表格式形式、pdf文档

  1. 结构

基本信息:

Path:对应url里的资源路径(url前面的协议等在接口文档的系统信息里呈现)

Method:PUT/POST/DELETE/GET

接口描述:。。。。。

请求参数:

Headers(请求头):数据类型(k【Content-Type】:v【application/json】)

Body(请求体):实现该接口使用的数据以及对应类型。

返回数据(预期结果):成功和失败的状态码

状态码:200 成功:状态码200

错误码(自定义状态码):码值和描述信息 失败:错误码(自定义状态码)

5.2接口文档解析

接口文档的解析本质:从接口文档中,找出http请求所需要的数据信息,包括:

请求方法、URL【行里两个】、请求头(k:v)【Content-Type类型】、请求体【数据:数据类型的名字和类型】(行头体)、响应状态码、描述。

Eg:

请求体:{“数据类型的名字,建议复制文档里的不要用手敲”:“数据值,文档中不知道,可找开发要”}

Fiddler:

接口测试的概述(详细讲解接口测试)(3)

接口测试的概述(详细讲解接口测试)(4)

K:v是json类型数据

Raw项:方法、url、请求头、请求体

接口用例设计

6.1为什么要写

1.防止测试点漏测、条理清晰

2.方便分配工作,评估工作量和时间

3.面试使用

6.2接口测试的测试点(测试维度)

接口测试的概述(详细讲解接口测试)(5)

6.3功能测试

  1. 单接口功能

手工测试中的单个业务模块,一般对应一个接口。

Eg: 登录业务-->登录接口

加入购物车业务-->加入购物车接口

支付业务-->支付接口

.........

借助工具、代码,绕开前端界面,组织接口所需要的数据,展开接口测试。

  1. 业务场景功能

按照用户实际使用场景,梳理接口业务场景。

组织业务场景时,一般只需要做正向测试即可。(与手工一致)

一般建议用最少的用例覆盖最多的业务场景。

Eg:登录---搜索商品---加购物车---下单---支付---评价

6.4性能测试

1>响应时长:发送请求,服务器多久回发响应

2>吞吐量:当前的接口处理用户的请求事物数量

3>并发数:多个用户同时向接口发请求,比如淘宝秒杀

4>服务器资源利用率:CPU、内存、显卡、网络I/O、磁盘I/O

6.5浏览器开发者工具

浏览器的开发者工具:F12或右键检查打开--->Network--->一定要选择ALL--->关于登录,可以在网站界面输入好数据,点击登录按钮--->查看

点击Name下数据--->do_login(与登录按钮对应):

Headers【相当于HTTP响应,组织形式不一样,但是数据该有的都有】:

General:表示总则;包括请求URL、请求方法、状态码(Status Code)、IP地址和端口号(Remote Address)

Response Headers:表示响应头;数据以k:v形式组织

Request Headers:表示请求头;对应HTTP请求头里的信息;数据类型依然k:v形式

Query String Parameters:表示查询字符串参数,对应url后部分的查询参数

Form Data:表单数据;比如登录界面,这部分是登录界面输入的数据

Payload:有一个view source,是请求体的数据,可以直接复制json数据

Response【查看服务器响应返回的结果】

6.6安全测试

1>攻击安全:由专业安全测试工程师完成;

2>业务安全

①敏感数据是否加密:比如密码

②SQL注入:

接口测试的概述(详细讲解接口测试)(6)

接口测试的概述(详细讲解接口测试)(7)

输入用户名为:‘ or 1=1#,提示用户名格式错误,表示没有SQL注入的漏洞

③其他

6.7与手工测试区别

1>手工测试测写入到输入框中的数据是否正确。接口测试测参数对应的参数值是否正确,相当于k:v。

2>接口测试不单单针对参数值进行测试,还可以针对参数本身进行测试。比如测username本身,用uname:正确的用户名去测试,看看能否通过。

接口测试的概述(详细讲解接口测试)(8)

对于参数测:

①正向参数:

必选参数:所有的必填项都包含。

组合参数:所有的必填 任意一个或多个可选参数

全部参数:所有的必填 所有的可选参数

②反向参数:

多参:多出一个或多个必选参数(可以任意指定)

少参:缺少一个或者多个必选参数

无参:没有必选参数

错误参数:参数名输入错误

6.8接口测试文档要素

编号、用例名称(标题)、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果

URL列:写完整URL或者写{协议 域名}/文档里的path内容【path写明确,协议和域名可写成文字,以防后期协议和域名修改,就不用大篇幅修改】

登录界面
  1. 操作成功不代表登录成功,只能说http请求已经被服务端处理了。会出现状态码
  2. 预期结果包括状态码和描述信息;data数据包括当前用户登录的身份,下次只要核对data的值,登录成功会产生令牌(token,隔段时间会变)数据(data的值)表明用户已经登录进去了

接口测试的概述(详细讲解接口测试)(9)

接口测试的概述(详细讲解接口测试)(10)

登录里的用户名未注册就是不存在

接口测试的概述(详细讲解接口测试)(11)

3>数值部分和手工测试一样,参数是接口特有的。

接口测试的概述(详细讲解接口测试)(12)

用户名和密码为空不能想当然认为都是用户名或密码错误,要去实践。

登录的信息都是去数据库中比对,如果特殊字符等在数据库中不允许出现,就不用做此类反向测试。要在数据库中组织出不符合的数据,测开发在接收数据的时候,不能依托数据库,而是依托开发的代码有没有校验出来,不符合规范的手机号是否能登录成功。

总结:在接口测试用例中,对于k:v,考虑k的正反向,v保证正确;考虑v的正反向,k保证正确。

业务场景功能

8.1分析测试点

Eg:针对“员工管理”业务场景:登录---添加员工---查询员工(看看是否添加成功)---修改员工---再次查询(看看修改成功)---删除员工---查询员工(看看是否删除)【相当于把多个模块接口串起来,用最少的用例尽可能的覆盖所有接口】

8.2添加用户【测校验的情况:正确、错误、重复】

请求方法:post

URL:

请求头:

请求体:

返回数据:

8.3查询员工【测校验的情况:正确、空值、错误值】

接口测试的概述(详细讲解接口测试)(13)

8.4修改员工

8.5删除员工

POSTMAN
  1. 官网下载postman:https://app.getpostman.com/app/download/win64
  2. 下载node.js:https://nodejs.org/zh-cn/download/,为了安装newman
  3. 安装newman:npm install -g newman
  4. 为newman安装newman-reporter-html【newman是postman插件,newman-reporter-html是newman的插件】,安装命令:npm install -g newman-reporter-html

9.1开发者工具

Headers:请求方法、request URL、request headers中的content-type【代表数据类型,后面的utf可以不管】、Form data【请求体,k:v对】

Preview:返回数据中看不懂的字符,在preview里能找到

Response:看返回数据【汉字的转码在preview里】

9.2Postman使用

Postman:

Headers:填写content-type的k:v值

Body:下拉框选项选择content-type中的v项,然后填入请求体中的k:v对,是json就选择raw【原始】

Send完看响应数据,在body下,选择pretty,把html改成json,就可以看到返回的结果了

结果:

接口测试的概述(详细讲解接口测试)(14)

阶段目标划分

接口测试的概述(详细讲解接口测试)(15)

接口测试的概述(详细讲解接口测试)(16)

Postman管理测试用例collections
  1. 创建collections
  2. Add request:创建用例,添加请求

点击sava或ctrl s,小红点就没有了

  1. Add folder:创建子目录
用例集导出、导入
  1. export:导出,在用例集名称右侧的三点中,一般默认选项导出
  2. 文件名后缀不可改,文件名不建议修改,只有第一段文字可修改,接口集成时,不可以用中文命名
  3. Import:导入,file->upload files->选文件位置
Postman断言
  1. 断言:让程序判断预期结果与实际结果是否一致。
  2. 特点:postman断言是使用JavaScript语言编写的,写在Tests标签页里【对应框上面有Tests选项】
  3. postman常用断言【在<中选择对应的就可以,代码自动生成】

总体步骤:

  • 在Tests标签中,选择断言方法适当调整test()方法参数1,和匿名函数中的预期结果点击send按钮,发送请求,执行断言代码。查看断言结果

**3.1断言响应状态码

选择:Status code:code is 200

详情:pm.test("Status code is 200", function () {

pm.response.to.have.status(200);

});

解释:

pm:代表postman的一个实例【类下面的一个对象】

test():是pm实例的一个方法。有两个参数

参数1:在断言成功后,给出的文字提示,可以修改。"Status code is 200"

参数2:匿名函数,function () {pm.response.to.have.status(200);}

function代表函数,后面应该放函数名,但是没有,所以是匿名函数;

response代表响应体,to.have应该有

整句话表示:postman的响应结果中应该包含状态码200

200是预期结果

断言的结果在Tests项下Test Results,看到PASS和Status code is 200【对应断言成功后的描述】

3.2断言响应体是否包含某个字符串

选择:Response body:Contains string

详情:pm.test("Body matches string", function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

解释:预期结果用返回体内的value值,推荐用message的value

3.3断言响应体是否等于某个字符串(对象)【json花括号括起来是对象,中括号括起来是数组】

选择:Response body:Is equal to a string

详情:pm.test("Body is correct", function () {

pm.response.to.have.body("response_body_string");

});

解释:通常data对应令牌数据会不停地改变,这个字符串是对返回的全部字符串进行判断,一旦有数据不停变化时,断言不通过。

**3.4断言JSON数据

选择:Response body:JSON value check

详情:pm.test("Your test name", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.value).to.eql(100);

});

解释:

var jsonData = pm.response.json(); var jsonData用js语法定义一个变量;jsonData是变量名;pm.response.json()代表响应的json结果,就是响应的数据

pm.expect(jsonData.value).to.eql(100); 预期json结果值等于100相同,value对应响应体中的key

3.5断言相应头【返回的Headers里】

选择:Response headers:Content-Type header check

详情:pm.test("Content-Type is present", function () {

pm.response.to.have.header("Content-Type");

});

解释:响应头中包含Content-Type;可以判定k:v是否正确,断言响应头所对应的value,直接(k,v)

示例:pm.test("Content-Type is present", function () {

pm.response.to.have.header("Content-Type","application/json");

});【在响应的headers中,添加响应头中的key对应的value判定,用,分隔】

Postman断言工作原理

接口测试的概述(详细讲解接口测试)(17)

全局变量和环境变量

15.1概念

全局变量:全局变量是全局唯一的,不可重复定义的变量

环境变量:一个变量只能属于某个环境,在某一个环境中变量不可重复定义;在环境与环境之间可以定义重复的变量;一个环境可以包含多个环境变量;常见环境分类:开发环境、测试环境、生产环境【一个项目生产部署上线】

15.2设置变量

全局变量:

  • 手动设置代码设置:pm.globals.set(“var_name”,value);【变量名必须要双引号】

环境变量:

  1. 手动设置
  2. 代码设置:pm.environment.set(“var_name”,value);

15.3获取变量【请求参数是从params、headers、url中拿出来的,只要从界面中获取的[相当于从两个请求的postman界面中获取的];请求参数只能用在请求参数中,不可以用在代码区域{tests、请求前置脚本},可用在params、headers、bodys中】

全局变量:

  • 请求参数中获取:{{var_name}}代码中获取:var value = pm.globals.get(“var_name”);【取的时候只要变量名】

环境变量:

  1. 请求参数中获取:{{var_name}}
  2. 代码中获取:var value = pm.environment.get(“var_name”);【取的时候只要变量名】

【获取都用要一个变量去接收,多级的要一级一级取】

请求前置脚本

16.1地位:在send按钮点击后,请求前置脚本代码,第一时间被执行。在postman内部实际http请求之前。

16.2时间戳

概念:对应绝对时间----从1970年1月1日00:00:00到现在所经历的秒数

16.3案例

调用百度首页接口,传时间戳给服务器

接口测试的概述(详细讲解接口测试)(18)

实现步骤:

①拿到时间戳写入全局变量

//拿到时间戳数据值

var timestamp = new Date().getTime()

//将时间戳设置到全局变量中

pm.globals.set("glb_timestamp",timestamp)

②点击send按钮,发送请求。请求发送前执行上述代码,写入全局变量

③查看写入的变量:点击眼睛图标

④在请求参数(界面)中,使用全局变量。{{var_name}}【params是查询参数】

⑤在postman控制台,查看发送的http请求

【send发送请求之前会执行请求前置脚本,写进全局变量当中,再发送请求】

接口测试的概述(详细讲解接口测试)(19)

Postman关联

17.1介绍:应用于多个http请求之间,有数据关联、或依赖关系时。

17.2实现步骤

A接口依赖B接口的数据

①向B接口发送http请求,获取数据

②将数据保存至全局变量(环境变量)中

③A接口获取全局变量(环境变量)中数据值,进行使用

17.3案例

请求获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用

①发送天气接口请求,在天气接口的Tests中获取城市名,再把城市名写入

//获取全部响应结果

var jsondate = pm.response.json()

//从响应结果中,获取城市名

var city = jsondate.一级一级往下引用k名

//将城市名写入到全局变量

pm.globals.set(“city”,city)

【点击send按钮,发送请求,查看设置的全局变量。点击小眼睛,看全局变量名和全局变量值】

//修改百度搜索请求,使用全局变量,按城市名进行搜索

接口测试的概述(详细讲解接口测试)(20)

Postman测试报告

18.1批量执行用例集

接口测试的概述(详细讲解接口测试)(21)

接口测试的概述(详细讲解接口测试)(22)

Data:引入外部文件

18.2生成测试报告(newman)【在dos界面】

1.先把用例集执行,run

2.导出用例集

3.生成测试报告

①{ newman run 测试脚本文件【导出的json文件】}[可单独执行] -e 环境变量文件【没有环境变量就省略】 -d 测试数据文件 -r html【必写】 --reporter-html-export report.html【报告名称,report名可以修改】

Postman读取外部数据文件(参数化)

【比如:登录接口,测一个用户,请求体的数据是写死的,要是测1000个用户,需要用到参数化】

【当http请求,使用的数据有较高相似度时,相同的请求时,考虑使用参数化(将数据组织到数据文件中)】

19.1数据文件简介

CSV:

优点:数据组织形式简单,适用于大量数据的场合

缺点:不支持bool类型数据(数据被postman读入后,自动添加“”包裹bool值);不支持多参、少参、无参、错误参数的接口测试;不支持复杂数据类型(如嵌套字典、列表)

接口测试的概述(详细讲解接口测试)(23)

【数值直接拿去用,非数值都加上“”】

JSON:

优点:支持bool类型;支持多参、少参、无参、错误参数的接口测试;支持复杂数据类型(如嵌套字典、列表)

缺点:对于相同的数据量,JSON数据文件大小要远大于CSV文件

接口测试的概述(详细讲解接口测试)(24)

19.2导入外部数据文件

CSV:【一定要utf8编码】

①创建XXX.CSV数据文件

②将数据写入到CSV文件中:第一行写入的是数据对应的字段名;从第二行向后依次是对应的数值,数据间用英文,分隔

③在Postman中,选中使用数据文件的用例集,导入数据文件【run->data:select file->选择导入文件->通过preview预览按钮,校验数据文件是否正确】

JSON:【可在json.cn网站里编写,编写好复制粘贴到记事本打开的json文件中】

①创建XXX.JSON数据文件

②在数据文件中,按json语法写入json数据。Postman要求,json格式的数据文件,数据内容的最外层,必须是[ ]。内部所有的数据用{ }存储

③在Postman中,选中使用数据文件的用例集,导入数据文件【run->data:select file->选择导入文件->通过preview预览按钮,校验数据文件是否正确】

【建议书写json数据时,无论是不是字符串,都可以用” ”包裹value值】

19.3读取数据文件数据

1.方法

①请求参数(请求行、请求头、请求体)中,使用数据文件中的数据

使用{{}}包裹csv文件字段名或json文件中的key

②代码(断言、请求前置脚本)中,使用数据文件中的数据

需要借助postman提供的关键字data点【.】csv文件字段名或json文件中的key

【send不能读外部数据文件,用到外部数据文件了,读取要进入到run里,通过run参数化用例集的按钮批量执行。如果有异常,借助控制台。】

小结:借助数据文件,实现“数据驱动”。有多少条数据,对应就有多少个http请求。

19.4生成测试报告

步骤:

①批量执行测试用例(借助数据文件)

②导出测试用例集(建议与数据文件放在一起)

③执行生成测试报告的命令

Newman run 用例集名称.json -d 数据文件名.csv/.json -r html --reporter-html-export 报告名称.html

项目环境说明

拿到一个项目,要对项目整体有个认识:熟悉项目的功能;了解项目组织架构和相应技术。

20.1功能模块:XXXXXX【模块功能列出】

20.2技术栈

前端:页面显示........

后端:spring全家桶;mysql【实现数据持久化存储,断电也不会丢】 redis【缓存存储数据,读取快】 rabbitmq【消息队列,完成数据通信】

20.3技术架构图(比较详细展开描述技术栈)

接口测试的概述(详细讲解接口测试)(25)

20.4初始化项目环境(利用postman)

  1. 新建用例集(不同的模块对应添加子目录)
  2. 创建环境变量(选择Enviroments->create enviroment)

①先创建环境,给环境取名【测试、开发、生成】

②initial value:在外部数据文件中使用,current value:在postman中使用

【注意】:设置了环境,在执行用例的时候要选择对应环境

20.5数据依赖

1.登录成功,返回的“令牌”,被增删改查功能接口依赖

2.添加完的数据id,会被查、改、删依赖

【借助关联和环境变量实现】

20.6提取令牌

1.登录完成,返回data,不是完整令牌,缺少前缀

2.实现:

①发送http登录请求,在响应体中得到data值

var json_data = pm.response.json()

var env = json_data.data.token

②将data值拼接“Bearer”和“空格”,组成一个合法令牌

pm.environment.set("env","Bearer" " " env)

③将令牌写入环境变量中。(在Tests中通过代码写入)

20.7生成测试报告

1.在environment中有环境,要先导出环境

接口测试的概述(详细讲解接口测试)(26)

2.将环境文件与测试用例集放置到同一目录下

3.执行命令

663

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页