性能测试的一些入门概念

功能测试、自动化测试,性能测试 区别

  • 功能测试 在于找bug 预期结果与实际结果进行比较
  • 自动化测试 模拟一个用户的操作来发现问题
  • 性能测试 不是模拟1个人,**模拟多个人同时**,关注点在于 多个人操作时 响应时间,接口服务器性能测试中,一定是多个人同时操作,才是性能测试

性能的概念

  • Q: 100个人同时登录接口进行登录,性能中的avgRT应该在多少,是可以被接受的?
  • A:可接受的范围 为1.5s 1.5 APDEX 用户满意度指数

Apdex全称是Application Performance Index,是由Apdex联盟开发的用于评估应用性能的工业标准。Apdex标准从用户的角度出发,将对应用响应时间的表现,转为用户对于应用性能的可量化范围为0-1的满意度评价。

事务

  • 指的是 一个请求行为,并不一定只有一个接口,所以,一个事务可能是多个接口 。是从发起,到网络传输,收到响应的过程

jmeter:默认情况下,1个接口请求一次,认为一个1个事务Transation。jmeter 也可以通过务控制器,挂载多个接口请求,合并成为1个事务

性能测试

 指: 通过工具,模拟多用户发起请求,获取**性能指标值*

用工具来模拟多个人的方式很多种 主要包含 进程 和线程

  • + 线程:   使用进程的资源,来进行测试。jmeter、lr
  • + 进程: 资源拥有者,资源消耗会比较大。LR
  • + 进程+ 线程: ngrinder
  • + 协程: python+locust

协程不是系统级线程,很多时候协程被称为“轻量级线程”、“微线程”、“纤程(fiber)”等。简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换协程和用户态线程非常接近,用户态线程之间的切换不需要陷入内核,但部分操作系统中用户态线程的切换需要内核态线程的辅助,协程是编程语言(或者 lib)提供的特性(协程之间的切换方式与过程可以由编程人员确定),是用户态操作。协程适用于 IO 密集型的任务。常见提供原生协程支持的语言有:c++20、golang、python 等,其他语言以库的形式提供协程功能,比如 C++20 之前腾讯的 fiber 和 libco 等等

性能指标

  • 平均响应时间 avgRT  90%
  • TPS: 服务器每秒处理的事务数
  • 吞吐量:在一次性能测试过程中网络上传输的数据流量的总和。吞吐量/传输时间,就是吞吐率

+ 1、没有网络瓶颈:tps 数值 = 吞吐量数值

+ 2、如果网络有瓶颈: tps 数值 != 吞吐量数值

  • 吞吐率 每秒钟能通过多少kb数据
  • 吞吐率也可以用来指系统的业务吞吐能力 

业务数/小时或天” “访问量/天” “页面访问量/天” 来衡量。例如在银行卡审批系统中,可以用“千件/每小时”来衡量系统的业务处理能力。

  • 服务器资源利用率  cpu、内存、io的利用率

并发用户数

  • 严格意义的并发  同一时间发起相同请求

所有的用户在同一时刻做同一件事情或者操作,这种操作一般是指做同一类型的业务, 例如,在贷款审批业务中,一定数目的用户在同一时刻对已经完成的审批业务进行提交(操作的不是同一记录); 还有一种是特例,即所有用户进行完全一样的操作

  • 广义范围的并发 同一时间发起请求(相同、不相同)

多用户同时对系统进行操作,因此属于并发的范畴

  • 集合点:集合多个人在同一时间发起相同请求

并发用数100 发起请求,一秒钟会发起多少请求?(请求的频率)不知道,所以1秒钟总请求量,不知道是多少

负载测试

通过在被测系统上不断增加压力,直到性能指标达到极限,例如响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供依据

  • 逐步增加并发用户数,
  •  区间怎么判断

 有没有报错

 tps下降

 响应时间变长

假如服务器每秒可以处理50个事务,最大用户请求为300 

先找每日最大处理事务,假定服务器 处理时间为白天的8个小时

 每小时可以处理  50 t/s * 60 * 60 = 18w  个请求 ,8小时 取 6~7 的值乘以 50*6=300个 

 一天 18w * 8h = 144w 访问量 ,pv日均访问量

 

posted @ 2022-10-30 15:23  成子吃橙子  阅读(77)  评论(0编辑  收藏  举报