压测还是得先从概念和理论开始,工具反而是其次的。

本文作者:于静,高级软件测试工程师。
曾负责某全球智能药房设备系统,及某容器平台解决方案微服务治理平台的测试工作。

什么是压力测试

说到压测那就不得不提到性能测试,所以概念扫盲开始:

  • 性能

    用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价。对性能进行的测试就叫性能测试。

  • 性能测试

    利用测试工具模拟多种正常、峰值以及异常负载条件对系统的各项性能指标进行测试。实际性能测试是一个广泛的概念,包括:稳定性测试、压力测试、负载测试、容量测试等。

图片

其中易混淆的就是负载测试和压力测试:

负载测试

逐渐增加负载,观察系统各项性能指标的变化情况,检验系统在给定负载下是否能达到预期性能指标。

压力测试

通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

出道题检验下大家的是否正确理解了概念,下面两个指标分别指的是哪个测试:

图片

  1. 工人建桥,桥身上表明,该桥的最大负重量为 60 吨
  1. 该桥的内部建筑资料中,表明该桥的最大载重量为 70 吨(这个数据是给内部建桥工程师掌握的)

为什么要做压测

  • 良好的用户体验 (User Experience)
  • 产品对外宣传指标
  • 提高产品竞争力

此处省略若干字,可自行百度。。。。。。

如何美好的开始

图片

压测流程

  1. 压测的前提条件一定是功能测试已经完成

  2. 测试案例选取用户常用的且关键的的业务,比如网关,他实现所有请求的转发,一旦网关挂了,那请求就全都失败了。测试指标的确定:可以是测试根据经验,也可能是产品提供指标或者是客户提出的要求

  3. 测试环境是测试实施的一个重要阶段,环境的适合与否会严重影响测试结果的真实性和正确性。一个充分准备好的测试环境有三个优点:一个稳定、可重复的测试环境,能够保证测试结果的正确;保证达到测试执行的技术需求;保证得到正确的、可重复的以及易理解的测试结果。测试环境包括硬件环境和软件环境:

    • 硬件环境指测试必需的服务器、客户端、网络连接设备等辅助硬件设备所构成的环境
    • 软件环境指被测软件运行时的操作系统、数据库及其他应用软件构成的环境

注:测试案例和测试环境一定要保证与实际应用场景一致或者十分相近

  1. 测试工具,目前有很多性能测试工具LD、Jmeter、locust、http_loade、wrk等,个人觉得工具没有绝对的哪个一定更好,根据测试的需求,适合的才是对的。后面会对几个工具进行对比。

  2. 测试脚本是基于选择的工具进行编写的,jmeter可以用java进行二次开发,locust是python,LD可以用自带类c语言或者Java,VB等。还有相关测试数据的准备需要用到脚本。

  3. 测试执行:现在大部分的工具都会记录性能指标。

    分析:能够根据性能指标定位问题点从而进行优化。

    调优:这里分两种

    • 一是测试脚本进行优化,确保不是由于测试脚本导致的测试数据的异常或者性能问题
    • 另一个是,确实被测系统产生问题,研发进行调优,研发的调优也可能出现在测试报告发布后进行,这个和每个公司测试流程的不同和不同
  4. 测试报告:测试报告的内容基本涵盖测试的全流程,测试的结果一定是可重复且真实、正确的数据。

测试工具比较

能力 LoadRunner JMeter Locust
分布式压力 支持 支持 支持
单机并发能力
并发机制 进程/线程 线程 协程
开发语言 C/Java Java Python
报告与分析 完善 简单图表 简单图表
授权方式 商业收费 开源免费 开源免费
测试脚本形式 C/Java GUI Python
资源监控 支持 不支持 不支持
录制功能 支持 支持 不支持
原生支持协议 Web(HTTP/HTML)
Sockets
.NET
数据库协议
Web Services
支持 HTTP
FTP
TCP
ODBC
等多种协议类型
Web HTTP

需要关注的指标

交易响应时间

响应时间(Response Time: RT)指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。

图片

响应时间=网络传输时间+应用服务器处理时间+数据库服务器处理时间

参考数据:

不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易:

  • 互联网企业:500 毫秒以下,例如淘宝业务 10 毫秒左右。
  • 金融企业:1 秒以下为佳,部分复杂业务 3 秒以下。
  • 保险企业:3 秒以下为佳。
  • 制造业:5 秒以下为佳。

系统处理能力

系统处理能力通过系统每秒钟能够处理的交易数量来评价。

一般情况下,用以下指标来度量:

  • TPS(Transaction per Second):系统每秒处理事物数,单位是事物数/秒
  • RPS(Requests Per Second):每秒能处理的请求数目
  • QPS(Query per Second):系统每秒处理查询次数,单位是次/秒

对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数。

资源指标

  • CPU 利用率

CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%

  • 内存利用率

内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%

  • 磁盘吞吐量

是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。一般情况下,磁盘繁忙率要低于70%

  • 网络吞吐量

每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%


美好压测
就是这么简单
!!!

图片