性能测试:性能测试计划

news/2024/9/19 16:59:40/文章来源:https://www.cnblogs.com/hogwarts/p/18303362

简介

性能测试计划是在进行软件或系统的性能测试之前制定的详细计划和指导文件。它描述了所需性能测试的目标、范围、测试环境、资源需求、测试策略、测试用例、时间表等重要信息。

为什么要制定性能测试计划

制定性能测试计划的主要目的是确保性能测试的有效性和可靠性。以下是制定性能测试计划的重要原因:

  1. 明确测试目标:性能测试计划可以明确定义所需测试的性能目标,例如响应时间、吞吐量、并发用户数等。这有助于确保测试的准确性和一致性,并提供可评估的性能指标。
  2. 确定测试范围:通过性能测试计划,可以明确确定需要测试的系统或软件的范围,包括功能模块、关键业务流程等。这有助于确保测试覆盖的全面性,避免遗漏关键的性能热点。
  3. 提供测试环境和配置:性能测试计划可以指定测试所需的硬件、软件、操作系统和网络配置等。这有助于创建一个与实际生产环境相似的测试环境,并确保测试的真实性和准确性。
  4. 设定测试策略:性能测试计划定义了测试的方法、策略和技术。它确定了要使用的负载模型、测试用例设计方法、测试数据和性能统计指标,以确保测试具有可重现性和可测量性。
  5. 资源管理和规划:性能测试计划列出了执行测试所需的人员、工具、时间和预算等资源。这有助于合理规划和管理测试过程,确保资源的有效利用并避免测试中断或延误。
  6. 风险评估和应对措施:性能测试计划识别可能的风险和挑战,并提供相应的风险评估和应对措施。这有助于规避潜在的性能问题和系统崩溃,并确保测试的可靠性和稳定性。
  7. 结果分析和报告:通过性能测试计划,可以规定测试结果的分析方法和报告格式。这有助于准确分析和解释测试结果,向相关方提供清晰、可理解的性能测试报告。

总之,性能测试计划提供了一个全面的框架和指导,确保性能测试的有效性、可靠性和可重复性。它帮助测试团队、项目经理和相关方明确测试目标、范围和策略,最大程度地发现性能问题并提供优化建议。

性能测试计划的流程

  1. 需求分析与测试设计阶段
  2. 环境设计与搭建阶段
  3. 测试数据准备阶段
  4. 性能指标预期设定阶段
  5. 测试执行&监控阶段
  6. 测试报告输出阶段

需求分析与测试设计阶段

场景 1:对于已经在线上运行的业务或相似业务:

  1. 收集行为日志:获取业务运行时的行为日志,包括用户的访问请求、操作行为、响应时间等信息。这些日志可以帮助了解用户行为模式和业务负载情况。
  2. 分析当前业务数据:通过分析当前业务数据,例如每日活跃用户数(DAU)、每日页面浏览量(PV)、每天的订单量等,可以获得业务的基本性能指标,如每秒钟的请求量(QPS)或每秒钟的事务处理量(TPS)等。
  3. 建立业务模型:基于当前业务数据和行为日志的分析结果,建立业务模型,包括各个关键业务场景、用户行为流程、系统组件之间的交互等。
  4. 预估接口 TPS/QPS:根据业务模型和当前业务数据,预估出每个关键接口或服务的每秒钟的事务处理量(TPS)或每秒钟的请求量(QPS)。这可以帮助确定性能测试的目标和负载程度。

场景 2:对于新业务或新活动:

  1. 参考友商经验:如果有类似的业务已经在线上运行,可以参考其性能测试经验和结果,了解其业务模型、性能指标和测试场景,从而为新业务制定性能测试计划提供参考依据。
  2. 产品和运营共同梳理评估:产品和运营团队可以针对新业务梳理出核心场景路径、入口及对应的转化率、问题收敛页面等。然后,将这些信息转化为业务模型,进而确定相应的测试场景、数据量级和接口比例。

环境设计与搭建阶段

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

注意:测试环境无论怎么仿真和模拟,基本都不太可能达到 1 比 1 的效果。

  • 环境搭建
    • 起压环境:压测⼯具的安装与调试、机器参数记录;
    • 被压环境:基础服务的搭建、web 机代码部署及代码改造、机器参数记录。

  • 环境调试:查看接口是否正常。

测试数据准备阶段

  1. 接口请求参数:自己构造/日志获取/上下关联。
  2. 数据表的数据填充:部分业务数据信息可以直接从数据库或缓存数据库获取。
  3. 如果是多接口,则需结合业务场景设计请求⽐例。

性能指标预期设定阶段

  1. 每秒请求数(QPS):基于业务进行拆分,比如业务会提出需要再双十一的时候支持每分钟两万的订单。根据这个需求,再去拆分具体有哪一些接口的请求。
  2. 请求响应时间(最小、最大、平均):需要考虑到用户体验,即使后面能够正常响应,但是请求响应时间不能太长。(通常 C 端不超过 1s,尽量在 200 毫秒内)
  3. 错误率:基于在性能测试过程中,每个请求不可能百分百成功,但是也要有一个上限的阈值,那么这个阈值是多少。
  4. 机器性能:cpu memory 无剧烈抖动或者飙升。
  5. 压测过程接口功能是否正常:不要只关注响应状态码 200,还需要从业务角度来看响应信息是否符合业务需求。

注意:不同性能测试方式下指标预期会有差异。

发压工具配置及脚本编写阶段

  1. 选择发压工具:根据需求和系统特点选择适合的发压工具。常用的性能测试工具包括 JMeter、LoadRunner、Gatling 等。考虑到测试目标、可支持的协议和工具的易用性。
  2. 安装和配置发压工具:根据工具的官方文档,下载和安装所选发压工具。然后,根据具体情况进行配置。配置项可能包括服务器地址、并发用户数、请求协议和频率等。确保工具和测试环境的通信设置正确。
  3. 编写性能测试脚本:根据需要和测试场景,编写性能测试脚本。性能测试脚本用于定义测试场景,包括模拟并发用户行为、设定请求参数和验证响应等。脚本可以使用工具提供的图形界面或编程语言来编写。

测试执行&监控阶段

  1. 测试前环境检查:记录机器参数。
  2. 起压:根据被压情况,调节并发量到适合的情况。
  3. 查看记录各项性能指标。
    • nginx 日志查看每秒请求数。
    • 查看 nginx 错误请求。
    • 查看机器参数:cpu idle、mem 等。
    • 查看 db、cache 等数据是否写⼊正常。
    • 访问接口,查看功能是否正常。
性能测试中的常用命令
  1. 查看 nginx 每秒请求数

命令:tail -f access.log | awk '{print $4}' | uniq -c

  • tail -f access.log:用于实时监视 access.log 日志文件的内容。
  • awk '{print $4}':使用 awk 命令提取出每行的第 4 列内容。
  • uniq -c:对提取出的内容进行去重计数,即统计每个不重复的值出现的次数。
  1. 查看某个接口每秒请求数

命令:tail -f access.log | grep p_getorderstatus |awk '{print $4}' | uniq -c

  • tail -f access.log:用于实时监视 access.log 日志文件的内容变化。
  • grep p_getorderstatus:使用 grep 命令过滤出包含"p_getorderstatus"的行。
  • awk '{print $4}':使用 awk 命令提取出过滤结果中的第四列内容。
  • uniq -c:对提取出的第四列内容进行去重统计,并显示出现次数。
  1. 查看 cpu idle

命令:vmstat 1

  1. 查看内存

命令:free -m

  1. 查看 nginx 日志是否有错误请求

命令:tail -f access.log |cut -d ' ' -f 10 |grep -v 200

  • tail -f access.log:用于实时监视 access.log 日志文件的内容变化。
  • cut -d ' ' -f 10:使用 cut 命令以空格作为分隔符,提取出日志行中的第十列内容。
  • grep -v 200:使用 grep 命令过滤出不包含 200 的行,即排除掉一切含有状态码为 200 的行。
  1. 查看进程

命令:- top - ps aux|grep xxx

  1. 查看 nginx 日志某接口访问数量

命令:cat access.log.xxxx|grep p_getorderstatus |wc -l

  • cat access.log.xxxx:用于查看 access.log.xxxx 文件的内容。xxxx 是日志文件的后缀,可以是日期或其他标识符。
  • grep p_getorderstatus:通过 grep 命令过滤出包含关键字"p_getorderstatus"的行。
  • wc -l:统计行数,即统计包含关键字"p_getorderstatus"的行数。
  1. 杀进程
  • 指定进程号:kill xxx
  • 指定部分进程名:pkill xxx
  • ⾃定义特征:
for i in ps aux | grep xxxx | awk '{print $2}';do kill $i ;done

或者 kill pgrep -f xxxx

  • ps aux:显示当前系统中所有的进程信息。
  • grep xxxx:通过 grep 命令过滤出包含特定关键字(xxxx)的进程行。
  • awk '{print $2}':使用 awk 命令提取出进程 ID(PID)这一列。
  • for i in...; do kill $i; done:通过循环遍历进程 ID(PID),逐个使用 kill 命令杀死进程。
  • pgrep -f xxxx:通过-f 参数搜索包含特定关键字(xxxx)的进程名,并显示对应的进程 ID(PID)。
  • kill ...:使用 kill 命令杀死搜索到的进程 ID(PID)。
  1. 查看 TIME_WAIT 数量
  • ss -s
  • netstat -tnlp |grep TIME_WAIT|wc -l

测试报告输出阶段

  1. 根据测试过程中记录的各项参数,结合压测⼯具产生的⽇志,对测试结果进行分析,并产出测试报告。
  2. 测试完成后,及时与相关人员沟通,确认是否满⾜需求。
  3. 发送测试报告邮件。

总结

  • 为什么要制定性能测试计划。
  • 性能测试计划的流程。
  • 性能测试中的常用命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744149.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全志科技官方Ubuntu16.04根文件系统镜像的替换和测试方法

本文主要基于全志A40i开发板——TLA40i-EVM,一款基于全志科技A40i处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板,演示Ubuntu根文件系统镜像的替换和测试方法。创龙科技TLA40i-EVM评估板接口资源丰富,引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluet…

基于AM5708开发板——开箱初探+环境搭建、源码编译

本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TI Sitara系列AM5708ARM Cortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双…

雷达1——基本原理

雷达基本原理雷达1 —— 基本原理 1 雷达的原理以及基本组成 1.1 雷达工作原理简介 雷达是利用目标对电磁波的反射(或称为二次散射)现象来发现目标标并测定其位置的。 当雷达探测到目标后,就要从目标标回波中提取有关信息:可对目标的距离和空间角度定位,目标位置的变化率可由…

开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)

前 言本文适用开发环境: Windows 开发环境: Windows 7 64bit 、Windows 10 64bit Linux 开发环境: Ubuntu 14.04.3 64bit 虚拟机: VMware15.1.0 U-Boot :U-Boot-2017.01 Kernel :Linux-4.9.0 、Linux-RT-4.9.0 进行本文档操作前,请先按照调试工具安装、Linux 开发环境搭…

vue项目更改启动端口号

打开最后一项vue.config.js 添加如下代码// 用于更改端口号devServer:{port:7000}--注意在注释前边加一个英文的逗号-- 再次启动即可 更改完成

MoneyPrinterPlus全面支持本地Ollama大模型

现在,MoneyPrinterPlus除了支持大模型厂商的服务之外,还可以接入本地的Ollama大模型了。MoneyPrinterPlus现在支持批量混剪,一键AI生成视频,一键批量发布短视频这些功能了。 之前支持的大模型是常用的云厂商,比如OpenAI,Azure,Kimi,Qianfan,Baichuan,Tongyi Qwen, DeepSeek这…

Azure Function 时区设置

一,引言Azure Function 上的默认使用UTC 运行程序,我们在获取时间,或者通过时间执行某些逻辑时,返回UTC 时间,导致业务数据不正常,由于 Azure Function 是微软提供的 IaaS 托管服务,我们无法登录服务器来修改时区,那么我们今天将来实践操作,如何通过配置达到更改 Azur…

基于AM62x GPMC并口的ARM+FPGA低成本通信方案

GPMC并口简介GPMC(General Purpose Memory Controller)是TI处理器特有的通用存储器控制器接口,支持8/16bit数据位宽,支持128MB访问空间,最高时钟速率133MHz。GPMC是AM62x、AM64x、AM437x、AM335x、AM57x等处理器专用于与外部存储器设备的接口,如: (1)FPGA器件 (2)ADC器件 …

【攻防技术系列】shellcode初始

虚拟机环境搭建 【Kali】: 192.168.10.131 【win】: 192.168.10.1shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。 但是想要更充分理解什么是shellcode,我们得先了解下可执行程序和shellcode都是怎么运行的。 简…

2024年,国内外哪些企业IM即时通讯聊天软件支持OEM模式?

随着信息技术的不断发展和互联网的日益普及,IM即时通讯聊天软件在企业的日常运营中扮演着越来越重要的角色。在众多软件中,支持OEM模式的企业IM即时通讯聊天软件更是备受关注。那么,在2024年,国内外有哪些支持OEM模式的企业IM即时通讯聊天软件呢?1.飞信钉 飞信钉是一款专门…

在webapi中创建一个jwt token

1.第一步首先创建一个webapi项目2.安装nuget包: Microsoft.AspNetCore.Authentication.JwtBearer3.,然后再Program.cs文件中添加 4.然后运行起来 5. 打开 jwt.io 网站,解密token 关于: iss, sub, exp,iat,nbf 更新信息看下图:

vscode打开npm脚本

设置 搜索npm 并更改部分设置(勾选 enable run from folder) 重启vscode,打开package.josn 此时npm脚本存在,点击 右下角出现npm脚本