# 性能测试项目 **Repository Path**: swaaaay/performance-test ## Basic Information - **Project Name**: 性能测试项目 - **Description**: 轻商城性能测试个人学习笔记 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 0 - **Created**: 2021-11-30 - **Last Updated**: 2025-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 轻商城性能测试项目 ## 需求分析 #### 确定项目的测试目标: 1. 针对每个核心的业务功能都要达到对应的性能指标要求; 2. 基于业务流程(多个接口的组合)来测试是否达到性能指标的要求; 3. 模拟用户真实的业务场景,进行长时间的稳定性测试。 #### 整理出需要进行性能测试的测试点,并得到每个测试点要满足的性能指标 : 1. 客户方提出 2. 根据历史数据分析: 稳定性测试的TPS = 一段时间总请求量 * 80% / 总时间 *20% 压力测试的TPS = 峰值时间段的总请求量 / 峰值时间 * 系数 ## 测试计划和方案 1. 测试背景 2. 测试目的 —— 需求分析阶段确定的项目需要达成的性能目标 3. 测试范围 —— 需求分析阶段确定的性能测试点 4. 测试策略 —— 结合前面的测试范围,考虑使用什么样的方式来进行性能测试 5. 风险控制 —— 管理型分析(从技术、人员、时间、进度各个方面考虑可能会出现的问题及如何解决 这些问题) 6. 进度与分工 —— 说明性能测试工作要分为哪几个步骤进行,每个步骤的开始/结束时间,及对应的 负责人 7. 交付清单 —— 对应进度安排中每个阶段的阶段产物 ## 设计测试用例 - 对于单个业务功能的性能测试,每个测试点编写一个测试用例(如果多个接口有强关联,将多个接口放入同一个用例) - 对于多个业务功能的组合测试,按照用户实际的业务场景,挑选出有代表性的业务流程编写测试用例(添加事务控制器) ![输入图片说明](https://images.gitee.com/uploads/images/2022/0108/135922_df50f436_9560547.png "屏幕截图.png") ## 执行性能测试 #### 环境搭建: > - 硬件环境:包括硬件服务器的台数、硬件服务器的配置、网络环境 > - 软件环境: 软件版本和配置:操作系统、数据库、被测程序、第三方软件等的一致性 > - 测试数据:数据量必须与用户环境一致 业务场景:发送请求的负载量与用户环境一致 1. 在vmware虚拟机中启动CentOS镜像:CentOS7-MySQL.vmx 用户名:root,密码:123456 2. 配置本地host文件: 使用ifconfig命令查找虚拟机IP地址 在C:\Windows\System32\drivers\etc\hosts文件下新增: 192.168.137.128 www.litemall360.com 3. 前台地址(用户名/密码 - user123 ):http://www.litemall360.com:8082/ 后台地址(用户名/密码 - admin123 ):http://www.litemall360.com:8081/ 4. 构造性能测试数据:采用pymysql连接数据库,构建与生产环境量级相同的数据。服务器地址需为搭建项目的虚拟机地址 user_insert.py:批量插入用户数据,测试登录接口性能:向litemall_user表插入100000条数据,username与mobile不可重复; address_insert.py:批量插入用户地址数据,测试下订单接口性能 goods_insert.py:批量插入商品数据 #### 单接口jmeter脚本开发 根据API文档进行,与接口测试相同。 1. 将用户名采用random函数进行参数化,保证每次执行登录请求时,使用不同用户名登录。 2. 远程连接虚拟机,并用ServerAgent监控虚拟机资源使用情况: ```bash $ scp ServerAgent-2.2.3.zip root@192.168.137.128:/home/perform $ ssh root@192.168.137.128 [root@localhost ~]# cd /home/perform [root@localhost perform]# chmod 777 ServerAgent-2.2.3.zip [root@localhost perform]# unzip ServerAgent-2.2.3.zip [root@localhost perform]# ll 总用量 3636 -rw-r--r-- 1 root root 10782 8月 8 2017 CMDRunner.jar drwxr-xr-x 2 root root 4096 8月 8 2017 lib -rw-r--r-- 1 root root 85433 8月 8 2017 LICENSE -rwxrwxrwx 1 root root 3540834 1月 6 14:15 ServerAgent-2.2.3.zip -rw-r--r-- 1 root root 67195 8月 8 2017 ServerAgent.jar -rw-r--r-- 1 root root 63 8月 8 2017 startAgent.bat -rw-r--r-- 1 root root 74 8月 8 2017 startAgent.sh [root@localhost perform]# chmod 777 -R * [root@localhost perform]# ./startAgent.sh ``` 3. 编写jmeter脚本,测试不同并发用户数的响应时间,应用服务器性能,数据库服务器性能。监控并记录各项指标,对各项指标进行分析。 ![输入图片说明](https://images.gitee.com/uploads/images/2022/0108/140003_2bf7f77b_9560547.png "屏幕截图.png") 稳定性测试时,需要针对不同的业务操作,分别模拟不同的用户数,进行所有不互相依赖脚本的并行执行。购物流程线程组中有多个请求,需要作为同一个事务来进行统计(而不是每个请求分别统计),需要在线程组中添加事务控制器,并将所有请求放入到事务控制器中。 #### 性能测试监控关键指标: 1. 系统指标:与用户场景与需求直接相关的指标 。响应时间,并发数,TPS等,通过聚合报告可以看出。 2. 服务器资源指标:硬件服务器的资源使用情况的指标 。CPU,内存,网络,磁盘,通过PerfMon插件可以看出。 3. JAVA应用 : JAVA应用程序在运行时的各项指标 。用JDKbin目录下的JvisualVM远程监控,主要监控堆区是否内存泄漏。 4. 数据库:数据库服务器运行时需要监控的指标 。在虚拟机上查看慢查询日志,确定哪条SQL语句执行时间过长。 5. 压测机资源指标:测试机在模拟用户负载时的资源使用情况 ## 性能测试报告 包括:简介;测试目的;测试范围(重点);测试时使用的工具和环境 ;性能测试的问题及分析过程(重点);给出结论(测试通过/不通过)。