`

性能测试、负载测试、压力测试的概念

 
阅读更多

   负载测试(Load testing)、压力测试(Stress Test,应称为强度测试)和性能测试,这三个概念常常引起混淆,难以区分,从而造成不正确的理解和错误的使用。之前,也有不少讨论,比较有名的,应归为Grig Gheorghiu's的两篇博客:

     负载测试、压力测试和性能测试的测试目的不同,但其手段和方法在一定程度上比较相似,通常会使用相同的测试环境和测试工具,而且都会监控系统所占用资源的情况以及其它相应的性能指标,这也是造成人们容易产生概念混淆的主要原因。
     我们知道,软件总是运行在一定的环境下,这种环境包括支撑软件运行的软硬件环境和影响软件运行的外部条件。为了让客户使用软件系统感到满意,必须确保系统运行良好,达到高安全、高可靠和高性能。其中,系统是否具有高性能的运行特征,不仅取决于系统本身的设计和程序算法,而且取决于系统的运行环境。系统的运行环境会依赖于一些关键因素,例如:

  • 系统架构,如分布式服务器集群还是集中式主机系统等。
  • 硬件配置,如服务器的配置,CPU、内存等配置越高,系统的性能会越好。
  • 网络带宽,随着带宽的提高,客户端访问服务器的速度会有较大的改善。
  • 支撑软件的选定,如选定不同的数据库管理系统(Oracle、MySQL等)和web应用服务器(Tomcat、GlassFish、Jboss、WebLogic等),对应用系统的性能都有影响。
  • 外部负载,同时有多少个用户连接、用户上载文件大小、数据库中的记录数等都会对系统的性能有影响。一般来说,系统负载越大,系统的性能会降低。

     从上面可以看出,使系统的性能达到一个最好的状态,不仅通过对处在特定环境下的系统进行测试以完成相关的验证,而且往往要根据测试的结果,对系统的设计、代码和配置等进行调整,提高系统的性能。许多时候,系统性能的改善是测试、调整、再测试、再调整、……一个持续改进的过程,这就是我们经常说的性能调优(perormance tuning)。
    在了解了这样一个背景之后,就比较容易理解为什么在性能测试中常常要谈负载测试。从测试的目的出发、从用户的需求出发,就比较容易区分性能测试、负载测试和压力测试。性能测试是为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据,而负载测试、压力测试是为了发现软件系统中所存在的问题,包括性能瓶颈、内存泄漏等。通过负载测试,也是为了获得系统正常工作时所能承受的最大负载,这时负载测试就成为容量测试。通过压力测试,可以知道在什么极限情况下系统会崩溃、系统是否具有自我恢复性等,但更多的是为了确定系统的稳定性。
     那么,如何给负载测试、压力测试下个定义呢?根据上述讨论,我们可以给出如下的定义:

  • 负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。
  • 压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

     压力测试可以被看作是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。通过压力测试,可以更快地发现内存泄漏问题,还可以更快地发现影响系统稳定性的问题。例如,在正常负载情况下,某些功能不能正常使用或系统出错的概率比较低,可能一个月只出现一次,但在高负载(压力测试)下,可能一天就出现,从而发现有缺陷的功能或其它系统问题。通过负载测试,可以证明这一点,某个电子商务网站的订单提交功能,在10个并发用户时错误率是零,在50个并发用户时错误率是1%,而在200个并发用户时错误率是20%。
    负载测试是为了发现系统的性能问题,负载测试需要通过系统性能特性或行为来发现问题,从而为性能改进提供帮助,从这个意义看,负载测试可以看作性能测试的一部分。但它们两者的目的是不一样的,负载测试是为了发现缺陷,而性能测试是为了获取性能指标。因为性能测试过程中,也可以不调整负载,而是在同样负载情况下改变系统的结构、改变算法、改变硬件配置等等来得到性能指标数据,从这个意义看,负载测试可以看作是性能测试所c的一种技术,即性能测试使用负载测试的技术、使用负载测试的工具。性能测试要获得在不同的负载情况下的性能指标数据。
    通过负载测试和压力测试都可以获得系统正常工作时的极限负载或最大容量。容量测试,自然也是采用负载测试技术来实现,而在破坏性的压力测试中,容量的确定可以看作是一种副产品——间接结果。
    综合所述,负载测试、压力测试和性能测试的概念可以概括如下:

  • 负载测试是通过改变系统负载方式、增加负载等来发现系统中所存在的性能问题。负载测试是一种测试方法,可以为性能测试、压力测试所采用。负载测试的加载方式也有很多种,可以根据测试需要来选择。
  • 性能测试是为获取或验证系统性能指标而进行测试。多数情况下,性能测试会在不同负载情况下进行。
  • 压力测试通常是在高负载情况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。
分享到:
评论

相关推荐

    性能测试 负载测试 压力测试 性能测试工作原理及应用角度,模型。测试脚本开发与测试执行,测试分析技巧

    性能测试定义 性能测试概念 负载测试 压力测试 性能测试工作原理及应用角度,模型。测试管理流程,测试人员安排,测试工作产品,性能测试的过程,周期,系统需求应用配置需求用户手册需求,测试计划,加案例说明。 ...

    性能测试与负载测试、压力测试

    性能测试与负载测试、压力测试 性能测试是评价系统或组件...性能测试、负载测试和压力测试是软件测试领域中的三个重要概念,它们之间存在一定的区别和联系。了解这些概念对软件测试的重要性和实际应用具有重要的意义。

    软件测试中性能测试,负载测试,压力测试有什么区别

    在网上看到了一篇很详细的解释,贴在这里和大家分享一下:性能测试(或称多用户并发性能测试)、负载测试、强度测试、容量测试是性能测试软件测试中性能测试,负载测试,压力测试有什么区别对于性能测试,负载测试,...

    软件性能与负载测试

    性能测试可以分为不同的类型,如负载测试(Load Testing)、压力测试(Stress Testing)、稳定性和持久性测试(Endurance Testing)等。 在本文中,性能测试的学习被分为三个部分。第一部分主要介绍如何在Visual ...

    负载测试、压力测试和性能测试的区别是什么?

    负载测试(Loadtesting)、压力测试(StressTest,应称为强度测试)和性能测试,这三个概念常常引起混淆,难以区分,从而造成不正确的理解和错误的使用。之前,也有不少讨论,比较有名的,应归为GrigGheorghiu's的两篇...

    jmeter性能测试报告.docx

    JMeter是一款广泛使用的开源性能测试工具,适用于模拟多种负载条件,进行负载测试、压力测试、并发测试和容量测试,以验证系统的性能表现。 1.1 性能测试概念 性能测试包括负载测试和压力测试,前者用于了解系统在...

    性能测试与压力测试区别

    #### 一、性能测试与压力测试的基本概念 **性能测试**(Performance Testing)是一种软件测试类型,其目的是评估系统在特定条件下处理请求的能力,确保系统的响应时间、资源利用率和吞吐量满足预定的目标。性能测试...

    Web服务稳定性测试 负载测试 可靠性测试 测试报告

    Web服务的稳定性、负载测试和可靠性测试是保证系统性能和用户体验的关键环节。本文将深入探讨这些测试的概念,方法以及在实际测试过程中的应用。 首先,稳定性测试是衡量系统在长时间运行下保持正常服务的能力,...

    性能测试基本概念剖析

    以下是对性能测试基本概念的详细剖析: 1. **性能测试的目标**: - 系统承受能力:通过模拟真实用户行为,测试系统在特定压力下的稳定性和可扩展性。 - 响应时间:衡量系统处理请求的速度,了解用户等待结果的...

    软件测试中的性能测试与负载测试技巧2.pptx

    ### 软件测试中的性能测试与负载测试技巧 #### 第一章:简介 ##### 1.1 什么是性能测试与负载测试? - **性能测试**:旨在评估系统在特定工作负载下的表现,如响应时间、吞吐量、资源利用率等。 - **负载测试**:...

    软件测试中的性能测试与负载测试技术.pptx

    #### 第二章:性能测试的基本概念 **性能测试指标** - **响应时间**:衡量系统从接收请求到完成响应所需的时间。 - **并发用户数**:同时访问系统的用户数量。 - **吞吐量**:系统单位时间内处理的请求数量。 - **...

    深入理解性能测试概念

    本文将通过一个生动的故事,帮助我们更好地理解性能测试、压力测试和容量测试这三个核心概念。 ### 性能测试:确保系统在正常工作条件下的表现 故事中的农夫寻找一匹能够承载三袋大米的骡子,类似于用户对系统提出...

    性能测试的概念及其分类

    ### 性能测试的概念及其分类 #### 一、性能测试概览 性能测试是一种重要的质量保证手段,旨在评估系统的性能表现及其对特定工作负载的响应情况。它关注于软件系统的执行效率、资源占用、稳定性等多个方面,以确保...

    性能测试入门 性能测试入门

    本入门指南将带你走进性能测试的世界,了解其基本概念、重要性以及如何进行实际操作。 一、性能测试定义与目的 性能测试是一种评估软件系统在特定工作负载下的性能表现的测试类型。它关注的是系统处理能力、响应...

    软件测试中的性能测试与负载测试技术3.pptx

    #### 第2章 性能测试的基本概念 ##### 性能测试指标 - **响应时间**:衡量系统从接收到请求到返回响应所需的时间。 - **并发用户数**:同一时间点内同时访问系统的用户数量。 - **吞吐量**:系统单位时间内能够...

    软件性能测试过程详解与案例剖析

    性能测试的应用领域包括了性能测试、负载测试、压力测试、配置测试、并发测试、可靠性测试、失效恢复测试等多种方法,这些方法各有侧重点,但都服务于软件性能的评估和优化。书中也对性能测试的应用领域进行了分析,...

    软件性能测试VS负载测试VS压力测试

    软件性能测试VS负载测试VS压力测试软件测试在面试测试人员的时候,这是一个很好的问题:你如何定义性能/负载/压力测试?在很多时候,人们都是将它们作为可互相替换的相同术语来使用,然而实际上他们之间的差异是比较...

    软件测试中的性能测试与负载测试技巧1.pptx

    ### 软件测试中的性能测试与负载测试技巧 #### 第一章:简介 ##### 1.1 什么是性能测试与负载测试? - **性能测试**:旨在评估系统在特定工作负载下的表现,如响应时间、吞吐量、资源利用率等。 - **负载测试**:...

    性能测试pdf电子书

    性能测试可以细分为负载测试、压力测试、稳定性测试等多种类型,其中负载测试用来确定系统在实际工作压力下的表现,压力测试用来评估系统在超过正常工作负荷时的极限和崩溃点,稳定性测试则关注系统长时间运行的稳定...

Global site tag (gtag.js) - Google Analytics