接口测试(一)

2023-10-30

目录

1、接口的定义

2、接口的类型

3、接口测试的类型

4、web接口测试

4.1 Web 接口测试的方法

4.2 Web 接口的测试点

接口测试的准备

用工具postman进行web测试

实战一之登录接口

实战二之支付接口

实战三发送红包接口

其他:

1、接口的定义

数据交互的通道,在系统或者组件之间完成数据的传递。

2、接口的类型

按协议划分:HTTP/TCP/UDP/IP/FTP/USB

按语言划分:JAVA/Python/C++/php

按范围划分:系统之间(内部系统和外部系统之间)和程序内部

程序内部:方法和方法之间,类和类之间,模块和模块之间

3、接口测试的类型

主要包含三种测试:

  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 接口测试

4、web接口测试

4.1 Web 接口测试的方法

  • 用工具:Postman 或者 SoapUI(不推荐)
  • Python 或者 Java,C# 编程,触发请求,读取响应,分析得到的响应数据进行与源数据的对比。

4.2 Web 接口的测试点

Web 接口的定义来决定测试内容

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

    1. 数据的格式(查看请求结果是否有输出,格式是否和上述的响应参数对应)
    2. 数据的内容

Web 接口通过 HTTP(S)发送URL请求结果,得到数据,数据的格式主要有两种,JSON和 XML。

  • 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#等。

JSON是“键值对”(Key Value)的形式。

接口测试的准备

HTTP协议的请求和响应
请求:GET/POST
响应:html/JSON/XML/CSS/JavaScript/png..
测试的概念
断言:检查返回的响应里面的内容。
测试设计:根据请求的参数来设计用例
读懂接口的文档
请求的方式和URL
请求的参数和响应的参数
在请求接口时使用认证
basic authorization 基础认证,输入用户名和密码,,注意Web 接口需要认证,尤其是支付业务

用工具postman进行web测试

实战一之登录接口

1、测试登录接口(chrome+fidder+postman)

搭建环境,修改配置变量,修改然之系统 配置文件 C:\xampp5\htdocs\ranzhi\config\my.php,在最后添加一行配置,$config->notEncryptedPwd = true; 然后重启Apache,重启Chrome,打开天然之登录页面

2、先打开 Fiddler,并设置 Chrome 进行抓包,然后在 Chrome 中进行登录,提交用户名和密码在 Fiddler 中捕获刚刚的登录 POST 请求,并进行分析

3、Chrome推出后才能使用postman登录,然后打开postman,新建1、URL,2、POST方法,3、参数,4、报头head(复制fidder抓包中消息报头的第二行到空行),5、输入body(复制fidder请求的正文),6、断言7、查看结果,注意:最好关掉SSL证书和Token设置;

实战二之支付接口

1、Chrome打开一个支付网站,……获取APPid和密钥

2、查看API文档进行测试,

API文档中有URL,方法,请求参数,响应参数

3、Postman进行测试,APPID放到body中作为请求参数之一,密钥作为用户名放到基础认证Basic Auth里。

因为文档里说明了这个API使用HTTP Basic Auth进行认证,将密钥作为Basic auth的用户名,且不需要密码

 4、添加测试断言用javaScript脚本,并选择响应体Json值检测,来测试Json对象的值,最后点击Send。

实战三发送红包接口

1、postman 进行测试,请求参数放到Body中,即输入正文了;;认证里放入密钥作为参数;;;

2、断言,设置 Object 的验证,最后点击Send

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

断言结果为:

其他:

二、接口测试

1、接口测试定义

针对软件对外服务的接口的输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能与接口文档描述是否一致。

2、为什么做接口测试

一是由于介入的更早,提早发现bug,就可以更好的保障产品的质量;二是可以发现一些前端页面发现不了的问题(支付密码、输入非数字、特殊字符)三是接口测试低成本高效益(底层的一个bug能够引发上层8个左右bug,接口测试可以实现自动化,如一个用户名可以用作四个组件,则这个接口传进的数据导致了4个bug),四是从用户角度对系统进行全面的检测(用户有各种各样的输入想法)

3、实现方式

工具实现:开发者工具、fiddler、postman、jmeter  断言

代码实现:python+unitTest+Request  断言

什么是自动化测试?利用工具或代码代替人工,(依赖断言)自动判断响应结果和预期结果是否一致。

python断言方法:常用的3种断言方法:in/not in 、

4、什么时候做接口测试

接口测试在功能测试之前,集成测试阶段就开始进行了

5、怎么去做接口测试

用工具或代码模拟客户端,向服务器发送请求,检验服务器回发的响应数据是否与预期一致。

根据接口文档设计用例,调用接口,验证结果。

6、接口测试流程

获取接口信息:通过接口文档和抓包来获取接口的基本调用方式和返回

接口测试用例设计:根据获取到的接口信息,按照接口测试用例设计方法,设计参数和预期返回结果。

接口发包:使用工具或者编程代码模拟客户端,向接口传递参数

返回信息验证:获取接口的返回结果,进行解析和验证

三、HTTP协议

1、http协议定义

协议就是规则,要求使用的双发,必须严格遵守,绝大多数指定了数据传输的规则,计算机中大多是通过数据的传递产生一系列硬件或者软件的变化。

HTTP超文本传输协议:一个基于请求与响应模式的应用层协议,访问互联网必有的。

特点:1)支持客户端/服务器模式2)简单快速:数据直接在url中携带传递3)灵活:HTTP协议支持的语法格式和数据类型比较多,可以在数据传递过程中根据需求进行变换;4)无连接5)无状态

说明:HTTP协议主要是针对B/S模型、TCP主要是针对C/S模型,C/S模型要求先建立连接(3次握手)再进行通信,继续要有连接保持,在保持状态下才可以发送数据,B/S模型不需要连接保持,只需要知道IP和端口号就能传数据。

7层模型(物数网传会表应)、4层模型(网网传应),应用层是最上一层,离用户近。3次握手,4次挥手(断开连接)

 2、url的语法格式

语法格式:https://www.icast.cn:8080/news/index.html?uid=123&page=1

依次是协议,域名,端口号,资源路径,参数,其余是分隔符;

协议:http和https

域名:本质是IP地址(定义网络环境中的一台主机)

端口号:在网络主机上,定位一个应用。不同应用对应不同的端口号。端口号可以省略,如果没有指定端口号,默认跟随协议。

        http协议默认端口:80,8080是JAVA下的一个web服务tomcat的默认端口;

        https协议默认端口:443

        mysql数据库默认端口:3306

        redis缓存数据库默认端口:6379

资源路径:对应网页的源代码或者网络中的一个数据资源(图片)

查询参数:传参给网页源代码,k=v对,用?与资源路径隔开,用&连接多个参数

3、http请求

作用:由客户端发送给服务器,规定向服务器发送请求所用到的数据存储的语法格式

格式:请求行、请求头、空行、请求体

注:post方法有请求体,其他方法没有

 请求行作用:指定请求方法、请求资源

        语法格式:换行符是\r\n

        请求方法:

        get--查询,没有请求体

        post--新增,登录、注册使用,有请求体(携带东西)

        put--修改,有请求体(携带东西)

        delete--删除,没有请求体

        其他还有options,head,trace,connect方法

请求头作用:k:v对,主要是User-Agent和Content-Type

        User-Agent:向服务器描述浏览器的类型,避免爬虫(借助浏览器爬取数据)。

        Content-Type:像服务器描述请求体的数据类型,如form表单形式,application/json类型,

请求体:From Data,一般是填写的数据,request payload数据

4、http响应

作用:由服务器发送给客户端,规定向服务器回发给客户端的数据语法格式

格式:响应行(状态行)、响应头、空行、响应体

 响应行:由协议版本号、状态码、状态消息三部分组成

        状态码由三位数字组成,第一个数字定义了响应类别:

        1**:信息类,表示请求已接收,继续处理

         2**:成功,表示请求已被成功接收、理解、接受,200OK成功

        3**:重定向,要完成请求必须进行更近一步的操作

        4**:客户端错误,请求语法错误或请求无法实现,403Forbidden拒绝被访问或者没有权限,404Not Found文件/资源不存在;

        5**:服务端错误,服务器未能实现合法的请求,502网关错误,504访问超时;

响应头:

        作用:向客户端描述服务器的基本信息

        语法:k:v键值对

        Content-Type:向客户端描述响应体的数据类型

响应体:

        http响应报文,大多数,是有响应体

        响应体的数据类型,受响应头中Content-Type影响

        常见类型:json、表单、图片png

5、接口风格

传统风格(URL不唯一、方法不唯一)、RESTful风格(URL唯一,方法唯一)

6、抓包工具:开发者工具,fiddler(chrome浏览器用不了,默认fid设计黑客安全,改用其他浏览器)

二、开发者工具进行抓包

network抓包:

数据类型为script代表js脚本请求的数据包;

General:

        request url :请求的接口在服务器或者互联网上的地址

        request method:请求的方法

        status method:此次请求的http状态码

        remote address:所访问的远程服务器的远程地址

        referrer policy:引用的策略是不安全的方式

response headers:

request headers:头部信息

string parameters:参数

三、postman接口请求

1、postman的作用:如何去调用接口来验证结果的这一过程

2、各个参数说明

params:添加参数

Authorization:鉴权的方式

Headers:头域

Body:参数携带的各种各样的方式;

Pre-request Script:接口发起请求之前,可以编写一些js脚本。

Tests:接口请求完成之后可以执行的脚本,以及进行断言操作。

body:返回体

cookies:

headers:

test results:

url构成:使用协议+使用服务的域名+请求的接口地址+相应参数

是否所有的接口都是必填的,对它进行排列组合,通过不同的值验证是否是符合预期的。

创建请求,创建收藏夹,创建环境,创建API文件。

五、实战

1)百度ip接口测试

2)腾讯课堂评论接口测试:需要添加头域referer,才能获取正确的评论信息;

接口地址:https://ke.qq.com/cgi-bin/comment_new/course_comment_list?cid=2771800&count=10&page=0&filter_rating=0&bkn=1222407167&r=0.8055497619877674

访问地址:https://ke.qq.com/course/2771800

referer:一般指定请求的来源,防止其他网站也能获取该评论信息,防止盗链或爬虫,一般根据接口文档去获取。

3)post接口测试:

 

 

六、

url解析:协议+服务器域名+从服务器存储的资源去找到接口+相应的参数

 注意:

在使用post方法的接口测试时,在body中设置请求体格式,会自动添加headers:content-type信息,再去添加body参数(From Data);有的开发者工具中不会显示response结果,因为浏览器在进行登录直接进行了一个跳转操作,返回信息被隐藏 起来了,需要用???工具进行抓包;

content-type指明了使用到的文本格式:application/x-www-form-urlencoded;会将参数信息作为表单进行传递;和form data是相关的;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接口测试(一) 的相关文章

随机推荐

  • (八)BaseTableView的简单使用

    BaseTableView的简单使用 现在来说说另一个我封装比较重的UI组件 这个组件要实现什么效果呢 当你使用继承了BaseTableView的子类tableView后 只需要在使用这个类的控制器中传递给tableView一个数据数组 并
  • Vue3回到顶部(BackTop)

    效果如下图 在线预览 APIs 参数 说明 类型 默认值 必传 bottom BackTop 距离页面底部的高度 number string 40 false right BackTop 距离页面右侧的宽度 number string 40
  • 【Three.js】第六章 Animations 动画

    06 Animations动画 介绍 我们创建了一个场景 我们在代码末尾渲染了一次 这已经是不错的进步了 但大多数时候 您会想要为您的作品制作一些动态效果动画 使用 Three js 时 动画效果类似于定格动画 您移动对象 然后进行渲染 然
  • 3、OC运算符优先级

    OC运算符有以下几种 1 算术运算符 2 赋值运算符 lt lt gt gt 3 比较运算符 gt lt gt lt 4 逻辑运算符 5 位运算符 lt lt gt gt 6 类型相关运算符 运算符优先级如下 优先级 运算符 名称或含义
  • QML(一):自定义圆角按钮的处理

    设计自己的按钮作为组件使用 1 设置相关属性 供外部组件调用时 直接更改属性改变组件样式 定义不同圆角状态下的按钮 enum Style NormalButton LowRoundCornerButton HighRoundCornerBu
  • 分页页码的前端显示的实现

    分页页码的前端显示实现 效果说明 准备做分页的时候滚回去找了一下之前写过的demo结果被自己写的丑哭了 大概长这样 主要是不符合现在一般网站的跳转习惯 自己用着都觉得不方便 所以重新写了一下新的分页的前端 顿时觉得舒服了许多 js思路 首先
  • 用python爬取网站小说,帮你们省下会费

    第一步 导库 import requests from lxml import etree 第二步 请求头 headers User Agent Mozilla 5 0 Windows NT 6 1 Win64 x64 AppleWebKi
  • androidstudio无法真机安装debug包 android无法安装debug包 oppo vivo

    1 adb 无法安装debug包 adb install t apk path 绝对路径 2 android stduio 连接设备 点击run 安装失败 1 在application 节点下新增android testOnly true
  • 腾讯mini项目-【指标监控服务重构】2023-07-19

    今日已办 OpenTelemetry Logs 通过日志记录 API 支持日志收集 集成现有的日志记录库和日志收集工具 Overview 日志记录 API Logging API 允许您检测应用程序并生成结构化日志 旨在与其他 teleme
  • 输入IP使用JDBC读取数据库信息并返回具体地址

    思路分析 定义连接类 连接数据库 定义properties 存放mysql信息 读取properties 注册驱动 获取连接 定义测试类 运行主程序 定义输入类 检测控制台输入 定义正则表达式 对输入的ip进行判断 判断通过则调用核心逻辑
  • c++利用libcurl获取http网页的 response headers 等信息

    参考 http www update8 com Program C 26438 html libcurl 7 32 0下载地址 http download csdn net detail chuanyu 9226175 demo下载地址 h
  • 摘要(Hash)算法总结

    数据摘要算法具有不可逆性 其主要功能有数据签名 数据完整性校验等 下面介绍常见的数据摘要算法 一 CRC8 CRC16 CRC32 CRC Cyclic Redundancy Check 循环冗余校验 算法出现时间较长 应用广泛 尤其是通讯
  • 机考[21-30]

    华为机考 021 喊7的次数重排 022 猴子爬山 023 滑动窗口最大和 024 火星文计算 025 计算面积 026 计算最大乘积 027 检查是否存在满足条件的数字组合 028 矩阵扩散 029 矩阵最大值 030 考勤信息 021
  • Vue3子组件向父组件传值

    需要用到emit 举个栗子 比如希望子组件 newHeader vue 向父组件 news vue 传labelId 子组件中先定义一个函数 用于传值 以下是写在子组件 newHeader vue 中的代码 其中 getLabelId是在子
  • unity更改帧率的方法

    介绍 unity更改帧率的方法 方法一 通过编辑器更改帧率 a 在Unity编辑器中 选择 Edit 编辑 菜单 然后选择 Project Settings 项目设置 b 在 Project Settings 中选择 Time 时间 选项卡
  • Python解释器以及PyCharm的安装

    通过CSDN上 大神写的教程 安装了PyCharm 现自己总结Python解释器安装以及PyCharm安装过程 一 Python解释器安装 解释器 英语 Interpreter 又译为直译器 是一种电脑程序能够把高级编程语言一行一行直接转译
  • python中__call()__函数和TensorFlow中call()函数的区别

    在使用python的时候 经常用到python中的特殊函数 call 函数 但是学习TensorFlow的时候 又会看到自定义模型的时候 经常用call 函数 不懂他们之间的区别 python中的 call 函数和TensorFlow中的c
  • Switch NS 通过华硕梅林路由DNSMASQ屏蔽任天堂服务器

    好吧 我是把我的古董NS机给大气层了 今天来说下如何通过dnsmasq把任天堂的服务器给屏蔽了 虽然我还没有测试过这个屏蔽是否能够避免BAN机 作者免责声明 本文以下内容不对其有效性 安全性 可靠性负责 利用本文所提出的技术内容产生的一切正
  • 【KubeEdge V1.10.0安装】Vmware Workstation17pro、CentOS 7系统、keadm教程

    因为个人原因需要使用虚拟机搭建kubeedge 之前成功装过一次 但是未记录安装步骤 后续虚拟机崩了 需要重新安装 本文仅为整理记录 安装主要参考文章链接如下 http t csdn cn sMnFa PS 吐槽一下1 7版本 cloudc
  • 接口测试(一)

    目录 1 接口的定义 2 接口的类型 3 接口测试的类型 4 web接口测试 4 1 Web 接口测试的方法 4 2 Web 接口的测试点 接口测试的准备 用工具postman进行web测试 实战一之登录接口 实战二之支付接口 实战三发送红