`
- 浏览:
188746 次
- 性别:
- 来自:
北京
-
* 摘要:《性能测试从零开始:LoadRunner入门》第1章主要讲述的是软件性能测试,在软件性能测试范畴内就有很多,诸如并发测试、压力测试、基准测试、测试场景等概念和名词,这让刚接触性能测试的新手眼花缭乱,目不暇接。但我们如果能深入软件性能测试的本质,从哲学的角度看问题,找出其内在联系,比如因果关系、形式内容关系,甚至重叠关系等,理清思路之后,那么做软件性能测试就会如庖丁解牛,游刃有余。本节为您介绍性能测试策略揭秘。
* 标签:性能测试 LoadRunner 性能测试 性能测试从零开始:LoadRunner入门
*
Oracle帮您准确洞察各个物流环节
1.2.2 性能测试策略揭秘
谈到“策略”,这是如今很火、使用较多的一个词。不光在IT领域,其他各个行业中也都有各种各样的策略,如营销策略、风险规避策略等。策略即谋略、手段、方法,表现为权宜的行动路线、指导原则或过程。
做事情讲策略,这是一种智慧,是人们聪明起来的表现,但当越来越多的策略“概念化”的时候,我们不得不去思考我们到底要达到什么样的目标,什么样的策略才是我们需要的。
案例
引用网上一位哲人说的话:“概念只是为了方便人们理解和研究世界万物事物而制造的工具,而最终结果将使概念不再需要,就如同庄子所说的得意而忘言”。语言就是一种包装材料,它包装的是某种含义。因为人类传递信息必须使用语言,所以我们在研究的时候不得不借助于这种包装,但是当人的思维能力具备了打开包装直接取得内部的含义的时候,语言就变得多余了。这时候再关注于语言和概念本身就成了买椟还珠的现代版了。
因此,我们应该关注的不是概念本身,而是概念背后的含义。理解了含义,再冠予它什么样的名词头衔,如“攻略“,对于我们都无关紧要了。而理解一个概念,我们可以靠WWH方法,即对概念的三个问题:Why、What、How。
好,言归正传,回到软件性能测试策略中来。在性能测试过程中,只要有事情做,就会有策略,如设计用例有设计策略,执行时有执行策略,调优时还有调优策略。为了不产生混淆,我们要说明的是,在本节中讨论的策略是性能测试设计策略。
Why(为什么会有不同的策略)
在软件性能一节中,我们看到软件的性能来自软件对空间和时间的综合方案,这种组合是很多的,因此用户的软件性能需求可能会多种多样。对于软件人员,我们做性能测试也要因地制宜,根据不同的性能需求,选择不同的测试策略。
What(什么是性能测试设计策略)
验证性能需求是测试目的,测试策略即已经被证明是行之有效的测试方法。
How(怎样实施)
常见的性能测试方法有以下几种:
1.负载测试
在这里,负载测试指的是最常见的验证一般性能需求而进行的性能测试,在上面我们提到了用户最常见的性能需求就是“既要马儿跑,又要马儿少吃草”。因此负载测试主要是考察软件系统在既定负载下的性能表现。我们对负载测试可以有如下理解:
(1)负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。
(2)负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等。
2.压力测试
压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。注意,这个极端条件并不一定是用户的性能需求,可能要远远高于用户的性能需求。可以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我们要考察的是系统处理问题的方式。比如说,我们期待一个系统在面临压力的情况下能够保持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行。
例子:负载测试关心的是用户规则和需求,压力测试关心的是软件系统本身。对于它们的区别,我们可以用华山论剑的例子来更加形象地描述一下。如果把郭靖看做被测试对象,那么压力测试就像是郭靖和已经走火入魔的欧阳峰过招,欧阳锋蛮打乱来,毫无套路,尽可能地去打倒对方。郭靖要能应对住,并且不能丢进小命。而常规性能测试就好比郭靖和黄药师、洪七公三人约定,只要郭靖能分别接两位高手一百招,郭靖就算胜。至于三百招后哪怕郭靖会输掉那也不用管了。他只要能做到接下一百招,就算通过。
思考
我们在做软件压力测试时,往往要增加比负载测试更多的并发用户和交易,这是为什么?
3.并发测试
验证系统的并发处理能力。一般是和服务器端建立大量的并发连接,通过客户端的响应时间和服务器端的性能监测情况来判断系统是否达到了既定的并发能力指标。负载测试往往就会使用并发来创造负载,之所以把并发测试单独提出来,是因为并发测试往往涉及服务器的并发容量,以及多进程/多线程协调同步可能带来的问题。这是要特别注意,必须测试的。
4.基准测试
当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性能指标作比较,以判断模块对系统性能的影响。
5.稳定性测试
“路遥知马力”,在这里我们要说的是和性能测试有关的稳定性测试,即测试系统在一定负载下运行长时间后是否会发生问题。软件系统的有些问题是不能一下子就暴露出来的,或者说是需要时间积累才能达到能够度量的程度。为什么会需要这样的测试呢?因为有些软件的问题只有在运行一天或一个星期甚至更长的时间才会暴露。这种问题一般是程序占用资源却不能及时释放而引起的。比如,内存泄漏问题就是经过一段时间积累才会慢慢变得显著,在运行初期却很难检测出来;还有客户端和服务器在负载运行一段时间后,建立了大量的连接通路,却不能有效地复用或及时释放。
6.可恢复测试
测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系统中,主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通常结合压力测试一起来做。
每种测试有其存在的空间和目的。当我们接手一个软件项目后,在有限的资源条件下,选择去做哪一种测试,这应该根据当前软件过程阶段和项目的本身特点来做选择。比如,在集成测试的时候要做基准测试,在软件产品每个发布点要做性能测试。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
10. **负载测试策略(Load Testing Strategy)**:包括逐步增加负载(ramp-up)、保持恒定负载(constant load)、周期性负载(pulse load)等,以模拟不同类型的用户行为。 11. **结果分析(Result Analysis)**:...
- 与Mercury Interactive的其他测试工具(如LoadRunner、QTP等)高度集成。 - 强大的图表统计功能,便于数据分析与报告生成。 - 支持完整的测试生命周期管理,包括需求管理、测试计划、执行及缺陷追踪等环节。 #...
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。