回顾接口测试—干货满满!

tech2022-09-16  102

1 HTTP协议基础

1.1 概念

1)HTTP协议全称是超文本传输协议,适用于:浏览器-服务器,服务器-服务器,app-服务器。 2)广泛适用于HTTP/1.1版本。

1.2 HTTP请求行request line

HTTP请求: 1) 请求第一行request line: 请求方法 请求地址 HTTP版本号 2) 请求方法 GET:从服务器获取资源信息,比如获取图片资源; POST:添加信息到服务器进行处理; PUT:请求服务器,更新信息; DELETE:请求服务器,删除信息;

1.3 请求头 request headers

1) 请求头是请求行下面的内容 HOST:服务端应用地址,一个服务端可以起多应用, http协议建立连接的时候已经知道服务器地址 User-Agent:客户端类型 Accept-Language:希望服务端使用的语言类型 … 消息头都占一行,

1.4 请求体

请求头下面空一行后是请求体 请求体可以包含文本、图片、文件等 消息体格式:json、xml、 www-form-urlencoded(由开发人员定义)

1.5 响应消息

1)响应消息头(Response Headers)、响应消息体(Response) 2)响应状态行:协议版本、状态码、描述状态短语 状态码: ● 2XX:常见200,没有问题 ● 3XX:重定向响应,请求地址变了,需要客户端重新发起一个请求到另外的url ● 4XX:客户端请求错误 ● 400:请求不符合接口要求 ● 401:客户端要先认证菜鸟发送请求 ● 403:客户端没有权限要求服务器处理这样的请求,比如普通用户不能删除信息权限 ● 404:请求url不存在 ● 5XX:服务端在处理请求中,发生未知错误

2 接口测试

2.1 测试概念

美团app <=> 美团服务端 <=> 微信服务端 浏览器客户端 <=> 网站服务端 接口测试:接口规范->测试用例->使用工具测试->执行测试

2.2 API接口传递数据信息,网站获取网页、图片、css等资源,两者都是通过HTTP协议进行收发,其中区别是?

1)网页、图片、css都是静态资源,就是一个文件存储在服务器上的,获取这些信息,服务端直接读取文件,返回给客户端既可以,无需特别的数据处理。

2)API接口请求信息,通常都是需要服务端程序进行一番处理,比如:对请求的权限检查,从数据库中读出数据,进行信息过滤和格式转换,最后在HTTP响应中返回给客户端。

3)接口测试工具:Postman、Jmeter

4)自动化测试:requests库,自己写代码发送接收HTTP请求,进行测试,自己写代码比较灵活可以根据自己想要的进行书写。

5)接口测试说明 内部接口:一般不需要测试部门的工程师进行测试,而是由开发人员进行测试 产品的外部接口和另外的系统之间的接口,另外的系统通常是由其他公司开发的,测试工程师一定要进测试。比如阿里云服务提供的api接口,微信支付系统提供的支付API接口,作为阿里云或微信致富的测试工程师,就需要对其进行测试。

6)接口测试用例设计方法:条件组合、边界值、错误推测、等价划分类

3 request库

使用官方文档查看详细信息

4 fiddler工具

1)首先设置过滤项,filters

2)Inspectors:查看抓包信息

3)fiddler启动后会成为系统代理,端口号8888

4)浏览器本身f12可以抓包

5)而使用程序发送接口,则可以是写以下代码使用fiddler

6)app抓包

● 设置手机使用fiddler作为代理;

● 抓包电脑和手机是同一个wife信号;

● 设置fiddler允许远程连接:toole-options-connection-allow remote computers to connect;

● 打开手机wife设置,长按WiFi连接,选择修改网络,高级选项,代理设置选择手动设置电脑ip地址和服务器端口;

5 构建API-URL参数

url参数? https://www.baidu.com/s?wd=i&price=1

● 问号后面的部分wd=i&price=1就是url参数 ● 每个参数之间是用&隔开的 ● url参数的格式,有个术语叫urlencode格式

6 构建请求消息头

json、xml、urlencoded

urlencoded格式,数据格式就用“data” json格式,数据格式请求用“json” 表示数据的一种语法格式,和Python相像,比xml简洁、清晰、处理效率高。

7 处理API响应消息

方法一: 方法二: 方法三:(最方便,确定是json格式)

8 Session机制

一个网站,服务成千上万的客户,他们进行操作,服务端怎样知道HTTP请求对应的哪个客户? session就是会话的意思。 原理如下: ● 用户进行登录功能,服务端进行验证,验证通过后。

● 服务端会为这次登录创建一个session。

● session就是数据结构,保存该客户这次登录操作相关信息,通常保存在数据库中。

● 同时创建一个唯一的sessionid,标志这个session。

● 然后,服务端通过HTTP响应,把sessionid告诉客户端。

● 客户端在后续的HTTP请求消息中,都要包含sessionid。这样服务就会知道,这个请求对应的哪个session,从而知道对应哪个客户。

服务端是通过HTTP响应头中Set-Cookie把产生的sessionid告诉客户端的。

➢ 客户端后续请求,是通过HTTP请求头Cookie告诉服务端它所持有的sessionid的。

➢ Cookie英文是小甜饼意思,这里是指一小段数据。

➢ HTTP协议规定,网站服务端放HTTP响应中,消息头Set-Cookie里面的数据,叫做Cookie数据,浏览器客户端必须保存下来。

➢ 后续访问该网站,HTTP请求头Cookie中必须携带保存的所有cookie数据。

9 Requests库对session的支持

request库给我们提供一个session类。

Python代码接受到服务端HTTP响应,其中Set-Cookie的数据怎么保存呢,后续怎样放到请求消息头中Cookie中呢?

requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象请求该网站的其他网页都会默认使用该session之前使用的cookie等参数。

10 自动化测试

添加步骤:STEP(1,“第一步”) 检查点: CHECK_POINT函数 Python+robot框架进行接口自动化

学习网址https://www.bilibili.com/video/BV1EJ411M7Ln?p=15

最新回复(0)