自己只做黑盒测试,从未做过性能测试,公司现需要做性能测试。所以经过看书研究,自己写了一份简单的性能测试计划(可能不叫计划,就是指导自己做性能测试的文档)
目前工具选用 Loadrunner11。环境是 web 环境(CentOs+PHP+Nginx+Apche+MySql),在线上做压力测试,目标是获取服务器的最大访问和并发人数。
两个疑问 :
一、压力是如何计算的,比如 100 个 Vuser,每个 Vuser 产生 4 个请求,平均响应时间是 5 秒钟。那么应该是 QPS =(100 * 4 )/ 5 。最后并发数 = QPS / 4 ,想问一下这么计算正确吗?
二、计划中应该有很多纰漏的问题,请指教
一、了解项目和服务器信息
项目在线上或线下
线上
- 线上是否有其他服务运行
- 测试受网络情况影响较大,响应时间偏差、压力可能不足
- 是否有 CDN 的影响
- 项目中是否用到了第三方接口
线下
- 服务器硬件、软件配置是否和线上一样或相似
- 搭建环境会影响性能测试时间进度
- 局域网带宽
项目类型
架构
- B/S
- C/S
- 接口测试
协议
- http、https
服务器配置
- 硬件信息:
- CPU:CPU 系列、主频、核心数
- 内存:类型 DDR、主频、大小、通道
- 磁盘:容量、转速、接口速度、理论读写速度
- 网卡:
- 服务器系统信息及版本
- 服务器容器信息及版本
- 服务器数据库信息及版本
- 服务器类型
- 服务器带宽
可参考数据
- 类似项目的日平均 IP、PV、UV
- 日峰值时间段、峰值大小、峰值百分比
- 计算峰值时间段的每秒访问并发数量
二、制定测试计划
- 项目的各个功能点,归纳出可测试的功能点
- 查看不可测试的功能点,如验证码的功能
- 根据功能点划分事务
三、执行性能测试
- 录制/回放脚本
- 修改脚本
- 关联
- 响应乱码(编码方式)
- 内容检查
- 参数化
- 事务
- 集合点
- 基线测试
无压力环境下,对每一个事务单 Vuser 运行 N 次,记录平均响应时间、点击次数和吞吐量。
- 压力环境准备
- 确定测试 Vuser 人数
- 确定压力机数量,并部署压力机
- 确定每台压力机分配的 Vuser 数量
- 设置运行时设置
- 迭代次数
- 运行间隔
- 日志
- 思考时间
- 网络速度模拟
- 浏览器设置(去除下载非 HTML 资源)
- 场景压力测试
- 确定场景方式
- 渐进式:如先运行 100Vuser 持续一段时间,再增加到 200Vuser 持续一段时间,达到指定值后,最后直接结束所有 Vuser。
- 爆炸式:持续增加 Vuser 到制定目标值
- 驼峰式:执行增加 Vuser,缓步减少 Vuser
- 确定每秒启动的 Vuser 数量、持续时间、每秒结束数量
- 确定监控指标:
- CPU:CPU 使用率(cup%,User%,Sys%)、单核 CPU 使用率、进程 CPU 占用率
- 内存:可用内存、swap 空间、进程占用内存
- 磁盘:IO 读写、IO 峰值、进程 IO 读写
- 网络:
- 确定监控方式(暂时选用 nmon 和命令结合方式)
- IP 欺骗(只适用于线下局域网环境)
- 集合(配置集合点百分比)
- 调试
- 其他配置(正式运行)
- 关闭网络诊断
- 关闭日志(只在出现错误时才显示日志)
- 正式运行
四、分析结果
- Analysis 分析结果
- QPS 每秒查询率
- TPS 每秒处理事务数
- 系统吞吐率(字节)
- 平均响应时间
- nmon 导出性能指标图形
五、报告