接口测试 | 接口测试入门

接口测试讲义

1. 接口测试的类型

主要包含三种测试:

  1. Web接口测试,
  2. 应用程序接口(API, application programming interface)测试,
  3. 数据库测试。

实际上意义就是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 的安装

  1. 下载 Postman 的安装包,分为 32位 和 64位。https://www.getpostman.com

  2. 安装 Postman

  3. 注册用户(Sign Up) 并登录 (Sign In)

    Snap23.png

  4. 可以在多台电脑登录,做过的测试会自动同步。

    Snap24.png

  5. 安装完并且登录以后可以开始测试。

    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 email 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 接口的定义来决定测试内容

  1. Method:GET POST PUT DELETE
  2. URL: 接口的地址
  3. 请求参数:每个参数名字,参数的类型,参数的范围,参数是否可选,参数是否有默认值
  • 等价类:有效等价的参数,无效等价的参数
  • 边界值:离点,上点,内点
  • 正交试验法:×因子 ×状态
  • 有的时候,参数之间关联:省,市,县(区),尤其注意非法(无效)的关联
  1. 断言:检查响应的内容
  • 正文:正文是否包含某些字符
  • 正文:JSON 或者 XML 的键值对检查,数量检查 xx.length
  • 响应的状态码:200, 403
  • 响应的时间: 100ms, 200ms
    *5. 认证:你是否有权限访问接口
  1. 接口的实质对象:数据

    1. 数据的格式
    2. 数据的内容

4. Postman 的使用

  1. 测试 心知天气 API:https://www.seniverse.com/

    1. 登录 心知天气 (先注册)

    2. 读 接口的 API 文档

      • API的定义: API 的URL的组成 和请求方法
      • API的参数
        • 请求参数
        • 响应参数
    3. 以 获取实时天气作为示例:

      1. API的方法和URL:GET, https://api.seniverse.com/v3/weather/now.json

      2. API的参数:

        1. 请求参数:

          参数名 参数类型 参数意义 是否必选
          key string 你的API密钥 true
          location string 查询的地理位置 true
          language string 结果表示的语言 false,默认简体中文
          unit string 结果表示的单位(华氏度,摄氏度) false,默认摄氏度
        2. 响应参数:

          参数名 参数类型 参数意义
          location 对象:包括id, name, country, time_zone, time_zone_offset  
          now 对象:包括 text,code, temperature, feel_like...  
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值