jmeter - 使用 JMeter Mail Reader 采样器测试高级场景

标签 jmeter imap

我已经在 J​​meter 中使用邮件阅读器采样器编写了一个测试计划来测试 IMAPS 服务器。该测试仅允许我读取文件夹中的所有邮件或读取文件夹中的 x 封邮件。我可以选择在阅读邮件后将其从服务器上删除。

但是似乎没有选项可以执行其他操作,例如:

  • 阅读仅由某些邮件标识符标识的特定电子邮件
  • 在文件夹之间移动邮件
  • 将邮件复制到另一个文件夹
  • 将邮件标记为已读/未读
  • 明确从垃圾箱中删除邮件 等等

是否有一种方法可以使用某些插件采样器或插件来测试这些其他场景?

如果 JMeter 不支持此功能,请推荐任何其他可以完成此类测试的性能测试工具

最佳答案

不幸的是,JMeter Mail Reader Sampler 不允许高级操作。然而,JMeter 可以通过脚本进行扩展。

因此,您可以使用 Java Mail API 和提供的脚本采样器之一实现所有必需的方法:

请参阅下面的示例,了解使用 Gmail 的 IMAP 从“垃圾邮件”文件夹中删除所有邮件:

import com.sun.mail.imap.IMAPSSLStore;
import javax.mail. *;

try {
    Properties properties = props;
    properties.put("mail.smtps.auth", "true");
    properties.put("mail.imap.ssl.enable", "true");
    Session imapsession = Session.getInstance(properties, null);

    imapsession.setDebug(false);
    Store imapstore = new IMAPSSLStore(imapsession, new URLName("imaps", "imap.gmail.com", 993, "", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="740d1b01065a1517171b011a00341319151d185a171b19" rel="noreferrer noopener nofollow">[email protected]</a>", "password"));
    imapstore.connect();
    Folder rootfolder = imapstore.getDefaultFolder();
    Folder[] imapfolders = rootfolder.list("*");

    for (Folder folder : imapfolders) {
        if (folder.getName().equals("Spam")) {
            folder.open(Folder.READ_WRITE);
            log.info("Spam folder contains " + folder.getMessageCount() + " messages");
            Message[] messages = folder.getMessages();
            for (Message message : messages) {
                message.setFlag(Flags.Flag.DELETED, true);
                log.info("Marking message with subject: " + message.getSubject() + " for deletion");
            }
            folder.expunge();
            folder.close(true);
        }
    }
    imapstore.close();
} catch (Exception ex) {
    log.error("IMAP operation failed", ex);
}

Beanshell Sampler不需要任何额外的配置,您只需复制并粘贴上面的代码即可。

但是 Beanshell 具有众所周知的性能问题和限制,因此如果您的测试假设或多或少的高负载,建议使用 JSR223 Sampler 和 Groovy 语言。

参见 Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!脚本引擎比较基准,了解 Groovy 脚本引擎的更多信息和安装说明。

关于jmeter - 使用 JMeter Mail Reader 采样器测试高级场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075766/

相关文章:

testing - JMeter 线程属性说明

testing - 我如何提取通过 jmeter 中的 http 请求传递的隐藏值并将其发布到下一个采样器中

open-source - 跨平台 C++ IMAP 库

C - 使用 libcurl 列出 imap 发送的邮件

php - 在xampp中启用IMAP PHP(Windows)

jmeter - 使用用户定义的变量验证 JDBC 请求

java - 响应消息 : org. apache.jorphan.util.JMeterException:调用 bsh 方法时出错:eval null

jmeter - 难以理解高斯随机定时器?

Python imaplib 下载 Gmail Text 而不下载完整附件

laravel - 如何在 Laravel 中转发电子邮件?