性能测试理论知识

      随着软件行业的快速发展,现代的软件系统越来越复杂,功能越来越多,测试人员除了需要保证基本的功能测试质量,性能也随越来越受到人们的关注。那什么是性能呢?有哪些衡量指标呢?本文会做简单阐述。

目录

一、软件性能的定义

二、性能测试类型

三、性能测试基本概念

四、性能测试需要具备的知识


正文

一、 什么是软件性能

      软件性能定义:软件性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。

  由定义可知,性能关注的是软件的非功能特性,所以一般来说性能测试是在功能测试完成之后介入的。另外,定义中的及时性是性能的一种指标,可以通过时间或其它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。 

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

二、性能测试类型

       性能测试包括八大类,分别有负载测试、压力测试、并发测试、稳定性测试、配置测试 、基准测试、容量测试、失效恢复测试。

  1. 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。(这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。)
  2. 压力测试:是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。(这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。)
  3. 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。(这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。)
  4. 配置测试:配置测试方法通过对被测系统的软/硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。(这种测试关注点是“微调”,通过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。)
  5. 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。(这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。)
  6. 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考。
  7. 容量测试:通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行。

  8. 失效恢复测试:是测试一个系统从灾难或出错中能否很好地恢复的过程,通常需要关注恢复所需的时间以及恢复的程度。

三、性能测试基本概念

一、响应时间

       响应时间是系统对请求作出的响应时间。典型web应用的响应时间可以进一步被分解,分解图如下:

       页面响应时间=网络传输时间(N1+N2+N3+N4)+应用延迟时间(A1+A2+A3)。其中应用延迟时间可分解为:数据库延迟时间(A2),应用服务器延迟时间(A1+A3)。

二、并发用户数

      并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。并发用户数和注册用户数、在线用户数的概念不同,并发用户数一定会对服务器产生压力的,而在线用户数只是 ”挂” 在系统上,

对服务器不产生压力,注册用户数一般指的是数据库中存在的用户数。

三、吞吐量QPS(TPS)

     吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。

     F=N*R/T ,其中,N:并发虚拟用户数;R:每个虚拟用户发出的请求数量;T:性能测试所用的时间。一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

四、思考时间

     思考时间,也被称为“休眠时间”。从业务的角度来说,这个时间指的是用户在进行操作时,每个请求之间的间隔时间。

五、错误率

     监控错误率是一项很关键的应用程序性能指标。有三种不同的方式来跟踪应用程序错误率:

  • HTTP错误率:以错误结束的Web请求数。
  • 记录的异常:应用程序未处理和记录的错误的数量。
  • 抛出的异常:抛出的所有异常数量。

四、做好性能测试需要掌握的知识

  • 掌握一门编程语言
  • 掌握计算机原理和操作系统知识
  • 良好的网络基础
  • 掌握数据库知识
  • 中间件(apache,tomcat)
  • 常用抓包工具
  • 性能测试工具

 

posted @ 2019-01-07 15:14  炒酷酷  阅读(372)  评论(0编辑  收藏  举报