使用机器人框架ATDD

时间:2010-05-18 05:58:13

标签: c++ selenium tdd robotframework

我想听听其他人使用Robot Framework进行自动验收测试的经验。

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

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

3 个答案:

答案 0 :(得分:21)

答案 1 :(得分:15)

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

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

从技术角度来看,我们一直在使用SWIG来桥接Robot和C ++。我们将测试夹具包装在SWIG中并将其与测试中的生产代码链接 - 为我们提供一个可以由Robot导入的python模块。

我们几乎完全使用.txt格式的机器人输入 - 我们发现这个版本控制得更好,更容易阅读,我们只是没有使用HTML的高级功能(这是我们开始的地方)。此外,我们也使用"BDD Style" Robot语法。我们使用GoogleMock和一些包装器来帮助我们设定在每次机器人测试拆解期间检查的期望。

就组织测试而言,我们已采用以下方法(灵感来自Dale Emery's approach given here):

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

例如,手机可能包含以下内容:

//  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位数) - 或者这可能是另一个验收测试(可执行规范),具体取决于谁正在阅读测试及其熟悉域名。

我们会在开始工作之前创建这些规范的草稿并与领域专家和团队一起审核。这有助于尽早消除一些误解。

答案 2 :(得分:1)

我将Robot框架用于以下场景。

UI测试

  1. Robot框架非常适合测试用户界面
  2. 该框架附带RIDE编辑器,可用于编写测试用例。
  3. 您不必是Selenium和Selenium命令的专家 可在RIDE编辑器中搜索。
  4. 您可以使用关键字和共享来共享代码 资源。它允许您简单地重用测试用例和测试 图书馆代码。
  5. 您可以轻松调用Python库函数来执行更繁琐的任务。
  6. 对于服务测试,我发现Robot框架有点难以用于我正在进行的测试自动化。

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

    我发现* Fitnesse框架**更有帮助,也更简单。 Fitnesse具有下面提到的额外功能,可以轻松编写测试用例。我在Robot中找不到类似的功能。

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

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

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

    我的经验总结:

    • 我找到了一个易于使用的UI自动化工具。

    • 我发现使用服务自动化有点困难。