性能测试系列学习 day1

性能测试的最终目标是为了最大限度的满足用户的需求,我们通常为了达到以下目标而进行性能测试:

(1)评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策;

(2)寻找系统瓶颈,进行系统调优;

(3)检测软件中的问题;

(4)验证稳定性、可靠性;

在讲述性能测试类型前,先简单分析性能测试的压力模型。

如下图所示,随着单位时间流量的不断增长,被测系统的压力不断增大,服务器资源会不断被消耗,TPS值会因为这些因素而发生变化,而且符合通常情况下的规律

说明:
a点:性能期望值
b点:高于期望,系统资源处于临界点
c点:高于期望,性能处于拐点
d点:超过负载,资源不够用,系统处于崩溃
通过如上模型图中的情况,我们大致可以将当前性能测试分成如下4类:性能测试、负载测试、压力测试、稳定性测试,具体的特性及描述,请参考下表:


测试类型


简述


测试目的和特点


关注点及产出


性能测试


性能测试是指通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。


目的:验证系统是否有其宣称具有的能力。

特点:对系统性能已经有了解的前提,对需求有明确的目标,并在已经确定的环境下进行的。


关注的是系统性能是否和具体的性能需求相一致,而当系统性能超过性能需求的时候,系统的表现并不是测试人员关心的重点。


负载测试


是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等


目的: 找到系统处理能力的极限。了解系统的性能容量,或是配合性能调优来使用。


1.得出线下系统最大TPS。

2.得出线下系统最大TPS时系统资源利用率。

3.得出线下系统极限并发数。


压力测试


压力测试是评估系统处于或超过预期负载时系统的运行情况。压力测试的关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。


目的:检查系统处于大压力性能下时,应用的表现。

特点:一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。


关注点:发现功能测试不能发现的非功能性缺陷。

产出:

1.得出线下系统崩溃点的TPS。

2.得出线下系统崩溃时资源使用率

3.得出线下系统极限并发数


稳定性测试


在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。


目的:主要目的是验证是否支持长期稳定的运行。


关注系统稳定性。

得出系统稳定状态下的资源利用、连接池、TPS、响应时间、DB健康情况等数据。

性能测试从实际执行层面来看,测试的过程一般分为这么几个阶段,见图:

1.性能需求分析

性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清楚,后面的性能测试工具以及执行就无从谈起了。

在这一阶段,性能测试人员需要与PM、DEV及项目相关的人员进行沟通,同时收集各种项目资料,对系统进行分析,确认测试的目标。并将其转化为可衡量的具体性能指标。

测试需求分析阶段的主要任务是分析被测系统及其性能需求,建立性能测试数据模型,分析性能需求,确定合理性能目标,并进行评审;

2.性能测试准备

主要包括:设计场景,根据场景编写程序、编写脚本、准备测试环境,构造测试数据,环境预调优等;

针对系统的特点设计出合理的测试场景。为了让测试结果更加准确,这里需要很细致的工作。如建立用户模型,只有知道真实的用户是如何对系统产生压力,才可以设计出有代表性的压力测试场景。这就涉及到很多信息,如用户群的分布、各类型用户用到的功能、用户的使用习惯、工作时间段、系统各模块压力分布等等。只有从多方面不断的积累这种数据,才会让压力场景更有意义。最后将设计场景转换成具体的用例。

测试数据的设计也是一个重点且容易出问题的地方。生成测试数据量达到未来预期数量只是最基础的一步,更需要考虑的是数据的分布是否合理,需要仔细的确认程序中使用到的各种查询条件,这些重点列的数值要尽可能的模拟真实的数据分布,否则测试的结果可能是无效的。

预调优指根据系统的特点和团队的经验,提前对系统的各个方面做一些优化调整,避免测试执行过程中的无谓返工。比如一个高并发的系统,10000人在线,连接池和线程池的配置还用默认的,显然是会测出问题的。

3.执行性能测试

执行阶段工作主要包含两个方面的内容:一是执行测试用例模型,包括执行脚本和场景;其次测试过程监控,包括测试结果、记录性能指标和性能计数器的值

4.结果分析与性能调优

发现问题或者性能指标达不到预期,及时的分析定位,处理后重复测试过程。性能问题通常是相互关联相互影响的,表面上看到的现象很可能不是根本问题,而是另一处出现问题后引起的反应。这就要求监控收集数据时要全面,从多方面多个角度去判断定位。调优的过程其实也是一种平衡的过程,在系统的多个方面达到一个平衡即可。

5.性能报告与总结

编写性能测试报告,阐明性能测试目标、性能结果、测试环境、数据构造规则、遇到的问题和解决办法等。并对此次性能测试经验进行总结与沉淀。具体性能测试报告的编写可以参考《性能测试报告模板》。

上面所有内容中,如果排除技术上的问题,性能测试中最难做好的,就是用户模型的分析。它直接决定了压力测试场景是否能够有效的模拟真实世界压力,而正是这种对真实压力的模拟,才使性能测试有了更大的意义。可以说,性能测试做到一定程度,差距就体现在了模型建立上。

  至于性能问题的分析、定位或者调优,很大程度是一种技术问题,需要多方面的专业知识。数据库、操作系统、网络、开发都是一个合格的性能测试人员需要拥有的技能,只有这样,才能从多角度全方位的去考虑分析问题。

时间: 2024-10-27 08:36:50

性能测试系列学习 day1的相关文章

app性能测试【通过loadrunner录制】

随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,对于大型的手机APP测试不仅要关注它的功能性.易用性还要关注它的性能,最近发现LoadRunner12可以对手机APP做性能测试,但由于LoadRunner12还没有破解版最多只有50个并发用户,所以我用LoadRunner12录制手机APP的脚本后放到LoadRunner8.0里进行压测,LoadRunner8.0可并发10000个用户. 1.下载CCProxy代理服务器,安装运行该软件用来检测本机

RC ORC Parquet 格式比较和性能测试

RC ORC Parquet 格式比较和性能测试 作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 为什么要比较这三者 为什么要比较,起因是为了提高Hadoop集群的存储和计算效率,尤其是离线Hive作业的效率,为什么比较的是这三者,是因为三者是目前Hive离线作业中正在大规模使用或可能大规模使用的三种主流的相对成熟的文件格式 对于ORC性能的评测,Hortonworks发过一

Android性能测试

测试应用的启动时间 adb shell am start -W packagename/activity,eg:adb shell am start -W com.tencent.mm/.ui.LauncherUI,显示的结果中,thisTime和totalTime的含义分别为: thisTime: just current activity launched time totalTime:the activity you started may be on the bottom of acti

性能测试指标

性能测试指标 通用指标(指Web应用服务器.数据库服务器必需测试项) Web服务器指标 数据库服务器性能指标 系统的瓶颈定义 稳定系统的资源状态 通俗理解: ·日访问量 ·常用页面最大并发数 ·同时在线人数 ·访问相应时间 案例:最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案: 一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略) 一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本) 一种则需要测试服务器能否接受

Android内存和Cpu性能测试

Android内存限制java虚拟机有内存使用上限的限制 adb shell进入手机,这此参数被纪录在/system/build.prop中,如果想直接查看可以使用adb shell getprop 单个应用程序最大内存限制,超过这个值会产生OOMdalvik.vm.heapgrowthlimit 应用启动后分配的初始内存dalvik.vm.heapstartsize 单个java虚拟机最大的内存限制,超过这个值会产生OOMdalvik.vm.heapsize 小米2S的一些内存限制 #查看单个

学习Python的day1

自己以前从来没有写博客的想法,但是学Python,里面的老师也说了,写博客可以加深自己的记忆,也能回顾内容.还能给别人参考.挺值的.2017-09-16 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Py

16、编译安装bind 9.10.6及queryperf性能测试 学习笔记

1.安装开发环境 [[email protected] ~]# yum -y groupinstall "Server Platform Development" "Development tools" 2.编译安装bind [[email protected] ~]# tar xf bind-9.10.6.tar.gz [[email protected] ~]# cd bind-9.10.6 [[email protected] bind-9.10.6]# ./

孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!

最近我们试图从Dubbo迁移到Spring Cloud.为此对二者分别进行了性能测试.为了得出数据量不同的情况下的二者的性能表现,我们分别准备了一个25个属性pojo对象和一个50个属性的pojo对象,通过这样的方式我们也可以间接地了解二者在序列化方面的水平. 以下是测试结果: 25个属性,10W次: 50个属性,10W次: 分析:         由于Spring Cloud与Dubbo天生使用的协议层面不一样,前者是HTTP,后者是TCP(使用的是Netty NIO框架,序列化使用的阿里定制

利用apache ab命令完成性能测试

ab是什么 ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求. ab的用法 ab 的用法是:ab [options] [http://]hostname[:port]/path 例如: ab -n 1000 -c 200 http://xqtesting.blog.51cto.com/ 上例表示总共访问小强的博客这个脚本1000次,200并发同时执行. ab -n 1000 -