转发自博客园贺满:https://www.cnblogs.com/puresoul/p/5456855.html ,有删减。
随着软件行业的快速发展,现代的软件系统越来越复杂,功能越来越多,测试人员除了需要保证基本的功能测试质量,性能也随越来越受到人们的关注。但是一提到性能测试,很多人就直接连想到Loadrunner。认为LR就等于性能测试,其实这是不对的。LR只是性能测试的一个工具,但性能测试不仅仅是LR。本文会从以下几个方面介绍基础的性能测试理论,尽量理论结合实践,让性能测试学习不在是工具的学习。

目录:
一、什么是软件性能
二、不同群体眼中的性能
三、性能测试类型
四、性能测试应用场景
五、性能测试基本概念
六、理发店模型和曲线拐点模型
七、做好性能测试需要掌握的知识

一、 什么是软件性能

定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。
由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完成之后。另外,由定义中的及时性可知性能也是一种指标,可以用时间或其它指标来衡量,通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。 
性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

二、不同群体眼中的性能

不同的人由于人生观、世界观、价值观以及教育背景、知识体系、人生阅历的不同,对于同一事物或问题的看法可能不同。对于软件性能也是如此,不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。

  • 用户眼中的性能

  • 开发眼中的性能

  • 系统管理员眼中的性能

  • 测试眼中的性能是什么样的呢?

测试人员通常是做为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面:
1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器利用率,架构设计是否合理?代码是否合理等言方方面面。

三、性能测试类型

基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据时是否存在死锁或者其他性能问题,

四、性能测试应用场景(领域) 

1、性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较,下表简单介绍和对比了这几个场景的各自用途和特点:

  主要用途 典型场景 特点

常用性能

测试方法

能力验证 关注在给定的软硬件条件下,系统能否具有预期的能力表现 在要求平均响应时间小于2秒的前提下,如何判断系统是否能够支持50万用户/天的访问量? a)要求在已确定的环境下运行
b)需要根据典型场景设计测试方案和用例,包括操作序列和并发用户量,需要明确的性能目标。
a)负载测试
b)压力测试
c)稳定性能测试
规划能力 关注如何使系统具有我们要求的性能能力
 
某某系统计划在一年内获客量在到xxx万,系统到时候是否能支持这么多用户量?如果不能需要如何调整系统的配置? a) 它是一种探索性的测试
b) 常用于了解系统性能和获得扩展性能的方法
a) 负载测试
b) 压力测试
c) 配置测试
性能调优 主要用于对系统性能进行调优 某某系统上线运行一段时间后响应速度越来越慢,此时应该如何办? 每次只改变一个配置,切忌无 休止的调优 a) 并发测试
b) 压力测试
c) 配置测试
缺陷发现 发现缺陷或问题重现、定位手段 某些缺陷只有在高负载的情况下才能暴露出来,如线程锁、资源竞争或内存泄露。 做为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位 a) 并发测试
b) 压力测试
 
性能基准比较    常用于敏捷开发过程中,敏捷开发流程的特点是小步快走,快速试错,迭代周期短,需求变化频繁。很难定义完善的性能测试目标,也没有时间在每个迭代开展详细的性能测试,可以通过建立性能基线,通过比较每次迭代中的性能表现变化,判断迭代是否达到了目标。

2、通常在某个性能场景(领域)中需要联合使用多种性能测试方法一起进行性能测试,下表为性能测试应用领域与测试方法关联:

能力验证

规划能力

性能调优

缺陷发现

性能基准比较

基准测试

负载测试

压力测试

并发测试

稳定性测试

五、性能测试基本概念

1、响应时间
a)定义:从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间
b) 关键路径:下图为一次http请求经过的路径,请求会经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据通过网络返回给客户端。


c) 计算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(网络时间 + 应用程序处理时间)
d) 响应时间-负载对应关系:


图中拐点说明:
      1、响应时间突然增加
      2、意味着系统的一种或多种资源利用达到的极限
      3、通常可以利用拐点来进行性能测试分析与定位
2、吞吐量
a)定义:单位时间内系统处理的客户端请求的数量
b)计算单位:一般使用请求数/秒做为吞吐量的单位,出可以使用 页面数/秒表表示。
另外,从业务角度来说也可以使用 访问人数 /天 或 页面访问量/天 做为单位。
c)计算方法:Throughput = (number of requests) / (total time).
d)吞吐量-负载对应关系:


图中拐点说明:
      1、吞吐量逐渐达到饱和
      2、意味着系统的一种或多种资源利用达到的极限
      3、通常可以利用拐点来进行性能测试分析与定位 
3、并发数:
并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
系统用户数:系统注册的总用户数据
三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数
4、资源利用率
a) 定义:指的是对不同系统资源的使用程度,通常以占用最大值的百分比来衡量
b) 通常需要关注的服务器资源如下:
    1、CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制
    2、内存:大脑中的记忆块区,将眼睛,皮肤等收集到的信息记录起来的地方,以供cpu进行判断,但是是临时的,访问速度快,如果关机或断电这里的数据会消失。
    3、磁盘IO:大脑中的记忆区块,将重要的数据保存起来(永久保存,关机或断电不会丢失,速度慢),以便将来再次使用这些数据。
    4、网络:
c)资源利用-负载对应关系:


图中拐点说明:
     1、服务器某资源使用逐渐达到饱和
     2、通常可以利用拐点来进行性能测试分析与定位
5、其它常用概念:
a) TPS:Transactions Per Second,每秒事务数
b) 思考时间:用户每个操作后的暂停时间,或者叫操作之间的间隔时间,此时间内是不对服务器产生压力的
c) 点击数:每秒钟用户向WEB服务器提交的HTTP请求数。这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
d)PV:访问一个URL,产生一个PV(Page View,页面访问量),每日每个网站的总PV量是形容一个 网站规模的重要指标。
     UV:作为一个独立的用户,访问站点的所有页面均算作一个UV(Unique Visitor,用户访问)

六、理发店模型和曲线拐点模型

上面介绍了很多性能测试中的基本概念,比较抽象,可以通过性能测试理发店模型或地铁进站模型来帮忙我们更好的理解这些概念。这里不做详细介绍了,需要的可直接查看原文。

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

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

【性能测试】性能测试的基础理论相关推荐

  1. 性能测试 性能测试实战(六)Jmeter + prometheus-plugin + Prometheus Jmeter性能测试环境搭建 普罗米修斯插件 性能监控 性能数据可视化平台 性能测试平台搭建

    文章目录 一.前言 二.Jmeter 性能测试持续可视化环境搭建 1.Jmeter

  2. 性能测试 性能测试实战(八)Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

    文章目录 一.前言 二.Jmeter分布式性能测试平台 介绍 1.Jmter分布式性能测试平台 简介 2.Jmeter分布式性能测试平台 优秀案例1 3.Jmeter分布式性能测试平台 优秀案例2 4 ...

  3. 性能测试——性能测试中的专业术语

    性能测试中的专业术语 1.并发数:LoadRunner中的虚拟用户数指的就是并发数.比如说一个网站能抗多大的并发啊?也就是问你这个网站最多可以模拟多少个虚拟用户数在上面跑啊! 2.系统用户数:简单的说 ...

  4. 性能测试—性能测试方案设计思路总结

    一.需求分析 1.测试目的 为什么测?目的在于测试系统相关性能能否满足业务需求.通常分以下两种情况: 1)新项目上线 2)老项目优化 如果是老项目优化,可考虑是否存有历史测试方案,如果有可以参考,或许 ...

  5. 服务器交换机等系统性能测试,性能测试方案(示例)

    前面所说的测试分析等准备工作实际上最终目的是制定测试方案,测试方案一般包括: 项目的简要说明.项目系统结构.项目的业务结构.以及项目的性能需求.测试环境数据以及测试策略方法.测试案例.测试人员进度安排 ...

  6. 性能测试~性能测试方案

    1. 背景 1.1. 项目背景 明确该性能测试的项目背景 1.2. 性能目标 性能目标都会影响项目的整个过程,对目标的把握将决定一个性能项目的走向 测试测目标必须明确 取生产峰值流量作为基线(目标一般 ...

  7. java移动端接口测试_移动端质量体系之性能测试(上)

    目前应用越来越多,竞争也越来越激烈,那用户体验就变得越来越重要.曾经一份报告这么说: 71%用户希望在手机上打开网页能跟电脑一样快 5秒钟被认为是用户能忍受的最长响应时间,如果响应时间超过5秒,50% ...

  8. 性能测试、负载测试以及压力测试

    为什么80%的码农都做不了架构师?>>> 根据产品的时间特性和资源特性,效率测试可以包括不同的测试类型,例如:性能测试.负载测试和压力测试.本文则主要介绍这三种测试,希望对你有帮助, ...

  9. 性能测试vs负载测试vs压力测试

    下面我们主要介绍性能测试.负载测试和压力测试. 效率作为ISO 9126内部和外部质量的重要质量属性之一,其含义是在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力.资源可能包括其他软 ...

  10. 性能测试 vs 负载测试 vs 压力测试

    在做一些软件测试工作时,常常会被提及性能测试.负载测试.压力测试,这也是在软件测试方面最容易混淆的三个概念.之前和一个测试大牛聊天,他和我说常常面试一些测试人员会问一些这样的问题,大多人认为负载测试等 ...

最新文章

  1. 使用HDFS API实现hadoop HDFS文件系统的基本操作
  2. 这 2 种程序员的惊人差距,实在不忍直视...
  3. SQUAD的rnet复现踩坑记
  4. 美观又实用,10 款强大的开源 Javascript 图表库
  5. android手机电话铃声设置,安卓手机铃声怎么设置
  6. 百度CDN与360CDN简单评测,果断选择百度CDN
  7. 报表工具之JasperReports+iReport(1)
  8. OpenShift 4 - 定制 RHCOS Linux的Kernal参数
  9. 知道路程时间求加速度_人教版高中物理必修一重点知识点—加速度分析与讲解...
  10. java gui 数独_数独-GUI开发
  11. roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
  12. 视频教程-C语言编程入门100题(实战编程)-C/C++
  13. ios 画带有箭头的线_iOS 箭头类型视图的几点心得
  14. 显卡更新后重启计算机就没了,电脑重启后显卡出现问题怎么办
  15. css translate 坐标,CSS3 位移转换 translate3d()translatez()应用实例
  16. 简单的省市区级联SQL脚本
  17. [技术讨论]从ERP免费开始到做人做事的讨论
  18. 索尼投屏无法显示服务器,支持索尼Xperia 1投屏到电脑的方法推荐
  19. 将当前容器保存为本地镜像
  20. 免疫沉淀常见问题解答 | MedChemExpress

热门文章

  1. 寄生虫php版,-PHP版SEO最新教材版排名DeDeCms寄生虫V90繁殖
  2. exls导入数据库 php_PHP读取excel文件并导入数据库
  3. 分布式事务的解决思路与方案
  4. 如何检测服务器运行正常运行,一种检测服务器运行状态的方法、装置和系统专利_专利查询 - 天眼查...
  5. php实时上传多张图片,PHP实现多张图片上传预览功能
  6. 直接修改html文本页面没变化,VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析...
  7. (kruskal)还是畅通工程
  8. sed mysql配置文件_shell解析my.cnf配置文件
  9. 《springcloud超级入门》Spring Cloud开发环境的准备和Lombok安装步骤《四》
  10. jq 修改swal的标题_js-jquery-SweetAlert2【一】使用