接口测试讲义
1. 接口测试的类型
主要包含三种测试:
- Web接口测试,
- 应用程序接口(API, application programming interface)测试,
- 数据库测试。
实际上意义就是UI界面到数据库之间,数据流经过的所有过程。
LAMP(Linux Apache MySQL PHP)/LNMP(Linux Nginx MySQL PHP):只有 Web 服务器,没有应用服务器。
- Web 浏览器 到 Web 服务器: Web 接口测试,测试 请求和响应。
- Web 服务器 到 数据库服务器:应用接口测试,测试 PHP。
Linux / Windows + Java / Asp.net(C#) + Apache/Nginx + Tomcat/IIS + MySQL/Oracle/SQL server
- Web 浏览器 到 Web 服务器: Web 接口测试,测试 请求和响应。
- Web 服务器 到 应用服务器:契约服务,WebService,JavaAPI,WebAPI,WCF,.net Remoting:测试 Java 或者 C# 处理业务逻辑(JavaEE/ ASP.NET MVC),通俗讲测试 Service。
- 应用服务器 到 数据库服务器:数据处理服务,测试 Java 或者 C# 处理数据,把数据读取到数据库。
我们需要关注的是 Web 接口测试。
Web 接口测试的方法:
- Python 或者 Java,C# 编程,触发请求,读取响应,分析得到的响应数据进行与源数据的对比。
- 用工具:Postman 或者 SoapUI(不推荐)
Postman 原本是一个 Chrome 浏览器的插件,现在已经提供了 Windows、MacOS 和Linux 的独立安装版本。接下来用Windows的版本来进行安装和使用。
2. Postman 的安装
-
下载 Postman 的安装包,分为 32位 和 64位。https://www.getpostman.com
-
安装 Postman
-
注册用户(Sign Up) 并登录 (Sign In)
Snap23.png
-
可以在多台电脑登录,做过的测试会自动同步。
Snap24.png
-
安装完并且登录以后可以开始测试。
Snap25.png
3. Web 接口的测试点
Web 接口通过 HTTP(S)请求,是一个URL,URL请求结果,会得到数据,数据的格式主要有两种,一种JSON,一种 XML。主要用JSON演示。
- JSON,是JavaScript Object Notation,JavaScript 对象表示法。是用来表示JavaScript的对象,或者JavaScript数据等。因为JavaScript广泛的应用在 Web的前端页面,所以 JSON 主要应用在 Web 接口中。主要的应用场景:
- APP移动端和服务器的通信。用应用层 HTTP 协议,通过 Web接口读取数据和处理(提交)数据。
- Web前端与服务器的通信,往往服务器是第三方的,主要的场景就是 支付和第三方登录。
- 京东 web端 调用 微信支付、财付通支付、支付宝支付、银联支付、网银支付。。。
- 京东 web端 支持 微信登录、QQ登录、微博登录
- 京东 web端 显示 第三方的的物流信息(顺丰、申通、圆通。。。)
- 公共数据,在web端/APP端的天气预报 是由第三方接口提供。
- XML,Extensible Markup Language,可扩展的标记语言,HTML就是XML的一种形式,通过 标签的成对出现,以及标签的层次,来决定数据的内容。XML 主要用在后端的 应用程序接口的数据传递,比如 Java,C#等。XML 比较旧的格式。
接下来用一个例子,来分别JSON和XML表示以下的表格数据。
employee_id | first_name | last_name | phone_number | hire_date | job_id | salary | |
---|---|---|---|---|---|---|---|
100 | Steven | King | SKING | 515.123.4567 | 6/17/1987 | AD_PRES | 24000 |
101 | Neena | Kochhar | NKOCHHAR | 515.123.4568 | 9/21/1989 | AD_VP | 17000 |
首先用 JSON的形式,JSON是“键值对”(Key Value)的形式
{
"employees": [{
"employee_id": 100,
"first_name": "Steven",
"last_name": "King",
"email": "SKING",
"phone_number": "515.123.4567",
"hire_date": "6/17/1987",
"job_id": "AD_PRES",
"salary": 24000
},
{
"employee_id": 101,
"first_name": "Neena",
"last_name": "Kochhar",
"email": "NKOCHHAR",
"phone_number": "515.123.4568",
"hire_date": "9/21/1989",
"job_id": "AD_VP",
"salary": 17000
}]
}
对应的 XML 格式:
<?xml version="1.0" encoding="UTF-8" ?>
<employees>
<employee>
<employee_id>100</employee_id>
<first_name>Steven</first_name>
<last_name>King</last_name>
<email>SKING</email>
<phone_number>515.123.4567</phone_number>
<hire_date>6/17/1987</hire_date>
<job_id>AD_PRES</job_id>
<salary>24000</salary>
</employee>
<employee>
<employee_id>101</employee_id>
<first_name>Neena</first_name>
<last_name>Kochhar</last_name>
<email>NKOCHHAR</email>
<phone_number>515.123.4568</phone_number>
<hire_date>9/21/1989</hire_date>
<job_id>AD_VP</job_id>
<salary>17000</salary>
</employee>
</employees>
Web 接口的定义来决定测试内容
- Method:GET POST PUT DELETE
- URL: 接口的地址
- 请求参数:每个参数名字,参数的类型,参数的范围,参数是否可选,参数是否有默认值
- 等价类:有效等价的参数,无效等价的参数
- 边界值:离点,上点,内点
- 正交试验法:×因子 ×状态
- 有的时候,参数之间关联:省,市,县(区),尤其注意非法(无效)的关联
- 断言:检查响应的内容
- 正文:正文是否包含某些字符
- 正文:JSON 或者 XML 的键值对检查,数量检查 xx.length
- 响应的状态码:200, 403
- 响应的时间: 100ms, 200ms
*5. 认证:你是否有权限访问接口
-
接口的实质对象:数据
- 数据的格式
- 数据的内容
4. Postman 的使用
-
测试 心知天气 API:https://www.seniverse.com/
-
登录 心知天气 (先注册)
-
读 接口的 API 文档
- API的定义: API 的URL的组成 和请求方法
- API的参数
- 请求参数
- 响应参数
-
以 获取实时天气作为示例:
-
API的方法和URL:GET, https://api.seniverse.com/v3/weather/now.json
-
API的参数:
-
请求参数:
参数名 参数类型 参数意义 是否必选 key string 你的API密钥 true location string 查询的地理位置 true language string 结果表示的语言 false,默认简体中文 unit string 结果表示的单位(华氏度,摄氏度) false,默认摄氏度 -
响应参数:
参数名 参数类型 参数意义 location 对象:包括id, name, country, time_zone, time_zone_offset now 对象:包括 text,code, temperature, feel_like...
-
-
-