性能测试指标介绍

摘抄

性能测试指标

不同视角下有不同的性能标准, 不同的标准有不同的性能测试指标, 从开发到测试人员的视角, 网站性能测试的主要指标有响应时间, 并发数, 吞吐量, 性能计数器等。

  • 响应时间

指应用执行一个操作需要的时间, 包括从发出请求开始到收到最后响应数据结束所需要的时间。响应时间是系统最重要的性能指标, 直观的反映了系统的”快慢”。下面列出了一些常用的系统操作需要的响应时间。

常用系统操作响应时间表

操作 响应时间
打开一个网站 几秒
在数据库中查询一条记录(有索引) 十几毫秒
机械磁盘一次寻址定位 4毫秒
从机械磁盘顺序读取1MB数据 2毫秒
从 SSD 磁盘读取1MB数据 0.3毫秒
从远程分布式缓存 Redis 读取一个数据 0.5毫秒
从内存中读取1MB数据 十几微秒
Java程序本地方法调用 几微秒
网络传输2KB数据 1微秒

测试程序通过模拟应用程序, 记录收到响应和发出请求之间的时间差来计算系统响应时间。但是记录及获取系统时间这个操作也需要花费一定的时间, 如果测试目标操作本身需要花费的时间极少, 比如几微秒, 那么测试程序就无法测试得到系统的响应时间。
实践中通常采用的办法是重复请求, 比如一个请求操作重复执行一万次, 测试一万次执行需要的总响应时间之和, 然后除以一万, 得到单次请求的响应时间。

思考

可以编写测试程序(并不非得将测试用例放入网站代码中, 可以直接以爬虫或其他形式来测试网站响应的时间。可以编写不同类型的爬虫, 用来测试不同情况的响应时间。)

摘抄

  • 并发数

指系统能够同时处理请求的数目, 这个数字也反映了系统的负载特性。对于网站而言, 并发数即网站并发用户数, 指同时提交请求的用户数目。

与网站并发用户数相对应的还有网站在线用户数(当前登录网站的用户总数)和网站系统用户数(可能访问系统的总用户数, 对多数网站而言就是注册用户数)。其数量比较关系为:

网站系统用户数 > 网站在线用户数 > 网站并发用户数

测试程序通过多线程模拟并发用户的办法来测试系统的并发处理能力, 为了真实模拟用户行为, 测试程序并不是启动多线程然后不停的发送请求, 而是在两次请求之间加入一个随机等待时间, 这个时间被称为思考时间。

思考

我觉得在技术准备方面, 应该总要比运营人员预估的并发用户数多一倍做准备, 在测试也应如此。

摘抄

  • 吞吐量

指单位时间内系统处理的请求数量, 体现系统的整体处理能力。对于网站, 可以用”请求数/秒”或是”页面数/秒”来衡量, 也可以用”访问人数/天”或是”处理的业务数/小时”等来衡量。TPS(每秒事务数)是吞吐量的一个常用量化指标, 此外还有HPS(每秒HTTP请求数), QPS(每秒查询数)等。

系统吞吐量和系统并发数, 以及响应时间的关系可以形象地理解为高速公路的通行状况: 吞吐量是每天通过收费站的车辆数目(可以换算成收费站收取的高速费), 并发数是高速公路上正在行驶的车辆数目, 响应时间是车速。车辆很少时, 车速很快, 但是收到的高速费也相应较少; 随着高速公路上车辆数目的增多, 车速略受影响, 但是收到的高速费增加很快; 随着车辆的继续增加, 车速变得越来越慢, 高速公路越来越堵, 收费不增反降; 如果车流量继续增加, 超过某个极限, 任何偶然因素都会导致高速公路全部瘫痪, 车走不动, 费当然收不到, 而高速公路成了停车场(资源耗尽)。

思考

收费站的比喻虽然形象, 但是略微有些不恰当。应用在处理并发问题时, 几乎是来者不拒, 而收费站则是队列模式, 所以在处理该问题时, 应当使用队列规范请求。

摘抄

性能计数器

它是描述服务器或操作系统性能的一些数据指标。包括 System Load, 对象与线程数, 内存使用, CPU 使用, 磁盘与网络 I/O 等指标。这些指标也是系统监控的重要参数, 对这些指标设置报警阈值, 当监控系统发现性能计数器超过阈值时, 就向运维和开发人员报警, 及时发现处理异常。

System Load 即系统负载, 指当前正在被 CPU 执行和等待被 CPU 执行的进程数目综合, 是反映系统忙闲程度的重要指标。多核 CPU 的情况下, 完美情况时所有 CPU 都在使用, 没有进程等待处理, 所以 Load 的理想值是 CPU 的数目。当 Load 值低于 CPU 数目的时候, 表示有 CPU 空闲, 资源存在浪费; 当 Load值高于 CPU 数目的时候, 表示进程在排队等待 CPU 调度, 表示系统资源不足, 影响应用程序的执行性能。在 Linux 系统中使用 top 命令查看, 该值是三个浮点数, 表示最近 1 分钟, 10分钟, 15分钟的运行队列平均进程数。

top -xx:xx:xx up 1 day, x:xx x users, load overage: 0.14, 0.20, 0.16

思考

本段介绍了系统负载, 当在评估当前服务器的配置是否符合网站所需时, 该指标是一个重要的参考。


性能测试指标介绍
http://icecreamzhao.github.io/note/read_note/web-site-framework/profermence-test-example.html
作者
littleboyDK
发布于
2019年12月15日
许可协议