2024年了, 你还不会使用node.js做压力测试?

前些天刷抖音,看到网传的Java继父,求人攻击压测他的网站,这不得摩拳擦掌。

所以今天来聊聊如何对自己的项目、接口进行压力测试

压力测试的目的

首先, 绝对不是为了压测、攻击别人的网站为乐。

1、探索线上系统流量承载的极限;

2、保障咱们这线上系统具备一定抗压能力。

工具

autocannon,中文译为自动炮, 是一款基于nodejs的压力测试工具,支持命令行和写代码来进行测试。因为我是前端所有选择了这个,其他诸如 ab、ebbench均可。

压力测试

01 安装

全局安装autocannon:

npm i autocannon -g

02 命令行使用

执行:

autocannon -c 100 -d 5 -p 1 https://appvxnsma4r5053.pc.xiaoe-tech.com/

命令解释:用100个连接、持续5秒去访问 https://appvxnsma4r5053.pc.xiaoe-tech.com/

执行示例截图:

图片

参数释义:

-c/–connections NUM 并发连接的数量,默认10;

-p/–pipelining NUM 每个连接的流水线请求请求数,默认1;

-d/–duration SEC 执行的时间,单位秒;

-m/–method METHOD 请求类型 默认GET;

-b/–body BODY 请求报文体;

-H/–header 请求头。

写代码压测

命令行执行简单的压力测试还好,复杂一点,还是建议写脚本。

例如:

对后端接口进行压力测试

我举例一个场景, 比如你想对某新增接口的短时间内大量新增测试,就可以来试试。

创建一个js文件 例如:

touch app.js

从调试工具network复制fetch:

图片

书写如下:

将上一步复制出来的信息,悉数填在下面。

  1. const autocannon = require('autocannon')

  2. autocannon({

  3. url: '你的接口',

  4. "headers": {

  5. "accept": "application/json, text/plain, */*",

  6. "accept-language": "zh-CN,zh;q=0.9",

  7. "authorization": "",

  8. "cookie": "acw_tc=0bca324216820466206848044ebf9191e5a0e4b89a4e9bc8b18e333d13f537",

  9. "Referrer-Policy": "strict-origin-when-cross-origin"

  10. },

  11. "body": "你的参数",

  12. "method": "POST", // 你接口的methods get / post

  13. connections: 10, // 连接数

  14. pipelining: 1, // 流水线数量

  15. duration: 10 // 持续时间

  16. }, console.log)

执行测试:

node app.js

执行后发现压力测试执行了三千多次,创建了三千多个任务, 后端接口直接响应变成了30秒。

如此就找到了一个问题:手动创建这三千个创到什么时候,还得借助工具。

测试时,没有JMeter等工具也能做:

图片

图片

如何发现系统突破口

前端静态页面没啥可看的,找能拉高瓶颈的点,必须大量计算的拉高cpu和榨干数据库磁盘的IO。

建议打开项目,看后端接口, 最好是增删改的, 找那种响应相对比较慢的, 这种应该逻辑比较复杂, 去测试它。

不出意外,同样并发,压测这个,cpu肯定飙得更高一些, 这样狠狠地测试就能发现系统一些问题。

如何压测时查看可用情况?

众所周知,如果压测的并发数比较高,你本地的带宽基本被榨干,此时本地你访问项目,可用情况是不准确的!

所以最好有两台电脑, 或者有一台服务器, 一台执行测试自己的项目,另外一台看看能否正常访问,是不是崩了。没崩说还没到咱们系统的极限,可以尝试加大压力。

压测没给到压力?

咱们是流量压测,属于DDOS。

1、自身机器配置和网络带宽也是瓶颈, 倘若你本地带宽较小、机器配置也比较拉, 比如你设置10000qps, 你的机器资源有限,cpu都100%了, 也根本一秒钟发不出这么多, 那必然不行,只能加机器、加带宽。

2、 目标有昂贵的高仿服务器进行流量清洗、异常流量拦截, 你没有直接打到源站。那你就找找源站ip, 直接压力给到源站。

最后

压力测试可以模拟大量用户访问, 来测试我们应用的承载能力, 可以帮助我们提前发现问题和瓶颈,早早制定应对措施,但大家不要对别的人网站随意压测呦。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值