JMeter RESTful API(1)Version 4.0 and GUI

JMeter RESTful API(1)Version 4.0 and GUI

I have an example named MasterServerProxy
View Results Tree
Summary Report
Aggregate Report
DevVm with one request test.

In the Report
1. Sample - number of requests sent
2. Avg - an Arithmetic mean for all responses (sum of all times / count)
3. Minimal response time (ms)
4. Maximum response time (ms)
5. Deviation - see Standard Deviation article
6. Error rate - percentage of failed tests
7. Throughput - how many requests per second does your server handle. Larger is better.
8. KB/Sec - self expalanatory
9. Avg. Bytes - average response size

We did some GC JVM changes according to these article
https://www.ibm.com/developerworks/cn/java/j-lo-JVMGarbageCollection/
https://www.ibm.com/developerworks/cn/java/j-lo-jvm-optimize-experience/index.html


References:
Run JMeter in Command Line
http://blog.e-zest.com/how-to-run-jmeter-in-non-gui-mode/
http://www.testingjournals.com/understand-summary-report-jmeter/

What does JMeter means in the Report
https://stackoverflow.com/questions/20143401/how-to-analyze-a-jmeter-summary-report
### 三级标题:JMeter 测试 RESTful API 性能的方法 JMeter 是一个功能强大的开源工具,广泛用于测试 RESTful API 的性能。它支持多种协议,包括 HTTP、HTTPS、SOAP、REST 等,能够模拟大量用户并发访问 API,从而评估系统在高负载下的表现。JMeter 可以通过线程组设置并发用户数,并结合定时器控制请求频率,实现对 RESTful API 的压力测试和性能分析[^2]。 在测试 RESTful API 时,通常使用 **HTTP 请求** 组件来模拟客户端请求。用户可以配置请求方法(如 GET、POST、PUT、DELETE)、请求头、请求参数以及请求体。例如,测试一个返回用户信息的 GET 请求时,可以设置域名、端口和路径,同时指定响应数据格式(如 JSON 或 XML),以便后续进行断言验证[^2]。 ```xml <HTTPSamplerProxy> <stringProp name="HTTPSampler.domain">api.example.com</stringProp> <stringProp name="HTTPSampler.port">8080</stringProp> <stringProp name="HTTPSampler.path">/users</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp> <stringProp name="HTTPSampler.useKeepAlive">true</stringProp> </HTTPSamplerProxy> ``` 为了验证 API 的响应是否符合预期,可以使用 **响应断言** 组件。断言可以基于响应代码、响应时间、响应内容等条件进行设置。例如,验证返回状态码是否为 200,或者检查响应体中是否包含特定的 JSON 字段,从而确保 API 的功能正确性和性能稳定性[^2]。 在高并发测试中,可以使用 **Synchronizing Timer** 实现线程集合点,确保多个线程在同一个时间点发起请求,模拟真实场景下的并发压力。该组件允许设置并发用户数和超时时间,以控制线程集结的策略,避免测试过程中因线程启动时间不同步而造成压力分布不均。 此外,JMeter 支持使用 **CSV 数据文件** 进行参数化测试。用户可以将多个测试数据存储在 CSV 文件中,并在 HTTP 请求中引用这些变量,实现多用户不同参数的测试场景。这种方式有助于提高测试覆盖率,并模拟更接近真实业务的数据交互情况[^1]。 对于复杂的测试场景,可以使用 **JSR223 脚本**(如 Groovy)实现动态数据生成、加密处理或复杂的业务逻辑控制。例如,在测试需要签名的 API 接口时,可以使用脚本生成动态签名,并将其作为请求参数传递,从而确保测试数据的准确性和安全性[^1]。 ### 示例配置 以下是一个完整的测试 RESTful APIJMeter 配置示例: ```xml <ThreadGroup> <stringProp name="ThreadGroup.num_threads">100</stringProp> <stringProp name="ThreadGroup.ramp_time">30</stringProp> </ThreadGroup> <SynchronizingTimer> <stringProp name="simultaneous_users">50</stringProp> <stringProp name="timeout">1000</stringProp> </SynchronizingTimer> <CSVDataSet> <stringProp name="filename">test_data.csv</stringProp> <stringProp name="variableNames">username,password</stringProp> </CSVDataSet> <HTTPSamplerProxy> <stringProp name="HTTPSampler.domain">api.example.com</stringProp> <stringProp name="HTTPSampler.path">/login</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <stringProp name="Argument.name">username</stringProp> <stringProp name="Argument.value">${username}</stringProp> </elementProp> <elementProp name="" elementType="HTTPArgument"> <stringProp name="Argument.name">password</stringProp> <stringProp name="Argument.value">${password}</stringProp> </elementProp> </collectionProp> </elementProp> </HTTPSamplerProxy> <ResponseAssertion> <stringProp name="Assertion.test_field">RESPONSE_CODE</stringProp> <stringProp name="Assertion.comparator">equals</stringProp> <stringProp name="Assertion.comparison_value">200</stringProp> </ResponseAssertion> ``` 上述配置中,线程组设置为 100 个并发用户,并在 30 秒内逐步启动。Synchronizing Timer 设置为每 50 个线程集结一次,最多等待 1000 毫秒。CSVDataSet 用于从 test_data.csv 文件中读取用户名和密码,HTTPSamplerProxy 模拟登录请求,ResponseAssertion 验证响应状态码是否为 200。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值