有没有办法用ruby进行系统测试?
我正在尝试使用SOAP输入和STDOUT作为输出来测试多线程服务(在war文件中分布),这就是我所拥有的。我需要创建自定义的,而不是简单的场景,并寻找最佳方法。谷歌没有帮助。
软件或硬件的系统测试是在完整的集成系统上进行测试,以评估系统是否符合其指定要求。系统测试属于黑盒测试的范围,因此,不需要了解代码或逻辑的内部设计。
更新: 我想我不得不说我有3个独立的组件,它们之间有相互作用。而这个服务,我说的就像是其他2的代理。如果我刚开始编写代码,我需要重复很多功能。所以是的,我正在寻找一些框架来模拟服务和创建多个场景的能力。
答案 0 :(得分:1)
是的,Ruby非常适合系统或应用程序级别的测试。
我会推荐Cucumber。 Cucumber是一个Ruby应用程序,它允许您定义特定于您的环境的外部DSL(特定于域的语言),然后使用该DSL编写和运行测试。
以下是Cucumber测试示例(来自Cucumber主页):
Feature: Addition
In order to avoid silly mistakes
As a math idiot
I want to be told the sum of two numbers
Scenario: Add two numbers
Given I have entered 50 into the calculator
And I have entered 70 into the calculator
When I press add
Then the result should be 120 on the screen
用你定义的迷你语言写的。这些“步骤定义”在Ruby中,使用Cucumber的内部DSL:
Given /I have entered (.*) into the calculator/ do |n|
calculator = calculator.new
calculator.push(n.to_i)
end
这些步骤定义将您的自定义外部DSL绑定到被测代码或系统。这个例子测试一个简单的Ruby类,但是Cucumber可以用于库或应用程序的集成测试。
保持DRY不是问题。步骤定义可以调用其他步骤定义,因为它们是用Ruby编写的,所以您可以轻松地将共享代码放入模块或类中,供步骤定义使用。
剩下要回答的是Ruby及其可用库是否具备驱动测试环境所需的功能。 Ruby是一种很好的“粘合”语言,能够轻松运行其他程序。它还有一套相当不错的库(称为“Ruby gems”),包括一些可以用soap(例如savon)的库。库可用于处理XML并与各种协议(HTTP,FTP等)连接。