自动化测试工具和自动化测试框架的区别

3
我正在尝试理解自动化测试框架和自动化测试工具之间的区别。根据维基百科中的测试自动化,工具依赖于环境,而框架提供运行工具的结构。
然而,我们有一个与Windows应用程序交互的White,以及一个适用于基于Web的应用程序的浏览器工作的Selenium。我们都称这两个为“框架”,但它们都需要使用像NUnit或JUnit这样的测试框架来运行。因此,我认为它们应该被称为工具。
我们如何准确区分自动化测试工具和自动化测试框架?

1
“框架”意味着您需要填写空白部分。 “工具”意味着它会完成大部分工作。营销人员忽略事实,决定他们认为称呼它很酷的名称。 - Ira Baxter
啊哈。所以我提到的例子并不是框架,而是工具,对吧? - Mugen
我怀疑试图将它们归类为黑白两种类别并不是很有帮助。正确的问题应该是:“配置需要多少工作量,我能得到多少好处?” - Ira Baxter
7个回答

3

自动化工具是一种用于在应用程序上执行自动化操作的平台。自动化工具是一种通用工具,可以实现任何类型的测试用例。某些自动化工具可能没有分离测试脚本或模块的选项,也不能选择多个测试脚本进行执行。

自动化框架是自动化工具的附加功能。自动化框架如果没有在自动化工具的基础上创建,则无法起作用。我们正在创建一组测试执行角色和标准,如测试用例选择、执行流程、报告生成、测试管理工具集成等。

  • 我们只能使用工具进行自动化,但无法仅依靠自动化框架进行自动化
  • 自动化框架取决于组织标准和项目结构,因此如果工具本身提供框架(如UFT、Gauge等),则可以创建自动化框架
  • 我们可以创建新功能,这些功能不受工具支持,或者将多个工具与单个自动化框架联合使用,例如Selenium和Sikuli
  • 自动化 FreeMason 将提供简单易维护性

3
我现在对这个问题有更好的工作经验,我觉得我可以自己回答了。基本上一个框架:
- 提供常见函数库列表, - 生成日志, - 提供配置文件以进行典型设置更改, - 将用户测试数据与代码分离,以便我们不会硬编码实际的测试代码, - 作为实际测试代码和原始语言代码之间的一层,使维护实际测试代码更加容易简单,以便工程师可以更有效地进行更改/修复, - 将原始代码与测试代码分离,以便如果产品发生一般更改,则只能修改选定的函数而不是影响所有测试。
现在,在我的最初的查询中,White确实是一个框架。
- 原因是,如果我们尝试“运行”White,则它本身不会执行任何操作。它只是提供一些我们可以调用并完成工作的功能。 - 因此,暗示White需要使用NUnit或者它是无用的是错误的。我们还可以编写仅使用白色而不包括任何其他内容的基本过程代码,它仍然可以完成一些有意义的任务。 - 我们添加的测试框架(NUnit)仅用于实现另一个单独的目标(跟踪代码的不同部分(称为测试),并生成最终报告,其中列出了哪些测试通过/失败)。 - 这里的误解是“如果它使用框架,则必须是工具”的想法。正确的想法是:框架可以允许我们执行某些任务,它仍然可以使用另一个框架来允许我们执行更多任务。
现在的工具——这些只是我们在使用实际代码时使用的实用程序——将利用上述所有框架来完成一些实际有价值的任务。可以是IDE或允许执行代码的平台。

1
在“工具”中,您可以使用“框架”将它们链接起来 :)

1

一个工具可以根据正确的输入为您进行实际测试。而框架则提供必要的帮助来进行测试。就像在White的情况下,它只是帮助您获取控件并提供鼠标点击等功能。它本身并不运行任何东西。

Nunit是另一个稍微高级一点的框架,您可以运行测试用例,它只会告诉您是否通过。

一个工具的例子可以是碎片整理器,它实际执行操作。

只是试图解释我的观点...希望对您有所帮助!


当我们说白色帮助我们在应用程序中点击时,它不是最终的工具吗?我认为对于Selenium来说也是一样的。它可以帮助您在浏览器中点击、输入字符、按键、读取数据等。结合Nunit使用,您可以创建一个可工作的项目。 - Mugen

1
我认为框架类似于类,工具是从中实例化的对象。
我设计基础设施,可以分派会话以测试复杂的并发系统测试,同时也适用于分派单个功能或单元测试。
虽然这些是允许会话管理、分派(套件、场景、任务、远程、Web、内联、进程、线程)、通知、事件处理和日志记录的框架;它们也是通过默认或自定义属性提供特定操作分派、监视、分析、通知和纠正(用于持续的测试能力)的工具。
因此,框架描述默认行为,并被实例化为工具,以在预期的QA环境中应用默认和自定义行为。

1

我一直在使用自动化测试工具并开发自动化框架,根据我的经验提供详细信息 -

自动化测试工具 -

它是一个实用程序,可以具有在特定或多种应用程序下操作的功能、函数和能力(AUT)-例如-它可以搜索和唯一标识AUT对象、窗格、按钮、链接等。

底层库、实用程序、方法和对象识别模型作为工具的核心框架,提供了操作它的功能、函数和能力。但这个底层核心系统大多是专有/静态代码,不能根据自定义需求进行更改。

市场上大多数标准工具都专注于其对象识别模型,并拥有广泛的技术列表,如.NET、Java、Struts等,但在创建测试脚本/场景、数据输入和使用数据文件(如文本、Excel、Json、XML等)以及管理脚本执行方面可能不太强大或有能力。

大多数时候,它们缺乏定制和适应选项-因为每个项目或工作都有不同的需求。

自动化框架 -

框架的意思是一组规则或最佳实践。即使自动化测试工具具有功能和能力,它也需要一组规则和驱动程序来启动、管理和报告完整的测试执行。
框架可以是一组脚本(库、JAR包、方法等),这些脚本根据客户/项目/工作的需求进行定制和量身打造。它可以使用自动化工具的核心/最佳功能和功能,然后将其与框架结合起来——创建一个更无缝的多脚本和平台执行。
测试数据管理——创建、输入和重置(如果需要)。
测试协调——触发构建的内容、输入来源、要执行的所有内容、执行位置、如何集成、谁/如何控制执行、报告位置以及通知哪些人。
希望这能给这个问题提供更多的前景。

0

Selenium 是一种用于自动化浏览器操作的工具。

Selenium Grid 是一种用于在运行在不同环境上的多台机器之间分发测试的工具。

脚本语言测试框架取决于您的自动化项目将要构建的技术栈,如下所示:

  • Java 技术栈
    • Java 作为脚本语言
    • JUnit/TestNG 作为测试框架
  • Php 技术栈
    • Php 作为脚本语言
    • PHPUnit 作为测试框架
  • Python 技术栈
    • Python 作为脚本语言
    • UnitTest/PyTest 作为测试框架

与其他语言技术栈类似。

希望这个例子能够澄清本主题的原始问题。

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接