我是测试新手。框架和工具等常用术语让我很困惑。谁能解释一下像STAF[软件测试自动化框架]这样的框架和像selenium这样的工具之间的区别。
还有如何为特定框架选择工具。选择的标准是什么?
欢迎简要说明!!
工具:
简单地说,工具就是软件。在测试自动化的情况下,工具是让您在应用程序上自动化测试的软件。您可以根据自己的要求选择许多测试自动化工具。一些例子是Selenium
, UFT
, Visual Studio CUIT
, Jamo Solutions Meux Test
,T-Plan Robot
等Telerik Test Studio
。
通常,您必须使用受支持的编程语言在工具中编写测试。例如,使用的测试人员UFT
需要使用 VB 编写代码,而使用的测试人员Visual Studio
可以使用 VB 和 C# 编写代码。但是,一些测试工具(如Telerik Test Studio
)允许您编写无脚本测试,其中您的测试将包含一堆易于理解的关键字,而不是代码。
框架:
最流行的测试自动化工具喜欢Selenium
并Visual Studio
提供构建自己的测试所需的所有基本功能。但是,它们不提供用于测试的现成功能(如报告和异常处理)。这需要创建一个“框架”,它只不过是使用自己选择的工具编写的代码集合,使测试应用程序变得容易。简而言之,框架是您使用工具(或工具集合)创建来测试您的应用程序。
一个典型的框架由两部分组成:测试脚本和函数库。测试脚本是需要执行以对被测应用程序 (AUT) 执行操作的代码片段。函数库是由测试脚本调用的重要函数组成的类。这些可以包括计时功能、报告/记录功能、异常处理功能、数据通信功能等。
您还可以在运行时使用外部数据库将测试数据传递给测试脚本,而不是在测试脚本中硬编码。使用外部数据库的框架称为data-driven frameworks
. 您可以选择外部数据库,无论是 SQL Server、XML 文件还是简单的 Excel 电子表格。数据驱动框架利用 API 或包含定制类,让您可以与数据库通信以传输数据。
另一种类型的框架是keyword-driven framework
. 这些框架用于需要编写数千个测试用例的脚本的长期测试自动化项目。这些框架的主要目标是通过重用已经编写的代码来减少编写测试用例脚本的时间。它们通常包含非常强大的函数库,可以仅使用预定义的关键字来编写测试用例的脚本。例如,登录和注销等应用程序上的常见操作由单行代码执行,例如:
Actions.Login();
和
Actions.Logout();
其中Actions
是由Login()
和Logout()
函数组成的函数库。这大大减少了脚本大小和测试脚本的长期维护需求,以及其他好处。
当然,您可以构建一个测试自动化框架并将其用于您自己的应用程序,也可以创建一个通用的测试自动化框架并将其提供给测试社区供所有人使用,这就是 STAF。
测试工具的选择:
要解决您的第二个问题,没有直接的答案。有许多标准会影响您的决定。但归根结底,这完全取决于您的要求和 AUT 的要求。
Visual Studio
.Selenium
、或。UFT
Visual Studio
Test Studio
Appium
使用Jamo Solutions Meux Test
或T-Plan Robot
。Sauce Labs
,
例如Perfecto Mobile
或Device Anywhere
.应用程序测试现在是一个巨大的行业,市场上不乏可用的测试工具。如果您知道自己想要什么并在 Google 上进行一些研究,您将找到最适合您的工具。
根据我的理解:
工具
框架
希望能帮到你:D
我将尝试回答我认为人们通常使用这些术语的含义,让我们从更简单的术语开始:工具。
像 selenium 这样的工具实际上是自动化的,它有一个 API 可以用于它所涵盖的几乎所有东西(在这种情况下是网站),但它对你想要测试的网站如何工作一无所知,这意味着它处理低层次结构,例如页面上的元素和点击。
一个框架通常只是包装一个工具,通过传授应用程序的知识来更容易地进行测试,一个标准的例子是登录。
假设您想要一个测试来检查您何时输入正确的用户名和密码才能访问应用程序。仅使用硒它会像:
driver.findElement(By.id("username").sendKeys("MyUsername"); driver.findElement(By.id("password").sendKeys("password123"); driver.findElement(By.id("login) “)。点击();
这很简单,但正如您猜想的那样,登录将在您的测试中大量使用,因此将其移至更易于重用的地方是有意义的(从更少代码的角度和可维护性来看)。这是一个框架发挥作用的地方,通常使用 selenium 它将是页面对象(见这里)