写点什么

软件测试 / 测试开发丨性能测试体系学习笔记

作者:测试人
  • 2023-11-07
    北京
  • 本文字数:1977 字

    阅读完需:约 6 分钟

免费领取:测试资料+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/28412

一、性能测试体系

1.性能测试介绍

为什么要做性能测试

  • 有效的性能测试能给研发,运维团队提供有效的容量规划能力,系统风险识别,系统瓶颈识别,性能调优指导。

2.性能测试流程与方法

  1. 分析现状

  2. 获取当前性能指标

  3. 定义用户场景

  4. 定义性能验收标准

  5. 测试计划/脚本

  6. 准备压力环境

  7. 执行压测

  8. 监控

  9. 搜集分析

  10. 测试报告

  11. 改进建议

  12. 持续测试

3.性能测试方法

  • 性能测试方法

  • 并发模式(虚拟用户模式)并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。如果需要从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数,可以使用该模式设置目标并发。

  • RPS 模式(吞吐量模式)RPS(Requests Per Second)是指每秒请求数。RPS 模式即“吞吐量模式”,通过设置每秒发出的请求数,从服务端的角度出发,直接衡量系统的吞吐能力,免去并发到 RPS 的繁琐转化,一步到位。

4.性能测试计划

  • 需求分析与测试设计

  • 环境设计与搭建

  • 测试数据准备

  • 性能指标预期设定

  • 发压工具配置与脚本编写

  • 测试执行 & 监控

测试数据准备和构造

  1. 接口请求参数:自己构造/日志获取/上下关联

  2. 数据表的数据填充

  3. 如果是多接口,则需结合业务场景设计请求比例

环境搭建

  1. 设计:根据需求,结合线上机器部署情况,搭建线下测试环境,要求具有一定的参考价值,一般同比 1/2,1/4

  2. 环境搭建:

(1)起压环境:压测工具的安装与调试、机器参数记录

(2)被压环境:基础服务的搭建、web 机代码部署及代码改造、机器参数记录 3.环境调试:查看接口是否正常

性能指标预期

  1. 每秒请求数(QPS)

  2. 请求响应时间(最小、最大、平均)

  3. 错误率

  4. 机器性能:cpu idle 45%、memory 无剧烈抖动或者飙升

  5. 压测过程接口功能是否正常

  6. 不同性能测试方式下指标预期会有差异

发压时间线:

  1. 测试前环境检查:记录机器参数

  2. 起压:根据被压情况,调节并发量到适合的情况

  3. 查看记录各项性能指标

(1)nginx 日志查看每秒请求数

(2)查看 nginx 错误请求

(3)查看机器参数:cpu idle、mem 等

(4)查看 db、cache 等数据是否写入正常

(5)访问接口,查看功能是否正常

常用命令

  1. 查看 nginx 每秒请求数:tail -f access.log | awk ‘{print $4}’ | uniq -c

  2. 查看某个接口每秒请求数:tail -f access.log | grep p_getorderstatus | awk ‘{print $4}’ | uniq -c

  3. 查看 cpu idle: vmstat 1

  4. 查看内存:free -m

  5. 查看 nginx 日志是否有错误请求:tail -f access.log | cut -d ’ ’ -f 10 |grep -v 200

  6. 查看进程:top、ps aux|grep xxx

  7. 查看 nginx 日志某接口访问量:cat accesss.log.xxxx|grep p_getorderstatus | wc -l

  8. 杀进程:

指定进程号:kill xxx;

指定部分进程名:pkill xxx;

自定义特征:for i in ps aux|grep xxxx|awk '{print $2}';do kill $i;done 或者 kill pgrep -f xxxx

查看 TIME_WAIT 数量:ss -s 或者 netstat -tnlp | grep TIME_WAIT|wc -l

测试结果

  1. 测试前环境检查:记录机器参数

  2. 起压:根据被压情况,调节并发量到适合的情况

  3. 查看记录各项性能指标

(1)nginx 日志查看每秒请求数

(2)查看 nginx 错误请求

(3)查看机器参数:cpu idle、mem 等

(4)查看 db、cache 等数据是否写入正常

(5)访问接口,查看功能是否正常

测试报告

  1. 根据测试过程中记录的各项参数,结合压测工具产生的日志,对测试结果进行分析,并产出测试报告

  2. 测试完成后,及时与相关人员沟通,确认是否满足需求

  3. 发送测试报告邮件

5.性能测试报告

  • 背景 &方案

  • 实际环境

  • 压测过程

  • 总结 &建议

6.性能测试场景

  1. 负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。关注点:how much

  2. 压力测试(Stress Test):压力测试(又叫强度测试)也是一种性能测试,它在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。

  3. 极限测试(Extreme Testing):在过量用户下的负载测试 Hammer testing:连续执行所有能做的操作

  4. 容量测试(Volume Test):确定系统可处理同时在线的最大用户数。关注点:how much(how fast)容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是最大容量,而不需要关注使用中的实际表现。

7.性能测试概念

并发:并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。并行技术上提升压力的方式:

  1. 多进程:启动多个进程,每个进程虽然只有一个线程,但是多个进程可以一起执行多个任务

  2. 多线程:启动一个进程,在一个进程的内部启动多个线程,这样多个线程也可以一起执行多个任务

  3. 多进程+多线程:启动多个进程,每个进程在启动多个线程

TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒

QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。

对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS,一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数。

并发数 = QPS * 平均响应时间

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨性能测试体系学习笔记_软件测试_测试人_InfoQ写作社区