JMeter - 如何测试REST API / 微服务
2021-06-15 10:04
标签:特定 json 匹配 blank 吞吐量 tor price 格式 drive 有许多方法和工具可用于测试REST API。 如果您的计算机中未安装JMeter,请选中此 链接。 它有安装JMeter的详细步骤。 启动JMeter后,您将看到Test Plan 元素,它是JMeter测试的根节点,我们将在其中为测试添加各种JMeter元素。 现在让我们为测试添加所需的元素。 您的JMeter测试将如下所示(我没有包括监听器)。 现在如果你运行它,你应该能够发送请求并成功获得响应。 注意:如果由于某种原因它不起作用,请尝试将HTTP请求实现更改为Java /其他值并尝试一下。 无论我们到目前为止做了什么,都是一个非常简单的测试 - 就像POC一样。现在让我们看看如何进一步改进它。 在上面的示例中,我们发送硬编码请求JSON来测试API。我们可能必须针对不同的数据集测试API。 让我们举一个非常简单的例子,我有一个API,它给出了我发送的图书ID请求的图书名称和价格详细信息。 让我们假设我们的API请求采用以下格式。 让我们假设我们的API响应如下所示。 在测试计划下添加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响应中提取特定值。 让我们假设,我的样本响应看起来像这样。 我可以添加一个JSON Extractor,如下所示,将作者的值提取到变量authorValue中。 让我们考虑下面的JSON响应 有关这方面的更多信息,请点击此处。 您可能已经验证了API功能! 但是,我们如何知道有关API的以下信息? 通过使用我们刚刚创建的相同测试,JMeter也可以在这里提供帮助! 立即运行您的仪表测试。“聚合报告”将基本了解您的REST API性能指标,例如在给定持续时间内发出的请求数,平均响应时间,吞吐量,“90%行”等。[注意:运行JMeter性能不是一个好习惯我们刚刚在GUI模式下测试,因为它消耗更多内存。请查看此提示和技巧 ,了解要遵循的最佳做法。] 我们刚刚创建了一个简单的数据驱动框架,用于在不使用任何编程语言的情况下使用JMeter测试REST API的功能行为。 我们还看到了如何通过重用为功能测试创建的相同脚本,使用JMeter对我们的API进行性能测试。 您可能希望继续阅读有关JMeter - REST API - 数据驱动测试的高级用法的更多信息 你是JMeter的新手吗?- 然后你应该完全检查这篇文章,它提供了有关JMeter最佳实践和初学者常见错误的更多信息。 To check the HTTP response code (assuming you have stored the expected response code in CSV in ‘resCode’ column), JMeter - 如何测试REST API / 微服务 标签:特定 json 匹配 blank 吞吐量 tor price 格式 drive 原文地址:https://www.cnblogs.com/a00ium/p/10381283.html概述:
当我需要测试REST API时,在查看了各种工具和选项之后,由于以下原因,我选择了JMeter。
安装JMeter:
创建一个简单的API JMeter测试:
参数化测试数据:
CSV中的测试数据:
请求JSON:
{
"bookid": 1
}
响应JSON:
{
"bookname": "Awesome Jmeter"
"bookprice": 23.5
}
参数:
断言:
从JSON响应中提取数据:
{
"title":"In Search of Lost Time",
"author":"Marcel Proust",
"id":1
}
{
"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
}
}
}
REST API的性能测试:
摘要:
Response Assertion can also compare the response code.
But, We will have more control over Beanshell Assertion.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";
}