为你的应用准备最佳负载测试的 9 个技巧

英文原文 9 Tips to Prepare Your App for Optimal Load Testing 编译:oschina

你已经努力开发你的Web应用,也许这没有什么伟大的,但它是众多维持我们每日生活的方法中的一员,并且,或许它会改变世界。

无论怎样,你知道它需要做一些测试,而且不止一次。测试工作应该贯穿于软件开发过程的每一个阶段,乃至软件发布之后。认识到测试者的工作永远不会停止有点让人头疼,令人欣慰的是每一轮测试和矫正都会提高软件质量。
应用故障有两个原因:开发人员没有做负载测试,或者更糟糕的是,他们花了时间来做负载测试,但是没有做好充分的准备。没有充足的预备工作,负载测试不可能发现它应该发现的所有问题。
那么,怎么才能准备一次最佳的负载测试呢?
好吧,这里给出一些建议,一旦你准备开始负载测试,我们也给你提供了一个易用的高级测试工具来进行它——当然,它是可以免费下载的。

1. 什么是你真正需要了解的?

确定你想了解你的应用或系统的哪些方面。每种类型的测试的运行方式都不同,且着眼于应用的不同方面。因此,基于不同的需求,你需要运行不同的测试。例如:

  • 如果希望找到你的应用程序在很少或根本没有负载情况下的执行基准,你将运行单用户测试。
  • 如果想确定系统在正常负载下的执行情况,你将运行负载测试。
  • 如果想确定你的应用程序停止响应或响应缓慢导致不能正常工作的临界点,你需要运行负载测试。
  • 如果想了解你的应用程序是否有内存泄露问题,你要运行耐力测试。

2. 确定用户数量

如果要加载测试,你会模拟多少虚拟用户呢?要回答这个问题,你要估计大概多少并发用户可能访问你的网站,这取决于一天中的时间。很多测试者只是猜测,相反,你需要跟你的设计师和营销人员谈谈并看看性能说明。你甚至可能要问他们设计的应用程序支持多少并发用户,然后设计这么多用户及比这更多用户的测试。

  • 注意:你还要安排当实际用户减少或消除时的测试。

3. 研究你的分析

不要假装知道客户如何用你的应用程序。真正了解用户的唯一途径是研究历史(如分析)。通过研究你的分析,你可以创建实际上代表用户的测试–而不是你认为的代表用户的测试。在这方面,分析是测试人员最好的朋友!

4.组建你的团队

你需要许多人参与到测试中来:开发人员,网络工程师,数据库管理员,企业主-举例来说。所有这些人都有着特定的权利来使应用变完美,每个人将从不同的角度定位问题。正确的解决方案将不会直接从众多中的一个里直接获得,而将从两个或多个综合得出。确保团队中的每个成员都是对测试有用的:

  • 确保他们在特定领域的专业程度
  • 提供稳定的反馈
  • 产生对应用质量和性能的归属感

5.准备你的浏览器

使用测试软件使你尽可能地接近你的真实用户的体验。你应该能够在你选择的浏览器中记录你的测试场景,但你也需要预估你的用户将会使用的其它浏览器。考虑你的产品使用率高的国家和地区,调查那里使用率最高的浏览器。你将安装这些浏览器在你开始测试时。然后你需要确保你的负载测试软件尽可能真实地模拟用户的行为。这包括:

  • 多线程处理
  • 思考时间
  • 混合并发场景
  • 复杂场景
  • 参数化
  • 从多个代理进程产生负载(网络/云)

6. 准备测试你的应用

虽然在分阶段环境中测试你的应用很有价值,由于很多原因,它也会在你的测试中留下一些漏洞。

  • 分阶段环境并不总是产品的真正副本
  • 分阶段环境只能从内部防火墙访问
  • 可能有一些针对你正在收集信息的相同系统的测试

7. 预留时间分析结果

你应该准备花些时间以组为单位分析测试结果(记得在测试过程中存在的所有的那些人吗?)。要仔细看结果,确保真正理解瓶颈、错误、弱点且有有效的补救措施,确保涉及每个人并安排足够的时间。

8. 预留时间修改

在计划表中也要留一定的时间去实现那些确定需要修改的测试!从时间方面考虑,不同的补救成本也不一样。在时间和金钱方面,像实现缓存策略、重构代码、数据库优化以及硬件升级等这样的补救措施需要更大的实现成本。举个例子,添加额外的硬件需要花时间下订单、收货、测试硬件、安装软件和数据、测试、加到网络中并做更多测试。这可能花费数周或几个月。

9. 计划一个敏捷测试方法

一旦纠正,又是再次测试的时候了。俗话说得好,测试是一个过程,而不是目的。每次发现并纠正一个瓶颈,另一个问题又出现了。所以计划一个敏捷测试方法是很重要的,从而可以使性能测试贯穿开发周期的每一步。附加测试应按以下执行:

  • 代码何时被修改或更新
  • 新硬件何时被引入
  • 修改何时被添加到应用服务器或DB服务器
  • 流量峰值预计在何时

深呼吸一下,然后放松!你已经完成了绝大部分艰苦的工作。现在你已花时间作了准备,对你的应用作负载测试将有助于你持续改进你的产品和业务。

你可能感兴趣的:(java)