当前位置: 首页 > news >正文

[jmeter-商城测试]

项目准备

项目介绍
  • 背景 : 电商平台,主要测试接口性能,给出优化建议,保证2-3年满足用户使用需求
  • 技术架构 :
    • 支持微信小程序,web访问,采用前后端分离的架构设计
    • 前端 : 以node.js为核心的vue.js前端技术框架
    • 后端 : springboot+springcloud+springMVC+springData(spring全家桶)+mysql+redis
项目数据库
  • 熟悉方法 :
    • 1 : 借助navicat工具,表名-右键-设计表查看
    • 2 : 使用show create table 表名; 查看表的设计信息
项目环境
  • 什么是搭建项目环境 : 准备项目工作所需要的软件(linux+应用服务器(nginx)+数据库(mysql)+项目代码)

  • 如何获取项目环境 : 通过开发(项目经理,测试主管)获取指定版本的项目环境 /开发运维协助搭建

  • 搭建环境常用命令(linux)

    • 查看当前网络 : ifconfig(linux),ipconfig(win)
    • 测试网络 : ping 目标ip 地址(局域网测试时,防火墙必须关闭)
    • 修改文件(目录)权限:
      • chmod 777 文件名
      • chmod a+x 文件名 给文件添加执行权限
      • chmod -R 777 目录名 -R : 递归访问文件的所有子内容
    • 压缩,解压缩:
      • zip : unzip xxx.zip
      • tar :
        • tar -zcvf xxx.tar.gz 打包的文件/目录 (压缩命令)
        • tar -zxvf xxx.tar.gz -C 指定解压的位置(解压缩命令)
    • 查看系统中进程
      • ps aux | grep 关键字
        • 查询的结果必须是两条以上,才表示有响应的进程运行在系统中
    • 指定进程杀死
      • kill -9 进程id
    • 启动脚本 :
      • bash xxx.sh
      • 添加执行权限后启动 : ./xxx.sh
    • scp 超级拷贝 (需要依赖ssh)
      • 语法 : scp -r 待拷贝的文件名/目录名 目录主机用户名@目标主机ip地址 : 绝对路径存储位置
        • eg : scp -r ServerAgent.zip root@172.16.28.5:/home/admin/test
  • 轻商城项目启动步骤

    • 将litemall商城虚拟机压缩包,解压缩到系统中
    • 使用VM工具 打开解压缩目录中 .vmx
    • 点击’未列出’,输入用户名和密码
    • 登录成功后 linux服务器需要时间启动nginx和mysql服务器的程序
    • 获取linux的ip地址,保证windows能够ping通linux
    • 修改C:\Windows\System32\drivers\etc\hosts 下的hosts文件
      • 写入 : 服务器IP地址 : www.litemall360.com
      • 建议不要在目录中改,先拷贝,后改正覆盖原文件
    • 成功启动页面:
      在这里插入图片描述

项目实战

性能测试流程
  1. 性能测试需求分析
  2. 性能测试测试计划和方案
  3. 编写性能测试用例
  4. 搭建测试环境
  5. 编写测试脚本
  6. 服务器性能监控
  7. 分析和调优
  8. 生成测试报告和总结
性能测试常用指标
  1. 响应时间 (网络时间+用用服务器处理时间------查看聚合报告 : 平均值 , 95%)
  2. 并发数
  3. 吞吐量(设置常数吞吐量定时器----查看聚合报告吞吐量)
  4. 错误率(看聚合报告: 吞吐量)
  5. 服务器资源利用率(CPU,磁盘,网络,内存)
性能测试需求分析
  • 目的 :
    • 熟悉待测项目,找出性能测试的目标
  • 挑选性能测试的模块:
    • 用户频繁使用的模块
    • 项目的核心业务/复杂度较高的模块
    • 修改过的核心模块,频繁使用模块
      在这里插入图片描述
  • 确定核心指标和预期值:
    • 有文档看需求文档
    • 没有文档,参考历史数据/竞品数据
      在这里插入图片描述
测试计划与方案
  • 测试什么?
    • 测试背景
    • 测试目的
    • 测试范围
  • 怎么测试?
    • 基准测试,负载测试(分别模拟1,5,10,30,50,100用户进行负载,看各项指标是否符合需求),稳定性测试(验证系统是否存在内存溢出等问题)
  • 谁来测试?
    • 测试人员工作进度,内容安排
  • 其它
    • 风险的预估和解决方案(环境风险,数据风险-构造数据时间太长,交付风险)
    • 交付清单
    • 准入准出准则
测试用例设计
  1. 编写性能测试用例
    在这里插入图片描述
  • 根据给出需求,写入用例描述
  • 采用逐步加压的方式,扩大并发用户数,查看TPS和响应时间
  • 当测到预设的目标时,一般会继续加大压力,找出性能的最大负载
  • TPS借助常数吞吐量定时器修改对应数据进行测试
  • 测试 服务器资源利用率,在服务器中添加监听工具ServerAgent,jmeter中使用插件PerfMon监听.
编写测试脚本
  • http请求默认值(配置元件中):
    • 作用 : 测试计划中的所有请求,均可以共用http请求默认值中设置的内容(请求方法,url,端口号)
登录
  • 使用的端口号为8080
  • 使用url为:http://www.litemall360.com:8080/wx/auth/login
  • 步骤:
    • 新建http请求默认值填入http://www.litemall360.com 在这里插入图片描述
    • http信息头管理填入数据类型content-type:application/json;charset=UTF-8
    • 在http请求中填入请求方法post,路径名,请求参数
      在这里插入图片描述
    • 运行后查看结果树是否登陆成功返回相应的值
      在这里插入图片描述
进入首页
  • 首页url : http://www.litemall360.com:8080/wx/home/index
  • 方法GET
  • 复写登录线程组,执行结果显示各项产品数据
    在这里插入图片描述
搜索商品
  • 搜索商品url : http://www.litemall360.com:8080/wx/goods/list?keyword=蔓越莓曲奇 200克&page=1&limit=10&categoryId=0
  • 请求方法 : GET
  • 运行线程组获得响应数据
    在这里插入图片描述
查看商品详情
  • 查看商品详情url : http://www.litemall360.com:8080/wx/goods/category?id=1005000
  • 请求方法 : get
  • 填入http请求并获取响应数据
    在这里插入图片描述
添加购物车
  • 获取url请求方法为 : http://www.litemall360.com:8080/wx/cart/add在这里插入图片描述
  • 填入请求体数据
    在这里插入图片描述
    在这里插入图片描述
  • 加入购物车需要登录,线程组中登录通过json提取器提取登录token的值,将token的值添加到http信息头管理器中方便添加购物车下一步使用

在这里插入图片描述在这里插入图片描述

  • 启动线程查看结果(我这里总是报参数错误),实际数据应与响应中的一致
查看购物车
  • 与加入购物车一致(需先登录提取token)
  • 启动后结果
    在这里插入图片描述
商品结算,提交订单,我的订单等步骤同理
  • 商品结算url : http://www.litemall360.com:8080/wx/cart/checkout?cartId=0&addressId=0&couponId=0&grouponRulesId=0
    在这里插入图片描述
业务流程

在这里插入图片描述

测试用例(一般一个是1-3min)

用户并发数与事务响应
  • 一般实际工作中,一条测试用例,一般测试1-3分钟,测试3-5轮取平均值,记录到测试用例中
  • 测试数据 : 设置常数吞吐量定时器,假设目标吞吐量为20TPS , 每分钟吞吐量为20*60=1200 , 吞吐量值 = 每分钟吞吐量/线程数
  • 期望性能测试结果总结 : 当线程并发数为30时,TPS的值达到20.2,平均响应时间为384ms,小于预设的性能指标,通过本次性能测试

在这里插入图片描述
在这里插入图片描述
查看相对应的聚合报告
在这里插入图片描述

并发用户数与应用服务器

在这里插入图片描述

  • 查看服务器资源利用率:
    • 在服务器安装启动配合jmeter监听的工具(serveragent)
    • 在jmeter中添加组件,监听CPU,内存,磁盘,网络使用率
    • 将serveragent导入linux可以更改虚拟机设计开启共享文件夹即可
      在这里插入图片描述
  • 添加perfmon
    在这里插入图片描述
  • 方便监听,单独使用组件进行测试.填入本机ip与辅助监听工具serveragent的端口号
    在这里插入图片描述
  • 总结:预设的性能指标,通过本次性能测试,当并发线程数为50时,cpu的使用率为100%,超出了预设的80%,性能测试未通过
  • 应用服务器与数据服务器存储在同一主机,省略测试过程

分析与调优

调优原则

按照由易到难:

  1. 硬件资源(CPU,内存,磁盘)
  2. 网络资源
  3. 中间件(应用服务器),数据库配置
  4. 源代码,数据库脚本
  5. 系统架构设计
硬件资源监控
工具
  • 结合服务器安装的Serveragent工具,配合jmeter的组件perfmon,实现服务器硬件资源监听
命令
  • top(当前linux系统中,实时查看cpu,内存的命令,类似于win下的资源管理器),q退出
    在这里插入图片描述
free
  • 作用 : 查看系统内存使用情况
  • -m是以MB为单位,-g是以G
    在这里插入图片描述
vmstat
  • 作用 : 查看cpu和内存的使用情况
    • r : 等除cpu时间片的进程数,如果这个数量长期大于逻辑cpu的数量,需要考虑增加cpu
    • b : 等除cpu以外的其它资源的进程数
      在这里插入图片描述
sar
  • sar -n DEV 1 1 查看网络设备的使用情况,1s1次,共发送一次
  • sar -n EDEV 1 1 : 查看网络发送,接收数据包过程中丢包,坏包情况
  • txpck是发送数据包
    在这里插入图片描述
iostat
  • 查看系统中磁盘读写使用情况
    在这里插入图片描述
应用服务器,数据库配置
  • 应用服务器
    • Apache : 默认最大连接数256
    • Nginx : 默认最大连接数1024 受linux系统默认打开的最大文件个数限制(ulimit -n)
    • Tomcat : 默认最大连接数200
    • 能够定位性能瓶颈是由 应用服务器的默认最大连接数限制即可
  • 数据库
    • MySQL : 默认最大连接数是151

慢查询

  • 由于数据库中数据量较大,对应字段没有设置能提高效率的手段,容易导致查询慢等
  • 实现步骤 :
    1. 开启mysql慢查询 开关(默认关闭off)
    2. 设置慢查询 阈值(默认阈值为10s)
设置与开启
  1. 查看mysql慢查询开关状态及日志位置
    • show variables like ‘slow_query%’;
  2. 使用SQL语句,开启MySQL慢查询开关
    • set global slow_query_log = ‘ON’;
  3. 查看mysql默认的慢查询阈值(默认是10)
    • show variables like ‘long_query_time’
  4. 修改 慢查询阈值
    • set global long_query_time=1;
  • mysql带有缓存命中率的机制,对于相同数据的反复查询,可以借助缓存提高查询效率,一旦内存被清理,查询速度依然慢
  • 查询日志文件命令 : tail -f 日志文件名.log

JVM

代码常见问题
  • 内存泄露(memory leak) : 内存不释放,代码需要使用内存,进行申请,使用结束后没有释放或释放不及时
  • 内存溢出(out of memory) : 内存不够用内存使用不当,导致系统的剩余内存不足以运行 应用程序
配置JVM监控工具
  • 什么是JVM
    • 是java虚拟机
  • 监控jvm的工具(监控栈)
    • jvisual VM 能监控JVM(java虚拟机)
java -jar
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.73.154
-Dcom.sun.management.jmxremote.port=10086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
litemall-all-0.1.0-exec.jar
------------------------------------
真正运行拼一行
java -jar -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.73.154 -Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false litemall-all-0.1.0-exec.jar
1. 添加参数,启动litemall服务器先确认win与linux系统间能够ping通使用ps aux | grep litemall 查询当前轻商城项目的服务器 使用kill -9 杀死原有服务器使用带参数的命令,重启litemall借助浏览器填入地址查看服务器是否重启成功
2. 在jdk安装bin目录下,找到JvisualVM.exe文件
3. 双击远程,写入litemall服务器ip地址
4. 在新生成的项目中,添加JMX连接
5. 弹出的页面中,设置端口号
6. 双击选择监视标签,看到堆的数据
  • 步骤
    在这里插入图片描述

    1. 安装目录中打开jvisualVM 在这里插入图片描述
    2. 填入自己linux的ip地址
      在这里插入图片描述
    3. 添加JMX的连接
      在这里插入图片描述
    4. 填入端口
      在这里插入图片描述
    5. 终端运行命令
    java -jar -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.73.154 -Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false litemall-all-0.1.0-exec.jar
    

    在这里插入图片描述

    1. 打开连接的的JMX页面
      在这里插入图片描述
    2. 进入轻商城页面,看是否能正常打开
      在这里插入图片描述
内存溢出演示

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 数据如果再大一些可能会出现内存溢出的问题

测试报告

  • 包含性能测试目的,目标,计划和实施情况
  • 编写的测试用例,脚本
  • 分析和调优的过程
  • 总结和经验
http://www.dtcms.com/a/569164.html

相关文章:

  • Kubernetes包管理利器:Helm核心功能与架构解析指南
  • 17、docker-macvlan-1-理论
  • Mac M系列芯片制作Oracle19镜像使用docker-compose运行
  • Linux source命令详解与应用场景
  • Verilog学习 有限状态机
  • 企业网站备案审核需要多长时间沧州大型企业网站建设
  • Figma高效开发工具链:从设计到测试的完整解决方案
  • React(二):构建一个简单的聊天助手学到的React知识
  • seo优化网站的注意事项北京网络职业学院
  • JWT的说明和使用
  • MFC - 使用 Base64 对图片进行加密解密
  • Git+SSH 实现控制分支的提交权限
  • 网站建设选择题网站的内容建设
  • 怎么用自己电脑做网站服务器刚做淘客没有网站
  • CUDA C++编程指南(3.1)——使用NVCC编译
  • Numpy学习总结
  • 可梦AI获首批企业好评,蜜糖网络入驻共启AI短剧工业化
  • 笔记跨设备无缝切换?Joplin+cpolar让多设备同步更自由
  • Swift 6.2 列传(第四篇):enumerated () 的 “集合神功”
  • PDF 全文翻译开发实现思路:挑战、细节与工程化解决方案
  • 算法解析:从杨辉三角到几何查询的编程实践
  • 数学基础---刚体变换(旋转矩阵与平移矩阵)
  • 找别人建网站去哪里设计网址合集
  • 宁波网站建设费用wordpress启用注册
  • 我的第一个开源项目IOT-Tree Server-实际项目使用介绍
  • 蓝牙钥匙 第41次 紧急情况处理场景下的汽车数字钥匙系统:全方位应急方案设计与实现
  • Nestjs框架: gRPC微服务通信及安全实践全解析
  • 朴朴超市小程序分析
  • 济南物流公司网站建设金华建设工程网站
  • visual basic 从入门到精通 IT9网络学院VB编程系列培训教程