标签:特定 json 匹配 blank 吞吐量 tor price 格式 drive
有许多方法和工具可用于测试REST API。
当我需要测试REST API时,在查看了各种工具和选项之后,由于以下原因,我选择了JMeter。
如果您的计算机中未安装JMeter,请选中此 链接。 它有安装JMeter的详细步骤。
启动JMeter后,您将看到Test Plan 元素,它是JMeter测试的根节点,我们将在其中为测试添加各种JMeter元素。
现在让我们为测试添加所需的元素。
您的JMeter测试将如下所示(我没有包括监听器)。
现在如果你运行它,你应该能够发送请求并成功获得响应。
注意:如果由于某种原因它不起作用,请尝试将HTTP请求实现更改为Java /其他值并尝试一下。
无论我们到目前为止做了什么,都是一个非常简单的测试 - 就像POC一样。现在让我们看看如何进一步改进它。
在上面的示例中,我们发送硬编码请求JSON来测试API。我们可能必须针对不同的数据集测试API。
让我们举一个非常简单的例子,我有一个API,它给出了我发送的图书ID请求的图书名称和价格详细信息。
让我们假设我们的API请求采用以下格式。
{
"bookid": 1
}
让我们假设我们的API响应如下所示。
{
"bookname": "Awesome Jmeter"
"bookprice": 23.5
}
在测试计划下添加CSV数据集配置并更新上面给出的详细信息。
我们不是发送硬编码的书籍ID,而是使用CSV文件的“id”列中的值对其进行参数化。
而已。如果您现在运行测试,它应该为CSV文件中的每一行逐个发送6个请求。
我们可以做得比这更好 - 如果有不同类型的请求 - GET / POST / DELETE / PUT / PATCH等等。使用JMeter非常容易。我完全通过电子表格驱动我的测试,如下所示。请在此处查看JMeter - REST API - 数据驱动测试的高级用法
如果我们可以发送请求并获得响应,那么我们完成了吗?不!!但是,我们几乎就在那里!
我们需要验证我们是否得到了预期的响应。因此,最后一步是添加断言。
我在上面的示例中显示的CSV文件中有预期的书名和价格详细信息。让我们使用这些细节来检查我们的API是否按预期工作。
在HTTP Request下添加Response Assertion ,如下所示。我们需要验证响应中是否有预期的图书名称和价格。按下面的说明添加它们。
此断言将验证响应并相应地通过/失败测试。(确保模式匹配规则是‘包含‘,因为我们只检查书名和价格。我们没有验证整个响应。)
持续时间断言:
JMeter不仅验证文本,还验证请求的“ 时间 ”。如果我们添加“持续时间断言”并设置可接受的时间限制,JMeter可以确认是否在时间限制内收到了响应。
有时,您可能希望从JSON响应中提取特定数据,并将此数据传递给JMeter中的后续请求。JMeter提供了一个JSON Extractor来从JSON响应中提取特定值。
让我们假设,我的样本响应看起来像这样。
{
"title":"In Search of Lost Time",
"author":"Marcel Proust",
"id":1
}
我可以添加一个JSON Extractor,如下所示,将作者的值提取到变量authorValue中。
让我们考虑下面的JSON响应
{
"store":{
"book":[
{
"category":"reference",
"author":"Nigel Rees",
"title":"Sayings of the Century",
"price":8.95
},
{
"category":"fiction",
"author":"Evelyn Waugh",
"title":"Sword of Honour",
"price":12.99
}
],
"bicycle":{
"color":"red",
"price":19.95
}
}
}
有关这方面的更多信息,请点击此处。
您可能已经验证了API功能!
但是,我们如何知道有关API的以下信息?
通过使用我们刚刚创建的相同测试,JMeter也可以在这里提供帮助!
立即运行您的仪表测试。“聚合报告”将基本了解您的REST API性能指标,例如在给定持续时间内发出的请求数,平均响应时间,吞吐量,“90%行”等。[注意:运行JMeter性能不是一个好习惯我们刚刚在GUI模式下测试,因为它消耗更多内存。请查看此提示和技巧 ,了解要遵循的最佳做法。]
我们刚刚创建了一个简单的数据驱动框架,用于在不使用任何编程语言的情况下使用JMeter测试REST API的功能行为。 我们还看到了如何通过重用为功能测试创建的相同脚本,使用JMeter对我们的API进行性能测试。
您可能希望继续阅读有关JMeter - REST API - 数据驱动测试的高级用法的更多信息
你是JMeter的新手吗?- 然后你应该完全检查这篇文章,它提供了有关JMeter最佳实践和初学者常见错误的更多信息。
Response Assertion can also compare the response code.
But, We will have more control over Beanshell Assertion.
To check the HTTP response code (assuming you have stored the expected response code in CSV in ‘resCode’ column),
if (ResponseCode.equals(vars.get("resCode")) == true && ResponseData.contains(vars.get("expectedMessage")) == true ) { SampleResult.setResponseOK(); }else{ Failure=true; FailureMessage="Response code/data not as expected"; }
标签:特定 json 匹配 blank 吞吐量 tor price 格式 drive
原文地址:https://www.cnblogs.com/a00ium/p/10381283.html