【java学习】jemeter与自动化测试

这篇具有很好参考价值的文章主要介绍了【java学习】jemeter与自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,自动化测试规范

1)可重复执行

  1. 可重复执行
    每个用例的数据应该是独立的,测试前新增,测试后删除;
  2. 可并行执行
    每个用例数据的建立应该是独立的,即使其它数据在并发执行应该互不干扰。==》通过uuid或者用例号对数据进行区分。
  3. 如果用例执行错误,不会造成脏数据。

2)可移植性

  1. 不同环境都可以执行;
    主要区别在于当前使用的数据是否在不同环境是一样的;
    主要问题集中在id的引用。

3)可控性

  1. 用例不会无限执行下去;
    重灾区是循环用例。
  2. 用例响应时间(用例偶尔执行失败)
    主要针对2个方面:
    1)连续2个请求,请求A入库,请求B查询A的结果。A的入库可能是异步的,也就是说A返回200时,B不一定能查询到数据。此时可能需要sleep一会再处理,这个sleep的时间是否会因为环境负载导致时间有极大的波动?
    2)对于一些时间的操作,接口的自动化执行远远快于人工的点击,完全可能因为ms级别的误差导致用例偶尔执行失败。
    举例:获取用例执行开始时当前时间stime;创建一条数据createTime;检索当前数据:在stime和当前检索时间之间。由于用例请求过快,导致stime和createTime都是s单位一致、ms不同,如果检索的时间精度是s,那么就会出现stime精度丢失从而导致createTime>stime的情况。导致用例偶尔执行失败。
  3. 对于复杂逻辑,统一处理
    比如循环请求一个http接口,需要注意while条件。但是这个很容易出错,每个人的水平也不一样,不如编写一个轮询http插件进行处理,简化流程。

4)可校验

  1. 所有的操作应该都是可校验的。
    我看有一下接口只请求了连200校验都没有。

2,自动化测试场景

  1. 测试时间长,但主要是机械重复动作的测试;
  2. 需求变更频繁且每次变更影响面大;
  3. 测试需要大量回归测试;

除了使用自动化测试用例,也要标记一些重要用例进行人工测试。

3,常见语法使用

1)用例准备

1>函数助手

Ctrl+Shift+F1

常用函数:

说明 函数
当前日期 ${__timeShift(yyyyMMdd,,,,)}
昨天日期 ${__timeShift(yyyyMMdd,,-P1D,,)}

2>用户自定义变量

  1. 定义一次,全局享用
  2. 通过函数获取值
名称
time ${__time(,)}
  1. 通过提前声明控制变量类型
    如果在beanShell里之间vars.put(),这个变量会是字符串。
名称
times 0
  1. 在beanShell中操作
    注意对象在vars中是以String的形式存放的。
String str = vars.get("time")
vars.put("time", str)
  1. 自定义插件中vars的操作
JMeterContext context = JMeterContextService.getContext();
JMeterVariables vars = context.getVariables();
jmxPathStr = FileServer.getFileServer().getBaseDir();
sepStr = System.getProperty("file.separator");
vars.put("jmxPath", jmxPathStr);
vars.put("sep", sepStr);
context.setVariables(vars);

3>HTTP请求默认值

  1. 全局生效
  2. 主要用于定义统一的http请求协议、ip、端口、编码格式
    【java学习】jemeter与自动化测试
  3. 如果定义了utf-8还乱码,可能是http对应的jar包有问题
    替换\lib\ext\ApacheJMeter_http.jar

4>HTTP信息管理器

名称 说明
Accept-Language zh-CN,zh;q=0.9,en;q=0.8
Content-Type application/json;charset=UTF-8
Accept-Encoding gzip, deflate, br
User-Agent Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 浏览器
accept application/json
xxxx-Access-Token ${token} 访问token,登录成功后直接赋值,全局生效

5>JDBC连接设置

其中连接名称是mytest,jdbc取样器时需要使用。
【java学习】jemeter与自动化测试

6>HTTP Cookie管理器

直接添加 自动管理

1)事务

是一个简单的控制器,作为整体包裹我们需要关注的一组操作。
只有当事务控制器所有的取样器都成功时,事务控制器才成功。

2)循环

1>foreach控制器

【java学习】jemeter与自动化测试

2>while控制器

【java学习】jemeter与自动化测试

3)IF

【java学习】jemeter与自动化测试
jmeter-jexl3语法总结:

描述 语法
数字等于 ${__jexl3(${__Random(0,500,)}==0,)}
数字不等于 ${__jexl3(${__Random(0,500,)}!=0,)}
字符串相等 ${__jexl3("qwe".equals("qwe"),)}
${__jexl3("qwe" eq "qwe",)}
${__jexl3("qwe" == "qwe",)}
字符串不相等 ${__jexl3(!"qwe".equals("q1we"),)}
${__jexl3("qwe" ne "qwe1",)}
${__jexl3("qwe" != "qwe",)}
字符串包含 ${__jexl3("${host}".contains("pre"),)}
字符串不包含 ${__jexl3(!"${host}".contains("pre"),)}
字符串长度比较 ${__jexl3("qqq".size() < 3,)}
length()也可以
字符串为空 ${__jexl3("".empty(),re)}
组合条件 通过双竖杠连接

4)http取样器

【java学习】jemeter与自动化测试注意:

  1. 文件上传类的接口:
    【java学习】jemeter与自动化测试

  2. url参数
    可以直接在参数列表添加,也可以直接写url中。直接通过${}引用变量。

5)JDBC Request

数据库请求取样器,使用前需要先配置JDBC Connection Configuration。
【java学习】jemeter与自动化测试

6)响应断言

【java学习】jemeter与自动化测试相比起来json断言可能比响应文本断言更好用。

7)json断言

通过jsonPath语法进行取值。
【java学习】jemeter与自动化测试
【java学习】jemeter与自动化测试

8)BeanShell 取样器

程序员的天下了。

  1. 取变量通过vars变量才能获取,不能直接使用${}
  2. 没有泛型
  3. 可以使用方法
  4. 外部引用需要import包
  5. 调试方法:log、或者下载源码通过IDEA运行本地调试。

9)BeanShell 断言

  1. 在BeanShell 取样器的基础上,增加了断言返回值的重写。
  2. 断言之后可以直接return;,否则断言会继续往后走
	//表示断言失败。
	Failure = true;
	//错误提示
	FailureMessage = 数据库查询与返回结果不一致

10)前置后置执行顺序

  1. 配置元件(Config Element)
  2. 前置处理器(Pre Processors)
  3. 定时器(Timer)
  4. 取样器(Sampler)
  5. 后置处理器(Post Processors)
  6. 断言(Assertions)
  7. 监听器(Listener)

11)结果调试

【java学习】jemeter与自动化测试

1>结果集(查看结果树)

运行脚本之后生成JTL文件。红色表示失败。
【java学习】jemeter与自动化测试

2>日志

【java学习】jemeter与自动化测试
beanShell里可以通过log直接打印日志。

3>调试取样器

添加调试取样器可以查看到运行过程中的变量,变量是可以被覆盖的。

4,常见插件编写

1)取样器重写:轮询http请求

循环请求某个接口,默认循环10次,每两次间隔500ms。通过jsonPath来判断是否需要立刻停止循环。文章来源地址https://www.toymoban.com/news/detail-426556.html

package com.luo.sampler.gui;

import com.luo.sampler.PollingHttpSampler;
import org.apache.jmeter.gui.GUIMenuSortOrder;
import org.apache.jmeter.gui.util.HorizontalPanel;
import org.apache.jmeter.gui.util.VerticalPanel;
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
import org.apache.jmeter.testelement.TestElement;

import javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;

@GUIMenuSortOrder(1)
public class PollingHttpSamplerGui extends AbstractSamplerGui {
   

    /**
     * 请求类型 GET
     */
    private static final Map<String, Class<?>> TYPE_HTTP = new HashMap<>(1);


    static {
   
        TYPE_HTTP.put("GET", String.class);
    }

    protected JComboBox<String> typeBox = null;
    /**
     * 请求路径
     */
    private JTextField urlPath = null;
    /**
     * 轮询次数
     */
    private JTextField times = null;
    /**
     * 轮询结束字段(json path,如:$.data.percent)
     */
    private JTextField endStateField = null;
    private JTextField endStateValue = null;

    public PollingHttpSamplerGui() {
   
        super();
        init();
    }

    private void init() {
   
        createPanel();
    }

    private void createPanel() {
   
        JPanel settingPanel = new VerticalPanel(5, 0);
        settingPanel.add(getUrlPath());
        settingPanel.add(getTimes());
        settingPanel.add(getEndState());

        JPanel dataPanel = new JPanel(new BorderLayout(5, 0));
      

到了这里,关于【java学习】jemeter与自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何高效的学习接口自动化测试?从零开始学习接口自动化测试:选择合适的学习资源和编程语言

    目录 引言: 一、学习前的准备 二、选择合适的学习资源 三、实践中学习 四、总结 在日常的软件开发过程中,接口自动化测试是一个非常重要的环节。接口自动化测试可以帮助我们快速准确地检测出软件中的缺陷,提高软件的质量和稳定性。但是,要学习接口自动化测试并

    2024年02月06日
    浏览(65)
  • 基于python实现Web自动化测试(selenium)、API自动化测试(requests)&附学习视频

    另一篇文章 :自动化测试框架(pytest)附学习视频 学习视频,学习文档-白月黑羽 说明: 1紧跟着写的不加/,不加空格-表示同一级别信息,加空格表示后代 2.css定位tag,id,class时分别有不同的标识,其他属性都要加[]进行搜索, Xpath所有属性都要都加【】,tag不用 3. css在使用ta

    2024年02月03日
    浏览(102)
  • python自动化测试框架学习

    今天发现python有多个框架可以用于自动化测试方面,下面整理了下splinter和urllib2框架,对于 pywinauto框架和ruby框架先记录下以后需要用到再学习。 python有个splinter框架: 特性: 1、可以模拟浏览器行为,访问指定的URL,并且可以指定不同的浏览器类型。比如firefox或者chrome等。

    2024年02月08日
    浏览(51)
  • 【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,学习模拟鼠标+模拟键盘进行相关操作(精)(四)

    1、了解元素交互的常用方法 2、学习如何对多选元素进行操作 3、 学习模拟鼠标进行相关操作 ( 本节目标 ) 4、 学习模拟键盘进行相关操作 ( 本节目标 ) 用于向 Web 浏览器提供虚拟化设备输入操作的低级接口.除了刚刚讲过的Web元素交互之外, Actions 接口 还提供了对指定输

    2024年03月24日
    浏览(84)
  • Selenium自动化测试(基于Java)

    目录 一. 了解Selenium ✅1.1 概念 ✅1.2 作用 ✅1.3 特点 ✅1.4 工作原理  二. Selenium + Java 环境搭建 ✅2.1 下载 Chrome 浏览器 ✅2.2 查看浏览器的版本 ✅2.3 下载浏览器驱动 ✅2.4 验证环境是否搭建成功 三. Selenium 常用 API ✅3.1 定位元素 ✅3.2 操作对象 ✅3.3 添加等待 ✅3.4 打印信息

    2024年02月06日
    浏览(88)
  • 【自动化测试】——Selenium (基于java)

    小亭子正在努力的学习编程,接下来将开启软件测试的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 一、认识Selenium 1.什么是自动化测试  2.Selenium  3.webdriver的工作原理

    2024年02月15日
    浏览(44)
  • 接口自动化测试框架(Java 实现)

    需求点 需求分析 通过 yaml 配置接口操作和用例 后续新增接口和测试用例只需要编写 yaml 文件即可实现。 可以支持接口间的参数传递 具有参数依赖的接口可以进行变量的抽取和参数赋值。 支持全局、用例维度的变量存储 比如时间截命名法中要用到的时间截后缀。 支持用例

    2024年01月18日
    浏览(52)
  • selenium 自动化测试框架学习笔记

    pip install selenium == 4.9.1  -i https://pypi.tuna.tsinghua.edu.cn/simple 下载驱动: 安装完 selenium 后,还需要安装使用 selenium 控制的浏览器需要的驱动。 谷歌驱动下载地址: https://googlechromelabs.github.io/chrome-for-testing/#stable 驱动下载完成后将文件移动到系统环境变量中: MacOS :将文件移动

    2024年01月23日
    浏览(41)
  • python学习-自动化测试Selenium

     自动化测试Selenium Selenium简介 第一个Selenium应用 Selenium Python API Selenium WebDriver Selenium 初始化浏览器 Selenium导航到URL Selenium定位元素 Selenium By类 Selenium WebElement类 Selenium页面交互 Selenium ActionChains Selenium鼠标操作 Selenium键盘操作 Selenium调用JavaScript Selenium等待机制 Selenium expected

    2024年01月18日
    浏览(47)
  • 【测试人生】测试工程如何去学习接口自动化技术

      提高生产力:自动化可以帮助您在短时间内完成重复性工作,从而大大提高生产力。自动化不仅减少了手动执行任务所需的时间和精力,还减少了出错的风险。 质量保证:自动化测试可以确保软件在修改后仍然按预期运行,从而提高产品质量。自动测试可以发现潜在的问题

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包