国际资讯 | 微服务应用促进左移性能测试
作者:By Stan Gibson, Technology Journalist
出处:Special Report: Why Performance Testing is Crucial Today,by InformationWeek Aug 05, 2020
链接:
https://www.informationweek.com/whitepaper/software-developers/software-as-a-service/special-report-why-performance-testing-is-crucial-today/419453?download=true
正确执行性能测试,同时避免过度测试,将使您的组织具有显著的竞争优势。
每个人都记得他们的第一次阅读经历。对于当今的许多年轻人来说,它是由麦格劳·希尔(McGraw Hill)开发的在线教科书和阅读指南Reading Wonders。Reading Wonders远不止是一本电子书。它还是一个基于Internet的分布式应用程序。它使用Docker容器,Kubernetes编排构建,并在Amazon Web Services(AWS)弹性容器服务(ECS)上运行。创建如此复杂的应用程序并确保其可以完美运行并非易事。在整个开发周期中都需要严格的性能测试。
“一切都是微服务。还有更多可以被破坏事情。因为处理多个实体,出现性能问题的可能性更大。”McGraw Hill的性能和可靠性工程经理Vivek Koul说。基于微服务的应用程序的出现使Koul计划在开发过程的早期进行性能测试,即所谓的“左移”测试。“当开发人员更改代码时,他们希望立即进行测试。使用左移方法可以很容易地在流程的早期解决性能问题。”Koul解释。
性能测试分为六类:负载、耐用性、容量、可扩展性、峰值和压力。性能测试以前是开发过程的后期阶段,通常旨在验证应用程序可以同时处理大量用户。这种方法在当时还算不错。但是在开发项目后期分解一个复杂的基于容器的应用程序并将其放回到一起以使其起作用时,性能测试就行不通了。
“测试容器和Kubernetes构建的应用程序的方式与测试传统的单片应用程序的方式完全不同。”Aberdeen的研究主管Jim Rapoza说。“许多应用都是短暂的——在有人尝试使用它们之前,它们是不存在。您可以只从三行代码开始,但是当用户与它们交互时,一百个功能可能会开始运行。”他说。
Gartner高级研究主管Joachim Herschmann表示:“性能测试的重点是后端-应用程序服务器以及数据库查询的速度。”“今天,我们处于高度分散的微服务世界。应用程序具有复杂的Web和移动前端。后端包括许多可能来自Google或第三方的组件和服务。”
性能测试有以下六个方面:负载、耐用性、容量、可扩展性、峰值和压力。
451 Research的高级分析师Nancy Gohring表示,左移重新确立了测试在开发过程中的重要性。因为花费了太多时间,放弃了性能测试不是最好的主意。“在左移后面的想法是在整个开发过程中插入负载测试。”她说。
应用程序首先需要考虑用户的体验。这使得性能测试产生了这种巨大变化。因为用户在各种各样的台式机,移动设备和智能电话设备上使用不同的浏览器。所以开发人员必须从开发过程的开始就要证明应用程序在所有这些设备上均能很好地运行。
“我们进行过超1,000种独特的浏览器和原生组合测试。”巨型零售商的研发部门沃尔玛实验室(Walmart Labs)软件工程高级总监Claude Jones说。Jones负责支持沃尔玛客户全渠道体验的技术。他的团队对软件组件进行了性能测试,并在沃尔玛的各个部门进行了端到端的客户体验应用程序,无论是台式机,移动设备,Web,iOS还是Android。
Herschmann说:“ 过去出现过IT运行一切良好。但从最终用户的角度来看,情况并非如此。”现在,JavaScript繁重的Web前端可以处理很多工作。只关注后端性能是不够的。”
Rapoza认为,微小的延迟对应用程序也可能是致命的。“过去,如果加载时间超过三秒钟,人们就会放弃打开。现在加载要求的时间更少了,对于移动应用程序来说更紧急。”Rapoza说。“即使您是一家小应用商店,用户也会将您与亚马逊、Facebook和苹果进行比较。他们希望使用其他任何应用程序也能正常工作。”
应用程序微小的延迟也会引起损失。例如,英国广播公司(BBC)发现网站加载的每一秒钟都会导致10%的用户流失。同时,Pinterest发现,减少40%等待时间,搜索引擎流量和注册量会增加15%。
在动荡时期,左移测试正在进入开发领域。这是持续测试、DevOps和DevSecOps趋势的一部分。左移测试过去十年的大部分时间里一直在进行。它通常包含功能测试的特征,以前是一个单独的领域。“功能测试和性能测试已经融合在一起。如果您不知道功能测试在生产中的工作方式功能测试有什么好处呢,反之亦然?”软件即服务(SaaS)营销自动化服务提供商Braze的工程经理Zach McCormick说。
随着开发人员左移,他们将从人类创造性、强大的工具、人际关系动态和业务管理(即应用程序开发)的复杂融合中,发现行之有效的方法。
一、人员和流程
左移是一种观念模式。沃尔玛实验室的Jones说,除了允许产品【经理】和企业将测试纳入软件开发生命周期(SDLC)的一部分之外,开发人员还需要更多的责任感来掌控所测试的内容。要让多个参与者参与,就需要明确的规则供不同的参与者遵循。他建议:“一定要设置明确的最佳实践、准则和标准,以帮助组织进行调整。”
同样,麦格劳·希尔(McGraw Hill)的Koul强调了团队合作的必要性。Koul说:“您需要确保性能工程师能够适应您的开发方式。团队之间的协作是关键,不能成为项目开发的瓶颈。当您从单一应用程序迁移到微服务时,会有一条学习曲线。所以还需要新的技能和程序。”
麦格劳·希尔(McGraw Hill)解释已按以下四个阶段解决。首先,左移测试需要在开发过程的早期对隔离的微服务进行测试。其次,微服务彼此集成并经过测试;第三,进行端到端测试,包括用户的浏览器界面;第四,执行混沌测试,其中应用程序面临随机事件。“混沌测试对微服务非常重要。因为它会产生异常场景。” Koul解释道。
在Braze,致力于微服务基础架构的团队专注于新型应用程序之间的相互依赖性。“优雅失败的概念是这些微服务设计的头等公民。如果其中之一发生故障,会发生什么?”麦考密克说。功能测试和性能测试的融合,以及开发和测试人员的混合,都带来了一些意想不到的可喜结果。“在跨团队的头脑风暴会议上,我们提出了规模测试的策略(性能和功能),以及改善我们的内部质量保证(QA)流程。大规模测试工具对于开发和生产中的调试也很有用。从功能上正确的性能测试中可以赢取很多。”McCormick说。
二、工具与技术
根据Jones的说法,他面临的最大挑战是代码检测——无论是测试前端、后端,Web还是本机平台,都要掌握大量要衡量的指标。每个可能都需要单独的工具。Jones说:“数据和工具的激增使得很难根据性能测试策略进行调整。”他建议要标准化一套通用的工具来捕获、测量和分析测试结果,从而在开源工具和定制工具之间找到适当的平衡。
据沃尔玛实验室Jones介绍,在处理各种可能的用户配置时,沃尔玛实验室通过其数据管道处理数百万条记录。沃尔玛实验室还具有紧密集成的定制测试平台。该平台使用开放源代码构建,并与它的持续集成/持续开发(CI / CD)管道绑定在一起。
Braze 还发现定制方法是有利的。“本土工具是当今的明星,”McCormick说。他说,尽管DIY方法花费了时间和精力,但从长远来看,专门为开发人员的独特需求量身定制的工具通常会产生最佳和最经济的结果。
McCormick说,测试大量正确和不正确的用户请求非常重要。“特别是有一个客户发送了大量无效请求,我们对无效请求进行了极端的性能回归。发现是用户发送的格式错误。那是一次非常快速的对mem-cache的调用与2,000至3,000个对的调用之间的区别。因此,不仅要测试正确的道路,还要测试错误的情况。”McCormick建议。
Forrester Research的副总裁兼首席分析师Diego Lo Giudice表示,基于云的工具可能是左移测试的不错选择。“由于更多应用程序是云原生的。因此在云中进行测试是有意义的。因为无法在本地创建模拟环境。”他说,使用基于云的测试工具本身就是基于容器的,并且可以快速启动和扩展并节省资金。
三、左移回报
左移的从业者报告了各种各样的好处,其中最重要的是速度。在一个商机迅速出现和消失的时代,速度是成功的关键因素。Koul说:“左移为您提供了更快的反馈。发展速度大大提高。”他补充说,左移在文化方面也有好处。人们越来越认识性能。他们认为性能是SDLC的重要组成部分。将测试交给开发人员可以使他们尽早进行小规模测试,并迅速解决问题。如果您的SDLC管道中有很多功能开发由多个Scrum团队执行,那么您就必须左移。
因为Braze使其客户能够大量发送市场营销电子邮件,所以对应用程序的少量添加会导致成本快速增加。左移测试显示了哪些修改值得。McCormick说:“我们想了解发布新功能的成本。”相反,左移测试可以帮助McCormick理解算法所带来的成本节省。该算法减少了需要传输或存储的数据量。在一种情况下,Braze将RAM的使用量减少了“20%-30%”,从而使API服务器节省了超过100万美元。
左移的好处是释放了工程资源来专注于功能开发
在沃尔玛实验室,左移性能测试提高了开发人员效率,节省了时间并扩大了测试规模。据Jones说,沃尔玛实验室每天记录超过625,000个自动开发人员小时,相当于进行手动测试的75,000名工程师。他说:“通过在开发周期的早期鼓励测试工作的优先级排序,再加上自动化,左移释放了工程资源来专注于功能开发。”这样就可以更早地发现问题,从而将代码投入生产的时间减少了40%-45%,并通过提供更高质量的产品来改善总体客户体验。Jones继续说,但是仅仅结果还不够。有必要衡量和传达切实的利益,确保您已概述了明确的阈值和目标,并能够洞悉公司随着时间的发展趋势。这将有助于建立对整体方法的信心。
四、结果
当今的应用程序必须快速开发。它们必须处理各种数据源和大量在线流量,并且为各种客户提供一流的用户体验。尽管沃尔玛等零售商和Braze等自动化营销提供商在数百万乃至数十亿的客户互动中都获得了用户体验。但通过应用程序实现100%的在线体验(例如ReadingWonders),这样出色的表现对于踏上学习之旅的学童也同样至关重要。少量的延迟会造成数百万美元的收入损失,或者会严重破坏学生访问、理解和保留信息的能力。左移测试使开发人员能够快速,经济高效地构建高性能应用程序,提供更好的客户体验和更快的响应时间。然而,不容忽视的是所有测试的一个简单基本目标:“最大的好处是信心,”McCormick说。
Stan Gibson
屡获殊荣的编辑、作家和演讲者,在信息技术领域拥有37年的经验。他目前是Stan Gibson Communications的负责人。