一、前言
话说20世纪90年代初的某一天,国内第一台自主研发的大型固话交换机,终于千呼万唤地“闪亮”登场了。于是乎,这家公司马上向用户大力推销这款设备,但是用户提出了一个很实际的问题,彻底难住了这家公司,问题很简单,就是需要一份性能测试报告来证明这台设备真能支持宜称的话务容量那时候还没有成熟的电信领域性能测试工具,该怎么办呢?幸好有聪明的领导想出了一个中国式的解决办法某天下午,全公司的员工都放下了手头的工作,每人怀抱一部老式电话机(还要靠转盘来拨号),等领导倒数“三、二、一”后集体打电话。据说当时人数不够,达不到用户要求的通话量,甚至出现了一个人操作两部电话机的情况。
当今社会“云计算”绝对是当前最热的T词汇,甚至沾上一点“云”概念的股票都会一飞冲天。“云”听起来很虚幻,其实就是瘦客户端加网格计算。今后客户端不再会有大量的计算任务,计算和存储都被放在云上。今后的客户端应该就是一个浏览器,用户的所有操作都是通过浏览器来实现的。 Google刚发布的操作系统 Chrome OS,就是基于这一理念设计的。B/S和C/S架构的软件系统,应该会慢慢演进到 Browser/Coud(浏览器/云)模式。如此看来,在“云计算”时代,Web性能测试依然很重要,而且会越来越重要。
二、什么是性能测试
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。性能测试的目的是验证被测系统能否达到用户提出的性能指标,同时发现被测系统的性能瓶颈,为性能优化指引方向,从而达到优化系统性能的目的。
性能测试包括以下几个方面:
■评估系统的能力:测试中得到的负荷和响应时长数据可以被用于验证所计划的模型的能力,并帮助做出决策。
■识别体系中的弱点:受控的负荷可以被增加到一个极端的水平并突破它,从而修复体系的瓶颈或薄弱的地方
■系统调优:重复运行测试,验证调整系统的活动是否得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中隐含的问题或冲突。
![](/qrcode.jpg)
■验证稳定性( Resilience)、可靠性( Reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
三、性能测试分类
性能测试包括负载测试、压力测试和容量测试等。
负载测试( Load Testing):
负载测试是指通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,如响应时长、事务处理速率和其他与时间相关的性能指标。
压力测试( Stress Testing):
在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。
容量测试( Volume Testing):
容量测试确定系统可处理同时在线的最大用户数。
负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能供的最大服务级别的测试。