CSC/ECE 517 Spring 2013/OSS E600: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 87: Line 87:
Before there were 35 feature files.  They have been consolidated to 20 files.  The largest improvement is the feature folder 'student' as shown below:
Before there were 35 feature files.  They have been consolidated to 20 files.  The largest improvement is the feature folder 'student' as shown below:
[[File:Before.PNG|left|Before]]
[[File:Before.PNG|left|Before]]
[[File:After.PNG|900px|After]]
[[File:After.PNG|400px|After]]


#new line!
#new line!

Revision as of 02:42, 21 March 2013

OSS E600

Writing Assignment 2

Work in progress. Due 3/20/2013

Introduction

There were three goals in the OSS E600 project <ref name='assignment'> http://courses.ncsu.edu/csc517/common/homework/OSS/expertiza.html</ref>

  1. Restructure the feature files for better organization. Feature folders like 'student' had few scenarios strung out between many files. Reconsolidate the files to make them more useful.
  2. Determine a gem that will generate code coverage reports. It needs to work with Ruby 1.8.7 and Rails 2.
  3. Use the coverage tool to find areas that need the most improvement. Then create new tests targeting those areas to increase coverage.

Setup

Setting up the coverage + cucumber environment is very similar to setting up for only cucumber. The majority of the instructions in the old cucumber wiki still apply.<ref name='old_wiki'>http://wiki.expertiza.ncsu.edu/index.php?title=Using_Cucumber_with_Expertiza</ref>

Follow the linux wiki to setup Expertiza. Assuming that Expertiza is already running, enter these commands:

gem install relevance-rcov
bundle install
rake db:create
rake db:test:prepare

Modify the file ./lib/task/cucumber.rake. Add the line "t.rcov=true" below each of the three t.profile lines.

    Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
      t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
      t.fork = true # You may get faster startup if you set this to false
      t.profile = 'default'
      t.rocv = true #add this line for coverage report
    end

    Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
      t.binary = vendored_cucumber_bin
      t.fork = true # You may get faster startup if you set this to false
      t.profile = 'wip'
      t.rocv = true #add this line for coverage report
    end

    Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
      t.binary = vendored_cucumber_bin
      t.fork = true # You may get faster startup if you set this to false
      t.profile = 'rerun'
      t.rocv = true #add this line for coverage report
    end

Running

Run Coverage and All Features

Enter the command below to run the entire cucumber feature suite and get code coverage reports.

rake features

Run All Features <ref name='old_wiki'/>

To run all cucumber features found within the ./features directory:

bundle exec cucumber

Run a Single Feature <ref name='old_wiki'/>

To run all scenarios for a single cucumber feature:

bundle exec cucumber features/admin/impersonate_user.feature

Run a Single Scenario <ref name='old_wiki'/>

To run specific scenario within a feature, specify the line number:

bundle exec cucumber features/admin/impersonate_user.feature:5

Coverage Reports

The coverage reports will be generated in the folder ./coverage. <ref name='rcov'> https://github.com/cucumber/cucumber/wiki/Using-RCov-with-Cucumber-and-Rails </ref> The reports will be in an HTML format. View the report by opening ./coverage/index.html in a browser.

  • <put screenshot of directory here with index.html selected>
  • <put screenshot of output here>
alt text


test

Design Patterns

The work that we did in implementing this project did not introduce any new design patterns to the Expertiza system that were of our own creation.

The Cucumber system, however, does exhibit the Facade Pattern. The Facade Pattern provides a simplified interface to a software system. The Cucumber package provides this facade through the steps in Capybara. The simplified interface allows the software developer to write tests in something close to a natural language.

Outcome

File Organization

Before there were 35 feature files. They have been consolidated to 20 files. The largest improvement is the feature folder 'student' as shown below:

Before
Before

After

  1. new line!

Coverage Increase

References

<references/>