2012-03-05 57 views
1

我目前工作的标杆,我做了一个RESTful服务,而这部分是确保它的次为一大阵的参数,合理数量的运行。例如,假设我有一个some_site.com/item?item_id=y形式的RESTful API。在这种情况下,为了确保我的服务能够按照我希望的那样快速工作,我想为y逐个尝试许多值,最好来自某个文本文件。我无法想出任何在ab或httperf中执行此操作的方法。如果我有,我愿意使用不同的基准测试程序,但会更喜欢简单明了的东西。我想要做的看起来似乎非常标准,所以我猜必须已经有一个程序,它可以让我这样做,但谷歌搜索的一个小时左右的时间没有得到我的答复。想法?如何使用可变参数测试REST风格的服务?

+1

你可以写这个工作一个简单的bash/PHP/Perl脚本和跟踪加载时间为每个呼叫。 – 2012-03-06 12:12:57

+0

是的,但它似乎是如此普遍,我认为这已经是一种传统的解决方案。我想也许根本没有... – Eli 2012-03-06 15:26:21

回答

1

答案:Jmeter(这显然很棒)。 This faq解释了如何做到这一点。希望这可以帮助别人,因为它花了我一整天的时间寻找解决办法。

1

我刚刚在JMeter中使用JavaScript(通过BSF/Rhino)有一些很好的经验。

我在我的测试计划中放置了一个线程组,并在其下有两个元素“HTTP请求”采样器和'BSF预处理器'。

将BSF语言设置为'javascript',并将代码键入文本框或将其指向文件(使用完整路径或相对于JMeter进程的CWD)。

/* Since `Math.random()` gives us float, we use `java.util.Random()` 
* see: http://docs.oracle.com/javase/7/docs/api/java/util/Random.html */ 
var Random = new Packages.java.util.Random(); 

var min = 10-1; 
var max = 2; 
var maxLines = (min)+Random.nextInt(max-min); 

var s = ''; 

for (var d = 0; d <= maxLines; d++) { 
    s += d.toString()+','+Random.nextInt(1000).toString()+'\n'; 
} 

// s => '0,312\n1,104\n2,608\n' 

vars.put('PAYLOAD', s); 

现在我可以在HTTP请求中引用${PAYLOAD}

您可以生成JSON,但您需要升级jakarta-jmeter-2.5.1/lib/js-1.6R5.jar与最新版本Rhino以获得JSON.stringifyJSON.parse。这对我来说也很完美,尽管我认为我会在这里举一个简单的例子。

您也可以使用BSF预处理器来处理URL参数,只需在vars.put('X', 'some value')中设置另一个变量并将其作为${X}传递给请求参数即可。顺便说一下,

This blog post帮了很多忙。

相关问题