接口测试概述
生活中接口和软件程序的接口
生活中接口(插板,插座,USB线)
软件程序中接口(王者:与微信好友玩,与 QQ好友玩:(系统内部接口);饿了么淘宝、微信、支付宝都可绑定)
接口
API:接口属于一种系统或程序调用接口;开放式API
GUI:接口属于一种图形界面的操作软件的系统
接口测试
测试系统内部各个组件间接口,以及系统与外部系统之间的交互点。
接口测试内容
检查数据交换,发出和接收的数据
传递和控制管理过程
系统间的相互逻辑依赖关系
接口测试范围
业务功能测试:正常场所;异常场景
边界分析测试:输入参数边界;输出参数边界
参数组合测试:(正交实验、判定表法)
性能测试:响应时间、吞吐量、并发数、资源使用效率(CPU,IO,内存,network)
安全测试:敏感信息加密,批量抽奖,SQL注入
接口测试适用场景
多系统间交互开发
为其他系统提供服务的底层框架系统和中心服务系统
一个上次系统中的服务层接口
平台越复杂,系统越庞大,接口测试效果越明显
与界面功能测试比较
没有具体页面
规范文档(调用地址、请求参数、拼接请求)
发送请求,检查返回结果
只需测试入参和出参即可
接口测试好处
发现页面操作上发现不了的bug
检查系统异常处理能力、安全性、稳定性
前端变,接口测试,后端不变
接口测试必备条件
必要条件
接口说明(干什么)
调用URL(统一资源定位;网络地址)
请求方法(get/post)
请求参数,参数类型,请求参数说明
返回参数说明
标准和规范的接口文档
如何获取接口信息
标准化的接口文档是进行接口测试的前提
询问开发
测试人员自己抓包获取数据和信息(实际运行结果)
常见的接口传输协议
ftp(21):文本传输协议
jdbc:
POP3(110):邮局协议第3版本
SMTP(25):简单邮件传输协议
IMAP(143):交互式邮件存取协议
常见的接口测试工具
谷歌浏览器、火狐浏览器
postman(http协议)
一款强大的网页调试与发送网页HTTP请求,并能运行测试用例
模拟各种http request
JMeter
Fiddler(抓包工具)
常见的接口数据组织形式
HTML
JSON
String
xml
http(80)/https(443):超文本传输协议
http协议定义
超文本传输协议
从服务器传输超文本到本地浏览器的传送协议
是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果)
http协议特性
无连接的
(请求和响应的双方可不同时在线)
媒介独立。
传输过程的数据和通信协议没有关系(只要客户端和服务端能够识别数据,就能进行传输)
无状态
(只要请求,就重新响应,不管之前响应了多少数据,不做之前的记录和持久化处理)
与https协议关系
以安全为目标的HTTP通道,HTTP的安全版
HTTP基础之上加入了SSL协议(HTTP+SSL)SSL依靠整数验证服务器身份,并为浏览器和服务器之间的通信加密
有状态、信息发送具有安全认证,不会重复发送
http与https区别
https需要申请证书
使用完全不同的连接方式。端口号也不同,前者80,后者443
https可进行SSL加密传输协议、身份确认的网络协议,比http协议安全
http协议工作原理(请求-响应)
工作在客户端-服务器(C/S)架构上
浏览器作为HTTP客户端通过URL向HTTP服务端发送请求。
WEB服务器根据收到的请求后,向客户端发送响应信息。
HTTP请求及其结构
客户端发送一个HTTP请求(request)到服务器。
请求报文包括(请求行、请求头部、空行和请求数据)
HTTP请求(request)
get/post都是TCP连接
get获取,返回实体主体
不带参数的Get请求(Postman)
1)创建测试集合(Collection)
2)在集合中创建请求
3)输入地址(URL),和请求方式(get)
4)send发送请求
5)分析返回信息
Body区域:显示服务器返回的信息的主体;
Cookies区域,服务器返回的所有Cookies值(用于验证客户端、服务端身份信息)
headers区域:服务器返回的响应头部信息
Test Results:断言,判断服务器返回的响应信息是否正确
6)响应的其他信息:status(状态码)、Time(响应时间)Size(响应信息的大小)
7)请求案例内容的保存
8)分析接口响应结果,清楚每一个返回值是什么意思及其取值范围;
带参数的Get请求
1)创建测试集合(Collection)
2)在集合中创建请求
3)输入地址(URL),和请求方式(get)
4)添加参数,在请求区Params里面添加参数,输入参数名(key)及参数值(value);如果有多个参数,依次输入。(等价类划分、边界值分析法)
5)send发送请求
6)分析返回信息
Body区域:显示服务器返回的信息的主体;
Cookies区域,服务器返回的所有Cookies值(用于验证客户端、服务端身份信息)
headers区域:服务器返回的响应头部信息
Test Results:断言,判断服务器返回的响应信息是否正确
7)响应的其他信息:status(状态码)、Time(响应时间)Size(响应信息的大小)
8)请求案例内容的保存
9)分析接口响应结果,清楚每一个返回值是什么意思及其取值范围;
百度翻译API接口实战1
1)注册认证。在管理控制台获取APP ID和密钥
2)通过API文档,知道了接口地址
知道了使用接口,需要传参
3)准备参数
MD5加密:百度在线加密
q:apple |
---|
from:en |
to:zh |
appid:20211109000995025 |
salt:20211109 |
sign:ec8b279cae5c18ed2bf868abd27e5b99 |
4)把参数输入到Postman指定的位置,点击(send)请求
5)对比请求结果
百度翻译API接口实战2
将上述过程中的参数
确保要翻译的文本q为UTF-8编码(之前使用URL编码(在线)转换)
q:苹果
from:zh
to:en
appid:20211109000995025
salt:20211109
sign: 4fb38252552818a016e1dd115342d188
post向上提交
向指定资源提交数据进行处理请求。post请求可能会导致新资源的建立和/或已有资源的修改
带参数的Post请求
1)谷歌浏览器(开发者模式-network)获取接口信息。针对特定的请求,查找相关信息
2)相关参数
3)在Postman中设定参数。请求的(Body)中,一般设置为:form-data,写出对应的参数的值
发送请求
分析响应结果
在没有API文档的情况下,必须询问开发或者自己阅读接口对应的函数(阅读源代码)
get和post的区别
get请求,浏览器会把http header和data一并发送;产生一个TCP数据包。post请求,浏览器先发送header,服务器响应100;浏览器再发送data,服务器响应200.;产生两个TCP数据包
自动化测试
参数化运行
参数化:在程序中使用变量代替常量的过程
循环实现脚本的自动运行
断言
在postman中,tests模块就是对HTTP的响应结果进行判断的地方。
在脚本中添加相应的判断,实现脚本自动的比较(判断)程序的实际结果和预期结果。
自己写的断言机制
框架或者内置的断言机制
HTTP响应(response)
响应由状态行、消息报头、空行和响应正文组成
前端代码的network中的headers和cookies
响应状态码:
浏览器接收并显示网页前,此网页所在的服务器返回一个包含http状态码的信息头响应浏览器请求。
接口测试用例方法
用例设计方法
等价类划分法、边界值分析法(参数的请求)
因果图法、判定表法(请求的原因和结果,条件组合)
正交实验法(多个参数组合搭配,不全部)
场景法(正常场景、异常场景)
错误猜测法(首次)
随机测试
接口测试用例模板
80-20原则
1)软件中80%的缺陷、发现在需求、设计阶段
2)80%的代码是没有问题的,出bug的代码只占20%
3)一个软件80%的功能,平常很少用
4)人们在使用一个软件的时候,80%的时间使用20%的核心功能