性能测试:性能测试计划

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

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

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

  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:对提取出的内容进行去重计数,即统计每个不重复的值出现的次数。

2. 查看某个接口每秒请求数

命令: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:对提取出的第四列内容进行去重统计,并显示出现次数。

3. 查看 cpu idle

命令:vmstat 1

4. 查看内存

命令:free -m

5. 查看 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 的行。

6. 查看进程

命令:- top - ps aux|grep xxx

7. 查看 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"的行数。

8. 杀进程

  • 指定进程号: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)。

9. 查看 TIME_WAIT 数量

  • ss -s

  • netstat -tnlp |grep TIME_WAIT|wc -l

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

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

  3. 发送测试报告邮件。

总结
  • 为什么要制定性能测试计划。

  • 性能测试计划的流程。

  • 性能测试中的常用命令。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

THREE.JS法线Shader

以普通情况而论 vNormal normal;//...gl_FragColor vec4( vNormal, 1. );vNormal normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );vNormal normalMatrix * normal;//...gl_FragColor vec4( normalize( vNormal ) * 0.5 0.5, 1. );normalMa…

【Android】布局优化—include,merge,ViewStub的使用方法

引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度&#xff0c…

JavaWeb纯小白笔记02:Tomcat的使用:发布项目的三种方式、配置虚拟主机、配置用户名和密码

通过Tomcat进行发布项目的目的是为了提供项目的访问能力:Tomcat作为Web服务器,能够处理HTTP请求和响应,将项目的内容提供给用户进行访问和使用。 一.Tomcat发布项目的三种方式: 第一种:直接在Tomcat文件夹里的webapp…

K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)

迁移CNI插件的3种办法: 1、创建一个新的集群,通过Gitops的方式迁移负载,然而,这可能涉及大量的准备工作和潜在的中断。 2、另一种方法是重新配置/etc/cni/net.d/指向Cilium。但是,现有的pod仍将由旧的…

Stable Diffusion 优秀博客转载

初版论文地址:https://arxiv.org/pdf/2112.10752 主要流程图: Latent Diffusion Models(LDMs) DDPM是"Denoising Diffusion Probabilistic Models"的缩写, 去噪扩散概率模型 博客: https://ja…

【十八】MySQL 8.0 新特性

MySQL 8.0 新特性 目录 MySQL 8.0 新特性 概述 简述 1、数据字典 2、原子数据定义语句 3、升级过程 4、会话重用 5、安全和账户管理 6、资源管理 7、表加密管理 8、InnoDB增强功能 9、字符集支持 10、增强JSON功能 11、数据类型的支持 12、查询的优化 13、公用…

【前端学习】iframe标签以及postMessage解决iframe中的跨域问题

面试中被问到跨域问题&#xff0c;并且面试官提出一个iframe嵌套页面中遇到跨域问题用纯前端解决跨域的方法。卡壳了~ 来学习一下~~ 一. iframe标签介绍 <iframe>是html的一个行内块级元素&#xff0c;像行内元素一样会在一行中水平排列&#xff0c;又可以像块元素一样设…

828华为云征文|在Flexus X实例上安装JDK和Tomcat保姆教学

目录 一、Flexus云服务器X实例 1.1 Flexus X实例概述 1.2 Flexus X实例场景优势 1.3 其他型号与Flexus X实例比较 二、Flexus X实例上安装JDK 2.1 确定安装版本 2.2 yum命令直接安装 2.3 查看版本 三、Flexus X实例上安装tomcat 3.1 上传安装包到Flexus X实例服务器 …

【Redis】持久化机制--RDB和AOF

目录 1. RDB持久化 1.1 触发机制 1.2 流程说明 1.3 RDB文件的处理 1.4 RDB机制演示 1.5 RDB的优缺点 2. AOF持久化 2.1 使用AOF与基本演示 2.2 AOF的工作流程 2.3 文件同步&#xff08;缓冲区刷新策略&#xff09; 2.4 重写机制 2.5 AOF重写流程 2.6 启动时数据恢复 …

产品需求-聊天框中发送的文件,要求文件名过长是保留后缀名省略中间的文字部分

介绍一下之前做过的一个需求&#xff0c;是要实现pc的一个聊天软件的消息引用功能。对于文件的引用&#xff0c;产品是这样做要求的&#xff1a; 消息框无固定长度&#xff0c;根据回复的文字长度决定消息框长度对于一个pc项目&#xff0c;当页面窗口变化时要实现响应式文件名…

C++入门day5-面向对象编程(终)

C入门day4-面向对象编程&#xff08;下&#xff09;-CSDN博客 本节是我们面向对象内容的最终篇章&#xff0c;不是说我们的C就学到这里。如果有一些面向对象的基础知识没有讲到&#xff0c;后面会发布在知识点补充专栏&#xff0c;全都是干货满满的。 https://blog.csdn.net/u…

小学生管理系统项目

在当今数字化教育的背景下&#xff0c;小学生管理系统应运而生。本项目采用 JSP Servlet JDBC MySQL 的技术组合&#xff0c;并在开发工具 Idea 和 Eclipse 的辅助下&#xff0c;结合数据库管理工具 Navicat 进行开发。 一、系统入口 用户登录入口&#xff1a;为普通用户提…

可看见车辆行人的高清实时视频第2辑

我们在《看见车辆行人的高清实时视频第2辑》分享了10处可看见车辆行人的实时动态高清视频。 现在我们又整理10处为你分享可看见车辆行人的实时动态高清视频&#xff0c;一共有30个摄像头数据&#xff0c;这些视频来自公开的高清摄像头实时直播画面。 我们在文末为你分享了这些…

低代码平台推荐与对比,国内外哪家更胜一筹?

低代码开发通过图形界面简化开发&#xff0c;提升速度与协作&#xff0c;降低成本。国内外平台如ZohoCreator、OutSystems等各具特色&#xff0c;支持快速开发、集成与数据安全。企业可试用后按需选择&#xff0c;降低决策成本。 一、低代码是什么&#xff1f; 低代码开发是一…

webpack 4 的 30 个步骤构建 react 开发环境

将 react 和 webpack4 进行结合&#xff0c;集 webpack 的优势于一身&#xff0c;从 0 开始构建一个强大的 react 开发环境。 其实很多人都有 一看就会&#xff0c;一做就废 的特点(当然也包括我在内)&#xff0c;这个时候&#xff0c;你需要制定一个略微详细的计划&#xff0…

C++的成员初始化列表

1、构造函数初始化列表&#xff0c;这是我们在构造函数中初始化类成员&#xff08;变量&#xff09;的一种方式&#xff0c;因此&#xff0c;当我们编写一个类并向该类添加成员时&#xff0c;通常需要用某种方式对这些成员&#xff08;变量&#xff09;进行初始化。 通常在构造…

Efficient DETR: Improving End-to-End Object Detector with Dense Prior

原文链接 [2104.01318] Efficient DETR: Improving End-to-End Object Detector with Dense Prior (arxiv.org)https://arxiv.org/abs/2104.01318 原文笔记 What 1、一种针对DETR的objectquery初始化的方法 2、针对Deformable DETR进行改进&#xff0c;改进之后的模型具有…

【工具分享】FONIX勒索病毒解密工具

前言 FONIX勒索软件首次出现在2020年6月&#xff0c;并迅速成为勒索即服务&#xff08;RaaS&#xff09;平台的一部分。尽管它最初的影响力有限&#xff0c;FONIX从2020年11月开始显著增加了攻击频率。FONIX以其复杂的加密方法著称&#xff0c;使用了AES、Salsa20、ChaCha和RS…

【HarmonyOS】自定义圆点进度条

【HarmonyOS】实现一个自定义带圆点的进度条效果。 方案就是做一个圆角组件&#xff0c;然后利用rotate旋转&#xff0c;至于动画效果&#xff0c;我查了一下文档&#xff0c;只要设置enableSmoothEffect:false&#xff0c;就可以关闭动画&#xff0c;然后自己开个定时器&#…

鸿蒙开发(NEXT/API 12)【硬件(接入手写套件)】手写功能开发

接入手写套件后&#xff0c;可以在应用中创建手写功能界面。界面包括手写画布和笔刷工具栏两部分&#xff0c;手写画布部分支持手写笔和手指的书写效果绘制&#xff0c;笔刷工具栏部分提供多种笔刷和编辑工具&#xff0c;并支持对手写功能进行设置。接入手写套件后将自动开启一…