向所有柏树发烧友致意!
那些曾经与Cypress.io合作的经验的人知道,这确实是一个很棒的工具,可以为您的项目中开发和实施高质量和可靠的测试提供了绝佳的机会。因此,我们剩下的一切都是能够充分利用这些机会。
事实是,在过去的几年中,我遇到了各种编写测试的方法,有时用根本不同的模型和模板用于建筑测试场景和测试案例。而且经常发生已经书面测试需要进行认真的改进甚至进行重组,主要是为了确保其可靠性并减少运行它们所需的时间。显然,作为质量保证工程师,不断评估和优化测试过程至关重要,以确保最高的质量保证水平。
在我的观察中,问题通常是由于对测试框架的内置命令的深入了解而引起的,而且通常是由于无法应用基本的编程语言能力在测试中。这促使我写了一系列文章,其中我分享了一些用于优化柏树测试的技术,这些技术利用了简单而大多数熟悉的JavaScript功能。
。在最常见的错误中,可以在质量保证工程师反复对不同元素上执行完全相同的动作的情况下确定一个单独的组,无论是形成字段,按钮,链接还是任何其他UI元素。通常,根据执行的测试元素或操作,它们通常被分为单独的测试。这导致测试数量的急剧增加,这进一步加剧了在之前放置的多种先决条件和和 aftereach 钩子,这些钩子一遍又一遍地重复由于执行了测试套件。在某些情况下,这种不合理的遗漏最终导致运行测试所需的总时间大幅度增加。
通常,重要的是要注意,这种错误的动作与 dry 原理不符,这可能会使测试更难维护,运行较慢,并且更容易出现错误和不一致之处。
因此,在第一篇文章中,我想讨论使用基本JavaScript loops 在柏树测试中反复执行的动作,事件或断言的最佳方法,以避免上述上述 - 提到不感恩的情况。
在测试过程中分析了最常见的迭代作用案例后,我确定了 9常见方案,其中循环使用最有效。当然,这不是详尽的列表,因为其他情况可能会根据指定的测试方案而产生。接下来,我计划详细检查这些方案,并用特定示例进行了循环如何显着帮助您优化您的柏树测试。
1.通过一组项目或元素迭代
在一组项目或元素中迭代时,循环会派上用场来执行重复性任务。例如,如果网页上有多个复选框,则可以使用循环选择或取消选择每个复选框。可以通过设置启动和结束值来控制循环,从而使代码更加清洁和高效。通过在这种情况下使用循环,您可以确保根据需要对所有项目或元素进行验证或与之交互。
在此示例中,我们使用Array.from()
方法将Cypress cy.get()
命令返回的类似数组的对象转换为标准数组。然后,我们使用forEach()
循环在每个元素上迭代并执行一些动作。
2.重复具有不同输入或预期输出的测试
例如,如果页面上有多个形式,则每个表格需要不同的输入,则可以使用循环来对每个表单进行相同的测试。可以使用条件语句来控制循环,以验证每个输入的预期输出。这种方法节省了时间并减少了测试多种情况所需的代码数量。
在此示例中,我们使用A for 带有破坏性的循环重复具有不同输入和预期输出的测试。我们定义一个对象数组,每个对象都具有输入和预期的输出属性,并使用循环在每个对象上迭代并执行测试。
3.浏览多个页面
赛普拉斯测试可以通过实现循环检查每个页面的内容来浏览Web应用程序的多个页面。可以通过有条件的语句来调节循环值,以确认下一个或上一页的存在。这样的技术不仅可以增强代码的组织,还可以提高其可读性。
此示例演示了如何使用forEach()
循环在多个页面中导航。该代码创建页面URL数组,然后使用forEach()
循环访问每个页面URL并断言该页面已使用Cypress的should()
方法正确加载。
4.测试多个用户帐户或角色
如果Web应用程序中有多个角色或用户帐户,则可以使用循环来测试每个角色或帐户,通过登录每组凭据。可以通过有条件的语句来管理循环,以确认每个用户角色或帐户的预期结果。
在此赛普拉斯测试中,使用 为 循环的值是多次使用不同的数据集多次执行相同的测试方案。在这种情况下,测试方案正在使用特定用户的凭据,执行特定角色的操作,然后登录。循环在用户数组上迭代,并为数组中的每个用户执行测试方案。这节省了为每个用户帐户或角色编写单个测试的时间和精力,并允许在不同用户方案下对系统进行更有效,更全面的测试。
5.使用不同的配置进行相同的测试
如果Web应用程序具有多种配置,则可以使用循环对每个应用程序进行测试。可以通过实现定义每种配置的预期结果的条件语句来确定循环。
在此测试中,使用 for 循环的值是通过减少代码重复来优化测试执行。通过在configs
数组中迭代并使用配置数据来设置测试环境并执行测试,我们可以避免重复每种配置的相同设置和测试代码。
这不仅使测试代码更加简洁,更易于阅读,而且还降低了复制和粘贴测试代码时可能发生的错误和遗漏的风险。此外,通过将配置数据与测试代码分开,我们可以轻松添加或删除配置,而无需修改测试代码。
6.动态生成测试数据
循环可用于动态生成测试数据。例如,如果需要创建多个用户帐户,则可以使用循环来生成每次迭代的一组用户数据。可以通过设置启动和结束值并指定要创建的用户数来控制循环。
这里使用forEach()
循环在testData
Object中的每个键上迭代并为每个输入执行测试。该循环使代码能够避免为每个输入重复相同的测试用例,而是对每个输入进行相同的测试,从而节省了时间和精力。
通过使用循环在testData
Object上迭代,可以轻松添加更多的测试用例而无需复制代码。这使代码更加有效,并在添加新测试时降低了错误的可能性。
7.通过一组测试步骤进行迭代
此外,在测试Web应用程序时,可以使用循环通过一组测试步骤迭代。例如,如果测试应用程序涉及多个步骤,则可以使用循环重复每次迭代的步骤。可以使用有条件的语句来管理循环,该语句指定每个步骤的预期输出。
在此柏树测试中,每个步骤都是一个对象,其中包含有关在测试过程中需要执行的操作的信息,例如单击按钮或输入输入字段。通过使用loop forEach()
通过步骤数组迭代,测试可以依次执行每个操作,并且使用较少重复的代码执行。
在循环内,测试检查每个步骤对象的动作属性,以确定应执行哪些操作。根据操作的值,测试将使用其他柏树命令执行操作。例如,如果单击操作,则测试将使用cy.get().click()
命令模拟按钮。
8.在不同环境中测试相同的功能或行为
循环可用于在不同环境(例如多个屏幕分辨率或浏览器类型)上测试相同的功能或行为。例如,如果需要在不同的浏览器或屏幕分辨率上测试Web应用程序,则可以使用循环测试每种配置上的应用程序。可以使用条件语句来控制循环,以验证每个环境的预期输出。
在循环中,测试使用cy.viewport()
命令设置了视口大小,以匹配当前环境的宽度和高度属性。以这种方式使用循环可以使测试多次以不同的配置运行,而无需复制相同的测试代码。这可以使测试更有效,更易于维护,尤其是在有许多不同的环境进行测试时。
9.等待元素出现多次
在这种情况下,循环可用于等待元素在网页上多次出现。例如,如果网页的加载旋转器在不同的交互过程中多次出现,则可以使用循环等待旋转器每次出现时都会消失。可以通过设置最大等待时间或指定信号循环末端的条件来控制循环。
在此示例中,我们使用while
lolop重复检查页面上的带有ID element
的元素。循环将继续运行,直到找到元素或达到最大恢复次数为止。使用这样的循环很重要,因为它允许我们处理可能不会立即出现在页面上的元素,或者网络或服务器延迟可能导致元素仅在一定时间后出现的情况。如果没有循环,即使元素最终出现在页面上。
结论
因此,我们已经确认,在柏树测试中有许多有用的循环应用,可显着提高测试效率,减少在测试运行上所花费的时间并增强测试覆盖范围。总体而言,循环是在柏树中自动化测试,改善过程并节省时间和精力的重要工具。在我们的下一篇文章中,我们将探索其他可以帮助优化柏树测试的JavaScript功能。
所有提出示例的源代码可以在GitHub上的相应的repository中找到。
感谢您的关注!快乐测试!