图灵教育 2018-11-03
大多数开发人员经常进行性能测试,但容易忽视的一种测试是负载测试。
虽然性能测试与负载测试常常换着使用,但两者不一样。性能测试是一种通用的做法:在真实场景下测试应用程序的响应性和稳定性。
负载测试是性能测试的一个特定子集,旨在确定应用程序在特定数量的用户同时使用时的服务质量。负载测试软件模拟众多用户同时使用一个应用程序的情形,从而让你识别大规模并发造成的瓶颈。
比如说,我注意到博客应用程序的用户在尝试编辑自己的内容时遇到了速度减慢,这是我在常规测试过程中从未注意到的问题。通过使用Apache JMeter这款负载测试软件,我发现了一个Ruby代码库(gem)导致这项功能减速20%。不借助该软件,我自己永远查不出瓶颈的根源。
负载测试似乎是一种明显的做法,但可能被忽略。如果你每天测试自己的应用程序,很容易忘了这一点:你看到的和用户看到的可能大不一样。任何客户端-服务器应用程序需要负载测试,以便确定其局限性,并改善用户体验。
当然,你自己的个人开发环境与应用程序在专业人员使用期间看到的相去甚远。虽然在生产环境中加载测试有一些优点,但复制自己的环境或再现客户的环境更现实更安全。无论你做什么,都要确保你的测试环境未使用PayPal之类的第三方插件。许多模块可模拟应用程序的那些方面,但唯一与测试进行交互的应该是虚拟用户。
最受欢迎的负载测试软件是LoadRunner,但市面上有许多可行的替代方案。下面,我们评估了其中几款负载测试软件套件的优缺点,以便你评估哪款最适合自己的要求。
一、免费解决方案
Apache JMeter
与大多数Apache软件一样,JMeter也是开源的,因而是独立开发人员的理想选择,但对于每天预计有数千用户的应用程序而言,它不是那么出色。
优点:
缺点:
链接:https://jmeter.apache.org/
Locust
Locust是一款基于Python的负载测试软件。它完全开源,让用户可以使用纯粹的Python代码创建自己的测试套件。
优点:
缺点:
链接:https://locust.io/
Loader.io
Loader.io是一种基于云的负载测试服务,提供强大的免费版。
优点:
缺点:
链接:https://loader.io/
Gatling
Gatling是另一款开源负载测试套件。与Locust一样,它允许使用基于文本的脚本,使用自己的特定域语言。还有名为Gatling FrontLine的收费版。
优点:
缺点:
链接:https://gatling.io/
BlazeMeter
BlazeMeter是一种流行平台即服务,旨在与JMeter协同工作。它能弥补JMeter在扩展性和可视化方面的不足,但不是开源的。
优点:
缺点:
链接:https://www.blazemeter.com/load-testing
二、收费工具
Radview WebLOAD
WebLOAD是市面上历史最久的负载测试软件套件之一,目前版本是10.3.1。它有一款功能有限的免费版,高级版价格取决于每天预计的虚拟用户数。它的测试基于JavaScript。
优点:
缺点:
链接:https://www.radview.com/webload-download/
Micro Focus LoadRunner
LoadRunner是最受欢迎的负载测试工具之一,可以说是最可靠、用途最广泛的负载测试软件套件。与WebLOAD一样,它也有免费版;价格随运行模拟的数量而增加。
优点:
缺点:
链接:https://software.microfocus.com/en-us/products/loadrunner-load-testing/overview
IBM Rational Performance Tester
Rational Performance Tester是IBM开发的工具,主要用于测试基于Java的应用程序。 IBM为使用软件许可证提供了好几种支付方案。
优点:
缺点:
链接:https://www.ibm.com/developerworks/downloads/r/rpt/index.html
SmartBear LoadUI Pro
这款负载测试工具出自流行的SoapUI API测试软件的开发商之手。它最适合测试基于SOAP的应用程序,是市面上最昂贵的工具之一。
优点:
缺点:
链接:https://smartbear.com/product/ready-api/loadui/overview/