我想听听其他人使用Robot Framework进行自动验收测试的经验。
它的主要优点和缺点是什么,以及与其他框架(主要是Fitnesse和Selenium)的任何比较?
将要测试的代码是实时的遗留代码,主要是在C ++中。
答案 0 :(得分:21)
答案 1 :(得分:15)
我们在我的工作地点使用机器人框架已经有一年多的时间了,并取得了一定的成功。像海报一样,我们也做C ++工作。我们花了一些时间来评估Robot对抗Fitnesse / Slim,当时两种解决方案都很好,但决定因素是(截至2009年):
从技术角度来看,我们一直在使用SWIG来桥接Robot和C ++。我们将测试夹具包装在SWIG中并将其与测试中的生产代码链接 - 为我们提供一个可以由Robot导入的python模块。
我们几乎完全使用.txt格式的机器人输入 - 我们发现这个版本控制得更好,更容易阅读,我们只是没有使用HTML的高级功能(这是我们开始的地方)。此外,我们也使用"BDD Style" Robot语法。我们使用GoogleMock和一些包装器来帮助我们设定在每次机器人测试拆解期间检查的期望。
就组织测试而言,我们已采用以下方法(灵感来自Dale Emery's approach given here):
例如,手机可能包含以下内容:
// 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框架用于以下场景。
对于服务测试,我发现Robot框架有点难以用于我正在进行的测试自动化。
我们的应用服务层完全用C / C ++编写。我个人在Windows笔记本电脑上工作,我们的应用程序驻留在Linux服务器上。
我发现* Fitnesse框架**更有帮助,也更简单。 Fitnesse具有下面提到的额外功能,可以轻松编写测试用例。我在Robot中找不到类似的功能。
决策表 - 您可以使用Microsoft .xls格式编写测试用例。数据网格中的每一行都代表一个测试用例。每行都有一组输入和输出。输出前面会有标题中的问号。
查询表 - 测试输出将是您要验证的数据列表。
Fitnesse还允许与其他语言(如C )轻松集成(使用Slim Service)。这不需要任何集成编码。 Fitnesse测试用例直接执行测试夹具,getter和setter。
我的经验总结:
我找到了一个易于使用的UI自动化工具。
我发现使用服务自动化有点困难。