用ruby进行系统测试(可能是rspec)

时间:2013-11-12 13:38:41

标签: ruby-on-rails ruby testing rspec

有没有办法用ruby进行系统测试?

我正在尝试使用SOAP输入和STDOUT作为输出来测试多线程服务(在war文件中分布),这就是我所拥有的。我需要创建自定义的,而不是简单的场景,并寻找最佳方法。谷歌没有帮助。

  

软件或硬件的系统测试是在完整的集成系统上进行测试,以评估系统是否符合其指定要求。系统测试属于黑盒测试的范围,因此,不需要了解代码或逻辑的内部设计。

更新:  我想我不得不说我有3个独立的组件,它们之间有相互作用。而这个服务,我说的就像是其他2的代理。如果我刚开始编写代码,我需要重复很多功能。所以是的,我正在寻找一些框架来模拟服务和创建多个场景的能力。

1 个答案:

答案 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等)连接。