简单的接口测试初识
一:接口测试(接口概念)
1.1 什么是接口?
接口是一种规范,方便我们在编写应用程序是需要注意的事项。是一套约定俗称的规则,主要可以方便宏观上整体把控整个项目。
PS:比如,当我们要对一个注册操作进行持久化操作的时候,我们需要规定整个模块的参数以及返回值的定义,方便程序员编写时按照既定约定进行开发,避免开发 的随意性。
1.2 接口的优势
1:统一设计标准2:前后端的开发相对独立3:对于今后的扩展性和维护性进
行提高4:前后端可以使用自己相对于较为熟悉的技术
1.3 如何定义接口?
1:接口是由架构师或者是项目Leader定义的2:前后端在编写的时候进行统
一约束和规范,作为开发人员的开发依据
二: 接口测试(接口测试概念)
2.1 什么是接口测试?
接口测试就是按照约定的规范,测试后端的实现是否符合规范。
2.2 为什么需要进行接口测试?
1:让程序更加安全2:让程序更加高效3:提高软件产品的质量
2.3 如何做接口测试?
模拟用户 客户向服务器发送请求,然后查看响应结果。
要素 | 内容 |
---|---|
要素 | 定位服务器资源,通过URL实现(统一资源定位符)https://www.baidu.com http://localhost:8080 |
要素 | 模拟用户提交数据。比如通过get发送数据:uname=zhangsan&pwd=123 |
要素 | 查看响应结果和预期结果是否相同。 |
2.4 接口测试分类
类型1:Web接口测试(B/S架构项目)
|----服务器接口测试:自定义的接口测试
|----第三方接口测试:其它公司实现的接口测试
类型2:模块接口测试(C/S架构项目)
三:接口测试准备工作
3.1 插件安装
3.1.1 为什么需要安装插件?
是测试接口的一些测试工具,有一些测试工具直接跑在浏览器上,比如FireFox中的RESTClient,或者是Google的POSTman,还有一些直接比如Java开发的测试工具:JMeter。
测试工具功能比较强大,方便测试人员进行测试。
3.1.2 如何安装插件?
环境:采用的浏览器是Google浏览器,在Google浏览器下可以通过两种方式进行插件的安装:
|----- 在线下载拓展程序
|----- 下载好插件直接拖拽(https://www.cnblogs.com/whycxb/p/7126116.html)
常见的插件:拦截广告的插件 ,网盘下载不限速插件。
格式化JSON数据的插件,网页调试插件
3.2 RESTFul风格
3.2.1 什么是RESTFul风格?
RESTFul 风格:在开发和测试过程中遵守一定的规范,RESTFul就是若干了约束中的一种。
3.2.2 为什么需要RESTFul风格?
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
当下常见的三种B/S架构的交互方案:
- SOAP (Simple Object Access Protocol) 简单对象访问协议
- XML-RPC 基于XML的远端程序调用
- RESTFul (Representational State Transfer) 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTFul。
3.2.3 如何基于RESTFul进行测试?
针对于整个项目来说,就是基于数据的增删改查。RESTFul中定义个对于每项操作的3要素的要求:
增
访问资源:post请求 url:http://localhost:8000/XXX/XXXX/
-
请求参数:
- 健=值&健=值。。。
- JSON
结果对比:200|201(标准)+ 已添加数据
删
访问资源:get|delete(标准)请求 url:http://localhost:8000/XXX/XXXX/XXXX
请求参数:健=值&健=值。。。
结果对比:200|204(标准)
- 改
- 访问资源:post|put(标准)请求 url:http://localhost:8000/XXX/XXXX/XXXX
- 请求参数:
- 健=值&健=值。。。
- JSON
- 结果对比:200|201(标准)+ 已修改数据
- 查
- 访问资源:get请求 url:http://localhost:8000/XXX/XXXX/XXXX
- 请求参数:
- 健=值&健=值。。。
- JSON
- 结果对比:状态码200 + 描述OK + 查询到的结果信息(一条或多条信息)
3.3 :JSON
3.3.1 什么是JSON?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
其实和XML是并列的两种互联网传递数据的重要载体中的一种。
3.3.2 XML数据格式
<person>
<uname>
<first-name>三丰</first-name>
<last-name>张</last-name>
</uname>
<age>18</age>
</person>
3.3.3 JSON数据格式
{
"person": {
"name": {
"first-name": "三丰",
"last-name": "张"
},
"age": "18"
}
}
1: JSON要比XML更加的简单
2: JSON的数据量要小于XML
3:XML数据的语义要比JSON更加的明确
4: 某些场景下JSON可以代替XML(Ajax),某些事无法代替的(数据量大)。
3.3.4 普通定义(JSON对象)
{
##"健1":"值1","健2":"值2"...
"name":"zhangsan",
"pwd":"123"
}
3.3.5 数组定义(JSON数组)
[ ##"值1","值2"... "张三","李四"]
3.3.6 复合定义(重点)
[ {
"uname": {
"first-name": "三丰",
"last-name": "张"
},
"age": "18"
},
{
"uname": {
"first-name": "无忌",
"last-name": "张"
},
"age": "18"
}]
四:使用POSTMan
要保证按照接口测试规范进行测试,抽离接口API,然后开始测试
- 注意,如果你发送的请求参数包含json数据或者中,需要在headers中进行请求头设置
-
如果包含请求参数,通过post发送时,在body中的raw中编写json数据即可发送。
最后查看测试数据,主要看返回结果以及应答码