当前位置: 首页 > 科技观察

为CI-CD构建高性能测试_0

时间:2023-03-13 02:32:55 科技观察

【.com速译】小伙伴们,还记得小时候听过的故事《三只小猪》吗?面对大灰狼的进攻,唯一能盖好房子(Infrastructure)的就是第三只小猪。如今,面对各种高速的持续集成和交付需求,我们也需要搭建一个具有自动化特性的基础环境,以快速进行各种高性能测试。下面我们就来看看如何通过目标、技术、团队的准备,在快速成长的环境中实现敏捷的高性能测试和发布。定义高性能测试从理论上讲,那些具有高增长特征的创业公司最渴望高性能测试。他们通常具有以下“敏捷”特征:混乱——需要适应快速变化的内部和外部环境。耗时更少——所有问题都需要全体员工的关注,需要及时解决。资源少——现有资源有限,需要善于从外部“借势”,促进现有项目的整合和交付。市场压力——需要了解和评估外部风险,以快速调整内部策略。奖励——善于发现小改进,及时反馈并鼓励整个团队。为什么要进行高性能测试?纵观整个行业,应用业务技术在过去十年间发生了翻天覆地的变化:使用范围——目前的应用服务往往可以运行在多个平台(Web应用端,或者移动设备),而不是一个专有应用,或者单一浏览器。发布频率——我们经常按需发布应用程序。流程——我们已经从瀑布方法转向持续交付。框架——过去的单一堆栈内部部署软件模型已经转变为当今的开源、基于云的开发和交付模型。总之,我们沿用了十年的“最后测试”模式已经行不通了。我们正在构建一种新的测试模式。如何实现高性能测试为了满足快速增长的环境需求,软件团队需要尽早了解现有情况,以解决各种矛盾和问题。例如:可以用思维导图来形象化情况,或者把短期目标和长期目标分开,让功能团队专注于测试,框架团队专注于系统的长期架构。另一个值得关注的目标是:如何通过测试左移,尽早发现缺陷。为此,我们需要了解现有的工具和需要添加的工具,软件质量的行业标准,团队目前在楼宇自动化架构方面的实力,以及如何通过人工智能和机器学习的支持来提高效率(毫升)。建立团队接下来,让我们讨论如何建立一个高性能的测试团队。过去,我们依靠专门的质量保证(QA)服务团队。今天,我们需要配备集成Pod的真正敏捷团队。质量工程师作为他们的团队资源,在整个开发和交付过程中提供协助。在团队中,我们需要有人熟悉行为驱动设计(behavior-drivendesign)和测试驱动设计(test-drivendesign),有人会选择和使用自动化工具,有人需要考虑design-for-可测试性。由于大部分的测试自动化都会涉及到框架,所以我们需要熟悉构建代码的技能集,通过自动识别元素定位器(self-identifieselementlocators),为自动化控件构建hooks,进而确保每一个Build-为自动化建立一致性和可重复性。测试自动化过去,我们需要从一家供应商处购买一套完整的测试工具。如今,开源解决方案为自动化提供了丰富的资源。开源方法不仅可以降低维护成本,还可以让您更快、更轻松地交付可扩展的软件产品。作为开源工具的“衍生品”,用户社区通常可以为某些工具提供最佳实践,以及各种有价值的经验教训。通常,我们可以将软件部署过程的以下几个方面自动化:Action断言初始化和清理数据建模和模拟配置各种安全建模抽象包和帮助API使用各种面向未来的功能本地和云端设置速度各种调试功能跨浏览器仿真器和真机内置报告和插件行业标准今天,对于自动化测试,行业已经基本形成了以下四类标准:质量——至少要能够通过所有90%的测试。运行时间——所有测试的平均运行时间应该在两分钟以内。平台覆盖率——五个被测关键平台的平均覆盖率。并发性——在高峰使用期间,测试至少消耗75%的可用容量。在生产环境中测试您是否考虑过将测试移至生产环境(右移)?我们提出这种方法的原因有四个:Featureflags——在生产环境中测试可以收集真实数据用于测试。流量分布——我们可以在不影响整个客户群体验的情况下,逐步引入新功能,跟踪针对测试用例获取的部分目标用户的实时数据。内部测试(DogFooding)——使用类似CDN的快速部署功能将内部用户引导至新的功能服务。净减少——通过减少额外的开销,可以使用真实数据集测试应用程序,并且可以快速定位问题,而不会影响整个客户群。简而言之,在生产环境中进行测试可以将累积的大版本转变为基于通用代码的小迭代组。它还确保客户群不会对重大升级感到不自在,因为来自不同职能部门的人员参与了测试。使用人工智能(AI)/机器学习(ML)AI/ML工具不仅可以提高整个团队的生产力,还可以满足高性能测试环境的质量要求。其中,Applitools是一款AI赋能的测试工具。它使用自动化视觉AI进行各种回归视觉测试,自动验证页面的提交,从而帮助企业以更低的成本更快地发布软件项目。例如:某医药网站有数百页介绍药物适应症和注意事项。为了保证这些页面的一致性,我们可以使用Applitools来验证。它可以在不到12分钟的时间内完成完整的视觉回归,并运行350个测试用例和2500次检查。而如果我们使用人工验证,则需要六个多小时。ReportPortal.io作为一个统一的自动化测试平台,可以实现报表的采集、分析、可视化,并集成各种测试框架,包括:TestNG和Selenium等。在实践中,Reportportal.io可以展示测试在不同时间的运行情况。一天,发现错误,并帮助团队无缝发布和改进他们的统计数据。同时,Reportportal.io中任何失败的测试用例都可以作为测试结果日志,直接链接到Reportportal.io用户界面。此外,我们可以结合使用行为驱动设计(BDD)来描述被测功能所需的行为,以满足客户对高性能和高可用性的要求。设定质量目标在快速发展的环境中,我们需要提前设定软件质量目标以满足用户和运行环境的需求。其中包括:有一个分布式QA团队,提供7*24QA支持。有专门从事测试的SDET(SoftwareDevelopersinTest)团队。有一个即插即用的强大框架,可以简化任何POC(点证明)。使用Travis(自动集成部署服务)测试的稳定管道。通过完全自动化将回归时间减少90%。搭建团队和技术栈当然,要实现上述目标,我们需要聘请一个具备开发素养和测试素养的团队,即同时具备编程和测试自动化相关能力。同时,我们在技术栈上的投入包括以下几个方面:Python和SeleniumWebDriver。BDD。在云端运行的Browserstack。用于视觉回归的应用工具。用于CI的Jenkins、Travis和谷歌无人机。Jira和TestRail的相关文档。在此基础上,我们可以确定CI/CD的四个成功标准:速度和并行化。BDD易于调试和阅读。在CI/CD中实现跨浏览器、跨设备的覆盖。启用视觉验证。为CI/CD测试设置QA期望在CI/CD环境中,测试和构建通常不同步。因此,我们需要提前设置好构建和测试的频率。您可以从以下公司制定的标准中学习:QA每小时针对最新版本运行73次测试,以检查目标站点是否正常运行。任何新构建都需要在6个跨浏览器上试运行,并确保涉及所有关键业务路径。除了一些测试,每晚还例行进行300次回归测试。当然,以上只是部分案例,大家可以根据自身业务和项目的特点,不断增加和完善。结语俗话说:工欲善其事,必先利其器。就像我们开头提到的《三只小猪》的故事一样,为了让质量工程师能够在高成长的公司中快速进行成功有效的高性能测试,我们需要了解自动化、团队人员、AI/机器学习,甚至基础设施,有针对性地提前投入、改造和提升。【原标题】AcingHigh-PerformanceTestsforCI/CD(作者:MichaelBattat)