更好搭建负载测试环境的六个技巧

如果你如我昨天谈到的客户一样,花费了24到48个小时用于每个负载测试环境的搭建,那你的测试及构建部署能力绝对是受限的。

搭建一个仿真测试环境对于做好负载测试非常重要,同时它也是一个非常具有挑战性的任务,需要考虑技术解决、组织和安全问题等。本文可作为一个更快更有效部署负载测试环境的路线图,以便你更快的进行安装部署。

使用你的生产环境

是的,这作为第一条是有点尴尬,因为这很少行的通。你的生产环境同是做测试的理想环境,这没必要重复,里面包涵了经常被忽略的影响性能的后台进程和环境变量。

在晚上和周末,我们的一些客户使用他们的线上环境进行负载测试。这绝对可行,可能情况下,这也是我做负载测试的第一选择。   

使用生产环境做测试,需要保证:

  • 备份里面的数据,以便你测试完后能立即还原到真实环境。
  • 隔离和禁用第三方应用(如支付系统)。例如,当测试一个电商网站,你需要删除包括数字签名和宝贝支付交易的所有测试数据。或者,你可以使用存根来模拟这样的交易。如果这也不行,你不可避免的要运行这些事务——只能通过第三方完成的,那么把资金转移到指定的一个账户。
  • 使用虚拟实体(如用户账户)来模拟你要进行的测试活动。

精确的复制生产环境

推断负载测试结果是非常冒险的事。如果你运行测试在1G两核的机器上,然后去想象运行在2G四核上的结果?这几乎是不可能知道的。

所以,你需要复制生产环境的一切,包括:机器配置,环境配置,数据库,网络结构,负载均衡器,防火墙,等等。一个办法是,为生产环境创建一个完整的镜像来复制到你的测试环境。

复制一个客户环境

让我们假设你的产品是一个内部部署软件,如一个大学的学生信息管理系统,提供如注册、管理等服务。这时进行如研究、开发或质量团队模拟真实环境测试,都会变得非常困难。最有效的办法就是复制客户的生产环境。

我们可以尝试保证保护抽样客户的隐私并移除重要数据,以及提供折扣和免费支持服务等手段,来获取在客户的环境下进行这些工作。通过客户的协助,来保证测试的是真实的客户环境,这将是一个双赢的局面。

从零开始建立真实环境

在一些情况下,你没有生产环境用于复制,那么你必须要从零开始建立一个负载测试环境。如处于开发早期你没有生产环境,也没有足够的客户,或者因为安全方面的限制你没能获得真实的生产环境。

在这种情况下,要确保:

  • 考虑可能要做测试的不同部署类型。如每次测试,用户配置数量的地址,数据库的记录条数等。
  • 尽可能创建典型生产环境配置——包括安全,硬件,软件,网络,其它部署应用,负载均衡等。
  • 使用自动脚本生成数据来代表真实环境数据。
  • 考虑程序运行的可能情况。通常,性能下降归咎于周期性任务,如数据库备份或者每周自动生成的商业管理报告。这些问题没有在测试中发现,那是因为这些周期性任务从没在测试环境中考虑到。
  • 加入线上系统中的第三方集成应用,如支付系统,报告和支持性插件等。

编写一段程序来快速配置测试环境

你应尽可能快的配置你的负载测试环境,以便在新的测试时好复用。一旦你需要配置应用环境,创建一个快照或镜像能方便你在几分钟内创建好。这里有非常多的配置管理及IT自动化工具来帮助你快速搭建服务器环境,如 PuppetChef,SaltstackAnsibleDocker, 和Vagrant 

隔离测试环境

计算资源总是稀缺的,测试机是常用的解决方案。当CFO或新的产品团队寻找机器来跑程序或做实验时,他们通常会采用一些测试机器,如果你没被告之也不要失望。你想确保除了你的虚拟端外没人能接近你的测试应用,那测试网络的隔离变得非常重要,这会让你的测试环境不被未知的其它公司活动所影响。

搭建一个仿真测试环境对做好负载测试非常重要。开头,它可能看起来使你启动性能测试变得更慢,但它如摩天大楼的设计。你不能没有它,它将消除灾难性故障的可能性。

本文翻译自David (Dudu) Buch的《Six Tips for Building a Better Load Testing Environment》一文。



留言