接口测试 [分享] 自动化测试与持续集成方案--Jmeter 测试接口及性能

news2024/12/25 12:38:11

目录

前言:

一、什么是接口测试?

二、接口测试的流程

三、编写接口测试脚本

四、接口持续集成

补上性能测试报告:


前言:

 接口测试是软件测试中的重要环节,它用于验证系统的不同组件之间的通信和数据传输是否正常。自动化测试和持续集成方案可以帮助测试团队更高效地进行接口测试,并确保系统的性能和稳定性。

一、什么是接口测试?

  接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
  接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。
  接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
  基于接口测试的重要性,以及它比较容易自动化的特性,通过持续集成的接口监控能够及时的发现项目中存在的问题,这对持续运营的项目来说,非常重要。

二、接口测试的流程

  1、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档
  2、 获取接口测试文档后,就可以进行接口用例的编写和调试
  3、 接口用例编写调试完成后,部署到持续集成的测试环境中,
  4、 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控
  5、 每日进行接口脚本的维护更新,接口异常的处理

三、编写接口测试脚本

  大部分性能工具都可以用来进行接口测试,jmeter 就是一个好用的性能测试工具,他也同样可以用来进行接口测试,jmeter 比较适用于 CGI、webservice、DB 等类型的接口测试。下面以 websevice api 接口为例说明如何编写接口测试用例(本文侧重于接口测试平台的搭建,对于具体工具是使用只进行简单介绍,对于工具不了解的,可以自行百度):
以下是我弄的一个简单的脚本。


每个请求都加一个响应断言来判断是否达到期望。
如果用命令来执行,也很简单:
jmeter -n -t test.jmx -l test.jtl

四、接口持续集成

在这块卡了好久,主要是 report 展示。之前是不想再用其他工具 (如:Ant, Maven ), 就想将 jtl 文件的报告展现出来,弄了很久没成功。最后还是向工具屈服,用的 Ant 来编译.
主要是配置 build.xml
一个示例:

<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="all" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="F:\xxxxx\Jmeter" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="F:\xxxxx\resultLog\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="F:\xxxxx\resultLog\html" />
    <!-- 生成的报告的前缀->
    <property name="ReportName" value="TestReport" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />

    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
    </target>

    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="D:\test_case_path" includes="*.jmx" />
        </jmeter>
    </target>

    <target name="report">
        <xslt in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />

        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
</project>

Jenkins 上安装 “Publish performance test result report” ,“Publish HTML reports” 的插件,配置一下。
运行。
结果如下:


如果加上一些并发,负载等,就是性能测试报告了。
性能报告的曲线展示还没弄出来,有空再看看。

补上性能测试报告:

之前一直出了个错:

Performance: Recording JMeter reports '**/*.jtl'
Performance: no JMeter files matching '**/*.jtl' have been found. Has the report generated?. Setting Build to FAILURE
Build step 'Publish Performance test result report' changed build result to FAILURE
Finished: FAILURE

导致结果出不来。后面在 Jmeter/bin 下将 jmeter.properties 中的:
jmeter.save.saveservice.output_format=csv
改成:
jmeter.save.saveservice.output_format=xml

结果就是这样的:

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

 

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

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

相关文章

一起学SF框架系列5.7-模块Beans-BeanDefinition使用

SF如何使用BeanDefinition达成其目标IoC&#xff0c;我们通过跟踪BeanDefinition使用来了解。 使用起点 跟踪SF初始化过程&#xff0c;第一个点在&#xff1a;DefaultListableBeanFactory.preInstantiateSingletons。如下图&#xff1a; RootBeanDefinition是运行时Spring B…

前端白屏检测方案

早期因为浏览器、技术、兼容性等诸多问题&#xff0c;导致网页的显示效果非常的单一&#xff0c;基本都是静态页&#xff0c;后续随着Angular、React、Vue等前端框架的出现&#xff0c;采用SPA单页面应用的方案越来越多。 用户和企业对于页面的稳定性、性能有了更高的诉求&…

openssl为什么从1.1跳跃到3.0,为什么没有2.0版本?

OpenSSL在版本号上从1.1跳跃到3.0是因为在其发展过程中发生了一些特定的情况和变化&#xff0c;导致开发团队做出了这样的决定。以下是一些可能的原因&#xff1a; 历史背景&#xff1a;OpenSSL的版本号体系并不是连续递增的&#xff0c;而是根据项目的发展和变化进行调整。在过…

UFS 15 - UFS RPMB操作

UFS 15 - UFS RPMB操作 1 Request Type Message Delivery&#xff08;请求类型消息传递&#xff09;2 Response Type Message Delivery&#xff08;响应类型消息传递&#xff09;3 Authentication Key Programming3.1 Authentication Key Programming3.2 报文示例3.2.1 Authent…

【工具使用】使用J-link离线下载芯唐MCU固件

一&#xff0c;简介 本文主要介绍如何使用J-link工具&#xff0c;离线下载M483的程序。 二&#xff0c;操作步骤 主要分为以下三个步骤&#xff1a; 1&#xff0c;使用SWD接口连接硬件&#xff1b; 2&#xff0c;配置上位机工程&#xff1b; 3&#xff0c;下载程序到芯片&am…

LiveGBS流媒体平台GB/T28181功能-作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备

LiveGBS作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置 3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接…

图像处理之比特平面分层和重构

一、比特平面分层 像素是由比特组成的数字。例如在256级灰度图像中&#xff0c;每个像素的灰度是由8比特&#xff08;一个字节&#xff09;组成。如下图所示&#xff0c;一幅8比特图像由8个1比特平面组成&#xff0c;其中平面1包含图像中所有像素的最低阶比特&#xff0c;而平…

Linux开发工具gdb篇

文章目录 &#x1f3bb;0.前言&#x1f3bc;debug版本&#x1f3bc;release版本 &#x1fa95;1. gcc/g的默认版本&#x1f3b8;2. gdb使用&#x1f3b5;进入 & 退出&#x1f3b5;查看代码&#x1f3b5;断点 & 跳断点&#x1f3b5;逐过程 & 逐语句&#x1f3b5;监视…

Spring Boot 核心运行原理介绍

Spring Boot 核心运行原理介绍 引言整体介绍1. 核心运行原理图2. 自动配置的整体流程3. 各核心功能和组件初步介绍 总结 引言 还记得&#xff0c;笔者在前面的博文《Spring Boot 项目介绍》中提到了&#xff0c;Spring Boot 最核心的功能就是自动配置&#xff0c;该功能的实现…

编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用

概念&#xff1a; 编辑距离&#xff0c;由俄罗斯科学家Vladimir Levenshtein于1965年提出&#xff0c;因此又称为Levenshtein Distance&#xff0c;简称LD&#xff0c;是指两个字串之间&#xff0c;由一个转成另一个所需的最少编辑操作次数。 可用的编辑操作包括&#xff1a;…

使用docker的常见bug

BUG1&#xff1a;磁盘被占满导致docker无法使用 docker ps 【查看docker能否正常使用】 正常的话会打印下图信息: 不正常的话打印如下图信息&#xff1a; journalctl -u docker 【查看docker无法正常使用的原因】&#xff0c;本次测试中遇到下图bug&#xff0c;意思是/var/l…

短视频抖音seo矩阵源码saas--技术开发部署分享

抖音seo源码开发&#xff0c;抖音矩阵源码&#xff0c;短视频seo源码&#xff0c;短视频矩阵源码技术开发部署&#xff0c;模式采用SaaS形式&#xff0c;用户角色分为&#xff1a;总后台&#xff0c;加盟商&#xff0c;企业用户&#xff0c;角色权限划分清楚&#xff0c;多模式…

简单认识MySQL基础部分

文章目录 一、数据库概述1、简介2、数据库类型和常用数据库1.关系型数据库2.非关系型数据库 3、mysql数据库日志1、作用&#xff1a;2、 mysql与 oracle 日志有所区别3、 Mysql 存储引擎 二、数据库基础操作1、SQL 语句2、实际操作1、DDL&#xff1a;数据定义语言&#xff0c;用…

机器学习技术(五)——特征工程与模型评估

机器学习技术&#xff08;五&#xff09;——特征工程与模型评估(2️⃣) 文章目录 机器学习技术&#xff08;五&#xff09;——特征工程与模型评估(:two:)二、模型评估1、Accuracy score2、Confusion matrix混淆矩阵1、多值2、二值 3、Hamming loss4、Precision, recall and F…

石英灯和石墨加热器结构热试验装置中的低气压控制解决方案

摘要&#xff1a;为解决结构热试验和热真空试验中的低气压真空压力精密控制问题&#xff0c;本文基于动态平衡法和上下游控制模式&#xff0c;提供了相应的解决方案。解决方案中的低气压真空压力控制系统主要是采用电控针阀、电控球阀和双通道真空压力控制器组成上下游两个闭环…

从源码角度看 Golang 的调度

1.简单概念 1.1 调度器的三个抽象概念&#xff1a;G、M、P G&#xff1a;代表一个 goroutine&#xff0c;每个 goroutine 都有自己独立的栈存放当前的运行内存及状态。可以把一个 G 当做一个任务。M: 代表内核线程(Pthread)&#xff0c;它本身就与一个内核线程进行绑定&#…

echarts条形图动态显示

1、实现效果 每次展示5个&#xff0c;轮流展示 2、实现思路 使用datazoom,一次展示5项数据&#xff0c;轮流展示每2s刷新一次。 条形图有两个柱子&#xff0c;一个蓝色柱子&#xff0c;一个灰色柱子&#xff0c;两个柱子重合&#xff0c;且蓝柱子在上面。 为了使左侧的类目和柱…

【ubuntu重装系统后的软件配置_memo】

重装系统后系统环境恢复 备份安装系统常用的一些debvscode 更改sourcespip加速爬长城的家伙式儿安装ROS安装cmake安装git安装zsh顺便开个ssh提升幸福感的映射配置neovimplugins字体插件遇到的问题 锁键盘/鼠标小玩意儿 备份 实验时不起眼的图顺手写的脚本忘记从哪儿下载的资源…

华为云命令行工具服务KooCLI助力一键管理云资源

对于CLI即命令行工具&#xff0c;运维同学可能并不陌生&#xff0c;它摒弃了对图形化界面的需求&#xff0c;不再拘泥于可视化的页面切换、按钮点击等操作&#xff0c;反而为用户提供了一个便捷且高控制的解决方案&#xff0c;使用户在日常的运维工作中&#xff0c;用一行命令即…

【深度学习】目标检测的全面回顾

一、说明 随着自动驾驶汽车、智能视频监控、面部检测和各种人数统计应用的兴起&#xff0c;对快速准确的物体检测系统的需求也在不断增长。这些系统不仅涉及识别和分类图像中的每个对象&#xff0c;还涉及通过在图像周围绘制适当的边界框来定位每个对象。这使得对象检测比其传统…