接口测试的简介及测试用例的设计

一,什么是接口

        接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

二,接口的作用

        作为一个互联网公司,很多资源和信息需要内部共享或外部流通,那相关的数据就需要通过接口来传输。

三,接口理解

        API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。

        站在非研发角度可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数。

        站在研发角度:

        接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。 

        接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。

四,接口工具

        1,postman   ---> Postman 的应用

是谷歌开发的一款接口测试软件,它使用简单,功能强大,能够发送任何类型的HTTP请求 (GET, HEAD, POST, PUT..),可以进行文件上传、响应验证、变量管理、环境参数管理,还可以批量管理和运行用例,并支持用例导出、导入,可以进行接口的自动化测试。

缺点是自动化断言不够强大,不能和jenkins、代码管理库进行持续集成测试。

       2,jmeter 

 是一款100%纯Java编写的免费开源工具,主要用来做性能测试,但也可以做接口测试,配合后置处理器与断言,可以满足大部分的接口测试场景,JMeter提供了BeanShell编程能力,可以写出比较灵活的测试脚本,通过jmeter+ant+jenkins可以实现接口和性能自动化测试。

        3,soapUI 

是一个开源测试工具,通过soap/http来检查、调用,实现Web Service的接口和性能测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。

五,接口的样子

        1,可以参照微信小程序开发APIhttps://developers.weixin.qq.com/miniprogram/dev/api/

        2,下图讲解接口的扭转

六,接口文档

        接口说明:

          接口功能:本接口用于获取用户的token信息 ---登录。

          接口请求地址:

https://xingzoushamodewoniu.com/long/api/login

            请求头 :

请求头请求方式说明
Content-Typeapplication/json请求方式

        请求方式: POST

        参数类型 :JSON

        请求示例:绝大多数为json,格式自定

{
  "account": "小白龙",
  "password": "123456",
  "clientId": "long",
  "responseType": "code"
}

       请求参数说明

字段名字段说明字段类型是否必填
account用户名varchar(30)
password密码int(15)
clientId客户编号varchar(50)
responseType响应类型varchar(50)

  响应示例

        成功响应编码:

{
  "code": "200",
  "message": "OK",
  "data": {
    "code": "4dd529b3-c4b0-4066-a363-742c5b6b6e74_generate_token",
    "accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiJVNjA3NkIwMTI0Q0VERkQwMDAxMTdFREU3IiwiZXhwIjoxNjM5NDY1NzYzLCJpYXQiOjE2MzkyMDY1NjN9.ZHkW6j6rfbyyRQ5ZSRW_Z1nRTiYqyiWgSINBEZA99UMw92H1eiy4JxxC6n3AIAcE3Y9j_p8ZNTtJWIsSlsFbOZfmAuOr2ih4oR0tpjCWLU1UTesVmn7tCkeTpbmjeNJolcd4X7knKIKuXyi88SC6ZIhMJRE1ZTI3eK4hJUCi6Rx50lcHvjV_HX2ZHqEly5wqvr_jQ0ZWXquNlGTrPRXofQ6cLawVea8Z_EnXermECQrjWpRelhKYyl2hlqGd48n46avHFAaxp3UZhy1TeE_xeLxYMaBOpUADcPaezSj2Q_Qbq4T24w83iV2JwGAKAVPMQgBjn68IYuucS-j7fxXqFQ",
    "accountId": "U6076B0124CEDFD000117EDE7"
  },
  "extra": null
}

响应参数说明

接口返回码接口返回描述
200成功
201请求参数错误
202密码错误

七、抓包工具抓取接口

        借助工具(Fiddler、Charles、Proxyman、Wireshark、Tcpdump、控制台{F12})抓取以下内容

General

Request URL: https://xingzoushamodewoniu.com/long/api/login

Request Method: POST

Status Code: 200 OK

Remote Address: 127.0.0.1:7367

Referrer Policy: strict-origin-when-cross-origin

Response Headers
Access-Control-Allow-Origin: *

Connection: keep-alive

Content-Encoding: gzip

Content-Type: application/json; charset=utf-8

Date: Sat, 11 Dec 2021 07:14:39 GMT

Server: openresty

Set-Cookie: ac=ed09abaa400c19fff38a588d6c412c21; expires=Sun, 11-Dec-2022 07:14:39 GMT; Max-Age=31536000; path=/

Transfer-Encoding: chunked

Vary: Accept-Encoding

X-Powered-By: PHP/7.1.12

X-RateLimit-Limit-second: 80000

X-RateLimit-Remaining-second: 79004

Request Headers
Accept: application/json, text/plain, */*

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

Connection: keep-alive

Content-Length: 134

Content-Type: application/x-www-form-urlencoded

Host: qac-qupost.qutoutiao.net

Origin: https://mp.qutoutiao.net

Referer: https://mp.qutoutiao.net/

sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "macOS"

Sec-Fetch-Dest: empty

Sec-Fetch-Mode: cors

Sec-Fetch-Site: same-site

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36

Form Data
{

"account": "小白龙",

"password": "123456",

"clientId": "long",

"responseType": "code"

}

Response
{

"code": "200",

"message": "OK",

"data": {

"code": "4dd529b3-c4b0-4066-a363-742c5b6b6e74_generate_token",

"accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiJVNjA3NkIwMTI0Q0VERkQwMDAxMTdFREU3IiwiZXhwIjoxNjM5NDY1NzYzLCJpYXQiOjE2MzkyMDY1NjN9.ZHkW6j6rfbyyRQ5ZSRW_Z1nRTiYqyiWgSINBEZA99UMw92H1eiy4JxxC6n3AIAcE3Y9j_p8ZNTtJWIsSlsFbOZfmAuOr2ih4oR0tpjCWLU1UTesVmn7tCkeTpbmjeNJolcd4X7knKIKuXyi88SC6ZIhMJRE1ZTI3eK4hJUCi6Rx50lcHvjV_HX2ZHqEly5wqvr_jQ0ZWXquNlGTrPRXofQ6cLawVea8Z_EnXermECQrjWpRelhKYyl2hlqGd48n46avHFAaxp3UZhy1TeE_xeLxYMaBOpUADcPaezSj2Q_Qbq4T24w83iV2JwGAKAVPMQgBjn68IYuucS-j7fxXqFQ",

"accountId": "U6076B0124CEDFD000117EDE7"

},

"extra": null

}

以上是通过抓包工具或者浏览器的控制台(检查、F12)中获取的数据,这个接口经过了上图的流程,最终实现登录成功。

八,接口用例设计

        接口测试的原理就是模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程。

     接口测试采用的方法其实与黑盒测试一致的,甚至可以把接口测试理解为没有界面的功能测试。只不过接口测试的测试点更多一些,除了界面上需要验证的各种功能点,还包括接口的安全、接口的性能等。

        一般测试用例的设计要从单接口参数的校验到整个业务功能点的验证,还可以验证一些安全性和异常情况。

接口用例设计点基本原则如下:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/213598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《python每天一小段》--(1)与GPT-3.5-turbo 模型进行对话

对话如图: 配置环境变量 APIKey如何获得这边不做说明 在Windows操作系统中,你可以按照以下步骤设置环境变量: 打开“控制面板”。在控制面板中,选择“系统和安全”。选择“系统”。在系统窗口中,选择“高级系统设置”…

6-3 求3*3整数矩阵对角线元素之和

#include<stdio.h>int main(){int a[3][3],sum0;int i ,j;printf("输入元素&#xff1a;\n");for(i0;i<3;i)for(j0;j<3;j)scanf("%d",&a[i][j]);for(i0;i<3;i)sumsuma[i][i];printf("总和为&#xff1a;%d",sum);return 0;}

Python:私人定制密码保险库 - Vault

简介&#xff1a;Vault是一种用于安全访问机密的工具。秘密是您想要严格控制访问权限的任何内容&#xff0c;例如API密钥、密码、证书等等。Vault为任何机密提供了统一的界面&#xff0c;同时提供了严格的访问控制并记录了详细的审核日志。 历史攻略&#xff1a; Python&…

C++基础 -36- 模板之模板函数

模板函数格式 template <class T> void allexchange(T a,T b) {T c;c*a;*a*b;*bc; }模板函数可以增强函数的通用性 举例说明&#xff0c;使用一个模板函数实现了两个的函数的功能 #include "iostream"using namespace std;void myexchangeint(int* a,int* …

Mac卸载、安装Python

卸载 说明 对于删除 Python&#xff0c;我们首先要知道其具体都安装了什么&#xff0c;实际上&#xff0c;在安装 Python 时&#xff0c;其自动生成&#xff1a; Python framework&#xff0c;即 Python 框架&#xff1b;Python 应用目录&#xff1b;指向 Python 的连接。 …

【Tkinter 入门教程】

【Tkinter 入门教程】 1. Tkinter库的简介&#xff1a;1.1 GUI编程1.2 Tkinter的定位 2. Hello word! 程序起飞2.1 第⼀个程序2.2 字体颜色主题 3. 组件讲解3.1 tkinter 的核⼼组件3.2 组件的使⽤3.3 标签Label3.3.1 标签显示内容3.3.2 多标签的应⽤程序3.3.3 总结 3.4 按钮but…

leetcode 201 数字范围按位与

leetcode 201 题目题解代码 题目 给你两个整数 left 和 right &#xff0c;表示区间 [left, right] &#xff0c;返回此区间内所有数字 按位与 的结果&#xff08;包含 left、right 端点&#xff09;。 具体示例如下&#xff1a; 题解 本题是一个在思维上的方法&#xff0c;不…

Ant Design Pro 框架设置API Token拦截器的功能

分享记录一个解决方法&#xff0c;希望对大家有帮助。 找到文件&#xff0c;然后定义一个方法。最后调用一下即可。 代码我也给你贴上了。 // 获取token 拦截方法 const setTokenRequest (config: any) > {const token 30|eh5GNXWRe5rO4XLjbbnqy132RABfiKqI338EoIhqc790a…

sourceTree的下载和安装

sourceTree的下载和安装 一、概述 SourceTree 是一款免费的 Git 和 Hg 客户端管理工具&#xff0c;支持 Git 项目的创建、克隆、提交、push、pull 和合并等操作。它拥有一个精美简洁的界面&#xff0c;大大简化了开发者与代码库之间的 Git 操作方式&#xff0c;这对于不熟悉 …

java学习part32StringBuffer和StringBuilder

Java中的值传递和引用传递&#xff08;详解&#xff09; - 知乎 (zhihu.com) 146-常用类与基础API-StringBuffer与StringBuilder的源码分析、常用方法_哔哩哔哩_bilibili 1. 2.扩容机制 不够用&#xff1a;长度为 原长度*22&#xff1b;如果还不够&#xff0c;那么就扩容到目…

STM32踩坑--串口发送乱码

一、发现问题 今天在STM32F407新板子上测试串口时&#xff0c;发现发送数据一直乱码。 二、解决问题 针对STM32F407系列校准PLLCLK时钟&#xff1a; ①由 时钟树 可以看出PLLCLKHSE&#xff08;高速外部时钟&#xff09;*N/(M*P)。因为SYSTICK一般取最高的时钟168M&#xff…

【Linux】第二十五站:深入理解文件系统

文章目录 一、前言二、认识硬件----磁盘1.基本介绍2.磁盘的存储构成3.磁盘的逻辑结构4.回归到硬件 三、文件系统1.划分2.Block group(1)Data blocks(2)inode Table(3)Block Bitmap(4)inode Bitmap(5)Group Descriptor Table(GDT)(6)Super Block 3.总结4.一些其他问题5.如何理解…

C语言--求一个十进制整数中1的个数

一.题目描述⭐ 求一个十进制整数中1的个数 比如&#xff1a; 输入:10201 输出&#xff1a;2 &#xff08;这个数字中1的个数是2&#xff09; 二.思路分析⭐ 数字类的问题我们可以用取模&#xff0c;或者取余运算。 首先定义一个计数器&#xff0c;用来统计1的个数。 输入数字…

《管家婆》辉煌2005+(V4.0)简单教程

《管家婆》辉煌2005&#xff08;V4.0&#xff09;简单教程 呉師傅 运行环境&#xff1a;   操作系统推荐使用Win2000&#xff08;32位&#xff09;、WinXP&#xff08;32位&#xff09;、Win7&#xff08;位&#xff09; 兼容&#xff1a;Win7&#xff08;64位&#xff09…

【毕业设计】基于雷达与深度学习的摔倒检测——微多普勒效应

运动物体的微多普勒效应为人体动作识别提供了可能&#xff0c;基于雷达的居家检测具有良好的隐私保护性&#xff0c;且不易受环境因素影响&#xff08;如光照、温度等&#xff09;&#xff0c;近年来已受到国内外学者的广泛关注。由于雷达信号的非平稳特性&#xff0c;通过短时…

html电子签名

html电子签名 html5实现手写签名板&#xff0c;点击保存即可生成base64格式的图片 使用H5自带的canvas&#xff0c;无需引入js无需引入别的js 效果图 html代码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"…

最大乘积分解(动态规划)

相较于我上一题写的动态规划&#xff0c;这一题比较简单 代码如下&#xff1a; #include<stdio.h>int main(void) {long long n, max[101] {0, 1};scanf("%lld", &n);for(int i 1; i < n; i)max[i] i;for(int i 1; i < n; i)for(int j 1; j &…

java蚁群算法的物流管理系统eclipse定制开发mysql数据库BS模式java编程百度地图

一、源码特点 java 基于蚁群算法的物流管理系统是一套完善的web设计系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&a…

[linux进程控制]进程替换

文章目录 1.进程替换的概念和原理2.如何完成进程替换2.1exec系列函数加载器的底层系统调用接口基于execve的封装--库函数 2.2 int execl(const char *path, const char *arg, ...);1.在当前进程进行替换2.在子进程进行替换 2.3 int execv(const char *path, char *const argv[]…

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法&#xff0c;在逐一实践、踩坑后&#xff0c;最终还是敲定采用 JNI 方式进行实现。在文章开始的过程&#xff0c;会先大概讲讲笔者遇到的情况&#xff0c;因为封装方式需要根据实际…
最新文章