性能测试简介

性能测试概念

性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统响 应时间、TPS(Transaction Per Second)、吞吐量、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。
性能测试一般是指大数据量的测试。

性能测试一般包含3个方面:

  • 应用在客户端性能的测试
  • 应用在网络上性能的测试
  • 应用在服务器端性能的测试

性能测试目的:

  • 客户有明确要求,如:系统要求同时满足100用户登陆,平均每个用户登陆时间 不能超过5秒
  • 考察目前系统性能(容量测试),需要对系统做出分析,找出系统的压力点 - 找出系统性能瓶颈,需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试
  • 了解系统在长时间的压力下性能状况(强度测试)

性能测试环境:

  • 硬件环境:被测服务器硬件配置,用于加压客户端的机子配置,CPU 内存等
  • 软件环境:被测系统的架构,前端、中间件、服务器(这里指运行系统软件服 务器,如tomcat)、数据库、测试环境部署信息以及性能测试工具信息。
  • 网络环境:找出系统性能瓶颈可以在广域网环境进行,其它性能测试可以在局 域网进行,排除网络干扰
  • 备注:性能测试的环境要独立于功能测试环境,一般在没有其它干扰被测系统 的情况下,进行性能测试。

性能测试注意事项:
性能测试一般在功能测试稳定的前提下进行;
修改性能测试问题的时候容易造成功能错误。

性能测试流程

业务学习阶段:通过查看文档,手工操作系统来了解系统
需求分析:分析系统非功能需求,圈定性能测试的范围,了解系统性能指标 工作评估:工作量分解,评估工作量,计划资源投入(需要多少人力,多少工作 日来完成性能测试工作)
设计模型:圈定性能测试范围后,把业务模型映射成测试模型。
测试模型概念:比如一个支付系统需要与银行的系统要进行交互,由于银行不能 提供支持,这时开发人员会开发程序代替银行系统功能(这就是挡板程序, mock程序),保证此功能的性能测试能够开展,这个过程就是设计测试模型 比如我们要对论坛进行性能测试,根据需求了解到一般大家发帖或回帖前都会先 登录,那么在开发脚本时就要把登录和发帖、回帖场景绑定在一起进行测试;这 就是测试模型,通俗讲就是性能测试用例设计加性能测试实现方案,用例只关注 业务,模型还需关注如何实现,是否具有可操作性,可验证性等问题,最后还要 根据不同的测试目的组合成不同的测试场景。
编写性能测试计划:和业务功能测试计划类似,确定测试范围,性能测试工具, 性能测试场景设计,时间和相关人员等
脚本开发:录制或者编写性能测试脚本,开发测试挡板程序等
性能测试环境准备:环境包含服务器和负载机两部分。

测试数据准备:根据计划中的场景设计准备被测系统的主数据与业务数据,主数 据是保证业务能够运行畅通的基础,业务数据是运行业务过程中产生的数据。
测试执行:根据场景执行测试,监控整个测试过程,获取测试过程中产生的相关 性能数据
分析测试结果:把测试过程中产生的性能测试数据进行分析,判断是否存在性能问题
性能分析与调优:对性能测试过程中暴露出来的问题进行分析,找出原因,并于 相关开发人员(DBA、运维、开发等)一起解决该性能问题
性能测试报告:根据之前的测试过程,对测试结果进行报告,包含过程中发现的
问题,常用的性能指标测试值。
评审:对性能测试报告的内容进行评审,确认问题,评估上线风险。

性能测试主要提交成果:

  • 测试计划
  • 测试脚本
  • 测试程序
  • 测试总结报告

性能测试模式

理发店模式:借助该模式更好的理解性能测试的概念和理论,具体参考资料。
通过该模式,可以理解“最佳用户数”和“最大用户数”概念,还可以理解服务器 容量等等

浏览器与服务器交流的模式:借助该模式更好的理解B/S架构系统的浏览器与服 务器之间的数据传递,有助于理解性能测试

性能测试术语

负载:
模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖。

性能测试(Performance Testing):
模拟用户负载来测试系统在负载情况下,系统的响应时间、吞吐量等指标是 否满足性能要求。

负载测试(Load Testing):
在一定软硬件环境下,通过不断加大负载(不同虚拟用户量)来确定在满足 性能指标情况下能够承受的最大用户数。简单说,可以帮我们对系统进行定容 定量,找出系统性能的拐点,给予生产环境规划建议。这里的性能指标包括TPS (每秒事务数)、RT(事务平均响应时间)、CPU Using(CPU利用率)、Mem Using(内存使用情况)等软硬件指标。从操作层面来说,负载测试也是一种性 能测试手段,比如下面的配置测试就需要变换不同的负载来进行测试。

配置测试(Configuration Testing):
为了合理地调配资源,提高系统运行效率,通过测试手段来获取、验证、 调整配置信息的过程。通过这个过程我们可以收集到不同配置反应出来的不同 性能,从而为设备选择、设备配置提供参考。

压力、强度测试(Endurance Testing):
在一定软硬件环境下,通过高负载的手段来使服务器资源(强调服务器资源, 硬件资源)处于极限状态,测试系统在极限状态下长时间运行是否稳定,确定是 否稳定的指标包括TPS、RT、CPU Using、Mem Using等。

稳定性测试(Endurance Testing):
在一定软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。与上面的压力/强度测试区别在于负载并不强调是在极限状况下(很多测试人员会持保守观念,在测试时会验证极限状态下的稳定性),着重的是满足性能要求的情况下,系统的稳定性、比如响应时间是否稳定、TPS是否稳定。一般我们会在满足性能要求的负载情况下加大1.5到2倍的负载量进行测试。

并发:
分为两种:狭义的并发和广义的并发
狭义的并发是一种严格意义上的并发,即所有用户在同一时刻做同一件事 情或操作,这种操作一般针对同一类型的业务。
广义的并发:这种并发与狭义的并发的区别是尽管多个用户对系统发出了 请求或进行了操作,但是这些请求或操作可以是相同的,也可以是不同的。

并发用户数量:
错误观点:
关于并发用户数量,有两种常见的错误观点。一种错误观点是把并发 用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使 用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户 数量。
实际上,在线用户不一定会和其他用户发生并发,例如正在浏览网页 信息的用户,对服务器是没有任何影响的。但是,用户在线数量是统计并 发用户数量的主要依据之一。

正确观点:
实际上,在线用户不一定会和其他用户发生并发,例如正在浏览网页 信息的用户,对服务器是没有任何影响的。但是,用户在线数量是统计并 发用户数量的主要依据之一。
并发用户数量的统计方法目前还没有准确的公式,因为不同的系统会 有不同的并发特点。例如OA系统统计并发用户的经验公式为:使用系统的 用户数量*(5%~20%)。对于这个公式,没有必要拘泥于计算出的结果, 因为为了保证系统的扩展空间,测试时的并发用户数量就会稍稍大一些, 除非要测试系统能承受的最大并发用户数量。
举例说明:如果一个OA系统的期望用户为1000个,只要测试出系统能 支持200个并发用户就可以了。

请求响应时间:
请求响应时间是指从客户端发出请求到得到响应的整个过程的时间。 这个过程从客户端发出一个请求开始计时,到客户端接收到从服务器端返 回的响应结果计时结束。在某些工具中,请求响应时间通常会被称为 "TTLB",即"Time to last byte",意思是从发送一个请求开始,到客户端接 收到最后一个字节的响应为止所耗费的时间。请求响应时间的单位一般为 “秒”或“毫秒”。

事务响应时间:
事务可能由一系列请求组成,事物的响应时间主要针对用户而言,属 于宏观上的概念,是为了向用户说明业务响应时间而提出来的。例如:跨 行取款事务的响应时间就是由一系列的请求组成的。事物响应时间和业务 吞吐率都是直接衡量系统性能的参数。

吞吐量:
指在一次性能测试过程中网络上传输的数据量的总和。吞吐量/传输时 间,就是吞吐率。

吞吐率(Throughput):
通常用来指单位时间内网络上传输的数据量,也可以指单位时间内处 理的客户端请求数量,是衡量网络性能的重要指标。
但是从用户或业务角度来看,吞吐率也可以用“请求数/秒”或“页面数/秒”、 “业务数/小时或天”、“访问人数/天”、“页面访问量/天”来衡量。例如在银 行卡审批系统中,可以用“千件/每小时”来衡量系统的业务处理能力。
TPS(Transaction Per Second):
每秒钟系统能够处理的交易或事物的数量。它是衡量系统处理能力的 重要指标。TPS是LoadRunner中重要的性能参数指标。

点击率(Hit Per Second):
每秒钟用户向Web服务器提交的HTTP请求数。这个指标是Web应用特 有的一个指标:Web应用是“请求-响应”模式,用户发出一次申请,服务器 就要处理一次,所以“点击”是Web应用能够处理交易的最小单位。如果把 每次点击定义为一次交易,点击率和TPS就是一个概念。不难看出,点击 率越大,对服务器的压力也越大。点击率只是一个性能参考指标,重要的 是分析点击时产生的影响。
需要注意的是,这里的点击不是指鼠标的一次“单击”操作,而是在一次“单 击”操作中,客户端可能向服务器发出多个HTTP请求。

资源利用率:
资源利用率指的是对不同系统资源的使用程度,例如服务器的CPU利 用率、磁盘利用率等。资源利用率是分析系统性能指标而改善性能的主要 依据,因此,它是Web性能测试工作的重点。 资源利用率主要针对Web服务器、操作系统、数据库服务器、网络等,是 测试和分析瓶颈的主要参数。在性能测试中,要根据需求采集具体的资源 利用率参数来进行分析。

原文地址:https://www.cnblogs.com/TD1900/p/12050059.html