【问题标题】:Testing advanced scenarios using JMeter Mail Reader sampler使用 JMeter Mail Reader 采样器测试高级场景
【发布时间】:2014-08-01 08:14:47
【问题描述】:

我使用邮件阅读器采样器在 Jmeter 中编写了一个测试计划来测试 IMAPS 服务器。该测试仅允许我从文件夹中读取所有邮件或从文件夹中读取 x 封邮件。或者,我可以在阅读邮件后从服务器中删除邮件。

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

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

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

如果 JMeter 不支持此功能,请建议任何其他可以进行此类测试的性能测试工具

【问题讨论】:

    标签: jmeter imap


    【解决方案1】:

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

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

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

    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, "", "your.account@gmail.com", "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 语言。

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

    【讨论】:

    • 谢谢。我也是那么想的。经过一番阅读,我决定使用 Java 采样器并为所有高级 IMAP 测试编写一个自定义程序。我还将按照您的建议查看 Beanshell 和 JSR223。在 blazemeter 文章中,他们说 Java 请求是 3 个选项中最好的。和JMeter自带的Java sampler一样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多