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

SeleniumWebDriver自动化测试十大最佳实践

时间:2023-03-12 08:42:10 科技观察

【.com快译】目前广受开发社区欢迎的Selenium不仅是Web应用的自动化开源框架,还可以处理各种管理任务比如网站监控。同时,作为科技行业最流行的开源自动化测试工具,Selenium为端到端测试提供了强大的、基于浏览器的自动化测试服务。SeleniumWebDriver从一开始也很受欢迎。它不仅可以直接在浏览器上运行,还可以利用浏览器的内置功能来触发测试人员编写的自动化测试。如下图所示,SeleniumWebDriver架构由四个主要模块组成:Selenium客户端库、JSONWire协议、浏览器驱动程序和浏览器。凭借多年使用Selenium框架的经验,下面将和大家一起探讨SeleniumWebDriverAPI如何使用浏览器驱动,与真实浏览器进行交互,以及Selenium自动化测试的十大优秀实践,方便大家开发设计一个优秀的可扩展测试套件.自动化测试的最佳实践1.设置命名约定。为创建的每种类型的文件建立标准化的命名约定将有助于简化Selenium的开发和测试过程。例如:根据项目的某个阶段性需求,你的团队可能需要临时添加一个成员临时编写的测试代码。然而,当你的团队在几个月后重新访问测试时,你可能不记得或无法弄清楚最初的意图和目的,只能被动保留,直到开发完全实施阶段。因此,我们需要以一种“不言自明”的方式命名各种测试用例,让您和您的团队能够快速了解??它们的测试特性和意图,避免花费时间在不必要的来回滚动,或反复浏览和比较上。此外,如果某些测试在执行阶段失败,我们只需快速查看测试名称就可以轻松找到损坏的功能。2.避免阻塞对Sleep的调用。作为显式等待的一个例子,睡眠模式不是SeleniumWebDriver的特性,而是大多数编程语言的共同特性。当你的程序运行时,Thread.Sleep()通常会按照设定的方式在线程中执行各种自动检查。一旦满足调用条件,它就会指示应用程序只休眠一段时间。但是Selenium提供了两种等待方式,隐式(Implicit)和显式(Explicit),可以比休眠更有效地处理各种延迟。其中,隐式等待会通知目标浏览器为页面上所有已存在的网页元素等待指定的时长。如果某个元素比隐式延迟时间更早变得可用,那么程序将优雅地转到下一行代码执行。可见,我们需要避免阻塞对睡眠的调用。让Selenium使用隐式和显式等待自行处理。请点击链接--https://itnext.io/how-to-using-implicit-and-explicit-waits-in-selenium-d1ba53de5e15了解有关Selenium隐式和显式等待的更多信息。3.选择最合适的网络定位器。我们在实现Selenium自动化测试时可能遇到的挑战之一是,如果测试代码中使用的定位器相关的具体实现发生变化,那么我们必须对自动化测试进行相应的更改。这些包括:ID、名称、链接文本、XPath、CSS选择器、DOM定位器等(见下表)。可见,对于这么多的Web定位器,我们有必要选择一个合适的定位器,尽量减少用户界面变化对测试的影响。其中ID、Class和Name不仅使用方便,而且比其他Web定位器更稳定。请点击链接--https://itnext.io/the-concept-of-the-right-locator-for-selenium-webdriver-automated-scripts-5b8c6bf528e5了解有关SeleniumWebDriver自动化脚本如何选择正确定位器的更多信息家电概念。4.实施记录和报告。如果某个特定测试在大量测试套件中失败,则可能很难查明失败的测试用例。对此,测试控制台(或后台)日志记录将帮助我们更好地理解代码,在测试代码中找到合适的位置,然后及时压制问题。在流行的编程语言中,我们经常使用的日志级别包括:调试、通知、警告、错误和重要日志。但是,在测试过程中添加不必要的日志也可能会拖慢测试的整体进程。因此,我建议您仅在有助于追查这些故障原因的场景中添加具有适当错误级别的日志。请点击链接-https://itnext.io/implement-logging-and-reporting-best-practices-2cc4b58de9d3以了解有关实施日志记录和报告最佳实践的更多信息。5.运用各种设计模式和原则。面对设计和开发自动化过程中的潜在问题,开发人员往往会提前制定和采用各种模式。对此,我们可以回到《设计模式(Design Patterns)》这本书。本书提供了面向对象编程的各种适用模式。您几乎可以找到解决所有问题的方法。当然,这样的设计模式的概念是在不断迭代和演进的。还添加了新的工厂模式和装饰模式。请点击链接-https://antony-s-smirnov.medium.com/all-about-design-patterns-in-automation-testing-7276ad051db8了解更多关于自动化测试中的设计模式。6.集中式文件夹结构。在Selenium团队的中央存储库中,开发人员和Selenium测试人员更喜欢使用约定的命名约定和定义的文件夹结构。没有人愿意在错误的文件名和代码问题的副作用上浪费时间。例如:在处理那些使用Selenium框架的测试时,我们不得不关注测试代码的可维护性。通常,一个标准项目由Src和Test文件夹组成。其中,Src文件夹可以包含各种子目录,例如:页面对象、辅助函数、以及测试场景中包含的那些Web定位器文件。Test文件夹包含各种实际测试实现。7.数据驱动测试。开发的Web应用程序还需要针对浏览器、设备和操作系统的不同组合(即多个数据集)进行测试。使用Selenium,您可以使用数据驱动框架、关键字驱动框架以及两者的混合。由于输入的测试数据往往取自外部Excel或CSV文件,因此数据驱动框架在如何将数据集与实际测试代码分离方面将非常有效。在测试自动化脚本中硬编码测试值不是可扩展的解决方案。它通常会导致不必要的软件膨胀和重复的测试代码。因此,更好的解决方案是通过Selenium使用数据驱动的参数测试。参数化将有助于针对不同的输入(或数据集)组合执行各种测试用例。例如:使用TestNG进行参数化、使用JUnit进行参数化以及数据驱动测试。请点击链接-https://antony-s-smirnov.medium.com/how-to-use-the-data-provider-pattern-in-the-project-ea12430d9275了解更多关于如何在项目中使用数据提供者的模式。8.在适当的地方使用断言和验证。9.避免重复代码,或者包装Selenium的各种调用。10.在Selenium中,使用针对JUnit和TestNG编写的并行测试用例。原标题:ThebestpracticestestautomationwithSeleniumWebDriver,作者:AntonSmirnov