轻松掌握接口测试!丰富你的测试技能!

news2025/1/13 7:57:58

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

简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。

为什么要做接口测试?

1.越底层发现bug,它的修复成本是越低的。

2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

6. 现在很多系统前后端架构是分离的,从安全层面来说:

(1)只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

接口测试原理

通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request(请求)→response(响应))

划重点!怎样做接口测试?

--由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

--也可以用接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。所以我们下面整理了一下使用Jmeter工具进行http接口测试。

1 开发接口测试案例的整体方案

第一步: 分析出测试需求,并拿到开发提供的接口说明文档;

第二步: 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;

第三步: 和开发一起对接口测试案例进行评审;

第四步: 结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件;

第五步: 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。

2 接口自动化适用场景

目前设计的自动化接口测试案例有两个运行场景:

(1)测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)

(2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

3 接口测试环境准备

Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Jmeter, 下载地址:http://jmeter.apache.org/download_jmeter.cgi

插件的下载安装地址: http://www.jmeter-plugins.org/

4 创建工程

①打开Jmeter:下载好Jmeter后,双击bin目录下的jmeter.bat文件: 

②添加线程组:在“测试计划”上点击鼠标右键-->添加-->threads(Users)-->线程组,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”。

③添加“HTTP Cookie管理器”:

④添加“Http请求默认值”组件,当被测系统有唯一的访问域名和端口时,这个组件很好用:

⑤在“HTTP 请求默认值”组件配置页面,填写被测系统的域名和端口,http请求的实现包版本以及具体协议类型,线程组里的所有“HTTP Sampler”可默认使用此设置。

⑥在“线程组”里添加“HTTP 请求”的Sampler

⑦在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表:

⑧设置检查点:在被测接口对应的“HTTP 请求”上,添加“响应断言”: 

⑨在设置页面上添加对相应结果的正则表达式存在性判断即可:

⑩添加监听器:方便查看运行后的结果

运行结果:  

上述步骤完成了一个简单测试案例的创建,复杂测试案例均在此基础上扩展完成。使用Jmeter工具开发的接口测试案例,一个子系统建议放在同一个 “测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。比较独立的接口,可以统一放在一个线程组内,顺序完成测试。

流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。

接口测试持续集成

对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等

c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

d) 结果校验:加强自动化校验能力,如数据库信息校验。

e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

接口测试质量评估标准

a) 业务功能覆盖是否完整

b) 业务规则覆盖是否完整

c) 参数验证是否达到要求(边界、业务规则)

d) 接口异常场景覆盖是否完整

e) 接口覆盖率是否达到要求

f) 代码覆盖率是否达到要求

g) 性能指标是否满足要求

h) 安全指标是否满足要求

到这里,我们就完成了接口测试自动执行并生成报告的设置,然而,这并不是大结局,接口测试是一个需要长期维护的工作,大家还要定期增减接口,避免接口测试和系统脱节。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dfs图遍历 LeetCode1466. 重新规划路线

n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。 路…

阿里云效部署前后端

静态站点到OSS 阿里云-云效,阿里云企业级一站式 DevOps,可以免费使用(会限制人数、流水线数量等,个人项目够用了)。相关文章 CI 持续集成 - 阿里云云效 OSS 是对象存储的意思,一般一个项目对应一个 Bucke…

UE5像素流实现

1.下载像素流插件(Pixel Streaming),勾选之后重启UE 2.设置额外启动参数(-AudioMixer -PixelStreamingIPlocalhost -PixelStreamingPort8888) 3.项目打包 4.创建项目启动快捷方式(Alt鼠标左键按住XXX.exe文件拖动) 5.快捷方式文件 配置项目运行文件参数(…

DC电源模块在新能源产业中的应用前景

BOSHIDA DC电源模块在新能源产业中的应用前景 随着新能源产业的不断发展,DC电源模块的应用前景越来越广泛。BOSHIDA DC电源模块是一种具有稳定、高效、可靠的电源输出的电源模块,它能够将电源输入电压转换为可靠的直流电源输出,广泛应用于太…

学习Python能给我们带来什么?有什么帮助?

文章目录 前言学习Python能做什么1、抓取各类数据、文本等信息2、批量清洗和处理数据3、提供可视化工具4、进行深度学习 Python的用途有哪些普通人学习python有什么好处关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python…

【LeetCode】2621. 睡眠函数

睡眠函数 Promise异步 题目题解 题目 请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值。 示例 1: 输入:millis 100 输出:100 解释: 在 100ms 后此异步…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载,大家可自行查看 然后就是需要植物大战僵尸的素材和音乐,需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

20、XSS——XSS跨站脚本

文章目录 一、XSS漏洞概述1.1 XSS简介 二、XSS漏洞分类2.1 反射型XSS2.2 存储型XSS2.3 DOM型XSS 三、XSS payload构造以及变形3.1 XSS payload构造3.2 XSS payload 变形 一、XSS漏洞概述 1.1 XSS简介 XSS被称为跨站脚本攻击(Cross-site scripting)&…

Chrome浏览器禁止更新策略

在做爬虫过程中,需要用到Selenium驱动浏览器去做动态爬虫 这里我一般用到的是Chrome谷歌浏览器进行爬虫 但是,目前python和Chrome浏览器适配最好的是110.版本 尽管我用了很多种方法 去取消浏览器自动更新 但是 过一段时间 浏览器总是会自动更新到最新…

【分享】拖拽式表单的优点有哪些?

如果说想要提升办公效率,那么就可以试试拖拽式表单了。它拥有可视化、拖拽式操作、易维护等优势,可以在现代化办公操作中帮助企业节省人工成本费用,提高办公效率,真正实现办公流程化应用,让数字化转型升级的梦想早日实…

pandas详细笔记

一:什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二:索引 三:切片 位置索引切片(左闭…

Qt之基于QMediaPlayer的音视频播放器(支持常见音视频格式)

Qt自带了一个Media Player的例子,如下图所示: 但是运行这个例子机会发现,连最基本的MP4格式视频都播放不了。因为QMediaPlayer是个壳(也可以叫框架),依赖本地解码器,视频这块默认基本上就播放个MP4,甚至连MP4都不能播放,如果要支持其他格式需要下载k-lite或者LAVFilte…

软件开发安全指南

2.1.应用系统架构安全设计要求 2.2.应用系统软件功能安全设计要求 2.3.应用系统存储安全设计要求 2.4.应用系统通讯安全设计要求 2.5.应用系统数据库安全设计要求 2.6.应用系统数据安全设计要求 软件开发全资料获取:点我获取

彻底解决org.gradle.api.artifacts

需求背景 最近在使用android studio导入hbuilder的HBuilder-Integrate-AS工程时候报错,错误消息如下两种。 错误描述 第一种 Failed to notify dependency resolution listener. void org.gradle.api.artifacts.DependencySubstitutions$Substitution.with(org.g…

富时中国A50指数暴跌

近年来,中国股市的波动一直备受关注,而富时中国A50指数更是其中一项备受瞩目的指标之一。然而,近期却出现了一场引人瞩目的暴跌,引发了广泛的关注和讨论。 富时中国A50指数简介 富时中国A50指数,作为富时罗素指数系列…

OpenCV交叉编译

1.下载代码解压 tar -zxvf opencv-4.8.1.tar.gz cd cd opencv-4.8.1 sudo mkdir chmod 777 build cd build 2.配置交叉编译工具 根据自己的板子进行修改 -D CMAKE_C_COMPILERaarch64-mix210-linux-gcc -D CMAKE_CXX_COMPILERaarch64-mix210-linux-g 3.cmake生成makefi…

算法初阶双指针+C语言期末考试之编程题加强训练

双指针 常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般⽤于顺序结构中,也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼…

python学习之JSON数据处理在Python中的应用:从解析到生成

JSON文件是一种轻量级的数据交换格式,它采用了一种类似于JavaScript语法的结构,可以方便地在不同平台和编程语言之间进行数据交换。在Python中,我们可以使用内置的json模块来读取和写入JSON文件。 下面是一个简单的示例,展示了如…

Linux C语言 39-进程间通信IPC之管道

Linux C语言 39-进程间通信IPC之管道 本节关键字:C语言 进程间通信 管道 FIFO 相关库函数:pipe、mkfifo、mknod、write、read 什么是管道? 管道通常指“无名管道”,是Unix系统中最古老的IPC通信方式。 管道的分类 管道&#…

高精度加法,减法,乘法,除法(上)(C语言)

前言 加,减,乘,除这些运算我们自然信手捏来,就拿加法来说,我们要用c语言编程算ab的和,只需让sum ab即可,可是这是局限的,我们都知道int的表示的最大值为2147483647(32位…