CSC/ECE 517 Fall 2009/wiki1b team1: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 133: Line 133:
stubbing facilities. It goes along hand in hand with Cucumber, though it plays nicely with many other testing frameworks as well.
stubbing facilities. It goes along hand in hand with Cucumber, though it plays nicely with many other testing frameworks as well.


Example expresses some basic desired behavior
'''Example expresses some basic desired behavior'''''Italic text''


  bowling_spec.rb
  bowling_spec.rb

Revision as of 19:51, 28 September 2009

CSC/ECE 517 Fall 2009

Resources for Rails (other than IDEs)

IDEs are a valuable resource for Rails development, however there are many other resources and tools that can either replace or supplement IDEs.


Resources for Rails other than IDEs


Rails API - http://api.rubyonrails.org/

This site documents Rails files, classes and methods that can be used to build a Rails application.


Rails Forum - http://railsforum.com/

A discussion forum covering all aspects of Rails for beginners and experts including planning, programming, extensions and production.


Introducing Ruby on Rails

Part 1 http://www.softwaredeveloper.com/features/intro-to-ruby-on-rails-042507/

Part 2 http://www.softwaredeveloper.com/features/intro-to-ruby-on-rails-part-two-043007/

An excellent introduction to Rails for novices


Installers

Windows: InstantRails - http://instantrails.rubyforge.org/wiki/wiki.pl

An all in one, single click installer for Windows that includes a Rails server.

Mac: Locomotive - http://locomotive.raaum.org/


Rails Projects - http://www.workingwithrails.com/

A Database of Rails projects, programmers and websites


Rails plugins - http://agilewebdevelopment.com/

A collection of Rails open source plugins, searchable by category or keyword.


Sample Rails - http://snippets.dzone.com/tag/rails

A collection of Rails code snippets.


Agile Rails book - http://www.amazon.com/gp/product/097669400X/002-0481267-8083260?v=glance&n=283155

An excellent resource for learning how to apply Agile programming concepts to Rails.


Rails cheatsheet - http://www.blainekendall.com/uploads/RubyOnRails-Cheatsheet-BlaineKendall.pdf

One user's list of best practices, gotchas and quirks of developing with Rails.


Rails best practices - http://www.therailsway.com/

An official best practices list for programming in Rails.


Advanced Rails - http://webonrails.com/

A resource for the advanced Rails programmer.


Rails Blog - http://weblog.rubyonrails.org/

An online community of updates about current happenings with the Rails platform.


Rails Guides - http://guides.rubyonrails.org/

An all in one resource for learning Rails including Howtos, security and contributing to the Rails community.


Authoring Rails plugins - http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i

A complete guide to authoring your own Rails plugins.


Tools for Rails (other than IDEs)

Test Unit The Rails stack uses Test::Unit, known as the default Ruby unit testing framework shipping with Ruby. There are various plugins and extension that could be used with Rails built-in Test::Unit to extend its functionality for support of TDD and BDD testing practices.

[1] The link provides additional information in the form of supporting resources, whitepapers, examples, and plug-in documentation

Example [2]

Image:class CalculatorTest < Test::Unit::TestCase 
 def test_add_two_numbers_for_the_sum 
   calculator = Calculator.new 
   assert_equal 4, calculator.sum(2, 2)
 end 
end

TDD: Test Driven Development

Test Driven Development is a combination of refactoring and test first development, a form of development where the test is

written prior to completed production code. The goal of TDD is the specification of requirements and not the validation of

requirements. There are a few testing frameworks that are used to implement the TDD programming technique.

[3] This link provides a comprehensive overview of test driven development practices and available resources for implementation.


RSpec RSpec is a testing framework for Behavior Driven Development, complete with its own expectations, matchers and mocking and

stubbing facilities. It goes along hand in hand with Cucumber, though it plays nicely with many other testing frameworks as well.

Example expresses some basic desired behaviorItalic text

bowling_spec.rb
require ‘bowling’
describe Bowling do
it "should score 0 for gutter game" do
bowling = Bowling.new
20.times { bowling.hit(0) }
bowling.score.should == 0
end
end

Model Examples These are the equivalent of unit tests in Rails’ built in testing. Ironically (for the traditional TDD’er) these are the only specs that we feel should actually interact with the database.

Controller Examples These align somewhat with functional tests in rails, except that they do not actually render views (though you can force rendering of views if you prefer). Instead of setting expectations about what goes on a page, you set expectations about what templates get rendered.

View Examples This is the other half of Rails’ functional testing. View specs allow you to set up assigns (thanks to ZenTest).

Helper Examples let you specify directly methods that live in your helpers.


[4] The link provides a brief overview of RSpec with a comprehensive series of examples and a conceptual view of Rpecs step by step

implementation process


Cucumber Cucumber is used with TDD and BDD within other testing frameworks such as RSpec by letting software development teams describe how

software should behave in plain text. The text is written in a business-readable domain-specific language and serves as

documentation, automated tests and development-aid - all rolled into one format.

[5] The link provides a detail decription, definition, and examples of Cucumber implementation best practices and supported

frameworks.

Cucumber Example: Scenario: See all vendors

   Given I am logged in as a user in the administrator role
   And There are 3 vendors
   When I go to the manage vendors page
   Then I should see the first 3 vendor names


Shoulda An extension to Test::Unit with additional helpers, macros, and assertions.

[6] The link provides a more conclusive definition of Shoulda along with installation facts and working examples of the Shoulda

testing framework within Ruby's built in Test::Unit

BDD: Behavior Driven Development

[7] Behavior driven development was born from the concepts behind the implementation of TDD. It brings together strands from

TestDrivenDevelopment and DomainDrivenDesign into an integrated whole, making the relationship between these two powerful

approaches to software development more evident. Most test driven development testing frameworks such as RSpec and Cucumber also support behavior driven development testing.

[8] The link supports BDDs definition with additional links to more viable behavior driven development resources.




Other Test Tool Resources

Watir: is an open-source library for automating web browsers. It allows you to write tests that are easy to read and maintain. It

is simple and flexible. [9] The link provides an overview of Watir with installation specifications, examples, and supported platforms

NullDB: [10] a way to speed up testing by avoiding database use.

Bleakhouse: memory leak detection [11] The link gives additional information on Bleakhouse profiling for memory leaks

ruby-debug: Other than the extensive use of breakpoints Rails provides little to streamline the debugging process. Ruby-debug provides Rails with a plug-in extending the functionality of Rails built in debugger.

[12] The link provides twenty additional debug resources available for RoR

Conclusion

Rails is a very comprehensive development environment for Ruby with numerous extensions, plugins, and other resources outside of IDEs to strengthen the functionality of the open source web application framework.

References

All sources used to create this wiki are linked in the above text.