【51CTO.com快译】众所周知,如果研发出来的软件产品最终根本无法达到最初设计的目的,并且满是缺陷和bug的话,这对于应用开发人员来说就是最大的噩梦。同时,对于测试人员而言,无论是应用程序的性能、还是与稳定性相关的各种问题,他们都有责任把好最后一关,以确保软件的质量不会在任何情况下被拉低。
正所谓千里之堤溃于蚁穴,任何一处的代码缺陷,都会影响到您所研发出的软件的最终整体性能。因此真正专业且经验丰富的测试专家,是不会放松任何一项编码测试环节的。
如今,各大企业都希望通过DevOps来提高软件产品的交付质量。而这往往需要在软件研发的生命周期中,采用各种业界最佳的测试方法和测试用例。在此,我们将分享一些与DevOps相关的性能测试的细节,希望能够给各位软件测试人员带来一些启发。
初始测试阶段
在这个阶段,我们需要在不增加任何负载的情况下,对应用程序进行性能测试,以便设置好初始化的基线。此举意味着我们通过设置一个虚拟用户,来循环执行某些任务,以检查目标应用程序的基本功能,当然,此类性能分析并不会增加任何并发的负载。
显然,此类基线测试是非常重要的,因为它能够有效地处置各种调用命令、或事务的最短响应时间,来设置基线。一旦某个事务被执行完毕,系统就会记录并生成其相应的响应时间。在此基础上,您可以通过增加负载,来观察与应用程序性能相关的各种因素。一般而言,此类因素包括:CPU的利用率、内存的使用情况、以及处理的延时。
作为测试人员,他们需要分别记下最快和最慢的交易事务时间,然后在此基础上细致地与研发人员沟通与合作,将负载最大时的交易时间降至最小。另外,测试人员还有责任在这两种时间的上下限之内保持应用程序的稳定性,以便软件即使是在重负载、多并发的情况下,仍然能够保证其自身和所提供服务的双重稳定性。
寻找临界点
在测试的初期,测试人员需要充分考虑的另一个关键事项是:通过循环测试各种场景,以找到软件的临界点。同样地,对此类临界点的分析也是非常重要的。此法可以确保正常的事务不会因为突然遭遇到过多的服务请求,而导致延时甚至是中断。
如果无法确保自己的软件产品能够随着用户访问数量的激增,还能够平稳顺利地运行的话,那么您精心部署和发布出来的应用程序,实际上是毫无意义的。因此,只有通过对应用程序持续采取此类所谓的临界点“极限测试”,我们才能对各种峰值负载进行预判,要么事先准备好各种应急措施,要么让软件能够自动实施相应的限流与排障方案。
至此,我们已经为软件预防性功能测试做好了基础工作。下面让我们继续进行深层次的测试讨论。
反复测试脚本
我们在对软件程序进行“抗压”测试时,千万不可浅尝辄止。测试人员一般会分不同的场景,反复运行测试脚本,以检验软件在应对不同请求来源时的兼容性。当然为了提高效率,大多数测试人员还会选用各种自动化的测试工具,来达到此类测试目的。
Selenium是上述自动化测试工具的典型代表。它通过放大并激增各种测试的请求,以监控目标软件在极端条件下是如何协调并运行的。由于在现实环境中,我们很难在短时间内集结大量的用户请求,并手动测试应用程序的鲁棒性。因此,借用此类工具所产生的自动化脚本,在测试过程中添加大量虚拟用户是非常重要的。它们对于系统整体性能的检测与描述,具有一定的客观性和可参考性。
持续对应用程序进行性能测试,将有助于我们发现CPU和内存在使用中的变化情况,开发人员也可以借此在代码层面、甚至是架构层面予以调整,以全面提高软件应用的综合服务性能。具体操作方法,请参见:
https://www.bugraptors.com/service/performance-testing/。
在DevOps环境中被广泛使用的测试工具
1. Selenium
如前文所提到的,Selenium是常用的测试工具之一。它可以为测试人员提供良好的过程体验。无论您是要测试移动应用的整体性能与潜在漏洞,还是要检查Web应用的并发临界点,Selenium都可以为您安排好一切。
同时,Selenium也被广泛地运用到了桌面应用的测试环境中,以辅助提高软件的运行效率。另外,测试人员往往需要知道其目标应用是否能够很好地兼容、并工作在不同的浏览器和操作系统上,因此他们可以通过Selenium来创建各种回归性测试、自动录制动作、并自动生成不同语言(如.Net、Java、Perl等)的测试脚本,来达到各种测目的。可以说,如果您想对某个应用程序的整体性能有所把握的话,Selenium一定是您的不二之选。
2. UFT
UFT(Unified Functional Testing)同样也是一款功能强大的性能测试工具,它能够帮助测试人员持续监控系统的各项性能指标。UFT以VBScirpt为内嵌语言,支持自动化的功能测试和回归测试。无论您是想测试Web应用、还是某项服务、甚至是对各种运行环境进行测试,它都能够为您及时地提供基于不同视图的结果。此外,该工具还能够自动化地产生各种测试报告与文档。
总结
综上所述,我们在运用DevOps进行软件产品开发与测试,特别是那些性能测试时,上述提及的优秀实践和测试工具,是我们在自己的项目推进过程中,所总结出来的关键点,希望能够引起每一位开发人员和测试人员的适当重视。
原文标题:Best Practices and Tools in DevOps Performance Testing,作者:Claire Mackerras
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】