美文网首页
接口测试入门

接口测试入门

作者: 微笑的AK47 | 来源:发表于2019-04-07 18:06 被阅读0次

    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_idfirst_namelast_nameemailphone_numberhire_datejob_idsalary

    100StevenKingSKING515.123.45676/17/1987AD_PRES24000

    101NeenaKochharNKOCHHAR515.123.45689/21/1989AD_VP17000

    首先用 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"?>100StevenKingSKING515.123.45676/17/1987AD_PRES24000101NeenaKochharNKOCHHAR515.123.45689/21/1989AD_VP17000

    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的参数:

    请求参数:

    参数名参数类型参数意义是否必选

    keystring你的API密钥true

    locationstring查询的地理位置true

    languagestring结果表示的语言false,默认简体中文

    unitstring结果表示的单位(华氏度,摄氏度)false,默认摄氏度

    响应参数:

    参数名参数类型参数意义

    location对象:包括id, name, country, time_zone, time_zone_offset

    now对象:包括 text,code, temperature, feel_like...

    last_update日期

    用Postman开始测试

    new tab 中输入 方式,和URL

    点击 Params 设置参数

    点击 send 开始发送请求

    查看请求结果是否有输出,格式是否和上述的响应参数对应

    {"results": [    {"location": {"id":"WS10730EM8EV","name":"Shenzhen","country":"CN","path":"Shenzhen,Shenzhen,Guangdong,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now": {"text":"Cloudy","code":"4","temperature":"25"},"last_update":"2017-05-09T10:05:00+08:00"}  ]}

    编辑 Tests 页面,添加断言。

    varjsonData =JSON.parse(responseBody);tests["检查城市名称"] = jsonData.results[0].location.name ==="Shenzhen";

    使用Postman 登录然之系统,测试登录接口

    使用然之 4.2 或者以上版本

    修改然之系统 配置文件C:\xampp5\htdocs\ranzhi\config\my.php,在最后添加一行配置,如下图:

    修改 然之 配置文件

    $config->notEncryptedPwd =true;

    重启 Apache

    打开 Chrome,输入然之的网址,打开登录页面

    Chrome 打开登录页面

    打开 Fiddler,并设置 Chrome 进行抓包

    在 Chrome 中进行登录,提交用户名和密码

    在 Fiddler 中捕获刚刚的登录 POST 请求

    Fiddler 抓包登录 POST

    打开 Postman,新建 URL,POST方法。

    需要设置 Postman,点击 File | Settings,进行设置

    settings

    Setting 2

    在 Postman 输入刚刚 Fiddler 请求的 POST 的 URL

    Fiddler 抓包分析

    输入上述 URL

    URL

    在 Fiddler 中复制请求的第二行到空行之间的 消息报头(Head),Postman 输入 Head

    Head 1

    Head2.png

    在 Fiddler 中复制请求的正文,在 Postman 中 body 选择 raw,并输入

    输入 Body

    在 Postman 的test 中输入以下测试内容:

    输入断言

    varjsonData =JSON.parse(responseBody);tests["检查locate"] = jsonData.locate ==="\/sys\/index.html";tests["检查result"] = jsonData.result ==="success";tests["Status code is 200"] = responseCode.code ===200;

    在 Chrome 中退出登录,注意此步骤很重要,退出以后才能够进行 Postman 登录

    退出 然之

    在 Postman 中点击 Send,进行测试

    测试结果

    查看 Postman 的运行结果。

    result.png

    5. Web 接口的认证

    Web 接口测试的准备

    HTTP协议的请求和响应

    请求:GET/POST

    响应:html/JSON/XML/CSS/JavaScript/png..

    测试的概念

    断言:检查返回的响应里面的内容。

    测试设计:根据请求的参数来设计用例

    读懂接口的文档

    请求的方式和URL

    请求的参数和响应的参数

    在请求接口时使用认证

    basic authorization 基础认证,输入用户名和密码

    在上面四个的基础上,注意Web 接口需要认证,尤其是支付业务,这里用一个例子,并且是POST请求 + Basic Auth 认证,来阐述此部分。

    示例的步骤:

    打开https://www.pingxx.com/Ping++ 在线支付网站,注册一个账号,并登录,会自动创建一个应用。

    Snap27.png

    进入自动创建的应用,进入应用的控制面板界面。

    获取APP[id],按如图的方式获取到,并等下使用

    Snap28.png

    获取Test Secret Key,按照如图的方式获取到,并依旧等下使用

    Snap29.png

    Snap30.png

    按照下操作,查阅 API 文档,并开始测试。

    Snap31.png

    Snap32.png

    Snap33.png

    选择 Charge,创建一个 支付订单,查阅 API 文档的请求参数,响应参数,依旧 方法和URL

    Snap34.png

    在Postman 中创建新的测试,输入 POST 和 URL

    Snap35.png

    设置参数,其中需要用到 APP[id],为之前步骤获取到的。

    Snap36.png

    在 请求中使用 认证,Basic Auth,输入 之前步骤获取到的 Test Secret Key,作为用户名。

    Snap37.png

    Snap38.png

    添加测试断言。

    用 JavaScript脚本,查询 JSON 对象的值,并做检查。点击右侧的现成菜单,会自动生成检查 JSON 的框架。

    varjsonData =JSON.parse(responseBody);tests["检查object值"] = jsonData.object ==="charge";tests["检查order_no值"] = jsonData.order_no ==="99887766554433221100";tests["检查amount值"] = jsonData.amount ===9900;

    Snap39.png

    点击 Send 开始测试。

    Snap40.png

    示例2:创建红包的Web 接口测试

    微信红包支付接口测试的接口描述

    创建红包的Web接口描述

    在 Postman 中输入 POST 方法和 URL

    Paste_Image.png

    在 Postman 中 使用 Http Basic Auth 认证。输入之前获取的 Secret_test_key。根据 API文档进行的操作

    Paste_Image.png

    在 Postman 中操作

    Paste_Image.png

    Paste_Image.png

    输入 请求的参数,注意POST 请求的请求参数,输入到 Body 中

    输入正文

    在 Test 设置断言,刚才说要设置 Object 的验证。

    输入以下内容:

    断言

    varjsonData =JSON.parse(responseBody);tests["检查 Object 属性"] = jsonData.object ==="red_envelope";tests["检查 金额 属性"] = jsonData.amount ===6000;

    点击Send,检查。

    结果

    到管理平台查看订单结果。

    Paste_Image.png

    6. Postman 的其他功能

    Postman 支持导出用例以及账户的同步功能。

    Snap41.png

    接口实例:

    天气预报接口:

    接口URL:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

    网络服务描述语言:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

    该接口有5个方法:

    - getSupportCity()

    - getSupportDataSet()

    - getSupportProvince()

    - getWeatherbyCityName()

    - getWeatherbyCityNamePro()

    通过输入参数,可以调用这些接口,并得到请求的数据。

    查询本天气预报Web Services支持的国内外城市或地区信息:

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=广东

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=北京

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=上海

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=湖北

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=河南

    查询获得本天气预报Web Services支持的洲、国内外省份和城市信息

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportDataSet

    查询获得本天气预报Web Services支持的洲、国内外省份和城市信息

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince

    查询获得根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=深圳

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=59493

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=北京

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=54511

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=上海

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=58367

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=香港

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=45005

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=Chicago

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=72530

    链接:https://www.jianshu.com/p/4a386d57dd72

    来源:简书

    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

          本文标题:接口测试入门

          本文链接:https://www.haomeiwen.com/subject/efosiqtx.html