zoukankan      html  css  js  c++  java
  • 软件测试之性能测试

    性能测试是与时间相关的

    主要内容

    1. 性能测试基础

    2. 概念和术语介绍

    3. 性能测试模型

    4. 性能测试分类介绍

    5. 性能测试实施与管理

    性能测试基础

    为什么要进行性能测试(WHY)(最重要)

    • 应用程序是否能够很快的响应用户的要求?

    • 应用程序是否能处理预期的用户负载并有盈余能力?

    • 应用程序是否能处理业务所需要的事务数量?

    • 在预期和非预期的用户负载下,应用程序是否稳定?

    • 是否能够确保用户在真正使用软件时获得舒服的体验?

      问题的根源一般是: 

      误区:提高一下硬件配置就可以提高性能了,因此性能测试不重要?  

    进行性能测试时,要关注什么?(WHAT)

    • 并发用户数、吞吐量

    • 平均响应时间

    • 服务器资源占用情况

    • 可靠性、可扩展性

    • 发现引起系统问题的原因,关注采用何种技术提高系统性能

    • 软、硬件配置是否合适(容量规划、硬件选型)

    谁来关注?(WHO)

    • 开发人员 

      • 系统架构:架构是否合理?

      • 数据库设计:数据库设计是否存在问题?

      • 代码:代码是否存在性能问题?系统中是否存在不合理的内存使用方式?

      • 设计和代码:系统中是否存在不合理的线程同步方式和不合理的资源竞争?

    • 系统管理人员 

      • 资源利用率:应用服务器和数据库使用状况合理吗?

      • 系统容量:系统最多能支持多少用户的访问?最大的业务处理量是多少?

      • 系统稳定性:系统能否支持7*24小时的业务访问?

      • 系统可拓展性:系统能否实现拓展?系统性能可能的瓶颈在哪?

    • 用户 

      • 响应时间过长会是用户烦躁不安(3/5/8)。

      • 系统稳定性:出现HTTP 500 错误或数据库崩溃会让用户对系统失去信心。

    • 业务人员 

      • 参数:如何向用户提供参数,例如:支持多少用户使用?响应时间是多少?

    • 测试人员 

      • 以上都要关注

      • 能否发现系统中出现的瓶颈?

      • 能否真实有效的评估系统性能能力?

    关注的领域主要是?(WHERE)

    • 能力验证 

      • 性能测试中最简单也是最常用的一种。主要关心:在给定的条件下,系统能否具有预期的表现?

    • 规划能力 

      • 主要关心:应该如何才能使系统具有我们要求的性能能力?

    • 性能调优 

      • 性能调优活动回合其他领域的活动交杂在一起。是一种在开发阶段和测试阶段都可能会涉及到的性能测试应用领域。

    • 发现缺陷

      误区:  

      • 主要目的是:通过性能测试的手段来发现系统中存在的缺陷。

    何时进行性能测试?(WHEN)

    • 一般在功能测试的中后期进行。

    概念和术语介绍

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

    做性能测试一般关注的性能指标是什么?

    并发数

    • 系统用户数:该系统的注册用户数。例如,QQ有100个注册用户。

    • 在线用户数:即登录的用户数。例如,100个人里面有60个人为在线状态。

    • 并发用户数:是对服务器产生压力的用户。例如,这60个人里面只有20个人在进行通信或其他操作。这20个人就是并发用户数。

      并发用户数:同一时间进行同一操作的用户数。

    响应时间 

     网络请求的时间 + 服务器处理的时间 + 网络响应的时间
    
    • 1

    事务响应时间 

    每秒事务通过数 

    点击率 

    吞吐量 

    从业务角度,吞吐量也可以用访问人数/天或是处理的业务数/小时来衡量; 

    思考时间 

    资源利用率 

    性能测试模型

    曲线拐点模型

    640?wx_fmt=png

    总结:随着并发用户数的增加,吞吐量与资源利用率增加,说明系统在积极处理,所以响应时间增加的并不明显,处于比较好的状态。但随着并发用户数的持续增加,压力也在持续加大,吞吐量与资源利用率都达到了饱和,随后吞吐量急剧下降,造成响应时间急剧增长。轻压力区与重压力区的交界点是系统的最佳并发用户数,因为各种资源都利用充分,响应也很快;而重压力区与拐点区的交界点就是系统的最大并发用户数,因为超过这个点,系统性能将会急剧下降甚至崩溃。

    性能测试分类

    基准测试、性能测试、负载测试、压力测试、配置测试、并发测试、可靠性测试、失效恢复测试、大数据量测试

    基准测试 

    1. 可以在制定的标准下通过基准测试建立一个性能基准,这样以后当系统的环境、参数发生变化之后,再进行一次相同标准下的测试,即可看出变化对性能的影响。

    2. 系统进行基准测试可以在较早的阶段发现性能问题。

    3. 某系统从来没有进行任何性能测试,需要对该系统做一次性能评估作为后续开发调优的参考。

    狭义性能测试 

    负载测试 

    压力测试 

    负载测试和压力测试两者可以结合进行。 

    配置测试 

    并发测试 

    并发用户数和并发数是不一样的。

    可靠性测试 

    失效恢复测试

    1. 失效恢复测试方法是针对有备份和负载均衡的系统设计的,这种测试方法可以用来检验如果系统局部发生故障, 用户能否继续使用系统,以及如果这种情况发生,用户将受到多大程度的影响。 

    2. 一般的关键业务系统都会采用热备份或是负载均衡的方式来实现。这种业务系统一般要求有一台或几台服务器出 现问题,应用系统仍然可以正常执行业务。该方法就是在测试中模拟设备故障,验证预期的恢复技术是否可以正常发挥作用 。

    3. .不是所有的系统都需要进行这种类型的测试,尤其是并没有明确给出系统需要持续运行指标的系统。

    大数据量测试 

    1. 独立的数据量测试 

    2. 综合数据量测试 

    各个测试类型的测试目的

    • 性能测试:能力验证

    • 负载测试:规划能力、性能调优

    • 压力测试:能力验证、规划能力、性能调优、发现缺陷

    • 配置测试:规划能力、性能调优

    • 并发测试:发现缺陷

    • 可靠性测试:能力验证

    • 失效恢复测试:能力验证、性能调优、发现缺陷

    性能测试实施

    性能测试的实施:

    • 前期准备(功能稳定、组件团队)

    • 选择工具(进行对于工具的培训)

    • 性能测试方案(需求、计划、方案、策略、资源)

    • 性能测试设计(准备环境—设计场景—编写脚本—辅助工具)

    • 性能测试执行(执行脚本—记录结果)

    • 性能调优与分析

    • 性能测试报告

    性能测试前期准备

    1. 系统基础功能验证 

    2. 组建测试团队 

    测试工具

    1. 工具选择 

    2. 工具应用技能培训 

    3. 确认工具应用过程 

    性能测试方案

    • 调研测试需求 

      • 测试业务范围

      • 测试环境:硬件环境、软件环境、网络环境

      • 测试目的

      • 性能指标:业务性能指标、系统性能指标

    • 测试策略和测试资源需求 

      • 测试策略:测试工具、测试方式、测试执行

    • 性能测试计划:即是如何实施性能测试,概括为以下5点:

    1. 编写性能测试方案

    2. 测试环境准备: 

    3. 测试脚本、测试数据 

    4. 测试执行 

    5. 编写性能测试报告

    各种测试通用的实施步骤:需求—方案—代码实现—执行—产出报告

    性能测试设计

    1. 测试环境设计 

    2. 测试场景设计 

    3. 测试用例的设计 

    4. 脚本和辅助工具开发

    性能测试执行

    1. 建立测试环境

    2. 部署测试脚本和测试场景

    3. 执行测试和记录结果

    性能测试分析与调优

    测试结果分析是最难的部分。是一个灵活的过程,每次性能测试结果的分析都需要测试分析人员具有相当程度的对 软件性能、软件架构和各种性能测试指标的了解,性能测试分析需要借助各种图表。 通用方法:拐点分析法。

    性能测试报告

    1. 要测试的目标 

    2. 测试概要描述 

    3. 测试结果和数据

    4. 测试结论

    本文转自:https://blog.csdn.net/bit666888/article/details/81746538

  • 相关阅读:
    ADO.NET改进版
    H面试程序(11): 判断字符串是否包含子串问题
    H面试程序(12): 输出字符串中第一个只出现一次的字母
    Hadoop CLI MiniCluster
    hdu 3061 (最大权闭合图)
    CF 338 D GCD Table(CRT)
    【Todo】Nodejs学习计划
    【转载】游戏并发编程的讨论 & Nodejs并发性讨论 & 语法糖术语
    Jedis(Java+Redis) Pool的使用
    【Todo】Apache-Commons-Pool及对象池学习
  • 原文地址:https://www.cnblogs.com/finer/p/11895088.html
Copyright © 2011-2022 走看看