核心内容摘要
总有一种力量让人泪流满面,总有一种感到让人泪流满面
可以把它理解为一个非常专业的“压力测试实验室”。
就像汽车工厂会在专门的测试场模拟各种极端路况颠簸、高温、严寒、长时间驾驶来检验车辆性能一样LoadRunner就是在数字世界里为网站、应用程序或服务器搭建的这样一个“测试场”。
它是什么LoadRunner是一个用于测试系统在高负载下表现的工具。
它的核心工作不是找功能上的小错误而是回答一个关键问题当很多人同时使用我们的系统时它还能不能保持快速、稳定、不崩溃用一个生活中的例子一个新开的网红餐厅平时接待10桌客人服务流畅。
但周末突然来了100桌客人后厨忙不过来、点餐系统卡死、服务员跑不过来整个体验就崩了。
LoadRunner就是那个在餐厅真正营业前通过“虚拟顾客”模拟出周末100桌客人的场景提前发现这些瓶颈的工具。
它能做什么它主要做三件大事模拟真实用户行为它能录制或编写脚本让成千上万个“虚拟用户”像真人一样操作。
比如有的在登录有的在搜索商品有的在提交订单有的在付款。
这些“虚拟用户”就是由LoadRunner控制的。
制造可控的压力你可以精确控制有多少“虚拟用户”同时在线、以多快的速度增加人数、持续运行多长时间。
比如你可以设置“在10分钟内逐渐增加到5000个用户同时浏览并持续压测1小时”。
定位性能瓶颈这是它最核心的价值。
当系统在压力下变慢或出错时LoadRunner能像医生做体检一样生成详细的报告。
报告会告诉你是数据库查询太慢了是某台服务器的CPU被用满了还是网络带宽不够了它帮你精准地找到“病根”而不是仅仅说“系统很慢”。
怎么使用它的工作流程可以类比为“拍一部压力测试电影”编写剧本脚本录制/开发首先你需要告诉LoadRunner“虚拟用户”应该做什么。
最直接的方式是用它的工具把你访问网站的关键操作如登录-搜索-加入购物车录制下来形成一个基础脚本。
打磨剧本脚本增强录制的脚本很“呆板”所有用户都输入一样的信息。
这时需要像编剧一样修改脚本让它们更“真实”。
例如让用户名和密码从一个文件里随机读取模拟不同用户在操作之间加入思考时间模拟真人阅读页面的停顿。
搭建片场场景设计剧本好了接下来安排“演出”。
在LoadRunner的控制台里你设计测试场景安排多少“演员”虚拟用户他们何时上场加压策略在哪些“舞台”不同的服务器上表演。
正式开拍执行测试启动测试。
LoadRunner会按照你的设计指挥成千上万的虚拟用户开始操作同时严密监视着服务器、数据库、网络等所有相关系统的健康状况如CPU、内存使用率、响应时间。
审片与诊断结果分析测试结束后你会得到一份丰富的报告和大量的图表。
你需要像数据分析师一样查看哪些事务响应时间超标哪些资源在压力下成为瓶颈从而定位问题的具体原因。
最佳实践一些经过验证的有效做法从真实场景出发测试脚本和场景设计必须基于生产环境的真实用户行为和数据。
如果实际用户80%是浏览20%是下单你的测试比例也应大致如此。
用不真实的场景测试得出的结论没有意义。
循序渐进地加压不要一上来就模拟一万人同时点击。
像健身房举铁一样从轻重量开始如100个用户逐步增加200, 500, 1000…观察系统在每个压力阶段的表现。
这能帮你找到系统的“承受极限”在哪里。
监控一切除了LoadRunner自带的监控务必连同系统如Windows/Linux性能计数器、数据库如Oracle、MySQL的慢查询、应用服务器如JVM内存状态、网络等一起监控。
瓶颈往往出现在这些地方。
每次只变一个条件如果一次测试中改了脚本又换了服务器配置最后性能提升了你无法知道是哪个改动起了作用。
科学的做法是一次只改变一个变量进行测试。
关注“拐点”分析结果时重点看曲线发生剧烈变化的点。
例如当用户数达到800时响应时间曲线突然陡增这个800就是系统的一个关键拐点需要深入分析此时系统内部发生了什么。
和同类技术对比常见的同类工具有 Apache JMeter、Gatling 等。
LoadRunner传统企业级代表优点功能非常全面、强大支持的应用类型极广从Web到ERP、数据库协议。
报告专业详尽分析深度强。
适合大型、复杂的企业级系统性能测试。
缺点非常昂贵商业软件学习曲线陡峭环境部署相对复杂。
对于中小型项目来说可能像“用高射炮打蚊子”。
Apache JMeter开源流行代表优点完全免费、开源社区活跃插件丰富。
使用界面相对直观易于上手。
对于标准的HTTP接口、Web服务测试非常有效。
缺点在模拟超大规模并发用户时单台机器资源消耗较大需要借助分布式部署。
其报告和分析的深度和直观性通常不如LoadRunner专业。
Gatling现代化代码驱动代表优点采用Scala语言编写脚本性能效率高资源占用少。
测试脚本即代码易于版本管理和维护。
报告简洁美观实时生成。
缺点需要一定的编程基础Scala对于纯测试人员门槛稍高。
在协议支持和生态广度上不如前两者。
简单
总结如果你在为一个银行、电信或大型电商的核心系统做性能测试预算充足且需要最专业的支持和分析LoadRunner是行业标杆。
如果你测试的是互联网产品或API追求性价比和敏捷性JMeter或Gatling可能是更合适的选择。
工具本身无高低关键看是否适合你的项目和团队。