{ "@context":"schema.org/", "@type":"BreadcrumbList", "itemListElement":[{ "@类型":"ListItem", "position":1, "名称":"首页", "项目":"www.lambdatest.com/" },{ "@type":"ListItem", "position":2, "name":"博客", "项目":"www.lambdatest.com/blog/" },{ "@type":"ListItem", "position":3, "name":"企业如何加快测试和发布速度?", "项目":"www.lambdatest.com/blog/How-En…" }] }
在当今的企业界保持竞争力,就必须不断地提供客户满意度。加快发布周期已经成为企业希望扩大客户群的一个关键区别。 企业测试和发布是建立在代码级加速的基础上的。它允许团队在适当的抽象水平上编写测试,以便在管道中更早地运行,更快、更大规模地进行迭代,并比以往更快地发布更高质量的代码。
但是,我们如何才能在不牺牲质量的情况下加快测试和发布周期呢?让我们深入研究网络研讨会,了解更多关于企业加速的信息。
目录
关于网络研讨会
在这次关于加速测试和发布速度的LambdaTest网络研讨会上,我们的特邀嘉宾、TaxAct公司的首席SDET和测试自动化架构师Chris Wallander和LambdaTest公司的产品和增长经理Harshit Paul合作,展示了代码级加速是如何工作的,它如何帮助加快测试创建过程并提高市场速度。
来自TaxAct的Chris Wallander已经在QA行业工作了13年以上,在测试自动化行业工作了10年以上,并有5年以上成熟的DevOps经验。在个人方面,他热衷于设计、开发和测试视频游戏。他是机器学习和人工智能的坚定实践者。此外,他还喜欢制造无人机和机器人。是的,他作为一个中世纪的装甲师被高度珍视。
现在你已经阅读了网络研讨会的概述,请看今天这个会让任何人都瞠目结舌的视频。
你可以访问我们的LambdaTest YouTube频道,了解更多关于LambdaTest网络研讨会、响应式测试、移动测试和Cypress测试的视频。
在我们进入网络研讨会的细节之前,让我们先看看网络研讨会的议程。

什么是企业?
克里斯通过解释企业加速启动了网络研讨会。他声称,企业本身有几个不同的定义。
"梅里亚姆-韦伯斯特说:"企业是经济组织的一个单位或一项活动。
它是一个组织中所有不同团体的协作混合物,共同完成一个目标。有不同的群体依赖于该组织。作为交付软件的总体目标的一部分,克里斯解释了软件开发生命周期。有不同的生命周期模型,每个模型都有一些共同的阶段。重点是QA如何加快这个速度。

作为质量保证部门,我们如何能加快这个速度?
人们通常与生命周期加速相关的一些常见项目是。
- 持续集成
- 持续交付
- 持续部署
以上是流程自动化的形式,从根本上依赖于测试自动化。克里斯详细解释了它们。
- 持续集成。最初,在将代码部署到测试环境之前,必须证明代码有尽可能少的错误。这是通过在应用程序中进行高度的单元测试来实现的,而这是QA所不能做到的。
- 持续交付。开发人员完成一个拉动请求,应用程序代码现在在主分支中,等待被部署到测试环境中。在这里,持续交付将使用流程自动化将代码部署到测试环境,然后运行任何选定的回归测试自动化,以确保代码的变化不被破坏。所需的回归套件完全成功的部署工件,并将被标记为准备部署。这将允许团队执行任何额外的测试并完成任何合规性。
- 持续部署。这是定义的最后一个阶段。它比持续交付更进一步,将变化释放到实际生产中。
然后,Chris解释了关于用测试来支持持续集成、交付和部署。当大部分的测试案例被有效地自动化时,我们几乎肯定会有太多的测试案例在每次更新时运行。这使我们回到了一个基础问题:"哪种测试对我的时间来说是最合适的?"Chris用基于风险的测试来回答这个问题。
还请阅读。什么是持续集成和持续交付(CI/CD)?
基于风险的测试
我们知道,除非我们有无限的时间和金钱,否则我们无法在基于风险的测试中运行100%的测试。当选择自动化来执行我们的管道时,我们不仅要考虑外部客户的需求,还要考虑开发和即时系统的依赖性。
通过这些管道的执行,我们可能能够执行所有快速变化的测试脚本。当它发生时,我们需要有一个策略来确定哪些进入管道,哪些不进入。这通常是通过识别应用风险和创建风险等级来完成的,你可以将这些风险等级分配给你的测试用例进行管道过滤。
还可以阅读。常见的风险分析和管理策略
有多种方法来执行基于风险的测试。
- 失败的可能性:这可以通过标准的对话或通过电子邮件投票来完成。软件开发生命周期取决于对话方式。

- 失败的影响:失败的影响可以是轻微的,可见的,或中断的。当团队评估测试用例时,每个测试用例都落在九个黄色方块的某处。

- 优先级网格:优先等级从1到5不等,取决于测试的最终安放位置。最关键的测试,1,将首先进行,其次是最不关键的测试,5。在持续交付期间,最终可能只运行所有五个等级的子集。通常情况下,在管道执行期间,在8分钟或更短的测试时间内得到完成。这是持续交付过程中非常常见的做法,用不同程度的测试执行堵塞这些执行差距。

什么是代码级加速?
测试自动化金字塔是作为你的测试工作应该如何分配的一般指导原则而创建的。基于自动化的难易程度和测试脚本的可维护性,你考虑投资回报率。它绝不是完美的。然而,作为一个准则,它是一个很好的开始,只要我们理解它将完全取决于我们的应用程序或被测系统,工作流程,甚至我们目前的测试策略。
其目的是把你的测试的物理账户来寻找潜在的问题。有些人在这个基本架构上进行扩展,包括手动测试或将测试类型细分为组件或集成级测试。这些都不是不正确的回答。使用对你和你的公司最有效的方法。
还可以阅读。通过在生产中调试和测试提高产品发布速度

- 第一个金字塔代表标准的金字塔,其中单元测试比API和UI测试占有更大的空间。这个金字塔的目的是在单元测试层面上花更多的精力来防止错误,因为单元测试的成本较低,而且容易修复,而不是等待它们在API和GUI层面上出现。
- 第二个金字塔代表一个几乎没有单元测试的公司。在这里,GUI测试比API和单元测试占有更大的空间。如果应用程序很容易改变,这可能会在眨眼间发生。除非遵循很多极好的做法,否则GUI测试将需要大量的维护。这个金字塔以其巨大的投资回报率和可维护性而闻名。
- 最后一列在所有三层之间有相等数量的测试。这是对未来维护或其他问题的测试的警告。这是其他两个金字塔之间的过渡阶段。这些是你投资回报的一些完美情况。
第一个金字塔,速度最快,投资回报率最好,是企业加速的目标。这是由于测试数量是量身定做的。这些金字塔并不代表所有的测试工作,因为它们是基于执行速度和易于维护。
UI加速
说到加速,单元测试是运行最快的,其次是API,最后是后端GUI自动化。单元和API基本上是快速的,不需要任何加速策略。然而,UI测试需要大量的时间和工作。下面是Chris给GUI测试的一些提示。
还可以阅读。关于UI测试你需要知道的一切 - LambdaTest
使用快速选择器
元素定位器在GUI测试中经常使用。ID 是最快的命令,但它要求应用程序的元素有唯一的、静态的、不改变的ID。在大多数情况下,这是自动化的最佳实践,因为它允许开发团队在不破坏脚本的情况下重组页面。

接下来是 "名称 "属性。如果你没有ID但有name属性,它们是第二好的选择,而且是静态的和唯一的。名称属性比XPath快,但CSS 选择器则不然。
最可选择的或最通用的类型是XPath。然而,它是最慢的,但它们允许你在元素位置上有极大的创造性。根据它们的实现方式,它们有可能是很脆的。当开发者改变他们的应用程序的布局时,这可能会打破。XPath通常只在没有其他选择的情况下才被利用。
还可以阅读-Selenium WebDriver中的定位器及实例
隐式与显式与流畅的等待
Chris解释了Selenium中的等待类型,即隐式、显式和流畅的等待。显式等待指示你的脚本等待一定的时间。隐式等待(Implicit wait)指示你的脚本等待,直到某个元素出现,或者直到某个特定的时间段过去。当定时器过期时,它会抛出一个异常并导致测试失败。Fluent几乎等同于显式,但我们可以改变寻找元素的频率。
例如,与其每500毫秒检查一次,不如每四秒检查一次。现在,作为测试人员,我们想避免显式等待。这是由于你的应用程序可以快速加载的情况下,你仍然会继续等待,使你的执行时间膨胀。Selenium中的大多数等待场景都使用隐式等待。
JavaScript页面完成
当Selenium导航到一个页面时,它通常不会暂停以验证该页面是否已经成功加载。总之,如果你在页面还在加载时试图马上点击什么,你会得到一个异常。这是很多Selenium松散性的来源。
在与页面交互之前,验证页面是否已经完成加载是一个简单的方法,但对你的应用程序可能有用也可能没用。你可以在Selenium中用页面的JavaScript执行器来执行这个任务。简单地使用javascript来确保页面已经完成加载。
JavaScript导航
下面是Chris关于JavaScript导航的一些观点。
- 绕过你在GUI层面上绝对需要的东西。
- 如果你没有API可以利用来设置测试数据,并且有一个JS应用,那么就很有用。
- 测试数据设置的增强。
- 每年有可能节省数千小时。
Chris为那些喜欢每个测试案例的人提供了一些有趣的数学计算。

平行化
平行化是下一个伟大的步骤。用于执行并行化的编码语言和技术完全取决于公司。这可能包括实施Selenium网格或与专门从事测试自动化并行化的基于云的软件即服务提供商合作。
在讨论这个概念的时候,重要的是要记住,完全有可能弄错。当人们考虑并行化的时候,它的成本比它节省的更多。他们认为他们可以把他们长期运行的自动化测试、共享数据的测试、以及依赖数据的测试结合在一起,一锅端。为了使测试脚本的并行化取得成功,必须做几件事。
首先,测试脚本应该尽可能的简明。相应的解决方案已经描述过了,JavaScript导航是跳过应用程序中非必要元素的一个典型例子。平均来说,一个好的测试脚本在本地机器上的运行时间不超过2分钟。当使用基于云的交易时,由于在互联网上的传输,你应该期望多花一点时间。然而,我们的想法是在两分钟内看完这些微小的测试。
第二,测试必须是独立的,才能完全自给自足。这指的是拥有一个测试数据设置对其他测试的结果没有影响,对其他测试的执行时间或应用程序的状态没有影响。这表明,一个测试用例是依赖于结果的,而且必须按照指定的顺序进行轮换,这不是一个好的选择。如果一个测试用例改变了数据库的状态,以至于影响到你购物车中的第二个用户,那也是不合适的。
还可以阅读。什么是并行测试,为什么它很重要?
最后,测试必须被原子化地剥离到最小的不可还原的单元,这意味着,尽管普通人可以通过程序一个接一个地看无数的东西,但测试必须只关注这一件事。
最后的测试将完全不同。这些测试的目的是用大量的简单测试在应用程序上构建一个热图。使用代码抽象提前构建基础设施。这在一些应用程序中似乎是一个模块,取决于软件。
作为一种变通方法,我们可以继续大幅利用自动化脚本来快速填充东西。将这三者结合起来使用,可以让现代的并行化工具收集所有的测试,将它们以任何顺序分配给测试代理,并超快地迭代场景。
克里斯再次为那些喜欢节省每个测试案例的人提供了一些有趣的数学方法。

JavaScript GUI控件
建议你不要对数据输入字段使用Selenium,除非你正在积极测试它们。这将为你节省大量的时间,因为你将用JavaScript来填充字段,而不是利用Selenium SendKeys。
Selenium SendKeys经常像真人一样向组件中打字,但这需要时间,所以查看一个字符进入一个字段并不像简单地将文本框的值改为你需要的那样快。然而,我不会用这个方法来测试功能,因为它不会触发字段上可能存在的任何按键事件。
这种方法也可以用来点击按钮,配置下拉菜单,或测试你目前没有测试的任何其他浏览器端控件。当大多数人努力加快他们的GUI自动化时,他们通常从这个策略开始。

服务虚拟化
缺少或无法访问的API由服务虚拟化来处理。服务虚拟化是一个虚构的服务的概念,它从一个应用程序拦截特定的请求,并用你事先指定的数据来回答。你可以避免使用第三方的API,甚至可以通过使用这些解决方案之一将数据注入你的数据库进行测试。
然而,这确实需要彻底了解你的应用程序的所有依赖性和要求。因为你将在服务虚拟化技术内配置这些业务标准,以模拟下游应用程序或API将如何响应。这使得闪电般的执行成为可能。

最后,Harshit讲述了LambdaTest平台。他在深入探讨了企业和发布速度之后,介绍了LambdaTest平台及其一流的能力。
关于LambdaTest
LambdaTest是一个跨浏览器测试平台,它使你能够在3000多个浏览器和浏览器版本的在线浏览器群中测试你的网站,而无需建立一个内部设备实验室的麻烦。凭借其在线Selenium网格,您不必担心维护高大上的设备实验室。LambdaTest广泛提供实时测试、自动化测试、真实设备上的测试和HyperExecute。
尝试HyperExecute--最快的测试执行云平台

它支持Selenium、Cypress、Appium、Puppeteer和Playwright作为一个框架,允许你在3000多个浏览器和操作系统组合上进行测试。
LambdaTest支持多种浏览器,包括最新版本的Chrome、Firefox、Safari、Opera、IE等。他还全面介绍了LambdaTest平台,包括令人兴奋的屏幕截图测试和地理位置测试。最后,他还介绍了LambdaTest的第三方工具集成以及用户如何使用自动化仪表盘中的数据。
在压轴节目播出之前,Harshit和Chris回答了观众的几个问题。
问答环节
平行性对使用的成本/资源有帮助还是有阻碍?
Chris:例如,10个测试的顺序可能在第二个测试中失败。如果它是一个关键的,在修复问题之前不需要进行测试。而在平行运行中,其他8个会不必要地运行。
然而,有一个行业标准的测试自动化策略可以用来做和处理这个问题,这就是基于风险的测试与管道执行中的测试过滤相结合的组合。
这方面的一个例子是,你将只运行那些将验证你的应用程序的状态或构建验证或烟雾测试,取决于你怎么称呼它。如果这些测试通过了,验证了你的应用程序在你的默认配置下成功运行,你就可以测试其他的东西了。
因此,作为持续集成和持续交付的一部分,一个真正常见的事情是他们会测试,例如,Chrome或Safari,无论他们的用户群最常使用什么,然后作为预定的夜间执行的一部分,他们会测试其余的浏览器并行化。
这样,在他们开始寻找javascript错误之前,他们已经知道当前的稳定应用程序将通过或至少在功能上通过这些测试。
在LambdaTest方面,Jira是唯一可供集成的应用吗?
Harshit - 不,我们在LambdaTest上有许多集成。有15个错误跟踪工具、20个项目管理工具、5个通信工具、15个CI/CD工具、8个无代码自动化工具、测试报告、第三方工具、插件和扩展。
希望你喜欢这次网络研讨会!
我们希望你觉得这次网络研讨会内容丰富。完整的录音可以在LambdaTest的YouTube频道上找到,以防你错过。请将此文章转发给任何有兴趣了解企业加速测试和发布速度的人。订阅我们的周报,Coding Jag,以了解测试自动化领域的最新动态。
测试愉快!
