【性能测试-03】 - 如何指定性能测试目标

2023-10-29

引言

在测试执行过程当中,并不清楚现在测试到的结果到底能不能满足活动的需求,本次需求涉及到的模块和接口也不清楚,这种性能测试方式,就是没有做性能测试目标分析,虽然说做了性能测试,但是基本是无效的性能测试,因为:没有做目标分析的性能测试,会与真实的活动场景相差甚远

例如在使用前的测试和使用中的实际情况完全不一样,原因因为一个低访问量的接口没有纳入测试范围,性能测试目标是性能测试的重要先决条件指定目标可以确定范围内需要达到的测试结果,指定目标后才能对本次性能测试的核心目标有清晰的认知,并指导你做后期的测试活动,包括测试所需要的资源以及测试的停止条件等,在回答如何指定性能测试指标之前,要搞清楚我们衡量性能测试指标对于什么,TPS,报错率等需要有深入的了解,不仅仅知道各自代表的含义,还要知道是如何制定出来的

定制计划

衡量指标

TPS

第一个衡量指标TPS,很多人都说是并发,并发是指同一时间节点发生的事情,但同一时间节点并不是一个标准的度量,也不是性能测试直接测试来的结果,性能测试往往是通过在工具中增加虚拟用户数得到的接口每秒调用量去衡量,在实际生产中,不管是网关还是服务,通常都是记录一定时间内的访问请求次数,所以在业内,性能测试往往以TPS作为最重要的度量指标,因为它具有可度量性和通用性的特质,可度量行是指TPS是真实、客观且明确的衡量指标,通用性指无论在运维角度还是测试角度,TPS都可以达成一致的定义

响应时间

响应时间和用户体验密切相关,一个请求从客户端发出,到返回客户端的时间作为响应时间,在实际工作中,会以TPS的量级来限制响应时间必须在多久之内,
在这里插入图片描述

从响应时间过程图可以看出,从最左侧的客户端到最右侧的数据持久化,在返回到客户端,这样一次完整的过程就是一次完整的请求响应时间,这样的响应时间在正常情况下是这样的,在有了一定的性能测试实践之后,会发现这样的过程不是绝对的,比如有的业务在第一次请求数据库之后,应用层会把本地缓存放在应用服务器上,也就是接下来的缓存有效期内,不会去数据库取数据,而是在应用层取数据后会直接返回,所以响应实践会比第一次低很多,这也是随着性能测试的进行,响应时间变低的原因之一

报错率

报错率的计算方式是在统计时间范围内不符合返回期望的请求数/总共的请求数,在测试过程中,这一指标不符合期望的话,一般体现在对结果的校验上,一般分为三个层面去校验
1、状态码的校验
2、业务层面的校验(业务返回数据的正确性)
3、数据库校验(不建议在性能测试过程中校验,会影响性能,在测试后,做统计数据数量和状态)
以简单的登陆为例:
如果用户名密码不匹配则直接返回错误报文,不需要走正确流程的逻辑校验和数据库操作,存在很大的性能差别

性能测试指标分析

列举了最重要的三个指标TPS、响应时间和报错率,那我们如何定制测试目标呢?有人说根据28原则,老板说我们百万日活,80%的用户在20%的时间里去访问,响应时间根据业内的258来制定;还有人说竞品,业务定;实际上没有性能测试可以参考的有效信息,基本可以判断一个同学是否做过性能测试,那么说了半天,如何做呢?一般可以分为4种。

1、以衡量系统处理能力为核心目标的性能测试

以衡量系统处理能力为核心目标的性能测试一般是性能测试的主要目标,用来评估当前系统的处理能力和容量规划,评估这个目标最重要的是对数据的客观分析,那我们需要什么样的数据呢?对于每个接口都会有访问统计,这是目前业内比较常见的,也是衡量接口访问能力最准确的指标之一,一般会有自己的监控工具或者一些开源或商业工具,有了工具后,我们要从哪些维度去统计数据呢,通常我们会通过时间维度和服务维度来统计

在这里插入图片描述

时间维度

按照经验,我们一般会考虑大于当天的访问量来测试,当从分析的角度,一般前后半个月的时间都会考虑在测试范围内,首先我们需要根据大出前后哪些天数的访问量是比较高的,以天为单位,根据经验选择合适的时间范围,对最高峰和次高峰进行分析
在这里插入图片描述
当我们选了某一天,在以小时为维度进行分析,发现晚上的访问量大于白天,最高是晚上几点到几点,这样一来获取到我们在时间上所需要的数据,然后是服务维度

服务维度

什么是服务维度,以目前比较流行的电商微服务架构为例,会做微服务的拆分
网关是请求进入应用层的第一个入口,也是统计网站入口访问量的方式之一,当我们请求通过网关之后,下发到各个应用服务,我们会按照确定的时间节点统计各个服务的访问量数据,完成服务级访问量的统计,应该继续按照时间维度统计服务下接口的访问数据,你可以看到每个接口的调用比例都不一样,很多同学使用jmeter写性能测试脚本时,是用接口串联的方式进行,比如从登陆到浏览商品到添加购物车这样的添加方式,也就默认了用户登陆后就得浏览商品之后就得到购物车,这是典型的自动化测试思维,在性能中不存在这这样的同等分布,一般来说在同一个时间节点都会有不同的比例,比如早8点有1w次登陆请求,3w次浏览商品的请求,而下午就会产生变化,而下午这个数据又会产生变化,所以要根据服务入口,把接口调用统计起来,结合时间维度和服务维度做出性能测试的常见模型,说到这里会出现两个问题,1、这么多时间节点,或产生多个比例模型,每个比例模型都要测试吗?答案是确实会产生多个比例模型,而且每个都需要测试,因为线上存在这样的访问趋势,那我们应该覆盖到;2、上边那么多步骤,多少时间干完得?流量复制能一键解决吗,其实流量复制是不能解决指标制定问题的,并且在落地过程中还会花费大量时间成本,所以关于目标的制定和分析需要一步步的进行,花费的成本难以避免,未来线上的访问趋势,只可能覆盖,并不能完全预测到,

系统健壮性

一个系统刚刚上线,用户的访问量不会很高,这时候我们会更关心系统的健壮性,例如内存泄漏,并发死锁、超卖等,而且这些测试不需要在生产环境进行,可以提早的发现问题
性能测试场景的稳定性至少包含两个方面
1、正确率
这个不一定是在高并发下完成,但是我们要保证业务在长时间的运行情况下正确率依然在99.99999%以上
2、处理能力
这一方面应该选用性能测试场景中的混合场景来执行,我们要观察处理能力是否稳定,会不会出现处理能力下滑的情况;接口之间的比例是否稳定,会不会随着时间的进行,

在这里插入图片描述

专项能力

刚刚例举的是以业务接口为测试目标,其实在实际压测过程中也存在中间件甚至硬件的性能测试,这部分性能测试基本上是用来判断当前的环境配置的节点数,以及配置所能达到的最大处理能力,为全链路性能测试提供数据支撑(Nginx、Kafka、EMQTT)

总结

在性能测试领域最直接的指标是TPS、 响应时间和报错率,三者相互分析不能单独分析
我们要熟悉指定的方法,一切以数据作为基础,拒接靠感觉排版
分析的颗粒度越细越好

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【性能测试-03】 - 如何指定性能测试目标 的相关文章

  • Java 1017 A除以B

    题目内容 本题要求计算 A B 其中 A 是不超过 1000 位的正整数 B 是 1 位正整数 你需要输出商数 Q 和余数 R 使得 A B Q R 成立 输入格式 输入在一行中依次给出 A 和 B 中间以 1 空格分隔 输出格式 在一行中

随机推荐

  • BI大数据的星形模型和雪花模型

    23333架构模式的选择 数据仓库的架构主要有星型和雪花型两种方式 下面从多个角度来比较一下这两种模式的利弊 从查询性能角度来看 在OLTP DW环节 由于雪花型要做多个表联接 性能会低于星型架构 但从DW OLAP环节 由于雪花型架构更有
  • vue中的动态导入样式表

    如果vue需要根据平台动态导入样式可以这样操作 在main js中定义一个判断平台的变量 const ismobile Android webOS iPhone iPad iPod BlackBerry Windows Phone i te
  • MYSQL中的连接查询

    通过对DQL的学习 我们可以很轻松的从 张数据表中查询出需要的数据 在企业的应 开发中 我们经常需要从多张表中查询数据 例如 我们查询学 信息的时候需要同 时查询学 的班级信息 可以通过连接查询从多张数据表提取数据 在MySQL中可以使 j
  • CentOS 7 openssl 3.0.10 rpm包制作 —— 筑梦之路

    源码下载地址 https www openssl org source openssl 3 0 10 tar gz 编写spec文件 cat lt lt EOF gt openssl spec Summary OpenSSL 3 0 10
  • Android 代码优化工具FindBugs

    原文地址 https juejin im post 58d4e35261ff4b00605326d9 1 前言 在我们平时项目开发中 经常会写一些不严谨的代码或者一些比较低级的错误代码 但是这些错误往往很难被发现 这样就导致了我们的项目中会
  • 洛谷 P1226 【模板】快速幂

    题目链接 https www luogu com cn problem P1226 include
  • 上半年实现营收9.24亿元,创新奇智的AI成制造业福星?

    如今 AI大模型迈入了商业化落地的新阶段 并且已经有不少产品被不知不觉地应用到了生活各个方面 其中 作为AI领域的后起之秀 创新奇智也于近日发布了截至2023年6月30日止六个月的中期业绩报告 数据显示 创新奇智2023年上半年公司实现营收
  • 线代【向量组与线性空间】--猴博士爱讲课

    第五课 向量组与线性空间 1 4判断某向量是否可由某向量组线性表示 这些只有一行 列 的矩阵既可以称作为向量 判断的标准 若 a1 a2 am 的秩与 a1 a2 am b 的秩相等 则b可由a a2 am线性表示 2 4判断某个向量组是否
  • final关键字最全了解

    final关键字的使用 在Java中声明类 属性和方法时 可使用关键字final来修饰 1 final标记的类不能被继承 2 final标记的方法不能被子类复写 3 final标记的变量 成员变量或局部变量 即为常量 只能赋值一次 fina
  • 消息队列之Kafka 日志清理(六)

    Kafka是一个基于日志的流处理平台 一个topic可以有多个分区 partition 分区是复制的基本单元 在单节点上 一个分区的数据文件可以存储在多个磁盘目录中 配置项是 A comma separated list of direct
  • ps 命令

    NAME ps report a snapshot of the current processes SYNOPSIS ps aAcdefHjlmNVwy acefghLnrsSTuvxX C lt 指令名称 gt g lt 群组名称 gt
  • 使用Java实现文件的上传

    基于表单的文件上传 标签
  • ASPX如何调用外界程序

    调用外界程序 用到Process类 这个相当于在运行中输入命令 而不是在cmd中输入命令 aspx cs页 Start方法应该是静态方法 1 using System Diagnostics 2 3 Process Start cmd c
  • idea写的过滤器

    Servlet 概念 Server 服务 applet 小程序 是运行在服务器端 tomcat 的java程序 作用 接受客户端发送过来的请求并做出响应 重定向和转发 gt 客户端 注解 Filter 过滤器 概念 过滤器实际上就是对web
  • pv=nrt_PV=NRT中的R的单位是什么?

    展开全部 1 气体状态方程的常数 2 n是物质的量 R是常数 对任意理想气体而言 R是一定的 约为e68a8462616964757a686964616f313333656532308 31441 0 00026J mol K PV nRT
  • swarm原理与使用

    一 Swarm简介 在Docker的官方文档当中 我们可以看到在Docker 1 12及更高版本中 Swarm模式与Docker Engine集成 那么Dokcer Swarm到底是个什么 Docker Swarm是Docker官方的三剑客
  • 【亲测有效】Win10家庭版Microsoft Edge页面出现乱码的两种解决方案及gpedit.msc命令无法使用的解决策略...

    昨天在爬取电影的时候生成的表单打开result html时 发现页面出现如下乱码 第一种方法 上网找了半天 网上的解决方案是这样的 1 Win R输入gpedit msc打开组策略编辑器 2 定位到计算机配置 rarr 管理模板 windo
  • 数据结构与算法分析——第3章考试题

    判断题 1 1 Run the following operations on a stack S Push S 1 Push S 2 Pop S Push S 3 Pop S Pop S The output sequence must
  • 小程序对接企业微信客服

    一 小程序后台管理 关联企业微信客服 注意 企业ID必须跟该小程序的企业主体一样 二 登录企业微信 选择客服 登录企业微信后台 应用管理 应用 微信客服 接入场景 在微信内其他场景接入 去接入 选择客服 复制客服链接 注意 如果需要后台对接
  • 【性能测试-03】 - 如何指定性能测试目标

    文章目录 引言 定制计划 衡量指标 TPS 响应时间 报错率 性能测试指标分析 1 以衡量系统处理能力为核心目标的性能测试 时间维度 服务维度 系统健壮性 专项能力 总结 引言 在测试执行过程当中 并不清楚现在测试到的结果到底能不能满足活动