您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 系统/运维 > 正文

DevOps性能测试的优秀实践与工具

发表于:2019-01-16 作者:陈峻编译 来源:51cto

众所周知,如果研发出来的软件产品最终根本无法达到最初设计的目的,并且满是缺陷和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