接口测试:自动化脚本

接口测试:自动化脚本

接口自动化脚本

为什么要设计自动化脚本?

后台程序更新/发布新版之前需要验证下之前的功能是否能用

自动化脚本设计原则

  1. 每个测试用例都是独立的
  2. 测试用例都是可重复运行的
  3. 测试数据与业务相分离(测试数据包括参数接口数据/ 测试执行所需要的系统数据)
  4. 测试完成后,要删除不必要的测试数据。

自动化脚本设计组件分析

  1. 使用数据库连接池
  2. 使用setUp Thread Group线程组
  3. 使用tearDown Thread Group线程组
  4. 使用线程组
  5. 使用函数
  6. 使用关联
  7. 添加断言
  8. 使用sampler中请求
  9. 添加聚合报告

性能脚本设计

为什么要设计性能脚本?

问题

100虚拟用户请求服务器的时候,如何统计服务器响应时间和错误率?

什么是性能脚本?

概念:借助测试工具模拟多种业务需求操作对系统的各项性能指标进行测试的脚本

解决方案分析

  1. 测试计划->线程组
  2. 线程组->HTTP请求(查询学院-所有)
  3. 测试计划->查看结果树
  4. 测试计划->聚合报告

技术难点分析

  1. 线程组-线程数
  2. 测试计划-聚合报告(各指标意义)

项目-性能脚本设计

性能脚本设计技巧
  1. 新增、更新、删除:使用固定数值,比如新增100条,更新100条,删除100条
  2. 查询:采用虚拟用户数和持续时间配合(比如,100用户,持续查询600秒)
提示
  1. 参数化:参数化尽量避免采用从外部读取参数,使用固定参数+函数形式( 如:${__counter(TRUE,)})
  2. 察看结果树:必须清除单个接口内察看结果树
    (如不去掉,非常占用测试机自身性能),在测试计划下添加一个察看结果树
  3. 报告:性能报告可根据实际需求选择,建议保留添加聚合报告
  4. 线程组:增删改查每一个功能点,都需建立单独线程组,而避免在同一个线程组内添加
    多个HTTP请求完成增删改查(一便参数化对单个请求做压测和并发)
  5. 分布式:如并发数量大,采用分布式测试
  6. 新增/删除:新增和删除接口建议不要采用时间模式来压测,直接使用线程数和循环;

Jmeter 生成HTML报告

操作步骤:

无jtl日志或csv日志文件生成报告
基本命令格式

jmeter -n -t -l -e -o

样例

jmeter -n -t E:\课件\Jmeter\Script\自动化脚本\Stu_AutoScript.jmx -l testLog -e -o ./output/report

参数详解

-n :以非GUI形式运行Jmeter
-t :source.jmx 脚本路径
-l :运行结果保存路径(.jtl),此文件必须不存在
-e :在脚本运行结束后生成html报告
-o :保存html报告的地址, 此文件必须不存在

有jtl日志或csv日志文件生成报告
基本命令格式

jmeter -g -o

样例

jmeter -g E:\课件\Jmeter\Script\自动化脚本\resultt.jtl -o ./outputreport

HTML报告重点翻译

  • APDEX(Application Performance Index)指数

  • 聚合报告:类似于UI上的Aggregate Report

  • Errors报告:展示不同错误类型的数量以及百分比

  • 响应时间变化曲线:

    • 展示平均响应时间随时间变化情况
    • 类似于JMeter Plugins在UI上的jp@gc - Response Times Over Time
  • 数据吞吐量时间曲线:

    • 展示每秒数据吞吐量随时间变化的情况
    • 类似于JMeter Plugins在UI上的jp@gc - Bytes Throughput Over Time
      Latency time变化曲线
  • 展示Latency time随时间变化的情况

    • 类似于JMeter Plugins在UI上的jp@gc - Response Latencies Over Time
      每秒点击数曲线
    • 类似于JMeter Plugins在UI上的jp@gc - Hits per Second
  • HTTP状态码时间分布曲线

    • 展示响应状态码随时间的分布情况
    • 类似于JMeter Plugins在UI上的jp@gc - Response Codes per Second
  • 吞吐量时间曲线(TPS)

    • 展示每秒处理的事务数随时间变化情况
    • 类似于JMeter Plugins在UI上的jp@gc - Transactions per Second
  • 响应时间与每秒请求数的关系图

    • 展示平均响应时间与每秒请求数(可以理解为QPS)的关系
  • Latency time与每秒请求数的关系图

    • 展示Latency time与每秒请求数的关系
  • 响应时间百分位图

    • 响应时间百分位图
  • 活动线程数变化曲线

    • 展示测试过程中活动线程数随时间变化情况
  • 平均响应时间与线程数的关系图

    • 展示平均响应时间与线程数的关系
    • 类似于JMeter Plugins在UI上的jp@gc - Response Times vs Threads
  • 柱状响应时间分布图

    • 展示落在各个平均响应时间区间的请求数情况

接口测试基于Jmeter项目汇总

API文档

  1. 梳理业务需求整理接口清单
  2. 提出相应不确定问题

接口清单

  1. 设计测试用例
  2. 设计功能脚本

测试用例

  1. 设计参数化覆盖数据

功能脚本

  1. HTTP请求默认值(设置服务器IP或域名;Content encoding:UTF-8)
  2. HTTPHTTP信息头管理器(ContentType:application/json;charset=utf-8)
  3. 线程组
  4. Sampler(如:HTTP请求)
  5. 新增-方法(POST)
  6. 更新-方法(PUT)
  7. 删除-方法(DELETE)
  8. 查询-方法(GET)
  9. 查看结果树

自动化脚本

  1. 测试计划:勾选(独立运行每个线程组)确保脚本执行顺序,从上
  2. 如不校验逆向数据,请去除CSV Data Set Config
  3. 添加断言
  4. 去除每个接口内的察看结果树元件
  5. 动态数据使用关联(正则表达式/XPath)获取
  6. 脚本执行顺序(先增数据,拿到新增数据ID后;在更新完毕数据后,查询新增数据;最后删除新增数据)
  7. 基于测试计划添加聚合报告和察看结果树

性能测试脚本

  1. 线程组:设置线程数,调度器;
  2. 监听器:察看结果树/聚合报告/用表格察看结果/Aggregate Graph
  3. 检测服务器性能:(jp@gc - PerfMon Metrics Collector和ServerAgent插件)

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

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

相关文章

STM32控制JQ8400语音播报模块

时间记录:2024/2/7 一、JQ8400引脚介绍 标示说明ONE LINE一线操作引脚BUSY忙信号引脚,正在播放语音时输出高电平RX串口两线操作接收引脚TX串口两线操作发送引脚GND电源地引脚DC-5V电源引脚,3.3-5VDAC-RDAC输出右声道引脚DAC-LDAC输出左声道…

机器学习:分类决策树(Python)

一、各种熵的计算 entropy_utils.py import numpy as np # 数值计算 import math # 标量数据的计算class EntropyUtils:"""决策树中各种熵的计算,包括信息熵、信息增益、信息增益率、基尼指数。统一要求:按照信息增益最大、信息增益率…

mysql8.0 正值表达式Regular expressions (sample database classicmodels _No.5)

mysql8.0 正值表达式Regular expressions 准备工作,可以去下载 classicmodels 数据库资源如下 [ 点击:classicmodels] (https://download.csdn.net/download/tomxjc/88685970) 也可以去我的博客资源下载 https://download.csdn.net/download/tomxjc/8…

第二十六回 母夜叉孟州道卖人肉 武都头十字坡遇张青-Ubuntu 防火墙ufw配置

武松到县里投案,县官看武松是个汉子,就把诉状改成:武松与嫂一时斗殴杀死,后西门庆前来,两人互殴,打死西门庆。上报东平府。东平府尹也可怜武松,从轻发落,最后判了个:脊杖…

一条 SQL 更新语句是如何执行的?

之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 我们先从一条更新语句讲起,首先创建一个表,这个表有一个主键…

设计模式(创建型模式)原型模式

目录 一、简介二、原型模式2.1、不使用原型模式2.2、使用原型模式(浅拷贝)2.3、使用原型模式(深拷贝) 三、原型模式 一、简介 原型模式(Prototype Pattern) 是一种创建型设计模式,它允许通过复制…

百卓Smart管理平台 uploadfile.php 文件上传漏洞(CVE-2024-0939)

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

零基础学Python(9)— 流程控制语句(下)

前言:Hello大家好,我是小哥谈。流程控制语句是编程语言中用于控制程序执行流程的语句,本节课就带大家认识下Python语言中常见的流程控制语句!~🌈 目录 🚀1.while循环 🚀2.for循环 &#x1…

re:从0开始的CSS学习之路 8. 浏览器默认样式

1. 默认样式 浏览器会有一个默认样式&#xff0c;body标签会有自带一个8px的margin属性。在布局的时候通常不想要浏览器的默认样式&#xff0c;因此可以先清除一下浏览器提供的默认样式 示例如下&#xff1a; <!DOCTYPE html> <html lang"en"><head…

代码随想录算法训练营第41天(动态规划03 ● 343. 整数拆分 ● 96.不同的二叉搜索树

动态规划part03 343. 整数拆分解题思路 96.不同的二叉搜索树解题思路 343. 整数拆分 题目链接&#xff1a; 343. 整数拆分 文章讲解&#xff1a; 343. 整数拆分 视频讲解&#xff1a; 343. 整数拆分 解题思路 动态规划五部曲 确定dp数组以及下标的含义 dp[i]&#xff1a;分…

VUE学习之路序章

前提&#xff1a; 检查是否安装node&#xff0c;要求版本在15及以上。 创建VUE项目 npm init vuelatest 执行完毕之后&#xff0c; cd vue-basenpm installnpm run dev这里可以使用cnpm&#xff0c;cnpm是npm的淘宝镜像&#xff0c;速度较快。 在这里我遇到了一个错误 No matc…

RCE(命令执行)知识点总结最详细

description: 这里是CTF做题时常见的会遇见的RCE的漏洞知识点总结。 如果你觉得写得好并且想看更多web知识的话可以去gitbook.22kaka.fun去看&#xff0c;上面是我写的一本关于web学习的一个gitbook&#xff0c;当然如果你能去我的github为我的这个项目点亮星星我会感激不尽htt…

STM32之定时器

一、简介 STM32F4xx系列共有14个定时器&#xff0c;其中2个高级定时器、10个通用定时器、2个基本定时器。下图 为各定时器及其功能。 图1.各定时器及其功能 二、定时器的计数模式 向上计数模式&#xff1a;计数器从0计数到自动加载值(TIMx_ARR)&#xff0c;然后重新从0开始…

17:定时器编程实战

1、实验目的 (1)使用定时器来完成LED闪烁 (2)原来实现闪烁时中间的延迟是用delay函数实现的&#xff0c;在delay的过程中CPU要一直耗在这里不能去做别的事情。这是之前的缺点 (3)本节用定时器来定一个时间&#xff08;譬如0.3s&#xff09;&#xff0c;在这个定时器定时时间内…

抽象springBoot报错

Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. 中文翻译&#xff1a;无法配置DataSource&#xff1a;未指定“url”属性&#xff0c;并且无法配置嵌入数据源。 DataSource 翻译&#xff1a;数据源 得…

The Back-And-Forth Method (BFM) for Wasserstein Gradient Flows windows安装

本文记录了BFM算法代码在windows上的安装过程。 算法原网站&#xff1a;https://wasserstein-gradient-flows.netlify.app/ github&#xff1a;https://github.com/wonjunee/wgfBFMcodes 文章目录 FFTWwgfBFMcodesMATLABpython注 FFTW 官网/下载路径&#xff1a;https://ww…

警惕钓鱼邮件,保护您的开发者账号

请警惕钓鱼邮件 钓鱼邮件经常冒充官方 Google Play 通信&#xff0c;以窃取敏感信息&#xff0c;并最终为了经济利益盗取开发者账号。 保护开发者免受钓鱼邮件侵害的提示&#xff1a; Google.com 是用于联系开发者的唯一合法电子邮件域名。我们不会通过电子邮件或实时聊天要求您…

【Linux系统学习】 4.Linux实用操作 上

Linux实用操作 1.各类小技巧&#xff08;快捷键&#xff09; 1.1 ctrl c 强制停止 Linux某些程序的运行&#xff0c;如果想要强制停止它&#xff0c;可以使用快捷键ctrl c 命令输入错误&#xff0c;也可以通过快捷键ctrl c&#xff0c;退出当前输入&#xff0c;重新输入 1…

第十六篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像质量评估

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列博文目录前言一、图像质量评估方法和相关函数的介绍二、均方误差示例代码三、峰值信噪比示例代码四、结构相似性指数示例代码五、视频质量评估示例代码六、OpenCV均方根误差计算示例代码七、OpenC…

LLaMA 2 和 QianWen-14B

阿里云通义千问14B模型开源&#xff01;性能超越Llama2等同等尺寸模型 - 科技新闻 - EDA365电子论坛网 LLaMA 2 的硬件要求&#xff1a; LLaMA 2 系列模型有不同的参数量版本&#xff0c;如7B、13B和70B等。对于不同大小的模型&#xff0c;其硬件需求也有所不同。以下是一些硬…