使用JMeter测试加载文档功能

时间:2011-11-08 05:45:51

标签: testing jmeter

我正在测试具有“加载文档”功能的服务。我需要发送一个包含每个请求的唯一文档。在HTTP请求采样器配置菜单中,我看到我可以发送文档以及我的请求。但是,我不知道如何在每次请求时发送不同的文档。有没有办法让JMeter稍微修改文档,生成指定的文档,甚至可能选择一系列外部生成的文档来提交请求?

1 个答案:

答案 0 :(得分:4)

您可以使用While Controller下的CSV数据集配置来循环读取和发送预先创建的测试文档名称。

这看起来像是:

  1. 创建与您的请求一起发送的不同测试文档的集合;
    OPTIONALLY:将创建文档的文件夹路径存储为jmeter变量 - 在脚本中使用;
  2. 创建测试文档列表;
    您可以在BeanShell Sampler中执行此操作,代码如下所示;
  3. 添加While Controller以循环发送测试文档;
    CSV数据集配置为控制器作为子项 - 从列表中读取测试文档名称。
  4. <强>详细说明:

    BeanShell Sampler

    ${__javaScript("${testFile}"!="<EOF>",)} - 读取列表直到文件结尾 While Controller

    CSV Data Set Config

    HTTP Request

    生成测试文件列表的BeanShell Sampler代码:

    import java.text.*;
    import java.io.*;
    import java.util.*;
    
    String [] params = Parameters.split(",");
    
    String contentList = params[0];
    String testDataDir = params[1];
    
    File dir = new File(System.getProperty("user.dir") + File.separator + testDataDir);
    BufferedWriter out = null;
    
    try {
    
        if (!dir.exists()) {
            throw new Exception ("Directory " + dir.getName() + " not found.");
        }
    
        File contentFile = new File(System.getProperty("user.dir") + File.separator + contentList);
    
        if (contentFile.exists()) {
            contentFile.delete();
        }
    
        FileWriter fw = new FileWriter(contentFile, true);
        out = new BufferedWriter(fw);
    
        System.out.println("\n--------------------------------------------------------------------------------------");
        System.out.println("CONTENT LIST:\n");
    
        if ((dir.exists()) && (dir.listFiles() != null) && (out != null)) {
            for (File f : dir.listFiles()) {
                if (contentFile.length() == 0) {
                    out.write(f.getName());
                } else {
                    out.write("\n" + f.getName());
                }
    
                out.flush();
    
                System.out.println("Content " + f.getName() + " added to " + contentFile.getName() + ".");
            }
        }
    
        System.out.println("--------------------------------------------------------------------------------------\n");
    }
    catch (Exception ex) {
        IsSuccess = false;
        log.error(ex.getMessage());
        System.err.println(ex.getMessage());
    }
    catch (Throwable thex) {
        System.err.println(thex.getMessage());
    }
    finally {
        out.close();
    }