首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ATDD中机器人框架的应用

ATDD中机器人框架的应用
EN

Stack Overflow用户
提问于 2010-05-18 05:58:13
回答 3查看 7.3K关注 0票数 18

我想听听其他人对机器人框架进行自动验收测试的经验。

它的主要优点和缺点以及与其他框架(主要是Fitnesse和Selenium)的比较是什么?

将要测试的代码是实时的遗留代码,主要是在C++中.

EN

回答 3

Stack Overflow用户

发布于 2011-04-13 02:19:01

在我撰写这篇文章的时候,我曾在三家不同的公司使用过机器人框架,这些公司在我撰写这篇文章的时候已经用了六年的时间,并且在某种程度上都取得了成功。

我的经历

公司1

我首先使用的机器人是一家顶级互联网旅游公司的基于Java的web应用程序。我们使用机器人与Jython,这使我们可以创建关键字在Java和直接与系统被测试。我们使用Selenium驱动web浏览器,我们的大部分测试都是在Firefox上进行的。虽然在QA组织中测试工作基本上是成功的,但是开发组织没有接受它--他们更喜欢使用JUnit而不是机器人。

公司2

我的第二家公司,我觉得是一个不合格的成功。我们以多种方式使用了机器人。主要用途是驱动Internet对一个非常成功的商业.NET web应用程序进行接受和回归测试。

我们还使用它来测试一个iPad应用程序,方法是将Selenium和阿普结合起来。我们使用机器人测试向应用程序提供数据的RESTful服务。我们编写了专门的关键词,让我们进行图像分析,我们还使用机器人测试来快速分析我们的训练设备,在每次训练之前。我们有关键字,让我们在测试前对数据库进行快照,并在测试后恢复数据库。

我们还开始使用机器人来帮助进行手工测试。我们把手工测试用例放在机器人中,这样我们就可以利用机器人的报告和标记功能。当这些测试运行时,它们将提示用户执行手动步骤,这比我们让测试人员从测试用例管理工具或Word文档中读取手动步骤要有效得多。

公司3

第三家公司是一家大公司(收入10亿美元),拥有相当大的IT人员。他们的测试人员技术水平很低(我记得有一个人不知道命令行是什么)。我们有一个团队致力于编写一组核心关键词,并为其他团队提供培训和指导。我认为机器人的使用有助于从最不熟练的测试人员那里得到一些利用,尽管即使是高水平的关键词,这也是与他们的斗争。

公司4

最近,我搬到了一家很小的公司,开发人员寥寥无几,没有专门的测试人员。我们接受了机器人框架中页对象的使用,现在我们有了一套非常稳定的易于阅读的高级别验收测试。这家公司机器人的使用取得了不合格的成功。

优势

机器人最大的优点在于它的灵活性。我们使用机器人支持手动测试、SOAP和REST服务测试、基于web的UI测试、数据库测试、图像测试和移动应用程序测试。因为机器人很容易用额外的库来扩展,所以如果你愿意卷起袖子写一些关键词,几乎没有什么是你不能测试的。根据您的设置,您可以使用Python、.NET或任何语言编写关键字。

因为机器人测试用例和关键字是用纯文本编写的,所以您没有被锁定使用专用工具来创建或查看测试。用户可以选择自己选择的工具-- Visual、Eclipse、Emacs、记事本等等。还有一个特定于机器人的IDE (RIDE),尽管我不推荐它。此外,由于文件是纯文本,它们与其他软件工具很好地集成--它们易于区分和合并、搜索等等。

弱点

机器人使编写低质量的测试变得容易。虽然有一些工具可以记录关键字和测试用例,也可以为关键字、测试用例和变量使用可读的名称,但是没有一个好的方法来执行最佳实践。编写大量的测试和关键字需要遵守纪律。俗话说,机器人给你足够的绳子来吊死自己。

另一个缺点是机器人的发展速度相当缓慢。从好的方面来说,机器人是健壮的和相对没有bug的,所以不需要频繁的补丁。然而,在他们的问题追踪器中,有一些功能要求多年来一直没有变化,这可能令人沮丧。

摘要

在所有公司中,我们都喜欢利用机器人语法提供的灵活性来创建数据驱动的测试、BDD风格的测试以及简单的过程测试。而且在所有情况下,由于测试都是纯文本文件,所以我们的SCM工具(Mercurial、Subversion和Git)很容易管理测试资产。

对我来说,机器人已经被证明很容易使用,非常容易扩展,并且适用于广泛的测试任务,从Python功能的单元测试到web服务的测试、基于浏览器和tablet的UI测试、图像测试、数据库测试,甚至提高手工测试的效率。

票数 22
EN

Stack Overflow用户

发布于 2012-02-19 23:51:09

我们在我工作的地方使用机器人框架已经有一年多的时间了,并取得了一定的成功。和海报一样,我们也做C++的工作。我们花了一些时间来评估机器人对抗Fitnesse/Slim的情况,当时,这两种解决方案都很好,但决定因素是(截至2009年):

  • 更清楚的是,机器人及其报告将如何扩展到大型项目。
  • 不明显的是如何版本控制Fitnesse工件

从技术角度来看,我们一直在使用大口来连接机器人和C++之间的桥梁。我们将测试装置包装成SWIG,并将其与测试中的生产代码链接--给我们一个可由机器人导入的python模块。

我们几乎完全使用.txt格式进行机器人输入--我们发现这个版本的控制更好,更容易阅读,而且我们根本没有使用HTML的高级特性(这就是我们开始的地方)。此外,我们还使用"BDD风格“机器人语法。我们使用GoogleMock和一些包装器来帮助我们设置期望,这些期望在每次机器人测试的拆卸过程中都会被检查。

至于组织测试,我们已经确定了以下方法(来自戴尔·埃默里的方法的灵感):

  • 主要功能层次结构由文件夹结构表示。
  • 机器人测试文件名中描述了一个功能大小的东西。
  • 机器人测试用例名称中使用了该特性的每个部分的描述。
  • 文中给出了测试用例的步骤。
  • 示例文本被分解为使用机器人“关键字”的步骤。
  • 测试夹具驱动生产代码。

例如,一部手机可能有这样的功能:

代码语言:javascript
复制
//  PhoneProject/MakingCalls/DialAPhoneNumber.txt

*** Test Case ***
A user can dial a US number with an area code, up to 10 digits
   Given a phone without any numbers dialed
   Expect the attempted phone number to be 123-456-7890
   When a user enters the numbers 1234567890


// A separate MakingCallsKeywords.txt or something similar
*** Keyword ***
Given a phone without any numbers dialed                CreateNewDialer
Expect the attempted phone number to be ${phoneNumber}  ExpectDialedNumber  ${phoneNumber}
When a user enters the numbers ${numbersEntered}        DialNumbers ${numbersEntered}

// MakingCallsFixture.cpp  (which gets wrapped by SWIG)

std::wstring MakingCallsFixture::DialNumbers(const std::wstring& numbersEntered)
{
   ... Drive production code ...
}

// CreateNewDialer, ExpectDialedNumber also go here

然后,我们将这与覆盖角落条件的单元测试(例如,确保不允许超过10位数)配对--或者这可能是另一种验收测试(可执行规范),这取决于谁在阅读测试以及他们对域的熟悉程度。

我们创建了这些规范的草案,并在开始工作之前与领域专家和团队进行审查。这有助于消除早期的一些误解。

票数 15
EN

Stack Overflow用户

发布于 2016-04-05 19:23:13

我使用了机器人框架来实现以下场景。

UI测试

  1. 机器人框架非常适合测试用户界面。
  2. 该框架附带了用于编写测试用例的RIDE编辑器。
  3. 您不必是Selenium方面的专家,Selenium命令可以在RIDE编辑器中搜索。
  4. 您可以通过使用关键字和共享资源来共享代码。它允许您简单地重用测试用例和测试库代码。
  5. 您可以很容易地调用Python库函数来执行更繁琐的任务。

对于服务测试,我发现机器人框架对于我正在进行的那种测试自动化来说有点难用。

我们的应用服务层完全用C/C++编写。我个人在Windows笔记本电脑上工作,我们的应用程序驻留在Linux服务器上。

我发现*Fitnesse框架**更有用,也更易于自动化。Fitnesse有下面提到的额外特性,可以轻松地编写测试用例。我在机器人上找不到类似的功能。

决策表--您可以用Microsoft.xls格式编写测试用例。数据网格中的每一行将表示一个测试用例。每一行都有一组输入和输出。输出前将在标题中加上问号。

查询表-测试的输出将是您想要验证的数据列表。

此外,Fitnesse还允许轻松地与C (使用Service)等其他语言集成。这不需要任何集成编码。Fitnesse测试用例直接执行测试夹具、getter和setter。

我的经验总结:

  • 我找到了一个易于使用的UI自动化工具。
  • 我发现在服务自动化中使用它有点困难。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2854831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档