软件测试——性能测试

性能测试

文章目录

  • 性能测试
      • 一、性能测试的概念
        • 1.什么是性能测试
        • 2.性能测试的内容
        • 3.性能测试的目的
        • 4.性能测试和功能测试
      • 二、性能测试策略
        • 1. 基准测试
          • 1.1 基准测试
          • 1.2 基准测试数据的用途
        • 2.负载测试
        • 3.稳定性测试
        • 4.其他测试策略
      • 三、性能测试指标
        • 1.性能指标
        • 2.常用性能指标
          • 2.1 响应时间
          • 2.2 并发数
          • 2.3 吞吐量
          • 2.4 点击数
          • 2.5 错误率
          • 2.6 资源利用率
        • 3.性能测试流程
          • 3.1 性能测试需求分析
          • 3.2 性能测试计划及方案
          • 3.3 性能测试用例
          • 3.4 测试脚本编写/录制
          • 3.5 建立测试环境
          • 3.6 执行测试脚本
          • 3.7 性能测试监控
          • 3.8 性能分析和调优
          • 3.9 性能测试报告总结
      • 四、性能测试工具
        • 1.常用的性能测试工具
          • 1.1 LoadRunner
          • 1.2 JMeter
        • 2.安装使用JMeter
          • 2.1 JMeter下载
          • 2.2 安装
          • 2.3 JMeter环境配置
          • 2.4 启动验证
        • 3.JMeter功能概要
          • 3.1 JMeter文件目录介绍
        • 4.JMeter元件作用域和执行顺序
          • 4.1 元件的基本介绍
          • 4.2 元件的作用域
          • 4.3 元件的执行顺序

一、性能测试的概念

性能:就是软件质量属性中的“效率”特性

1.什么是性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

2.性能测试的内容

1. 后台处理程序的性能(`代码性能`2. 中间件、数据库、架构设计等是否存在瓶颈
3. 服务器资源消耗(`CPU、内存、磁盘、网络``中间件`:是提供系统软件和应用软件之间连接的软件。如:Tomcat、Apache...

3.性能测试的目的

  • 评估当前系统能力
  • 寻找性能瓶颈,优化性能
  • 评估软件是否能够满足未来需求

4.性能测试和功能测试

  • 功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向)
  • 性能测试:验证软件系统是否满足业务需求场景,主要焦点在于业务场景的满足(时间、资源)
1.功能测试和性能测试相辅相成的
2.一般新项目中,先功能测试通过后,再进行性能测试

二、性能测试策略

  1. 基准测试
  2. 负载测试
  3. 稳定性测试
  4. 其他:并发测试、压力测试、容量测试等

1. 基准测试

1.1 基准测试
  • 狭义上讲:也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。(进行基础的数据采集)
  • 广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。
1.2 基准测试数据的用途
  • 为多用户并发测试和综合场景测试等性能分析提供参考依据
  • 识别系统或环境的配置变更对性能影响带来的影响
  • 为系统优化前后的性能提升/下降提供参考指标

2.负载测试

负载测试通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能承受的最大负载量的测试

负载:向服务器发送的请求数量,请求越多,负载越高

软件测试——性能测试_第1张图片

3.稳定性测试

稳定性测试是指,在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试,并最终确保服务器能够满足线上业务需求。时长一般为1天、一周等。

4.其他测试策略

性能测试中,测试策略有很多种,但是掌握基础的用法后,其他测试策略只是基础用法的一个变形用法

并发测试:并发测试是指在极短时间内发送多个请求,来验证服务器对并发的处理能力。如抢红包、抢购、秒杀活动等。

压力测试:压力测试是指在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作的行为。从而有效的发现系统的某项功能隐患、系统是否具有良好的容错能力可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

容量测试:关注软件的极限压力下的各个极限参数值,例如:最大TPS,最大连接数,最大并发数,最多数据条数等

三、性能测试指标

1.性能指标

指标:一些经过运算得出的结果,来衡量某种操作性能的统称;比如错误率0.5%

  1. 响应时间
  2. 并发数
  3. 吞吐量
  4. 点击数
  5. 错误率
  6. 资源利用率
  7. PV和UV

2.常用性能指标

2.1 响应时间
  • 说明:响应时间指用户从客户端发起一个请求起,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间

  • 组成:响应时间 = 网络时间 + 应用程序处理时间

2.2 并发数
  • 说明:并发测试的用户数
  • 扩展:
    • 系统用户数:系统注册的总用户数量
    • 在线用户数:某段时间类内访问系统的用户数,这些用户不一定向服务器提交了请求
    • 并发用户数:某一物理时刻同时向系统发送请求的用户数
2.3 吞吐量
  • 说明:吞吐量(Throughput)指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力

  • 注意

    • 从业务角度来看,吞吐量也可以用“业务数/小时”、“业务数/天”、“访问人数/天”,页面访问量/天“来衡量
    • 从网络角度来看,还可以用”字节数/小时“、”字节数/天“等来衡量网络的流量
    • 从技术指标来看,可以用每秒事务数(TPS)和每秒查询数(QPS)来衡量服务器具体性能处理能力
  • TPS(Transaction Per Second)

    • 每秒事务数(单位时间内系统处理的客户端请求的事务次数)
    • TPS = 并发数 / 平均响应时间

    事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个操作。 一个业务请求发送给服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码。

  • QPS(Query Per Second)

    • 每秒查询数
    • 应用:
    • 控制服务器每秒处理指定请求数(如:控制服务器达到每秒60QPS,服务器的性能各项性能指标是否正常)衡量web 服务器处理能力一个重要指标
2.4 点击数
  • 说明:点击数是衡量Web服务器处理能力的一个重要指标
  • 提示:
    • 点击数不是通常一般人认为的访问一个页面就是1次点击数,点击数是该页面包含的元素(图片、链接、框架等)向web服务器发出的请求数量
    • 通常我们也用每秒点击数(Hits per Second)指标来衡量服务器的处理能力
  • 注意:只有web项目才有点击数指标
2.5 错误率
  • 说明:错误率指系统在负载的情况下,失败业务的概率。错误率 = (失败业务数/业务总数)*100%
  • 提示:
    • 不同系统对错误率的要求不同,但一般不超过千分之五
    • 稳定性较好的系统,其错误率应该为超时引起的,即为超时率
2.6 资源利用率
  • 说明:是指系统各种资源的使用情况,资源利用率 = 资源的使用量 / 总的资源可用量 * 100%
  • 提示:通常没有特殊要求的情况下
    • 建议CPU不高于80%(±5)
    • 内存不高于80%
    • 磁盘不高于90%
    • 网络不高于80%

3.性能测试流程

1.性能测试需求分析
2.性能测试计划及方案
3.性能测试用例
4.测试脚本编写/录制
5.建立测试环境
6.执行测试脚本
7.性能测试监控
8.性能分析和调优
9.性能测试报告总结
3.1 性能测试需求分析
  • 说明:性能需求分析是整个性能测试工作开展的基础,性能需求分析做的好不好直接影响到性能测试的结果。
  • 目标:
    • 明确被测试系统
    • 明确测试内容
    • 明确测试策略
    • 明确测试指标
3.2 性能测试计划及方案
  • 说明:性能测试实施第一份文档,也是最重要的一份文档。
  • 主要内容
    1. 项目背景
    2. 测试目的
    3. 测试范围
    4. 测试策略
    5. 风险控制
    6. 交付清单
    7. 进度与分工
3.3 性能测试用例
  • 性能测试用例模板

软件测试——性能测试_第2张图片

3.4 测试脚本编写/录制
  • 说明:性能测试用例编写完成后,接下来就需要结合用例的需要,进行测试脚本的编写工作。
  • 提示:录制或编写,需根据不同的工具注意代码冗余
3.5 建立测试环境
  • 说明:在进行性能测试之前,需要先完成性能测试环境的搭建,测试环境一般包括硬件系统、软件环境及网络环境

    提示:一般情况下可以要求运维和开发工程师协助完成环境搭建

3.6 执行测试脚本
  • 说明:先保证脚本调试通过之后,才能进行正式压测阶段
  • 提示:执行测试脚本时,要先进行性能运行场景的设置,再运行脚本
3.7 性能测试监控
  • 说明:性能监控就是监控服务器的各项指标。例如:监控CPU、内存、网络、TPS、磁盘IO等
3.8 性能分析和调优
  • 说明:性能测试分析人员经过对结果的分析之后,有可能提出系统存在的性能瓶颈。
  • 提示:
    • 调优人员(开发人员、数据库管理员、系统管理员、网络管理员、性能测试分析人员)相关人员对系统进行调整;
    • 验证:性能测试人员继续进行第二轮、第三轮…的测试,与以前的结果进行对比,从而确定经过调整以后的系统的性能是否有提升。
3.9 性能测试报告总结
  • 性能测试总结要包含以下内容:
    1. 性能测试需求覆盖情况,测试过程回顾,及测试中出现的问题(如何去分析、调优、解决的)–基本要求
    2. 性能测试过程中遇到各种风险是如何控制的;目前是否还有其他的性能风险存在
    3. 经过该项目性能测试后,有哪些经验和教训等内容

四、性能测试工具

1.常用的性能测试工具

  • LoadRunner
  • JMeter
1.1 LoadRunner
  • HP LoadRunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并在测试时可实时检测应用服务器及服务器硬件各种数据,来确认和查找存在的瓶颈
  • 支持多协议:Web(HTTP/HTML)、Windows Sockets、FTP、ODBC、MS SQL Server等协议
  • 最初是Mercury公司采用C语言编写,现被HP公司收购
优点 缺点
多用户(支持数量单位万) 收费
详细分析报表 体积庞大(单位G)
支持IP欺骗 无法定制功能
1.2 JMeter
  • JMeter是Apache组织开发的基于Java的开源软件,用于对系统做接口测试和性能测试。
  • 它最初被设计用于Web应用测试,但后来扩展到其他测试领域,例如静态文件、Java 程序、shell 脚本、数据库、FTP、Mail等。
优点 缺点
免费、开源 不支持IP欺骗
小巧(最新版-50MB左右) 分析和报表能力相对LoadRunner精度欠缺
丰富的学习资料和扩展组件
应用广泛
易上手

2.安装使用JMeter

2.1 JMeter下载

官方下载地址

2.2 安装

把下载的安装包,解压到某一目录即可

提示:安装目录中不要出现空格和中文

2.3 JMeter环境配置
在环境变量中
1. 新建JMETER_HOME变量,并添加jmeter所在目录 如:-> F:\Jmeter\apache-jmeter-5.1.1
2.PATH-> 
.;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
2.4 启动验证

JMeter启动有多种方式,进入JMeter安装目录下的bin目录

  • 双击 jmeter.bat
  • 双击 ApacheJMeter.jar 选择使用java程序打开
  • 命令行输入: java -jar ApacheJMeter.jar

3.JMeter功能概要

3.1 JMeter文件目录介绍
  1. bin目录 存放可执行文件和配置文件

    jmeter.bat:windows的启动文件
    jmeter.log:日志文件
    jmeter.sh:linux的启动文件
    jmeter.properties:系统配置文件
    jmeter-server.bat:windows分布式测试要用到的服务器配置
    jmeter-serve:linux分布式测试要用到的服务器配置
    
  2. docs目录 存放api文档

    docs:是JMeter的api文档,可打开api/index.html页面来查看
    
  3. printable_docs目录

    • printable_docs的usermanual子目录下的内容是JMeter的用户手册文档
    • usermanual下component_reference.html是最常用到的核心元件帮助文档。
  4. lib目录 存放JMeter依赖的jar包和用户扩展所依赖的jar包

4.JMeter元件作用域和执行顺序

4.1 元件的基本介绍

元件:多个类似功能组件的容器(类似于类)。

组件:实现独立的某个功能(类似于方法)

  • 常用的元件类型
    • 取样器
    • 逻辑控制器
    • 前置处理器
    • 后置处理器
    • 断言
    • 定时器
    • 测试片段
    • 配置元件
    • 监听器
4.2 元件的作用域

在JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。

提示: 核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。

  • 作用域的原则
    • 取样器:元件不和其他元件相互作用,因此不存在作用域的问题;
    • 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;
    • 其他六大元件
      • 如果是某个取样器的子节点,则该元件对其父子节点起作用;
      • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);
4.3 元件的执行顺序
1. 配置元件(config elements)
2. 前置处理程序(Per-processors)
3. 定时器(timers)
4. 取样器(Sampler)
5. 后置处理程序(Post-processors)
6. 断言(Assertions)
7. 监听器(Listeners)

提示:
1. 前置处理器、后置处理器、断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器,则不会被执行)
2. 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

你可能感兴趣的:(功能测试,压力测试,学习)