负载测试教程(定义、方法、示例)
负载测试
负载测试是一种非功能性软件测试,它评估软件应用程序在特定负载下的执行情况。它测试当大量用户同时使用软件应用程序时的运行情况。负载测试在部署之前进行,以检测性能瓶颈并确保软件程序稳定且运行流畅。
此分析通常确定:
应用程序的最大运行能力
检查当前基础设施是否能够处理该应用程序。
应用程序在峰值用户负载下的可行性存疑。
应用程序支持的最大并发用户数及其可扩展性,允许更多用户访问它。
这是一种非功能性测试。负载测试广泛应用于软件工程中,用于客户端/服务器和基于Web的应用程序,无论是在Intranet还是Internet上。
负载测试的目的何在?
负载测试建立对系统可靠性和性能的信任。
负载测试在高用户压力情况下识别系统瓶颈,防止其在生产环境中出现。
负载测试提供良好的性能保护,并可与生产环境中的其他性能管理和监控策略结合使用。
为什么需要负载测试?
需要进行负载测试是因为一些最受欢迎的网站在收到大量流量时都曾出现过严重的停机时间。在营销吸引访问者时,电子商务网站大量投资广告活动,但没有投资负载测试以确保最佳系统性能。
请考虑以下示例:
热门玩具零售商Toysrus.com无法处理其广告宣传带来的增加的流量,导致营销成本损失以及潜在的产品销售损失。
在节日促销期间,一家航空公司的网站无法容纳10,000多名客户。作为促销活动,大英百科全书免费开放了其在线数据库的访问权限。数周以来,他们都无法应对涌入的流量。
当网站收到大量流量时,加载时间会变长。
事实:
页面加载延迟超过8秒后,大多数人会点击离开。
每年因性能不足而损失44亿美元。
负载测试的目标
在将应用程序发布到市场或投入生产之前,负载测试会识别以下问题:
每个事务的响应时间
不同负载下系统组件的性能
不同负载下数据库组件的性能
客户端和服务器之间的网络延迟。
软件设计问题
Web服务器、应用程序服务器、数据库服务器和其他服务器配置问题。
硬件限制问题,例如CPU最大化、内存限制、网络瓶颈等。
负载测试将表明系统是否需要微调,或者是否需要硬件和软件修改以提高性能。
负载测试的先决条件
负载测试最重要的指标是响应时间。在开始负载测试之前,您必须首先确定:
当前是否正在测量和比较响应时间?——定量分析
响应时间是否与业务流程相关——
响应时间是否合理——现实的
是否可以满足响应时间——是的,可以满足。
是否可以使用工具或使用秒表测量响应时间——必须可测量。
在开始负载测试之前,您必须首先创建以下环境:
硬件平台 | 软件配置 |
---|---|
| |
| |
|
|
|
|
| |
|
负载测试策略
负载测试可以通过多种方法完成。下面列出了一些负载测试方法:
**手动负载测试**——这是一种负载测试方法,但是它不能提供可重复的结果,无法对应用程序施加测量的压力级别,并且难以组织。
**内部开发的负载测试工具**——认识到负载测试价值的组织可以开发自己的负载测试工具。
**开源免费的负载测试工具**——有许多开源免费的负载测试工具。它们可能不如付费工具那样复杂,但如果您预算有限,它们是最佳选择。
**企业级负载测试软件**——它们通常具有捕获/回放功能。它们能够支持各种协议。它们能够模拟大量用户。
负载测试:分步指南
负载测试过程可以概括如下:
建立专门的负载测试环境。
找出以下内容:
负载测试场景
确定应用程序的负载测试事务。
准备每个事务的数据。
必须估计将使用该系统的用户数量。
找出您的连接速度。有些用户可能有专线,而另一些用户可能只有拨号接入。
确定用户首选的浏览器和操作系统。
所有服务器(例如Web服务器、应用程序服务器和数据库服务器)都已配置。
执行和监控测试场景。正在收集各种指标。
检查结果。请提供建议。
在系统经过微调后重新测试。
负载测试指南
应用程序在功能上稳定后,应安排负载测试。
数据池中应有大量唯一数据。
应为每个场景或脚本确定用户数量。
为节省磁盘空间,避免创建冗长的日志。I/O内存
尽量避免从网站下载图片。
应记录响应时间随时间的变化情况,并将结果与其他测试运行进行比较。
最佳实践指南
下面描述了一些负载测试的最佳实践:
在开始负载测试之前,请确保程序稳定。在将构建移动到负载测试环境之前,功能测试团队应签署应用程序的功能稳定性,并且所有主要缺陷都应得到解决和测试。
检查负载测试环境,包括服务器数量、负载均衡器、服务器配置和防火墙,是否与生产环境相同或接近。
在运行负载测试之前,请仔细检查测试数据是否唯一,并且所有测试数据都已移动到负载环境。
创建与生产环境中实时用户行为非常相似的测试场景。
生成基于制造的用户负载和业务流程的工作负载;如果是旧应用程序,请检查它是否是新应用程序,并与业务团队讨论业务流程和用户负载。
收集所有相关信息,例如响应时间、每秒点击率、吞吐量、CPU、内存、网络和正在运行的虚拟用户。
负载测试和压力测试:有什么区别?
**负载测试**——负载测试在各种工作负载下发现系统瓶颈,并评估系统在负载逐渐增加时的响应情况。
**负载测试**——压力测试:压力测试确定系统的断点或其将失败的最大点。
功能测试和负载测试的区别
功能测试和负载测试的区别如下:
功能测试
因为我们定义了正确的步骤和前提条件,所以功能测试的结果很容易预测。
功能测试的结果略有不同。
功能测试将定期进行。
测试数据决定了功能测试的结果。
负载测试
负载测试结果是不可预测的。
负载测试的结果差异很大。
进行负载测试的频率将很低。
用户数量会影响负载测试。
用于测试的工具
**LoadNinja**——LoadNinja正在改变人们进行负载测试的方式。这个基于云的负载测试工具使团队能够在真实浏览器中大规模记录和回放全面的负载测试,无需复杂的动态关联。团队已经能够将测试覆盖率提高,并将负载测试时间缩短超过60%。
**Eggplant**——所有顶级分析师,包括Gartner和Forrester,都将Eggplant(现在是Keysight Technologies的一部分)认定为负载测试解决方案的领导者。不要使用昨天的技术来应对今天的测试战争。
LoadRunner − HP的LoadRunner工具用于在常规和峰值负载情况下测试应用程序。LoadRunner创建虚拟用户来模拟网络活动以产生负载。它在模拟生产环境中的实时使用情况下生成图形结果。
负载测试的优点和缺点
以下是负载测试的一些优点:
在生产之前识别性能瓶颈
通过提高系统的可扩展性来降低系统停机的风险。
故障成本更低。
客户满意度应该提高。
负载测试的缺点包括:
要使用负载测试工具,您需要了解如何编程。
由于价格基于支持的虚拟用户数量,因此工具可能成本高昂。
总结
负载测试是一种软件测试,它检查系统在真实负载条件下的执行情况。
负载测试通常在应用程序投入生产之前改进应用程序的性能瓶颈、可扩展性和稳定性。
此测试有助于确定应用程序的最大工作能力以及系统瓶颈。
负载测试至关重要,因为未能进行负载测试可能会导致经济损失。