用JMeter自动化测试实现高效稳定的接口测试方案!

news2024/12/23 2:33:56

目录

前言:

1. 接口与接口测试

1.1 接口概述

1.2 接口测试

2. 基于JMeter的接口测试

2.1 JMeter概述

2.2 用JMeter实现接口测试

3. 基于JMeter的接口自动化测试

3.1 接口自动化测试基础

3.2 使用JMeter进行接口自动化测试

总结


前言:

接口是指不同系统之间相互通讯的一种约定。它的使用大大简化了系统之间的整合,提高了系统整体运行效率。作为现代软件开发的重要一环,接口测试以及基于JMeter的接口自动化测试也越来越受到重视。本文将介绍接口测试与JMeter自动化测试的相关知识,并实现接口测试与基于JMeter的自动化测试。

1. 接口与接口测试

1.1 接口概述

接口是指软件系统中不同组件、模块之间相互通讯和交互的一种约定。在接口约定中,各个组件都承担了各自的职责,使得整个系统的各个部分能够高效地协同工作,性能更加优异,开发和维护成本也得到了大大的优化。

1.2 接口测试

接口测试是指通过请求接口,获取响应并进行验证来确定接口所实现的功能是否正确、性能是否达标或者是否存在异常情况。这种测试方式简明高效,能够大幅提高测试效率,降低开发成本。

接口测试的范围包括接口的请求和响应是否与接口规范一致(如数据格式、通信协议等),接口能否正确处理输入数据并得到正确输出结果,接口能够很好地适应系统的并发和负荷。

2. 基于JMeter的接口测试

2.1 JMeter概述

Apache JMeter是一款开源的 Java 测试工具。它由 Apache Jakarta 项目组开发。 JMeter 广泛用于对静态及动态资源进行性能测试,例如:Web 应用、 Web 服务或 FTP 服务器。 JMeter 支持录制测试脚本,使用的协议包括 HTTP、FTP、SOAP、JMS等。

2.2 用JMeter实现接口测试

以下是使用JMeter实现接口测试的示例。

1) 创建测试计划

在测试计划中添加线程组,线程组代表一个用户群体,可配置虚拟用户、并发量和测试时间等。

2) 添加Http请求

在线程组中添加Http请求,输入接口请求地址及请求方式(GET/POST等)。

3) 配置请求参数

在Http请求中添加参数,一般为接口所需的参数(请求头或请求体)。可以通过手动输入或从文件中获取参数。

4) 配置断言

在Http请求中添加断言,用于断言响应结果是否符合预期。例如,响应状态码是否正确、返回数据是否满足特定规则等。

5) 运行测试

完成测试计划的设置后,可以使用JMeter的测试运行功能进行测试。在测试结果中可以查看Http请求的响应结果、响应状态码及断言结果等。

3. 基于JMeter的接口自动化测试

3.1 接口自动化测试基础

接口自动化测试是指通过自动化工具实现接口测试的一种方式,将测试工作从人工转移到计算机上,极大地提高了效率和稳定性。自动化测试可以通过在多种环境中重复执行同一套测试用例,发现项目中的一些潜在问题,提供测试人员在开发路径上的支持。

3.2 使用JMeter进行接口自动化测试

使用JMeter进行接口自动化测试可以实现对大规模接口进行自动化测试,可以节省大量人力和时间。以下是使用JMeter进行接口自动化测试的步骤:

1) 组织测试计划

与上述内容中相同,需要先创建测试计划,添加线程组、HTTP请求以及配置请求参数和断言等。

2) 添加定时器

在线程组中添加定时器,用于控制请求的时间间隔,模拟真实的压力测试情况。

3) 添加前置处理器

前置处理器可用于在接口请求之前,执行一些外部操作,例如读取文件或者数据库内容等。在JMeter中,前置处理器可以是BeanShell、JavaScript或者正则表达式等。

4) 执行测试计划

在JMeter中,可以将测试计划导出为JMX文件,方便复用和管理。执行测试计划时,可以通过控制台输出或者图形化界面查看测试结果。

5) 结合CI/CD工具进行持续集成

结合CI/CD工具,将JMeter自动化测试集成到整个开发流程中,可以自动触发测试任务,避免人为操作失误,提高整个流程的稳定性。

以下是基于JMeter的接口自动化测试示例:

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.SetupThreadGroup;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

public class JMeterAutomationTest {
    public void runJMeterAutomationTest() {
        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("/path/to/your/jmeter");

        HashTree testPlanTree = new HashTree();

        HTTPSampler httpSampler = new HTTPSampler();
        httpSampler.setDomain("www.example.com");
        httpSampler.setPath("/api/endpoint");
        httpSampler.setMethod("GET");

        SetupThreadGroup threadGroup = new SetupThreadGroup();
        threadGroup.setNumThreads(10);
        threadGroup.setRampUp(5);
        threadGroup.setSamplerController(httpSampler);

        TestPlan testPlan = new TestPlan("JMeter Automation Test Plan");

        testPlanTree.add(testPlan);
        testPlanTree.add(testPlan, threadGroup);

        jmeter.configure(testPlanTree);
        jmeter.run();
    }
}

以上代码使用JMeter API进行了API自动化测试。它创建一个HTTPSampler,配置了请求的域名、路径和请求方式。创建SetupThreadGroup,设置线程数和增长时间。最后将TestPlan和线程组添加到测试计划中,并通过JMeter引擎执行测试。 

总结

本文介绍了接口的概念及接口测试的必要性,详细阐述了使用JMeter进行接口测试和基于JMeter进行接口自动化测试的流程与示例。JMeter是一款功能强大的接口自动化测试工具,在自动化测试中,可以极大地提高测试效率和稳定性,提供更加精准高效的测试结果,避免人工操作失误。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

方式:留【自动化测试】即可
【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=CSnXa0x6zTzjOb4Z0FLmUbeskkowthOr&authKey=zDe4tx7K%2BoWwzlLU05HRlHj0Nh2K03hagwzoY5zf51pvKdoBKLpaNpLxLmESQZN1&noverify=0&group_code=574737577

 

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

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

相关文章

(字符串) 541. 反转字符串 II——【Leetcode每日一题】

❓541. 反转字符串 II 难度:简单 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大…

【dns awsl】RedHat8配置DNS服务器

文章目录 一、安装 配置DNS验证 一、安装 配置DNS 安装 sudo dnf install bind bind-utils配置named.conf 指定正向解析和反向解析的所需文件 vim /etc/named.conf在文件中找到options部分,并进行如下修改:options {listen-on port 53 { any; };allow…

day02——特征工程之特征提取

特征工程之特征提取 一、什么是特征工程二、特征提取1,字典特征提取2,文本特征提取(1)英文文本特征提取(2)中文文本特征提取(3)Tf-idf 文本特征提取 一、什么是特征工程 特征工程是…

CRM和SCRM有什么区别?

首先讲下CRM是什么?光是概念就有7个之多: 提出者概念GartnerGroupCRM是一种商业策略,它按照客户的分类情况有效地组织企业资源,培养以客户为中心的经营行为以及实施以客户为中心的业务流程,并以此为手段来提高企业的赢…

低代码平台安全性探究:解析低代码平台的安全性及应对措施

近年来,低代码平台由于能够以最少的代码快速开发应用程序而变得越来越流行。然而,随着数据泄露和网络威胁的增加,企业有理由质疑低码平台是否安全。在本文中,我们将探讨低代码平台安全吗? 一、低码平台如何工作。 在我…

集成websocket实现实时通信(ruoyi 使用笔记)

集成websocket实现实时通信(ruoyi 使用笔记 1.简单介绍WebSocket2.详细代码2.1WebSocketConfig2.2 SemaphoreUtils2.3 WebSocketServer2.4 WebSocketUsers2.5 html2.6 vue版本前端代码2.7 controller 1.简单介绍WebSocket Websocket 是一种基于 TCP 协议的全双工通信协议&#…

加油站“变身”快充站,探讨充电新模式

摘要:新能源汽车规模化发展的同时,充电不便利的痛点愈发明显。在未来的新能源汽车行业发展当中,充电的矛盾要远远大于造车的矛盾,解决好充电的问题成为电动汽车行业发展的一个突出问题。解决充电补能问题,重要的方式之…

自动化测试还是手动测试?深度探讨Web自动化测试的利与弊,精准性和可靠性抉择应如何。

目录 前言: 1. 自动化测试的价值 2. 自动化测试的瓶颈 总结 前言: 随着互联网的飞速发展,Web应用越来越成为我们日常工作和生活中必不可少的一部分。这也就意味着,Web应用的质量和稳定性变得至关重要。而Web自动化测试作为保…

87.建立主体页面-第三部分

上节我们完成的页面如下: ● 我们预计在按钮下面放置一些用户案例 去年我们送了25万多份餐品! ![在这里插入图片描述](https://img-blog.csdnimg.cn/c71d57199b834a8c9763a345939adc5d.png) ● 我们将这些图片文字以flex布局方式排列摆放 .delivered-meals {dis…

ebpf代码编写小技巧

查看所有tracepoint perf list perf追踪tracepoint perf trace --no-syscalls --event net:*查看tracepoint的具体参数 sudo python3 /usr/share/bcc/tools/tplist -v net:napi_gro_receive_entry cat /sys/kernel/debug/tracing/events/net/netif_rx/format内核vmlinux.h生…

Zinx框架学习 - 链接封装与业务绑定

Zinx - V0.2 链接封装与业务绑定 之前的v0.1版本,已经实现了一个基础的Server框架,现在需要对客户端链接和不同的客户端链接锁处理的不同业务再做一层接口封装在ziface下创建一个属于链接的接口文件iconnection.go,znet下创建文件connection…

异步利刃CompletableFuture

什么是CompletableFuture? CompletableFuture 类实现了 Future 和 CompletionStage 接口并且新增了许多方法,它支持 lambda,通过回调利用非阻塞方法,提升了异步编程模型。简单来说可以帮我们实现任务编排。【文中所有代码已上传码云】 Com…

程序员必修必炼的设计模式之工厂模式

本文首发自「慕课网」(www.imooc.com),想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号! 作者:李一鸣 | 慕课网讲师 工厂模式是平时开发过程中最常见的设计模式…

15.3:最多做K个项目,初始资金是W,返回最大资金

输入正数数组costs、正数数组profits、正数K和正数M costs[i]表示i号项目的花费 profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润) K表示你只能串行的最多做k个项目 M表示你初始的资金 说明:每做完一个项目,马上获得的收益,可以支持你…

FP独立站支付渠道市场逐渐向好!信用卡和AB轮询哪个好?

之前一篇文章写过品牌方使用ChatGPT技术检测FP网站,对FP独立站的收款起到了很大的影响。今天是6月的第一天,我为各位带来了一个好消息!那就是在过去的3-5月份,信用卡收款实行整顿,目前支付渠道都有所松动。例如&#x…

好孩子福利|Sup游戏机,一秒回到童年

这份六一礼物对儿童来说有点幼稚,但对程序员刚刚好~ ​ Sup 游戏机,一秒回到童年! 到底有多好玩呢?可以参考 B 站试玩视频! 太火鸟好物推荐——掌上游戏机sup 参加流程: STEP 1:扫…

以太网——MDIO(SMI)接口的FPGA实现

在 MAC 与 PHY 之间,有一个配置接口,即 MDIO(也称 SMI,Serial Management Interface),可以配置 PHY 的工作模式、获取 PHY 芯片的工作状态等。本文以 PHY 芯片 B50610 为例,实现 MDIO 接口&…

NUC972 Linux学习 NAND FLASH 制作系统

设备:NUC972DF61YC 使用的虚拟机环境:官方提供的NUC972DF61YC - Nuvoton 板载NAND FLASH,前期主要学习怎么uboot、ubootspl、uimage、env烧录。官方配置没有使用rootfs在flash中,所以数据会掉电丢失。即文件系统在RAM中。 这里仅…

基于Jackson实现API接口数据脱敏

一、背景 用户的一些敏感数据,例如手机号、邮箱、身份证等信息,在数据库以明文存储(加密存储见《基于Mybatis-Plus拦截器实现MySQL数据加解密》), 但在接口返回数据给浏览器(或三方客户端)时&a…

设计一个支持并发的前端接口缓存

目录​​​​​​​ 缓存池 并发缓存 问题 思考 优化🤔 总结 最后 缓存池 缓存池不过就是一个map,存储接口数据的地方,将接口的路径和参数拼到一块作为key,数据作为value存起来罢了,这个咱谁都会。 const cach…