1. 采样器(Samplers )

流量控制操作除外)生成一个或多个采样结果。示例结果具有各种属性(成功/失败、经过的时间、数据大小等),可以在各种侦听器中查看。

JMeter 采样器包括:

  • FTP Request:此控制器允许您向 FTP 服务器发送 FTP"检索文件"或"上载文件"请求。如果要向同一 FTP 服务器发送多个请求,请考虑使用 FTP 请求默认值配置元素,这样就不必为每个 FTP 请求生成控制器输入相同的信息。下载文件时,可以将其存储在磁盘(本地文件)和/或响应数据中。 延迟设置为登录所需的时间。
  • HTTP Request (can be used for SOAP or REST Webservice also): 向 Web 服务器发送 HTTP/HTTPS 请求。它还允许控制 JMeter 是否解析图像和其他嵌入资源的 HTML 文件,并发送 HTTP 请求来检索它们。检索以下类型的嵌入资源:
  • 图像
  • 小程序
  • 样式表 (CSS) 和从这些文件引用的资源
  • 外部脚本
  • 帧, 内联帧
  • 背景图像(正文、表格、TD、TR)
  • 背景声音

   Java HTTP 实现有一些限制: 

  • 无法控制如何重用连接。当 JMeter 释放连接时,同一线程可能会或可能不会重用该连接。
  • 该 API 最适合单线程使用 - 各种设置通过系统属性定义,因此适用于所有连接。
  • 不支持 Kerberos 身份验证
  • 它不支持使用密钥库配置进行基于客户端的证书测试。
  • 更好地控制重试机制
  • 它不支持虚拟主机。
  • 它仅支持以下方法:GET,POST,HEAD,OPTIONS,PUT,DELETE和TRACE
  • 使用 DNS 缓存管理器更好地控制 DNS 缓存
  • JDBC Request:此采样器允许您向数据库发送 JDBC 请求(SQL 查询)
  • Java object request:此采样器允许您控制实现 org.apache.jmeter.protocol.java.sampler.JavaSamplerClient 接口的 java
  • JMS request:JMS 发布服务器会将消息发布到给定的目标(主题/队列),JMeter 不包含任何 JMS 实现 jar;这必须从 JMS 提供程序下载并放入 lib 目录中
  • JUnit Test request:当前实现支持标准 JUnit 约定和扩展。它还包括oneTimeSetUp和oneTimeTearDown等扩展。采样器的工作方式与 Java 请求类似,但有一些差异。
  • 它不是使用JMeter的测试接口,而是扫描jar文件中扩展JUnit的TestCase类的类。这包括任何类或子类。
  • JUnit test jar 文件应该放在 jmeter/lib/junit 而不是 /lib 目录中。还可以使用"user.classpath"属性指定在何处查找 TestCase
  • JUnit 采样器不像 Java 请求那样使用名称/值对进行配置。采样器假定 setUp 和 tearDown
  • 采样器仅测量测试方法的已用时间,不包括 setUp 和 tearDown。
  • 每次调用测试方法时,JMeter 都会将结果传递给侦听器。
  • 对oneTimeSetUp和oneTimeTearDown的支持是作为一种方法完成的。由于JMeter是多线程的,我们不能像Maven那样调用oneTimeSetUp/oneTimeTearDown。
  • 采样器将意外异常报告为错误。标准 JUnit 测试运行程序和 JMeter 的实现之间存在一些重要差异。JMeter 不是为每个测试创建一个新的类实例,而是为每个采样器创建 1 个实例并重用它。这可以通过复选框"每个样本创建一个新实例"进行更改。

如果使用 setUp 和 tearDown,请确保这些方法已声明为公共。否则,测试可能无法正常运行。

以下是编写 JUnit 测试的一些一般准则,以便它们能够很好地与 JMeter 配合使用。由于JMeter运行多线程,因此牢记某些事项非常重要。

编写 setUp 和 tearDown 方法,以便它们线程安全。这通常意味着避免使用静态成员。

  • 使测试方法成为离散的工作单元,而不是长动作序列。通过将测试方法保持在离散操作中,可以更轻松地组合测试方法以创建新的测试计划。
  • 避免使测试方法相互依赖。由于 JMeter 允许对测试方法进行任意排序,因此运行时行为与默认的 JUnit 行为不同。
  • 如果测试方法是可配置的,请注意属性的存储位置。建议从 Jar 文件中读取属性。
  • 每个采样器都会创建测试类的一个实例,因此请编写测试,以便在 oneTimeSetUp 和 oneTimeTearDown
  • LDAP Request:此采样器允许您向 LDAP 服务器发送不同的 LDAP 请求(添加、修改、删除和搜索)
  • Mail request:邮件阅读器采样器可以使用 POP3(S) 或 IMAP(S) 协议读取(和选择性地删除)邮件
  • OS Process request:OS 进程采样器是可用于在本地计算机上执行命令的采样器。
    它应该允许执行可以从命令行运行的任何命令。
    可以启用返回代码的验证,并且可以指定预期的返回代码
  • TCP request:TCP 采样器打开与指定服务器的 TCP/IP 连接。然后,它发送文本,并等待响应。
  • SMTP Sampler:SMTP 采样器可以使用 SMTP/SMTPS 协议发送邮件。可以为连接设置安全协议(SSL 和 TLS)以及用户身份验证。如果使用安全协议,则将对服务器证书进行验证。