如何设计一个测试自动化框架?

文摘   科技   2024-10-30 12:30   重庆  


编译:TesterHome

原文标题:Test Automation Framework: Design

作者:Ankit Jain,QA Manager  Ex-Amazon


简介


测试自动化框架被定义为一个真实的或概念性的结构,创建的目的是为了提供支持,并可以在未来扩展。测试自动化框架不是一个单一的过程或工具,它是一个工具和过程的集合,使得人工过程自动化。


在设计测试自动化框架时需要考虑的重要问题


  • 分开处理脚本和数据 - 自动测试脚本应与输入数据文件(如XML,Ms-Excel或数据库)和代码分开,这样,当一些数据被改变时,就不需要修改测试脚本。

  • Library库 - Library应该包含所有可重复使用的功能,如数据库、通用功能、应用功能等,这样我们只需要调用功能,而不是反复编写整个代码。

  • 编码标准 - 编码标准应始终保持在整个测试自动化框架中,这将鼓励个人的编码实践,并有助于保持代码结构,这使得其他人更容易理解代码。

  • 可扩展性和维护 - 一个理想的测试自动化框架应该定期支持所有允许修改的软件应用程序的新更新,例如,可以创建一些新的library,这将有助于更新应用程序的功能。

  • 脚本/框架版本 - 你的测试自动化框架/脚本的版本应该保持在一个本地存储库或一些版本工具中,这将有助于轻松检查软件代码的变化。





设计一个测试自动化框架的目标


  • 框架设计应易于扩展和维护

  • 提供对复杂问题的抽象

  • 识别跨脚本使用的通用函数

  • 将复杂的逻辑功能与实用功能分开

  • 将测试数据和测试脚本分开

  • 创建稳健的功能

  • 适当的功能分解,支持更多的功能

  • 确保脚本在没有人为干预的情况下执行,甚至在错误的条件下也是如此

  • 改进设计文件


在测试自动化框架中使用页面对象模型


你需要与你的网站的页面交互的class,并且这些class应该在框架层内。创建这些类型的class的最流行的设计模式是页面对象模型(POM)。这种模式建议为你的网站的每个页面创建一个单独的class(如按钮、文本字段等),以及与这些元素交互的方法。你可以使用浏览器自动化工具,如Selenium WebDriver,来处理实际的交互。




Inheritance(继承)在测试自动化框架中的作用


Inheritance,是一个面向对象的编程原则,使对象能够从父对象中接收属性,在你的自动化测试代码中也有其位置。


我们必须始终启动浏览器来运行我们的脚本。与其在每个测试方法中重复你的代码,你可以使用这个功能,放在一个在每个测试前运行的方法中。为了验证这个方法不会在每个测试类中重复,把这个方法放在一个所有测试类都继承的基础测试类中。基准页也可以包含网站其他部分的对象,这些对象在任何页面都是可见的,如导航菜单、页眉和页脚。所有这些都会被任何页面继承,因此无需重复代码即可访问。


测试运行工具,如JUnit和TestNG,提供了 "before "注释,你可以用它来表示应该在测试前运行的方法。他们还提供了 "after "注解,你可以使用,并可以以同样的方式继承,以在测试后清理。




如何设计一个测试自动化框架


在设计框架时应该考虑的几点:


  • 创建封装方法。编写一个封装方法是扩展库功能的解决方案之一。扩展包装方法的一个例子是允许更好的记录能力和处理Selenium中的错误。

  • 实现自定义记录器。当运行测试脚本时,所有的信息都应该被记录到文件中。这些信息可以作为理解代码的参考。流行的java日志框架是log4j,python是Custom logger。

  • 选择正确的设计模式。选择正确的设计模式可以加速测试用例的开发,并有助于防止可能导致重大问题的小问题,从而提高代码的可读性。创建Selenium自动化框架的最流行的设计模式是页面对象模型(POM)。

  • 将测试与自动化框架分开。将测试脚本逻辑和输入数据与自动化框架分开。它增加了代码的可读性,使代码具有可读性。

  • 为代码创建一个适当的文件夹结构。始终定义文件夹结构,使代码可读,并使其易于理解。例如 - 测试案例,实用程序,输入数据等。

  • 构建和持续集成。持续集成是一种开发实践,它与Maven等构建自动化工具相结合,以确保在做出提交决定后软件的运行没有任何中断。






1.测试灵魂三问及解决方案

2.原生鸿蒙,真正独立!部分应用只有基础功能,原因是必须进行大量稳定性测试?

3.实践分享|QA工程师如何利用生成式AI提高QA任务的生产力

4.阿里云开源AI应用开发框架Spring AI Alibaba,帮助开发者快速构建AI应用

5.MTSC2024上海大会,现场录播视频

6.AI测试|自己搭一个AI Agent玩玩


TesterHome社区
测试之家(TesterHome)由一线测试工程师发起和运营的测试技术社区,社区主旨是公益、开源、分享、落地,紧跟前沿技术趋势,致力于推进软件质量保障与安全,是软件质量保障领域的风向标。我们的理念:Coding Share Show Cool
 最新文章