性能测试(四)应用领域

大概说说性能测试的五种应用领域吧,可能纯文字内容太多,没耐心的话,可以跳过不看。。。    ————参考书籍《软件性能测试过程详解与案例剖析》

概括来说,可以将性能测试的应用领域划分为下面五个不同领域:

·能力验证

·规划能力

·性能调优

·瓶颈发现

·性能基准比较

一、能力验证

能力验证是性能测试中最简单也是最常见的一个应用领域。一个典型的能力验证的问题会采取这样的描述方式:某系统能否在A条件下具有B能力?

能力验证领域的特点与性能测试的特点非常接近:

①要求在已确定的环境下运行

只有在一个确定的环境下运行,软件性能的验证才是有意义的;因为无法或很难根据系统在一个环境中的表现去推断其在另一个不同环境中的表现,因此这种应用领域内的测试

必须要求测试环境(如硬件设备、软件环境、网络条件、基础数据等)已确定。

②根据典型业务场景设计测试方案和用例

能力验证需要了解被测系统的典型业务场景,并根据典型场景设计测试方案和用例;一个典型场景包括操作步骤和并发用户量条件,设计用例时,需要确定响应的性能指标。

可靠性测试的内容也可以归入到该应用领域。因为从用户角度出发,对软件可靠性的保证也是承诺的软件性能的一部分。

在能力验证领域,一般采用的测试方法有:性能测试、可靠性测试、压力测试和失效恢复性测试。

二、规划能力

规划能力领域通常关心的是:如何使系统具有我们要求的性能能力或者某种可能发生的条件下,系统具有如何的性能能力?

它通常会被描述为:某系统能否支持未来一段时间内的用户增长或者应该如何调整,使系统能够满足增长的用户数的需求?

能力规划领域具有以下特点:

①它是一种探索性测试

规划能力领域侧重点是规划。即该领域不依赖预先设定的用于比较的目标,而要求在测试过程中了解系统本身的能力;这种测试与能力验证领域内的测试最大区别在于其探索性。

②它可被用于了解系统性能以及获得扩展性能的方法

规划能力领域的问题是期望了解系统现在的能力,获得扩展系统性能以应对将来的业务增长的方法。该领域在测试过程中,除了要通过负载测试等方法获知系统性能表现外,还需要通过

诸如更换设备、调整参数等方法获知系统性能可扩展的元素。

在规划能力领域,一般采用的测试方法有:负载测试、配置测试和压力测试。

三、性能调优

性能调优领域主要对应于系统性能进行调优。一般来说,性能调优和其他性能测试应用领域交杂在一起的;性能调优可调整的对象众多,而且在系统应用的各个阶段都可以进行调优。

对于已部署在实际生产环境中的系统应用,对其进行性能调优可能会首先关注应用系统部署环境的调整,例如:对服务器的调整、对数据库参数以及对应用服务器的参数调整等;

对正在开发中的应用来说,性能调优会更多关注应用逻辑的实现方法、应用中涉及的算法、数据库访问层的设计等因素;此时并不要求是测试还是生产环境,只要整个调优过程中具有

一个可用于比较的测试基准环境即可。

一个标准的性能调优过程大概如下:

1、确定基准环境,基准负载和基准性能指标

基准负载是指一种可被用来衡量和比较性能调优测试结果的标准(每次执行性能测试时环境要严格保持一致)的运行环境、测试操作脚本和可被用来衡量调优效果的性能指标。

2、调整系统运行环境和实现方法,执行测试

这是性能调优过程中的核心步骤,目的是通过调整,提高应用系统的性能表现;主要包括如下三个方面:

①硬件环境的调整

主要对系统运行的硬件环境进行调整,包括改变系统运行的服务器、主机设备环境(改用具有更高性能的机器,或调整某些服务器的物理内存总量,CPU数量等)、调整网络环境(更换

更快速的网络设备,或采用更高宽带的组网技术)等;

②系统设置的调整

主要对系统运行的基础平台设置进行调整,比如:根据应用需要调整Unix系统的核心参数,调整数据库的内存池大小,调整应用服务器使用的内存大小或采用更高版本的JVM环境等;

③应用级别的调整

主要是对应用本身的调整,包括选用新的架构、采用新的数据访问方式或修改业务逻辑的实现方式等;

PS:实际性能调优过程中,具体的调整视具体情况而定;而且不要一次调整过多的参数或应用实现方法,否则很难判断具体哪个调整对性能产生了影响(一般3~5处最好)。

3、记录测试结果,进行分析

该步骤和上一步骤构成了一个性能调优循环,循环的出口是“达到预期的性能调优目标”。

性能调优主要使用的测试方法有:配置测试、负载测试、压力测试和失效恢复性测试。

四、瓶颈发现

瓶颈发现应用领域的主要目的是通过性能测试手段来发现系统中存在的缺陷,瓶颈。

经常在工作中遇到这样的问题:应用在测试环境下运行正常,部署到生产用户环境,就会出现莫名其妙的错误;这些情况并不完全是并发或者性能问题导致,大多数情况下,都是由于

并发时的线程锁、资源竞争或内存问题引起的。

瓶颈发现应用领域一般作为系统测试阶段的一种补充手段;在测试过程中发现并发时的应用问题,或作为系统维护阶段的问题定位手段,对系统运行过程中出现的问题进行重现和定位。

该应用领域的主要目的是发现缺陷、瓶颈,并无可参照的性能指标或需要达到的性能目标,因此主要采用并发测试的方法。

五、性能基准比较

性能基准比较通常用于敏捷开发过程中。

敏捷开发:大约兴起于2000年,与传统重量级软件开发方式相比,敏捷开发采纳轻量级的软件开发过程,更注重“产出可用的软件”,“沟通胜于文档”等概念,使用“拥抱变化”的态度来

面对开发中不断的需求变更。

敏捷开发将软件开发过程划分为多个短时间周期迭代,每个迭代定义了本次迭代需要完成的目标,一个迭代中保持需求的不变以“交付了迭代目标的可工作软件”作为每个迭代完成的标志。

由于敏捷开发采用“递增”的开发模式,很难再每个迭代周期内定义明确的性能需求。因此,性能基准比较,就是在不设定目标的情况下,通过每次迭代的比较来得到性能表现的变化,根据

这些变化决定迭代是否达到了预期的目标。

在实际操作中,可以将性能测试形成固定的脚本,并在固定环境上对模块执行相应的性能测试,测试结果通过工具直接写入数据库并通过图形展现工具将其展现成折线图,其可以直观的反应

模块的每个迭代中性能表现的变化,甚至可以作为验收条件的一部分。

另外,在敏捷开发中,设定性能基准比较的不仅仅是模块,还可以在单元测试中为给定的函数设置性能基准比较。

下表将性能测试的方法和应用领域做了关联,实际执行中可根据需要选用合适的方法:

PS:颜色越深,代表越重要。。。

总结:性能测试应用领域的划分主要按照性能测试的目的和目标进行划分,不同应用领域的性能测试采用不同的方法;当然,实际的性能测试中,情况往往比这个更复杂,这种情况下,

应该按照具体情况设计测试实施计划,分解拆分,为其设计规划不同的测试方法。

时间: 2025-01-03 09:43:55

性能测试(四)应用领域的相关文章

性能测试四十五:性能测试策略

1.项目具体需求,及业务场景:关注真实用户会是怎样的一个业务场景,确定用户的用户习惯. 2.指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行时长,资源利用率,测哪些交易,哪些接口,测试哪些场景. 3.环境:生产环境服务器数量,测试环境服务器数量,按照资源配比得出测试指标. 4.协议:系统用什么协议进行通讯. 5.压力机数量:如果并发用户数太多,需要把压力发到不同的压力机,不然可能会存在压力机瓶颈问题,导致tps和响应时间抖动.

性能测试四十:Mysql存储过程造数据

性能测试是基于大量数据的,而进行性能测试之前肯定没那么多数据,所以就要自己准备数据 数据构造方法: 1.业务接口 -- 适合数据表关系复杂 -- 优点:数据完整性比较好2.存储过程 -- 适合表数量少,简单 -- 优点:速度最快3.脚本导入 -- 适合数据逻辑复杂 -- 自由度比较高4.数据量级 --测试数据 --基础数据 启动并用工具连接mysql,这里的新建函数,所建的函数,即为存储过程 也可以在命令行mysql -u root -p 登录后输入存储过程的sql运行,但是这就是纯命令行了 执

性能测试四十一:慢sql和执行计划一

wenjain MYSQL 慢查询使用方法MYSQL慢查询介绍分析MySQL语句查询性能的问题时候,可以在MySQL记录中查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为"慢查询".MYSQL自带的慢查询分析工具mysqldumpslow可对慢查询日志进行分析:主要功能是, 统计sql的执行信息,其中包括 : 出现次数(Count), 执行最长时间(Time), 累计总耗费时间(Time), 等待锁的时间(Lock), 发送给客户端的行总数(Rows), 扫描的行总数(R

性能测试四十四:性能优化思路

性能瓶颈定位整体思路,从前到后,从表象到内部 1,首先排除压力机的性能情况,包括cpu.内存 2,应用服务器的硬件指标,cpu,内存,网络IO(ethtool eth0),磁盘IO,如果发现某台机器的这四项中的任何一项到达瓶颈,那么这台机器在这一方面就到达瓶颈了 3,其他服务器,比如数据库服务器,依赖的其他应用服务器 4,看应用服务器的日志,tomcat下看的是catalina.out,用tail -200 catalina.out ,看cause by:xxx TimeOut 5,tps比较低

性能测试四十八:Jenkins+Ant+Jmeter系统部署

工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码Git 2.Jenkins拉取代码,自动化编译,打包 --  插件 3.Jenkins自动上传war包  --  插件/sh.bat脚本 4.Jenkins自动重启tomcat  --  sh脚本 5.Jenkins自动执行自动化脚本  -- sh脚本 6.Jenkins自动化发送测试报告  -- 

性能测试四十九:ngrinder压测平台

直接上ngrinder官网下载 ngrinder工作原理:这里的controller就是ngrinder平台 部署(以windows为例): 把下载下来的ngrinder-controller.war重命名为ngrinder.war放到tomcat下面,启动tomcat 启动完浏览器访问:http://localhost:8080/ngrinder 默认用户名admin,密码admin,选择中文 登录成功后下载agent和monitor 解压并启动agent 在机器足够的情况下,应该把agent

性能测试四十一:sql案例之慢sql配置、执行计划和索引

MYSQL 慢查询使用方法MYSQL慢查询介绍分析MySQL语句查询性能的问题时候,可以在MySQL记录中查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”.MYSQL自带的慢查询分析工具mysqldumpslow可对慢查询日志进行分析:主要功能是, 统计sql的执行信息,其中包括 : 出现次数(Count),  执行最长时间(Time),  累计总耗费时间(Time),  等待锁的时间(Lock),  发送给客户端的行总数(Rows),  扫描的行总数(Rows), 用户

性能测试四:jmeter进阶之逻辑控制器

常用的逻辑控制器 1,循环控制器:可以设置该控制器内的sampler执行的次数,循环次数与线程的循环次数各自独立 2,if控制器:根据判断条件决定是否执行该控制器内的请求,如果是字符串比较条件,参数和字符串都需要加引号,如"{param}" == "test" 3,随机控制器:随机执行该控制器内的一个请求 4,随机顺序控制器:执行该控制器内的所有请求,顺序随机 5,仅一次控制器:该控制器内的请求只执行一次,无论线程循环多少次 6,switch控制器,设置控制器上的v

性能测试四十二:sql案例之联合索引最左前缀

联合索引:一个索引同时作用于多个字段 联合索引的最左前缀: A.B.C3个字段--联合索引 这个时候,可以使用的查询条件有:A.A+B.A+C.A+B+C,唯独不能使用B+C,即最左侧那个字段必须匹配到 联合索引最左前缀如果匹配不到,会造成索引失效,对性能影响非常大,所以联合索引的顺序很重要 看一下案例 Unique: 这种情况,单个cardNO.course.sex均允许重复,但是当这3个字段组到一起以后,就不允许任何两个重复,这里为了设计特别场景,把sex移到索引字段的最前面 接口:http

性能测试四十三:数据库监控的指标

mysql结构简介 1,慢查询 查看某个变量的值,一般是看配置:show variables like '%slow%'; 查看当前某个参数的状态值,一般是动态的,而且是在命令行下查看:show global status like '%long_query%'; 使用配置查看:具体配置在上上篇里面讲了,使用命令:mysqldumpslow -s at 10 slow.log 2,连接数 查看当前mysql里面配置的连接数:show variables like '%connections%';