CSC/ECE 517 Fall 2015 E1590 Integration testing for Team creation
Purpose
This project is to perform integration testing for team creation. The testing needs to be done with the help of RSpec and Capybara. The UI procedures need to be tested are:
- Log in as a student
- Choose a available topic
- Invite one or more students as teammates
- Students who get the invition could accept or denial
- After accept the invitation, the team should form and all teammates should have same topic
Background
RSpec
Rspec <ref>RSpec Wiki Page</ref> is a behavior-driven development (BDD) framework for the Ruby programming language, inspired by JBehave. It contains its own mocking framework that is fully integrated into the framework based upon JMock. The framework can be considered a domain-specific language (DSL) and resembles a natural language specification.In this project we will use expectation part of RSpec at most time.
- RSpec-expectations<ref>RSpec expectations page</ref>
- RSpec::Expectations lets you express expected outcomes on an object in an example
- RSpec-rails<ref>RSpec rails page</ref>
- RSpec-rails is a testing framework for Rails 3.x and 4.x..
Capybara
Capybara is a library written in the Ruby programming language which makes it easy to simulate how a user interacts with application. Capybara can talk with many different drivers which execute tests through the same clean and simple interface.<ref>[1]</ref>Capybara helps developer test web applications by simulating how a real user would interact with app.<ref>[2]</ref>
- Using Capybara with Cucumber:
cucumber-rails gem
comes with Capybara support built-in
- Using Capybara with RSpec:
Load RSpec 2.x support by adding the line: require 'capybara/rspec'
.
- Using Capybara with Test::Unit:
When using Rails, add the following code in test_helper.rb
file to make Capybara available in all test cases deriving from ActionDispatch::IntegrationTest
.
class ActionDispatch::IntegrationTest
include Capybara::DSL
end
Integration test
Integration testing<ref>Integration test</ref> is a logical extension of unit testing. In its simplest form, two units that have already been tested are combined into a component. A component, in this time, refers to an integrated aggregate of more than one unit. The idea is to test combinations of pieces and eventually expand the process to test your modules with those of other groups.
- Big Bang
Big Bang<ref>[3]</ref> Integration Testing is an integration testing strategy wherein all units are linked at once, resulting in a complete system. When this type of testing strategy is adopted, it is difficult to isolate any errors found, because attention is not paid to verifying the interfaces across individual units.
- Two apporachs: Top down and Bottom up
•The top-down approach to integration testing requires the highest-level modules be test and integrated first. This allows high-level logic and data flow to be tested early in the process and it tends to minimize the need for drivers. However, the need for stubs complicates test management and low-level utilities are tested relatively late in the development cycle. Another disadvantage of top-down integration testing is its poor support for early release of limited functionality.
•The bottom-up approach requires the lowest-level units be tested and integrated first. These units are frequently referred to as utility modules. By using this approach, utility modules are tested early in the development process and the need for stubs is minimized. The downside, however, is that the need for drivers complicates test management and high-level logic and data flow are tested late. Like the top-down approach, the bottom-up approach also provides poor support for early release of limited functionality.
Testing
Based on the project requirements, the testing can be divided into the following parts:
T1. Ensure a student is able to login to the system.
T2. Ensure a student is able to choose a topic from the assignment.
T3. Ensure a student is able to form a team by inviting other students enrolled in this course.
S1. If the invitation is sent to a student who isn't enrolled in the class, it should not be allowed. S2. If the invitation is sent to a student who is enrolled in the class, it should be allowed.
T4. Ensure an invitee is able to accept or reject.
T5. Ensure all teammates have the same topic.
S1. If a student accepts the invitation and the student have a topic before, the topic should be dropped. S2. If a student accepts the invitation and did not have the topic before, the student should have the same topic as other teammates who accepted the invitation.
Scenario
References
<references></references>