“绝密文件曝光:全球最强压测工具竟然是它!“

随着互联网和移动互联网的高速发展,越来越多的企业需要通过网络应用来提供服务,以满足用户的需求。同时,为了保证网络应用的稳定性和可靠性,各种负载测试工具也应运而生。在这篇文章中,我们将介绍四种常见的压测工具:wrk、ab、loadrunner和jmeter,并举例说明它们的使用方法。

  1. wrk

wrk是一个轻量级的HTTP压力测试工具,它使用Lua编写,并在epoll模型上进行优化,可以发送高并发的HTTP请求。以下是一个使用wrk测试本地服务器的示例代码:

wrk -t4 -c100 http://localhost:8080

上面的命令表示开启4个线程模拟100个客户端访问本地的8080端口,可以得到如下统计信息:

Running 10s test @ http://localhost:8080
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   290.54us  246.90us  11.25ms   97.80%
    Req/Sec    14.61k     2.59k   18.52k    72.75%
  582319 requests in 10.00s, 70.03MB read
Requests/sec:  58231.88
Transfer/sec:      7.00MB

可以看到,在10秒的测试中,wrk共发起了582319个请求,平均每秒可以处理58231个请求。

  1. ab

ab是Apache Web Server自带的一个工具,也是一个轻量级的HTTP测试工具,可以在Linux和Windows平台上运行。以下是一个使用ab测试本地服务器的示例代码:

ab -n1000 -c10 http://localhost:8080/

上面的命令表示发起1000个请求,10个并发,测试本地的8080端口,可以得到如下统计信息:

 
 
Server Software:        Apache/2.4.18
Server Hostname:        localhost
Server Port:            8080

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10
Time taken for tests:   1.035 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      126000 bytes
HTML transferred:       12000 bytes
Requests per second:    965.55 [#/sec] (mean)
Time per request:       10.345 [ms] (mean)
Time per request:       1.035 [ms] (mean, across all concurrent requests)
Transfer rate:          118.96 [Kbytes/sec] received

可以看到,ab发起了1000个请求,平均每秒可以处理965个请求。

  1. loadrunner

loadrunner是一款商业化的压测工具,拥有强大的功能和广泛的支持。以下是一个使用loadrunner测试本地服务器的示例代码:

Action()
{

    lr_start_transaction("transaction_name");
    lr_think_time(5);
    web_url("url",
        "URL=http://localhost:8080/",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        LAST);
    lr_end_transaction("transaction_name", LR_AUTO);

    return 0;
}

上面的代码表示在执行一个事务(transaction_name)前等待5秒,然后访问本地的8080端口,并将结果存储到t1.inf中。

4.jmeter

JMeter是一款免费的、开源的压测工具,用于模拟实际用户负载对服务器、网络等系统资源的影响。JMeter的主要功能包括开发各种HTTP请求、FTP请求、JDBC操作、SOAP/XML-RPC请求以及定制Java请求等。

以下是使用JMeter进行简单的HTTP请求的示例代码:

  1. 首先,打开JMeter软件,在Test Plan中右键点击Add -> Threads(Users) -> Thread Group。

  2. 在Thread Group的属性面板中设置线程数、循环次数、启动时间和持续时间等参数。

  3. 选择Thread Group,右键点击Add -> Sampler -> HTTP Request,填写服务器地址、端口号和路径等请求信息。

  4. 进入HTTP Request的属性面板中,可以设置请求方法、参数、请求头和响应校验等详细配置。

  5. 接着,可以添加断言、监听器等组件来分析测试结果,比如通过Response Assertion来检查响应结果是否符合预期。

  6. 最后,点击运行按钮即可启动测试,并在Listeners面板中查看测试结果。

下面是一个简单的JMeter脚本示例,用于向百度搜索发送GET请求并检查响应结果是否包含关键词:

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.1.1">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Example Test Plan" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Example Thread Group" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">1</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1577437923000</longProp>
        <longProp name="ThreadGroup.end_time">1577437923000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Example HTTP Request" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="HTTPSampler.domain">www.baidu.com</stringProp>
          <stringProp name="HTTPSampler.port"></stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol">http</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">/s</stringProp>
          <stringProp name="HTTPSampler.method">GET</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="

 【软件测试到测试开发全测试生涯学习路线】

以及全套配套的学习资料,视频教程....

:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】

1:自动化测试进阶系列:

2:全栈性能测试,监控以及调优

3:全栈测试开发平台实战

4:全栈安全测试渗透测试

5:devops持续集成部署

6:全栈接口测试工具进阶

7:跨平台自动化测试工具

8:大厂简历,真题,录音

9:全栈系列课企业项目实战

总结:下方是作者从功能测试到自动化测试拿到年薪34w,花费三年打造的软件测试到测试开发全职业生涯资料包,有需要的话可以点击文章末尾的小卡片备注000领取哈

猜你喜欢

转载自blog.csdn.net/csdnchengxi/article/details/129843688
今日推荐