其他分享
首页 > 其他分享> > 不同环境的性能测试计划

不同环境的性能测试计划

作者:互联网

不同环境下的 JMeter 性能测试,设置基本一致,只是地址,账户等信息不同,本文利用 Shell 脚本和 JMeter 变量进行统一处理

安装 JMeter

wget https://mirror.cogentco.com/pub/apache//jmeter/binaries/apache-jmeter-5.4.1.tgz
tar -zxvf apache-jmeter-5.4.1.tgz -C /opt

把执行目录加入 PATH

export PATH="$PATH:/opt/apache-jmeter-5.4.1/bin"

设置测试计划

运行 JMeter GUI

jmeter

常规设置

  1. 右键单击 Test Plan,把鼠标移至 Add,再移至 Threads(User),点击 Thread Group,设置合适的 Number of Threads (users) 值
  2. 右键单击 Test Plan 下新增的 Thread Group,把鼠标移至 Add,再移至 Config Element,点击 HTTP Request Default,设置 Server Name or IP 为 ${__P(HOST)},Port Number 为 ${__P(PORT)}
  3. 右键单击 Thread Group,把鼠标移至 Add,再移至 Sample,点击 HTTP Request,设置 Name 为 Frontend,Path 为 /
  4. 右键单击 Thread Group,把鼠标移至 Add,再移至 Sample,点击 HTTP Request,设置 Name 为 Backend,Path 为 /api/currentUser
  5. 右键单击 Thread Group,把鼠标移至 Add,再移至 Assertion,点击 Response Assertion,设置 Field to Test 为 Response Code,Patten Matching Rules 为 Equals,点击下方的 Add,输入 200

权限处理

以上的后端接口是需要先登录才能有权限访问的,权限认证方式为 cookies 或 Authorization Header 中的 token,所以需要先获取这个 token, 并在每次访问时带上

  1. 右键单击 Test Plan,把鼠标移至 Add,再移至 Threads(User),点击 setUp Thread Group
  2. 右键单击 Test Plan 下新增的 setUp Thread Group,把鼠标移至 Add,再移至 Sample,点击 HTTP Request,设置 Name 为 Login,Server Name or IP 为 ${__P(HOST)},Port Number 为 ${__P(PORT)},HTTP Request 的方法为 POST,Path 为 /api/login/account,点击 下方的 Add,分别增加 Name 为 username 和 password,Value 为 ${__P(USERNAME)}${__P(PASSWORD)}
  3. 右键单击 setUp Thread Group,把鼠标移至 Add,再移至 Post Processors,点击 Regular Expression Extractor,设置 Name of created variable 为 token,Regular Expression 为 "token":"(.+?)",Template 为 $1$
  4. 右键单击 setUp Thread Group,把鼠标移至 Add,再移至 Sample,点击 BeanShellSampler,设置 Name 为 Token,Script 为 ${__setProperty(token, ${token})}
  5. 右键单击 Thread Group,把鼠标移至 Add,再移至 Config Element,点击 HTTP Cookie Manager,点击下方的 Add,设置 Name 为 token,Value 为 ${__property(token)},Domain 为 ${__P(HOST)}:${__P(PORT)},Path 为 /

运行测试计划

直接运行

以上的计划设置,把地址和账户信息都作为变量,可以在命令行传递,形如:

mkdir report
HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
jmeter -n -t test.jmx \
-J HOST=127.0.0.1 \
-J PORT=80 \
-J USERNAME=USERNAME \
-J PASSWORD=PASSWORD \
-l log/local-20210620095700.txt \
-e -o report/local-20210620095700

脚本处理

以上命令相对繁琐,而且不同环境需要重新设置每个参数,所以通过 Shell 脚本简化

设置变量

export LOCAL_HOST=127.0.0.1
export LOCAL_PORT=80
export LOCAL_USERNAME=USERNAME
export LOCAL_PASSWORD=PASSWORD
export TESTING_HOST=192.168.1.10
export TESTING_PORT=80
export TESTING_USERNAME=USERNAME
export TESTING_PASSWORD=PASSWORD
export PRODUCT_HOST=192.168.1.100
export PRODUCT_PORT=80
export PRODUCT_USERNAME=USERNAME
export PRODUCT_PASSWORD=PASSWORD

调用变量

#!/bin/sh

time=$(date "+%Y%m%d%H%M%S")
server=${1:-"local"}
prefix=$(echo $server | tr 'a-z' 'A-Z')_
HOST=${prefix}HOST
PORT=${prefix}PORT
USERNAME=${prefix}USERNAME
PASSWORD=${prefix}PASSWORD

if ! [ -d "report" ]
then
mkdir report
fi

HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
jmeter -n -t test.jmx \
  -J HOST=${!HOST} \
  -J PORT=${!PORT} \
  -J USERNAME=${!USERNAME} \
  -J PASSWORD=${!PASSWORD} \
  -l log/$server-$time.txt \
  -e -o report/$server-$time

运行脚本

本地环境

./test.sh

测试环境

./test.sh testing

正式环境

./test.sh product

总结

以上计划和脚本可以在此 GitHub 仓库 下载,主要实现了:

标签:移至,测试计划,性能,环境,HOST,USERNAME,Add,export,__
来源: https://www.cnblogs.com/chanvin/p/performance-test-plan-for-different-environment.html