译者|李睿评论|梁策孙淑娟在分析开发代码的质量和可靠性时,测试的作用非常重要。代码质量的任何小缺陷都可能导致项目灾难性地失败。由于其重要性,许多DevOps(开发运营)团队在开发过程的早期就开始测试——而不仅仅是在开发项目结束时,或者在质量保证(QA)完成部署前的最终检查之后。根据统计机构Statista的数据,DevOps在持续集成(CI)/持续交付CD工作流中的采用率达到了惊人的62%,在开发环境中达到了60%。随着越来越多的行业采用最新技术,企业也在不同程度上见证了这些技术的采用。本文将解释为什么在DevOps流程的早期测试代码至关重要,并将通过示例重点介绍DevOps测试的具体方法和实践。让我们从基础开始:传统测试是如何工作的?传统的软件测试通常包括回归测试,其中每个功能测试都在更新完成后执行。通过持续交付,开发人员可以在准备就绪后立即部署更新。这通常意味着需要经常部署新功能。开发人员正在使用更频繁的A/B类型测试来确保这些新功能不会破坏现有代码中的任何内容。开发者会为部分用户发布一个功能版本,然后为另一部分用户发布另一个版本,然后再回到旧版本。这个过程一直持续到所有版本都被部署并且可以确定哪个是最好的,或者直到原始版本被证明比其他迭代更好。传统测试方法的问题传统上,开发人员执行单元测试或功能测试。这些测试适用于源代码,但不包括与系统上线后如何运行相关的任何内容。这些传统测试不会对每个更改上线时的行为提供太多反馈。DevOps是一项新的尝试:当公司将测试纳入其开发和运营流程时,开发和运营这两个团队开始更紧密地合作。DevOps测试如何工作?DevOps的过程就是让开发者的产品尽快到达用户手中。测试是流程的一部分,对于防止生产环境中的错误至关重要。但是,在执行良好的DevOps流程中,测试不会单独发生。相反,测试工程师从第一天起就与开发人员一起工作。这允许在内容上线之前对其进行修复,即使它尚未准备好发布或未通过质量保证(QA)。测试自动化工具可以帮助公司改进他们的反馈循环,将周期时间和质量保证工作减半。基本思想是,如果企业将他们的开发(Dev)和运营(Ops)团队聚集在一起,他们可以更快、更可靠地交付软件,并使用更少的资源。这可能比快速上市或持续交付带来更大的好处。我们讨论测试问题,无论其速度或部署方式如何,都会带来更好的结果。DevOps测试的业务优势1.错误更少错误总是会导致问题——它们不仅会让用户不满意,还会导致生产力损失和员工流失率上升。进行自动化测试可确保您的开发团队在发布之前对其发布充满信心。这意味着错误会在它们成为大问题之前及早发现并修复。同时,在开发周期的早期发现这些问题也意味着在以后需要更新或升级时减少麻烦。2.更快的软件交付无论是快速发布错误修复还是重大升级,自动化测试过程都将帮助企业更快地发布软件。因为团队可以自动化QA流程,所以公司不必等待人工来做。而对于一些开发框架,员工只需要具备一些软件开发知识,就可以从头开始创建功能齐全的测试。越早交付企业功能,您就会越早看到客户满意度结果,从而获得更高的收入。3.加快上市时间加快上市时间不仅仅是企业能够以多快的速度将功能提供给客户。因为如果每一个新版本都漏洞百出,那么企业的业务也会受到影响。快速上市已变得比保护您的品牌和声誉以及获得超过竞争对手的市场份额更为重要。4.更可靠的版本可靠性是企业最重要的资产之一。有问题的版本还会对其品牌和声誉造成无法弥补的损害,更不用说保留客户了。事实上,根据Failurey的一项调查,即使是应用程序中的少量错误也会对客户满意度产生50%的负面影响。DevOps测试可确保软件版本更加可靠,并且没有缺陷和错误。标准DevOps测试实践如何展开?不可否认,DevOps测试是现代软件开发不可或缺的一部分,而且它是更先进的工具可以产生重大影响的领域之一。以下是改进DevOps流程和提高质量的方法需要考虑的三件事:测试驱动开发(TDD)、自动化和开源软件。测试驱动开发——与DevOps的任何部分一样,测试应该渗透到整个应用程序设计中。测试驱动开发不是在编写代码后构建测试,而是在编写代码时发生,从而推动团队快速前进。自动化——自动化测试有助于以较低的成本交付优质的产品。通过利用像Jenkins这样的开源工具,组织可以通过将自动化集成到现有的DevOps流程中来创造更多价值,而不是围绕它创建一个全新的流程。最重要的是,即使公司QA人员不堪重负,自动化测试也将有助于保持开发的进展。开源软件——不乏自动化测试软件,虽然像SeleniumWebDriver这样的免费替代软件可以提供更大的灵活性和更具成本效益的功能,但许多企业仍然依赖专有解决方案。全球流行的Top5DevOps测试工具一、SeleniumSelenium是一个用Java、Python等语言编写的不同的软件测试框架。它适用于通过自动与用户界面(UI)交互来编写基于Web的测试应用程序。Selenium支持不同的浏览器,例如Firefox、Chrome和InternetExplorer。它可以用Java、C#和Python等多种编程语言编写测试。2.AppiumAppium是一个先进的、开源的测试自动化框架,用于编写自动化测试,尤其适用于原生和混合移动应用程序。Appium允许企业使用Java和Python等客户端语言创建测试。该框架支持多种应用平台,包括iOS和Android。使用Appium的优势在于您不需要root手机即可运行自动化测试。但是,Appium只能在真实的移动设备上运行,不支持模拟器。3.SoapUISoapUI是一个免费的开源网络应用程序测试工具,提供功能、回归和负载/性能测试。企业可以使用它来创建自动化测试来检查RESTfulWeb服务。它带有用于创建SOAP和HTTP测试以及数据驱动测试功能的内置库。用户界面易于访问并具有丰富的功能集。它通过自定义库支持Java、C#、Perl、Python等多种语言。4.JenkinsJenkins是最流行的持续集成和交付工具之一。如果您不熟悉配置管理,它也是一个很好的入门工具,因为它的用户界面比其他类似产品更简单。Jenkins基于Java构建,这意味着它支持所有主要操作系统(Windows、Linux和macOS),并且可以在任何具有强大网络支持的云平台上良好运行。5.JMeterJMeter是一个高性能的Java桌面应用程序,旨在测试功能行为和测量性能。最初设计用于测试Web应用程序,现已扩展到其他测试功能。该软件在BSD许可下免费提供,并且是开源的。JMeter与所有支持JavaSE(操作系统特定包)的操作系统兼容。构成JMeter的所有文件都是可移植的,您可以在任何环境中运行它而无需安装客户端或服务器组件。结论DevOps测试自动化有两种基本方法。第一个是测试驱动开发(TDD),首先编写测试,然后基于它们编写代码。第二个是行为驱动开发(BDD),企业开发测试以反馈软件应该如何运行,而不仅仅是确保它能正常工作。驱动开发(BDD)似乎最适合DevOps测试,因为DevOps的重点是使软件开发人员与运营团队保持一致,以便他们可以更快地一起部署。驱动开发(BDD)允许团队成员和测试人员进行一组测试,这些测试描述了他们的更改如何影响整体系统行为。因此,如果您已经在实践DevOps,就没有理由不实践驱动开发(BDD)。原标题:TestinginDevOps–TheBasicandCriticalThingsYouNeedtoKnowbyManavJain
