测试项目

在测试之前需要我们单独搭建一套测试环境。

搭建环境

Copy of CNode社区应用 · 凡猫资源项目组

根据上面文档搭建测试环境。

参考视频 cnode社区环境搭建.mp4

测试脚本

测试场景

  1. 针对注册场景进行 压力测试 (有拉新人活动)

一般情况下,有注册接口,但是 我们目前的测试系统没有接口,需要抓包获取。
image.png

根据抓包,找到对应的数据
image.png
image.png

创建对应的请求

根据抓包的信息,创建对应的请求。
image.png
因为要模拟批量注册,所以用户名和密码,邮箱使用内置函数生成。

randomstring 生成随机字符串

image.png

再在请求中使用对应的数据
image.png
因为这个接口注册成功之后返回的是html页面,添加断言。
注册成功会返回页面;image.png
image.png


设置线程组

线程组-用户注册.jmx
上面做好了注册接口。
测试场景:

  1. 模拟100个并发,压测时间为 10min;
  2. 检测的时候监控服务器

设置线程数

image.png
线程数 设置为100 表示100个虚拟用户。
持续时间: 600秒 即 10分。

添加聚合报告

添加聚合报告

【线程组】—【添加】—【监听器】—【聚合报告】
image.png

服务器监控

使用 htop 命令监控服务器状态

  1. yum install -y htop

执行

  1. htop

image.png
查看聚合报告

  • 样本数: 总共执行请求数量
  • 平均值: 平均响应时间 (单位:毫秒)
  • 中位数: 中间数
  • 90% : 90%的响应时间
  • 95%: 95%的响应时间
  • 异常: 出错的比率
  • 吞吐量: 每秒处理事务的数量

注册完成用户之后,激活用户
命令行中输入 mongo 命令进入到数据库中

  1. mongo
  1. use node_club_dev
  1. db.users.update({"active" : false},{$set:{ "active" : true}},true,true)

用户导出

在服务器中执行 mongodb 导出数据命令

  1. mongoexport -d node_club_dev -c users -f accessToken --csv -o /tmp/testusers.csv
  • mongoexport mongodb的导出命令
  • -d node_club_dev 导出的数据库
  • -c users 导出表名称
  • -f accessToken 导出的字段名
  • —csv 导出的数据文件格式为 csv
  • -o /tmp/testusers.csv 数据导出路径

image.png

下载 测试数据文件
image.png

压测—监控服务器

场景: 模拟100个用户同时发布话题,持续时间为5分钟,
观察 响应时间,错误率,以及服务器的状态;
image.png
使用csv 数据驱动
image.pngimage.png

作业

测试场景
模拟 1000用户,
运行时长:10分钟
运行场景

  1. 用户A 新建主题
  2. 用户B 新建评论 用户A的主题
  3. 用户A 回复 用户B的评论
  4. 用户B 收藏用户A的话题

使用到上下游传参
使用到csv配置token


备注:
如果服务器崩了。重启服务

  1. 重启服务器

    1. reboot

    两分钟之后重新连接服务器

  2. 启动服务 ```json cd /root/nodeclub

pm2 start app.js

  1. 这样就可以了
  2. ---
  3. 如何清空数据库中冗余数据?
  4. 1. 登录服务器,使用 `mongo` 进入到数据库中
  5. ```json
  6. mongo
  1. 使用 node_club_dev 数据库

    1. use node_club_dev
  2. 查看库中所有的表

    1. show tables;

    image.png

  3. 清空表中的数据

    1. db.topics.remove({});
  • 清空 topics 表中所有的数据。

image.png

更过mongodb 使用方法
https://www.runoob.com/mongodb/mongodb-update.html