JMeter 逻辑控制器完整介绍

JMeter 逻辑控制器可以对元件的执行逻辑进行控制,就像编程一样,实现业务需求。

JMeter36 个内置函数及 11 个新增函数介绍

JMeter 内置了 36 个函数,这些函数可以通过函数助手进行编辑和测试。了解这些函数,不仅能提高 JMeter 的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴。

Java 单元测试 Mock 框架 Mockito 入门介绍

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 鸡尾酒 Mockito 是 Java 的单元测试 Mock 框架。它的 logo 是一杯古巴最著名的鸡尾酒 Mojito,Mojito 鸡尾酒,源自古巴的哈瓦那,带有浓厚的加勒比海风情。并不浓烈,但是喝一杯下去,脸上会泛起红晕,象少女的羞涩。味道很清新,有一点青涩、有点甜蜜。 Stub & Mock Stub 和 Mock 是 Test Double 类型中的 2 种。Test Double 一共有 5 种类型,Dummy,Stub,Spy,Mock,Fake。 Test Double 是测试复制品,用来统称模拟真实对象的假对象。因使用场景有略微不同,而有这 5 种类型。 Dummy,通常只用来填充参数列表。有可能是 null 对象引用,或 Object 类实例等。 Fake,是简化版的实现,比如基于内存实现的数据库,不会真的去做数据库操作,用简单的 HashMap 来存放数据。 Stub,Stub 用来替代 SUT(System Under Test)依赖的组件,但是只模拟一个外部依赖,不做断言。 Spy,介于 Stub 和 Mock 之间。如果真实对象没有被打桩,当调用 Spy 对象时,真实对象也会被调用。 Mock,可以理解为 Stub+Verification,既模拟外部依赖,也会定义预期结果。 看一个实例,发送邮件, public interface MailService { public void send(Message msg); } 先写个 Stub, public class MailServiceStub implements MailService { private List<Message> messages = new ArrayList<Message>(); public void send(Message msg) { messages.add(msg); } public int numberSent() { return messages.size(); } } 实现 Stub 的状态验证, ...

JMeter 四种参数化方式

JMeter 参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号。JMeter 一共有四种参数化方式,分别是:

Allure 测试报告完整学习笔记

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 目录 简介 安装 Allure Allure 测试报告的结构 Java TestNG 集成 Allure Report Python Pytest 集成 Allure Report 简介 假如你想让测试报告变得漂亮一点,那你一定会在搜索引擎中找到 Allure 测试报告的。Allure 官方给出了个在线网站,访问以下链接就能一睹为快: https://demo.qameta.io/allure/ 可以在左下角切换为中文报告: 如此好看的测试报告,哪个老板不喜欢呢? 安装 Allure 1.在 GitHub releases: https://github.com/allure-framework/allure2/releases 或者 Maven Central: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 下载安装包并解压。 2.找到 bin 目录,Windows 使用allure.bat,Unix 使用allure: 3.为了后续方便使用,可以把 bin 完整路径添加到系统环境变量 PATH中,然后在命令行直接输入allure命令。 官方也给出了通过 Linux 的 ppa、Mac 的 brew、Windows 的 scoop 的安装方式,不过对于咱们老百姓来说,不如手动下载包来安装实在。 安装后就可以检查是否安装成功了: $ allure --version 2.17.2 因为 Allure 是用 Java 写的,所以如果无法运行,那么要检查下有没有安装 Java。 Allure 测试报告的结构 Overview ...

JMeter 关联陌生又熟悉

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 JMeter 关联是什么 JMeter 关联,这几个字看着可能会有点陌生,实际上却是工作中经常会做的一件事情,尤其是接口自动化,它指的是把一个接口的响应作为另一个接口的参数,从而把接口关联起来。 JMeter 关联是通过后置处理器来实现的,本文将介绍两个主流提取器:正则表达式提取器和 JSON JMESPath 提取器。 正则表达式提取器 Name 最好有业务含义的名称。 Comments 可以为空的注释。 Apply to 匹配范围。 Main sample and sub-samples 匹配当前父取样器及其子取样器。 Main sample only 仅匹配当前父取样器。 Sub-samples only 仅匹配子取样器。 JMeter Variable Name to use 匹配 JMeter 变量。 Field to check 匹配响应的字段,共七个选项。 Body:主体,最常用。 Body(unescaped) :替换了所有的 html 转义符的响应主体内容,注意 html 转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用。 Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能。 Response Headers:响应 Headers。 Request Headers:请求 Headers。 URL:请求 URL。 Response Code:响应代码,比如 200、404 返回码。 Response Message:响应信息,比如“成功”、“OK”字样。 Name of created variable 创建的变量名,比如变量名为 token,通过${token}进行访问。 ...

JUnit5 依赖注入与测试接口

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 依赖注入 以前的 JUnit 的类构造方法和测试方法都是不能有参数的,JUnit Jupiter 有一个颠覆性的改进,就是允许它们有入参,这样就能做依赖注入了。 如果你对 pytest 的 fixture 有了解的话,就知道这个技术是多么的强大。 ParameterResolver 是一个接口类,类构造方法和测试方法在运行时,必须由被注册的 ParameterResolver 进行解析。JUnit Jupiter 有三个自动注册的内置解析器: TestInfoParameterResolver 参数类型为 TestInfo RepetitionInfoParameterResolver 参数类型为 RepetitionInfo TestReporterParameterResolver 参数类型为 TestReporter TestInfo TestInfo 包含 the display name, the test class, the test method, and associated tags 等信息。 示例: import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @DisplayName("TestInfo Demo") class TestInfoDemo { TestInfoDemo(TestInfo testInfo) { assertEquals("TestInfo Demo", testInfo.getDisplayName()); } @BeforeEach void init(TestInfo testInfo) { String displayName = testInfo.getDisplayName(); assertTrue(displayName.equals("TEST 1") || displayName.equals("test2()")); } @Test @DisplayName("TEST 1") @Tag("my-tag") void test1(TestInfo testInfo) { assertEquals("TEST 1", testInfo.getDisplayName()); assertTrue(testInfo.getTags().contains("my-tag")); } @Test void test2() { } } RepetitionInfo ...

pytest 用例查找原理

当执行 pytest 命令时,pytest 会从 project 中查找 test 来执行。本文先从几个路径相关的概念讲起,这样便于理解 pytest 在遍历路径时的走向。

JMeter100 个线程竟然只模拟出 1 个并发

线程组编辑区如下:

JUnit5 参数化测试的几种方式

参数化测试一直是津津乐道的话题,我们都知道 JMeter 有四种参数化方式:用户自定义变量、用户参数、CSV 文件、函数助手,那么 JUnit5 有哪些参数化测试的方式呢?