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

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 100: Line 100:
'''
'''


Test Unit
'''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.
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.


http://wiki.rubyonrails.org/addons/testing
[http://wiki.rubyonrails.org/addons/testing]
The link provides additional information in the form of supporting resources, whitepapers, examples, and plug-in documentation
The link provides additional information in the form of supporting resources, whitepapers, examples, and plug-in documentation


Example
'''Example'''
  - http://wiki.rubyonrails.org/testing/test-unitrequire 'test/unit'  
  - http://wiki.rubyonrails.org/testing/test-unitrequire 'test/unit'  


Line 117: Line 117:




//****************************************************************


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


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


http://ruby.about.com/b/2009/01/28/test-driven-development-with-rails.htm
[http://ruby.about.com/b/2009/01/28/test-driven-development-with-rails.htm]
This link provides a comprehensive overview of test driven development practices and available resources for implementation.
This link provides a comprehensive overview of test driven development practices and available resources for implementation.




RSpec
'''RSpec'''
RSpec is a testing framework for Behavior Driven Development, complete with its own expectations, matchers and mocking and  
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.
stubbing facilities. It goes along hand in hand with Cucumber, though it plays nicely with many other testing frameworks as well.


Model Examples
'''Model Examples'''
These are the equivalent of unit tests in Rails’ built in testing. Ironically
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
(for the traditional TDD’er) these are the only specs that we feel should actually interact
with the database. Learn more ….
with the database. Learn more ….


Controller Examples
'''Controller Examples'''
These align somewhat with functional tests in rails, except
These align somewhat with functional tests in rails, except
that they do not actually render views (though you can force rendering of views
that they do not actually render views (though you can force rendering of views
Line 146: Line 146:
set expectations about what templates get rendered. Learn more….
set expectations about what templates get rendered. Learn more….


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


Helper Examples
'''Helper Examples'''
let you specify directly methods that live in your helpers. Learn more ….
let you specify directly methods that live in your helpers. Learn more ….




http://www.ibm.com/developerworks/web/library/wa-rspec/
[http://www.ibm.com/developerworks/web/library/wa-rspec/]
The link provides a brief overview of RSpec with a comprehensive series of examples and a conceptual view of Rpecs step by step  
The link provides a brief overview of RSpec with a comprehensive series of examples and a conceptual view of Rpecs step by step  


Line 160: Line 160:




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


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


http://cukes.info/
[http://cukes.info/]
The link provides a detail decription, definition, and examples of Cucumber implementation best practices and supported  
The link provides a detail decription, definition, and examples of Cucumber implementation best practices and supported  


frameworks.
frameworks.


Cucumber Example:
'''Cucumber Example:'''
Scenario: See all vendors
Scenario: See all vendors
     Given I am logged in as a user in the administrator role
     Given I am logged in as a user in the administrator role
Line 180: Line 180:




Shoulda  
'''Shoulda'''
An extension to Test::Unit with additional helpers, macros, and assertions.
An extension to Test::Unit with additional helpers, macros, and assertions.
   
   
http://www.thoughtbot.com/projects/shoulda
[http://www.thoughtbot.com/projects/shoulda]
The link provides a more conclusive definition of Shoulda along with installation facts and working examples of the Shoulda  
The link provides a more conclusive definition of Shoulda along with installation facts and working examples of the Shoulda  



Revision as of 22:07, 20 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

- http://wiki.rubyonrails.org/testing/test-unitrequire 'test/unit' 

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.

[2] 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.

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. Learn more ….

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. Learn more….

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

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


[3] 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.

[4] 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.

[5] 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 (http://eggsonbread.com/2009/07/22/behavior-driven-development-in-a-nutshell/) 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.

http://behaviour-driven.org/ The link supports BDDs definition with additional links to more viable behavior driven development resources.


//****************************************************************

Other Testing Resources Watir 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.

http://wtr.rubyforge.org/


NullDB - http://avdi.org/projects/nulldb/ a way to speed up testing by avoiding database use.

Bleakhouse: memory leak detection

ruby-debug Other than the extensive use of breakpoints, ruby-debug provides Rails with a plug-in extending the functionality of Rails built in debugger.

http://rubyforge.org/softwaremap/trove_list.php?form_cat=47 the link provides twenty debug resources //****************************************************************