如何做压力测试

2024-05-12 19:02

1. 如何做压力测试

一个压力测试的流程:
1、明确测试目标
2、制定测试计划
3、实施测试,收集参数
4、分析测试结果
5、给出优化方案
一
、明确测试目标:如果是客户的需求,那需要向客户确认,有清楚的性能指标参数,测试时就是保证系统达到该指标并能良好运转,即压力测试。如果是自己的系统需要有一个评估,那就需要完整的得到该系统的几个临界点,拿到完整的性能曲线,从而来分析部署情况,即为性能测试。不管是哪个,知道了需求,才能制定计划。
性能测试的目标是发现重大的系统瓶颈。你可以想象一个系统由一系列的瓶颈组成;发现并改善一个瓶颈往往会在其他地方产生一个新的瓶颈。例如,我曾为一运行微软Windows
CE的器件部门工作。我们发现的第一大性能问题体现在某一具体硬件环境下的内存管理中。我们把问题分离出来,改善了内存分配的效率。尔后再次运行我们的测试,又找到了一个新的瓶颈,这次体现在网络吞吐量上(throughput)。解决了这个问题后,我们接着又为下一个瓶颈改善而工作,然后再下一个,直到整个系统都达到了性能目标。要记住的是:关键在于要尽早订立性能目标,否则你可能不知道什么时候该停止性能测试。
二、制定测试计划:确定使用什么工具,着重哪些参数,设置线程数,方法执行次数,执行时间,是否多个接口同时进行测试等等。
三、实施测试,收集参数:选一个施压工具,来向部署好的服务发起高并发请求,同时关注和收集性能参数。这个是我们花费时间最多的地方。通常该阶段需要反复执行,来得到想要的数据。通常来说,我们可以使用JMeter
LR
AB
自己写多线程等各种方式,之后介绍一下JMeter。
四、分析测试结果:即根据上一节的参数介绍来进行参数分析。
五、给出优化方案:如果是代码逻辑耗费cpu,就优化算法;如果是redis等数据库耗时,就增加节点,减少读取,读写分离,使用内存等;如果是外在条件限制,则与外部们沟通问题,共同优化等等。

如何做压力测试

2. 如何执行压力测试

 Jmeter是一个性能测试工具,同loadrunner类似,他功能较多,我们常用的功能是用jmeter模拟多浏览器对网站做压力测试。
   我们一般的网站,在进入业务功能前先需登录,然后才能访问业务功能。下面介绍如何用jmeter登录系统再对主业务做压力测试。
  1. 运行jmeter
  2. 左边树将出现测试计划、工作台两根节点。
  3. 选择测试计划,按右键-》添加-》threads(users)线程组
  线程组能设置以多少个线程并发做压力测试。
  在”循环次数”设置不选择永远,循环次数设置1。
  4. 现在先介绍如何设置登录http请求,选择线程组,右键――添加――》sampler-―》http 请求。
  http请求即模仿浏览器的访问。
  在“服务器名称或ip”设置127.0.0.1,端口号设置:8080,“方法”设置post,路径设置网站登录的地址,如“/exam/operatorAction”。
  登录需传入用户、密码。在“同请求一起发送参数”列表中添加参数。参数值根据web应用设置。如login_user=0001;login_password=1;actFlag=login
  5. 登录成功后,网站一般将跳入主页面。在jmap中可做判断,判断是否登录后按预想进入主页面(此步骤也可不设)。选择4中的“http请求“,右键――》添加――》断言――》响应断言。“Apply to”设置Main smaple only;“要测试的响应字段”设置“url样本”;“模式匹配规则”设置“包括”,“要测试的模式”增加页面跳转到的主页面,如:“studentMain.jsp”
  6. 一般网站登录后,在tomcat中生成了session,之后访问其他页面将无需再次登录,前提是浏览器需支持cookie。在jmap中也同样,如要继续访问其他页面,还需做下面关键的设置。
  选择“线程组”――》右键――》添加――》配置元件――》Http cookie管理器。加了此步骤后,http请求将具备cookie功能,即登录成功后访问其他页面将不会跳转到登录页面重新登录。
  7. 对目标页面反复压力测试。
  7.1 如何使被测页面反复访问达到测压效果。选“线程组”―》右键――》逻辑控制器――》循环控制器。循环次数中选择“永远”。
  7.2 选择刚加的“循环控制器”,右键――》添加――》sampler-―》http 请求,按4步骤设置ip、端口,http请求方法为“get”,路径为被压力测试的url,如:“exam/business/studentExam.action.StudentExamAction?action=goIntoMockExam”。
  按上面的设置后,已完成配置,可做压力测试。只需点菜单“运行”――》启动,即运行压力测试。
  8. jmeter提供了许多压力结果查看工具。是压力测试时非常好的分析工具。下面几种查看工具可有选择的添加。
  8.1 察看结果树。他记录每次请求发送数据、响应返回数据。选择“线程组”――》右键――》添加――》察看结果树。
  8.2 用表格查看结果。可查看每次请求的响应时间等。选择“线程组”――》右键――》添加――》用表格查看结果。
  8.3 Summary Report。可查看平均响应时间、最长响应时间等。

3. 压力测试的测试方法

进行压力测试的方法,大致可归纳为两大类: (1)敏感度分析(sensitiveanalysis)此方法是利用某一特定风险因子或一组风险因子,将因子在执行者所认定的极端变动的范围内变动,分析其对于资产组合的影响效果。这一分析方法的优点在于容易了解风险因子在可能的极端变动中,每一变动对于资产组合的总影响效果及边际效果,缺点则是执行者对于每一逐渐变动所取的幅度及范围必须十分恰当,否则将会影响分析的结果与判断,特别是对于非线性报酬率的资产组合,这种情况将更为显著。(2)情景分析(scenarioanalysis)即一组风险因子定义为某种情景,分析在个别情景下的压力损失,因此此类方法称为情景分析。情景分析的事件设计方法有两种:历史情景分析和假设性情景分析。① 历史情景分析(Historicalscenario):利用某一种过去市场曾经发生的剧烈变动,评估其对现在的资产组合会产生什么影响。例如考虑1987年美国股市崩盘,计算当时的历史变动幅度,并依此基础分析评估对资产组合的影响。BCGFS(2001)的研究显示,1998年俄罗斯政府违约事件,是金融机构用来在信用风险压力测试上使用的压力事件,其他如中南美洲比索风暴、东南亚金融风暴亦是很重要的压力事件。这种方法的优点是具有客观性,利用历史事件及其实际风险因子波动情形,在建立结构化的风险值计算上较有说服力,且风险因子间的相关变化情形也可以依历史数据作为依据,使模型假设性的情形降低许多。此外,这种模型较直觉,重大历史事件的深刻印象将使风险值与历史事件紧密结合,管理者在设定风险限额时,便可依历史事件的意义来进行评估,使决策更具说服力。 但这种方法的缺点在于现今金融市场变动非常迅速,许多金融商品不断创新,因此历史事件无法涵盖此类商品,且某些商品的历史价格未出现极端情况,亦无法利用此方法进行衡量。虽然过去发生过的情景未来不一定会再发生,但使用历史情景分析方法来对资产进行风险管理,至少可保证过去的压力事件,在事前预防下,未来不会重演。② 假设性情景分析:仅以历史情景分析进行压力测试有其限制,参考历史事件并另建立对于每个风险因子可能产生的极端事件,将使得压力测试更具完整性,这就是假设性情景分析。这种分析方法银行可自行设计可能的各种价格、波动及相关系数等的情景,这些汁算的设定主要来自经验及主观。

压力测试的测试方法

4. 如何测试压力呢?


5. 软件压力测试的目的

在最近的一次测试中定义了测试的目的是:需要了解AUT(被测应用程序)一般能够承受的压力,同时能够承受的用户访问量(容量),最多支持有多少用户同时访问某个功能。在AUT中选择了用户最常用的五个功能作为本次测试的内容,包括登录。大概的需求就是这样。接下来AUT的登录说一说怎么用LoadRunner和Jmeter来实现场景的设置达到测试的目的。(注:对服务器的检测不是本次测试的重点,本次测试主要收集并发访问用户数和发生错误用户数)。 首先是对脚本的要求:1、录制脚本(注意所有的脚本都应录制到Action中),自定义事务,事务从提交用户名和口令的脚本之前开始;2、在定义事务开始的脚本前加入集合点;3、在脚本中加入检查点,以登录成功的页面出现登录用户的ID即可;4、参数化登录用户的身份;其次是对场景设置的要求:1、因为事先我们不知道将有多少用户访问是临界点,所以在测试过程中需要多次改变用户数来确定;2、建议修改运行时设置,优化对服务器的访问; [Page]3、计划的设置,每x时间后加载10用户(根据总用户数设置),完全加载后持续运行不超过5分钟(根据需要设置);4、集合策略,当运行中的用户数100%达到集合点时释放;5、注意事项,需要注意几个时间:1)服务器响应超时时间;2)登录事务迭代一次所使用的时间;3)集合点等待超时时间;4)计划中设置的间隔时间。在我的测试中事务运行一次的时间不超过30秒,通过修改脚本使它的运行时间达到一分钟左右, 服务器响应超时时间、结合点等待超时时间、计划中设置的间隔时间都设置为了2分钟。这样场景开始运行后运行用户数呈阶梯增长,另外在每个上升点新增的用户都会随原来已经运行的用户并发访问服务器。通过多次的运行和对测试结果中正在运行用户数与错误用户的对比,然后根据定义可接受错误率就可得到该功能的最大并发访问的用户数。以上测试中排除了对网络、客户端等的要求。在实际测试中首先要保证这些资源是足够的。使用Jmeter也能够达到上述描述的场景的测试,并且更加的便捷。 利用现代的设计技术和正式的技术复审可以减少代码中存在的初始错误,但是错误总是存在的,如果开发者找不到错误,那么,客户就会找到它们。越来越多的软件组织认识到软件测试是软件质量保证的重要元素之一,很多软件开发组织将30%—40%甚至更多的项目资源用在测试上,软件测试技术和软件测试策略受到了高度的重视和广泛的应用。本文不想就软件测试技术和软件测试策略作深入的理论分析,而是列举一个在软件系统测试阶段进行的软件压力测试实例,希望能通过这个实例与从事软件测试相关工作的朋友进行交流。首先介绍一下实例中软件的项目背景,该软件是一个典型的三层C/S架构的MIS系统(客户端/应用服务器/数据库管),中间层是业务逻辑层,应用服务器处理所有的业务逻辑,但应用服务器本身不提供负载均衡的能力,而是利用开发工具提供的ORB(对象请求代理)软件保证多个应用服务器间的负载均衡。本次测试的目的是:进行单个应用服务器的软件压力测试,找出单个应用服务器能够支持的最大客户端数。测试压力估算的依据是:假定在实际环中,用户只启用一个应用服务器进行所有的业务处理。方法是:按照正常业务压力估算值的1~10倍进行测试,考察应用服务器的运行情况。

软件压力测试的目的

6. 什么是压力测试

压力测试
是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,以及系统可以承受的压力情况。
然后做针对性的测试与分析,找到影响系统性能的瓶颈,评估系统在实际使用环境下的效率情况,评价系统性能以及判断是否需要对应用系统进行优化处理或结构调整,并对系统资源进行优化。

7. 压力测试的压力测试

情境压力测试即主体向被观察者布置一定任务和作业,借以观察个体完成任务的行为。工作样本测验、无领导小组讨论都可算作情境压力测验。在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败。网络游戏中也常用到这个词汇。 网络定义:2009年9月7日下午,移动公司开商务车装载200多部电信手机,在温州某大学边上不停拨打,导致电信网络瘫痪。电信发现后连车带人押送到公安局,在公安局,移动自称没有违法,只是帮电信做压力测试。“压力测试”与俯卧撑、打酱油等词汇一样,成为网络流行词汇。压力测试、终端机性能功率、各项性能趋势指标等。

压力测试的压力测试

8. 压力测试的介绍

传统上所谓压力测试(stress testing)是指将整个金融机构或资产组合置于某一特定的(主观想象的)极端市场情况下,如假设利率骤升100个基本点,某一货币突然贬值30%,股价暴跌20%等异常的市场变化,然后测试该金融机构或资产组合在这些关键市场变量突变的压力下的表现状况,看是否能经受得起这种市场的突变。在软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。