<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pmukher</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pmukher"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Pmukher"/>
	<updated>2026-06-03T18:32:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99435</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99435"/>
		<updated>2015-11-11T20:49:03Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: /* Use Case Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Flowchart for the Peer Review Testing Approach==&lt;br /&gt;
[[File:FlowchartE1591 2.png]]&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File: UseCaseE1591.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseE1591.png&amp;diff=99434</id>
		<title>File:UseCaseE1591.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseE1591.png&amp;diff=99434"/>
		<updated>2015-11-11T20:47:46Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: uploaded a new version of &amp;amp;quot;File:UseCaseE1591.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseE1591.png&amp;diff=99433</id>
		<title>File:UseCaseE1591.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UseCaseE1591.png&amp;diff=99433"/>
		<updated>2015-11-11T20:47:35Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99432</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99432"/>
		<updated>2015-11-11T20:47:06Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Flowchart for the Peer Review Testing Approach==&lt;br /&gt;
[[File:FlowchartE1591 2.png]]&lt;br /&gt;
&lt;br /&gt;
==Use Case Diagram==&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99431</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99431"/>
		<updated>2015-11-11T19:34:32Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Flowchart for the Peer Review Testing Approach==&lt;br /&gt;
[[File:FlowchartE1591 2.png]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99430</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99430"/>
		<updated>2015-11-11T19:32:29Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591_2.png&amp;diff=99429</id>
		<title>File:FlowchartE1591 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591_2.png&amp;diff=99429"/>
		<updated>2015-11-11T19:31:09Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: uploaded a new version of &amp;amp;quot;File:FlowchartE1591 2.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591_2.png&amp;diff=99428</id>
		<title>File:FlowchartE1591 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591_2.png&amp;diff=99428"/>
		<updated>2015-11-11T19:29:24Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591.png&amp;diff=99427</id>
		<title>File:FlowchartE1591.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591.png&amp;diff=99427"/>
		<updated>2015-11-11T19:26:41Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: uploaded a new version of &amp;amp;quot;File:FlowchartE1591.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591.png&amp;diff=99426</id>
		<title>File:FlowchartE1591.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FlowchartE1591.png&amp;diff=99426"/>
		<updated>2015-11-11T19:25:41Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99425</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99425"/>
		<updated>2015-11-11T19:22:45Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Flowchart of the Peer Review Testing Process==&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flowchart_of_the_Peer_Review_Testing_Process.png&amp;diff=99424</id>
		<title>File:Flowchart of the Peer Review Testing Process.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flowchart_of_the_Peer_Review_Testing_Process.png&amp;diff=99424"/>
		<updated>2015-11-11T19:03:53Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: uploaded a new version of &amp;amp;quot;File:Flowchart of the Peer Review Testing Process.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flowchart_of_the_Peer_Review_Testing_Process.png&amp;diff=99423</id>
		<title>File:Flowchart of the Peer Review Testing Process.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flowchart_of_the_Peer_Review_Testing_Process.png&amp;diff=99423"/>
		<updated>2015-11-11T19:03:12Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99422</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=99422"/>
		<updated>2015-11-11T17:46:52Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Pattern and Approach==&lt;br /&gt;
&lt;br /&gt;
Test Pattern and Approach&lt;br /&gt;
&lt;br /&gt;
We are required to write integration tests for the peer review process. Since we are not adding any new functionalities or amending any existing ones we don’t need to follow any specific design pattern. However we need to follow a specific integration testing approach to conduct the integration testing. The testing approach that we have decided to follow is '''Top-Down'''. &lt;br /&gt;
We are first going to create the following entities &lt;br /&gt;
* '''User or Reviewer'''&lt;br /&gt;
* '''Assignment Questionnaire or Rubric'''&lt;br /&gt;
* '''Assignment'''&lt;br /&gt;
Then we plan to incrementally test the interaction of these entities in a bottom-up manner. &lt;br /&gt;
We first test whether the user is able to successfully login. &lt;br /&gt;
If he is able to successfully login, we test whether he is able to successfully select an assignment for review.&lt;br /&gt;
If he is able to successfully select  an assignment, we test whether he is able to able to submit a review successfully based on whether it is a text-based, point-based or both and whether he chooses to answer all, some or none of the questions of the rubric.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
The following section describes how we plan on testing the application based requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;.  We wish to create Integration tests that thoroughly test a Student user reviewing an assignment submission.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
To create and run our test cases we require some setup in Expertiza.  The following list describes the information that we will enter into the system before running any of our test cases.&lt;br /&gt;
&lt;br /&gt;
# We will use the Student with the username 'student13' and password 'password' to login as a Student.&lt;br /&gt;
# We will enroll Student into a specific course.&lt;br /&gt;
# We will create an Assignment per individual test case that is customized for our test case.&lt;br /&gt;
# We will submit an Assignment from a student other than 'student13' for 'student13' to review &lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
The following list describes the individual test cases we will creating for Expertiza.&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98896</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98896"/>
		<updated>2015-11-07T19:32:06Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara]&amp;lt;/ref&amp;gt; using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber&amp;lt;ref&amp;gt;[https://cucumber.io/ Cucumber]&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx Integration Testing - Microsoft Developer Network]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing Integration Testing - Wikipedia]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Scenarios==&lt;br /&gt;
Using the testing requirements found on the Project Description&amp;lt;ref&amp;gt;[https://docs.google.com/document/d/1t0keeNQ2kP0NmcgIrtQXGi5K_GhQYcKzEVWJPPRBOHE/edit Project Description]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98892</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98892"/>
		<updated>2015-11-07T19:27:09Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza's Github Site]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; and Capybara using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt;. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
===RSpec===&lt;br /&gt;
&lt;br /&gt;
Rspec&amp;lt;ref&amp;gt;[http://rspec.info/documentation/ Rspec].''Rspec Documentation''&amp;lt;/ref&amp;gt; is Behavior Driven Development&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Behavior-driven_development Behavior Driven Development]&amp;lt;/ref&amp;gt; framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like &amp;lt;ref&amp;gt;Cucumber&amp;lt;/ref&amp;gt;.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
===Capybara===&lt;br /&gt;
&lt;br /&gt;
Capybara&amp;lt;ref&amp;gt;[https://github.com/jnicklas/capybara Capybara github link]&amp;lt;/ref&amp;gt; is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
===Integration Testing===&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested&amp;lt;ref&amp;gt;[https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx https://msdn.microsoft.com/en-us/library/aa292128(v=vs.71).aspx]&amp;lt;/ref&amp;gt;. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Integration_testing https://en.wikipedia.org/wiki/Integration_testing]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Scenarios==&lt;br /&gt;
Using the testing requirements found on the Project Description:&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98881</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98881"/>
		<updated>2015-11-07T19:17:30Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza]&amp;lt;/ref&amp;gt; is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re-submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are and Capybara using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec. The various entities like users, assignment, questionnaire and instructor will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
'''RSpec'''&lt;br /&gt;
&lt;br /&gt;
Rspec is Behavior Driven Development framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Capybara'''&lt;br /&gt;
&lt;br /&gt;
Capybara is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Integration Testing'''&lt;br /&gt;
&lt;br /&gt;
Integration testing is a phase of software testing where units which have already been tested are combined into a component and the interface between them is tested. The idea is to test combination of pieces and eventually expand  the process to test the modules with those of the other group. Eventually, all the modules making up a process are tested together. &lt;br /&gt;
Integration testing identifies the problem that occurs when units are combined. Some different types of integration testing are big bang, top- down, bottom-up.&lt;br /&gt;
*Big Bang Integration Testing – All modules are integrated simultaneously, after which everything is tested as a whole. It is very effective for saving time in the integration testing process.&lt;br /&gt;
*The top down approach – The highest level modules are tested first. This allows high level logic and data flow to be integrated early in the process. &lt;br /&gt;
*The bottom up approach  - In this approach, lowest level components are tested first, and then used to facilitate the testing of higher level components.&lt;br /&gt;
&lt;br /&gt;
==Test Scenarios==&lt;br /&gt;
Using the testing requirements found on the Project Description:&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98873</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98873"/>
		<updated>2015-11-07T19:10:55Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called &amp;quot;Other’s Work&amp;quot; where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. &lt;br /&gt;
&lt;br /&gt;
After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer.&lt;br /&gt;
&lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work.&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
The purpose of the project is to perform an integration testing for the peer review of a submitted assignment. We aim to write test cases that test the different positive test scenarios for which the reviewer should be able to successfully submit the review to an assignment. The review process has certain minimum guidelines which need to be adhered to. We also plan to test the negative scenarios for which the reviewer doesn’t adhere to these guidelines and hence should not be able to submit the review to the assignment. &lt;br /&gt;
The Expertiza project has been developed using Ruby on Rails. The technologies to be used for the project are '''RSpec''' and '''Capybara''' using Ruby on Rails as an underlying framework.  We will write the spec methods using RSpec. The various entities like '''users, assignment''' '''questionnaire''' and '''instructor''' will be simulated using Capybara.&lt;br /&gt;
&lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
'''RSpec'''&lt;br /&gt;
&lt;br /&gt;
Rspec is Behavior Driven Development framework for ruby, it is a meta gem composed of different libraries designed to work together or with other testing tools like Cucumber.  It has dependencies on Rspec core, Rspec expectations, Rspec mocks gems which can be loaded by using 'require'.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
  gem install rspec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Capybara'''&lt;br /&gt;
&lt;br /&gt;
Capybara is a library written in ruby, it helps you to test your web applications by pretending to be a user and following the user story, it simulates the browser to interact with app to receive pages parse the HTML and submit forms just as an actual user would do.  Capybara can interact with many different drivers which execute  tests through the same clean and simple interface.  One can seamlessly choose between Selenium, Webkit or pure Ruby drivers.&lt;br /&gt;
&lt;br /&gt;
Installation-&lt;br /&gt;
&lt;br /&gt;
Capybara requires ruby 1.9.3 or later,to install add following line to your gem file and run bundle install&lt;br /&gt;
 gem 'capybara'&lt;br /&gt;
If testing a rails app add this to your test helper file&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
==Test Scenarios==&lt;br /&gt;
Using the testing requirements found on the Project Description:&lt;br /&gt;
&lt;br /&gt;
T1: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will successfully submit the review answering the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T2: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by only answering some of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T3: Login as a Student user and select a submission for review.  The submission will only contain points based review choices.  The user will unsuccessfully submit the review by answering none of the points based review choices.&lt;br /&gt;
&lt;br /&gt;
T4: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will successfully submit the review answering the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T5: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by only answering some of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T6: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will unsuccessfully submit the review by answering none of the text based review choices.&lt;br /&gt;
&lt;br /&gt;
T7: Login as a Student user and select a submission for review.  The submission will only contain text based review choices.  The user will submit the review by answering all of the text based review choices with single word answers.&lt;br /&gt;
&lt;br /&gt;
T8: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will successfully submit the review answering all of the review choices.&lt;br /&gt;
&lt;br /&gt;
T9: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering only some of the review choices.&lt;br /&gt;
&lt;br /&gt;
T10: Login as a Student user and select a submission for review.  The submission will only contain both points based and text based review choices.  The user will unsuccessfully submit the review answering none of the review choices.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98856</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98856"/>
		<updated>2015-11-07T18:29:41Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called Other’s Work where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer. &lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work. &lt;br /&gt;
 &lt;br /&gt;
==Purpose==&lt;br /&gt;
Once an The project aims to write integration tests for the &lt;br /&gt;
==Technologies to be used==&lt;br /&gt;
==Test Scenarios==&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98855</id>
		<title>CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1591_Integration_testing_for_peer_review&amp;diff=98855"/>
		<updated>2015-11-07T18:26:33Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: Created page with &amp;quot;Integration Testing for Review Reviewing is major portion of expertiza. The main task of the project is to write integration tests scenario for reviewing a assignment submission....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Integration Testing for Review&lt;br /&gt;
Reviewing is major portion of expertiza. The main task of the project is to write integration tests scenario for reviewing a assignment submission.&lt;br /&gt;
User. instructor, AssignmentQuestionaire these &lt;br /&gt;
The testing scenario will consists of&lt;br /&gt;
1.	Login as student&lt;br /&gt;
2.	Select submission for review. &lt;br /&gt;
3.	Submit reviews with multiple scenarios like only points, only comments, single word comment,&lt;br /&gt;
Test the above scenario with multiple Assignment Questionnaire. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Background &lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source web tool that is used for online assignment completion purpose for different courses. The software enables the students to form online teams and choose different assignment topics. Each topic has a completion deadline and the students can submit the links to their work or assignments through expertiza.&lt;br /&gt;
One of the key features of expertiza is the online peer review process. Students who are enrolled in the same courses can review the works or the assignments of the fellow students. Typically for each assignment there is a link called Other’s Work where a student is prompted to give feedback to the works of their fellow classmates. This link becomes active after a certain date that is determined by the instructor or the administrator. After the date, a student can choose one of the assignments that are available for review through the activated link. After an assignment has been chosen for review, the reviewer will be presented with a review sheet that has a number of parameters based upon which the review should be done. The reviewer chooses a rating for each parameter, typically being the lowest and 5 as the highest. He can also leave a comment justifying his rating and stating the scopes of improvements for the project. The team members whose assignment has been reviewed can also review the review, i.e. provide an explanation about their work or give comments with respect to the feedback provided by the reviewer. &lt;br /&gt;
For some assignments there is a scope for a re submission of an improved version of the work. After such a re submission the reviewer can again review the assignment editing and updating his previous review based upon the resubmitted work. &lt;br /&gt;
 &lt;br /&gt;
Purpose&lt;br /&gt;
Once an The project aims to write integration tests for the &lt;br /&gt;
Technologies to be used &lt;br /&gt;
Test Scenarios &lt;br /&gt;
References&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015&amp;diff=98854</id>
		<title>CSC/ECE 517 Fall 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015&amp;diff=98854"/>
		<updated>2015-11-07T18:25:19Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Writing Assignment 2==&lt;br /&gt;
*[[CSC/ECE_517_Fall_2015/sample_page]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2015/ossE1558BGJ]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss/M1502/AAAASS]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss/M1503/IntegrateXMLParser]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2015/ossE1568BZHXJS]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2015/ossE1572VGA]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2015/oss_E1573_sap]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1559 rrz]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1570 avr]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1556 CHM]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss M1504 JJD]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1562 APS]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss M1501 GSN]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss M1501 GSN]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1550 KMM]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1551 RGS]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1555 GMR]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1552 NFR]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1565 AAJ]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1561 WZL]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1553 AAJ]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1554 AAR]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1569 JNR]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1560 PSV]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss M1505 MSV]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1557 GXM]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1566 ARB]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1567 APT]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1574 BKS]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/ossA1550RAN]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1571]]&lt;br /&gt;
&lt;br /&gt;
==Final Project Design Document==&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1577 MayYellowRoverJump]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1586 AnonymousChatBetweenAuthorAndReviewer]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1582 Create integration tests for the instructor interface using capybara and rspec]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1576 Refactoring submitted content (hyperlinks and files)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1590 Integration testing for Team creation]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1585 Use Ajax for Add Participants, Add TA ,Edit Questionnaires Screens]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1581 Integration testing for student interface]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1583 Fix the CSS used for Menu Item]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015 E1591 Integration testing for peer review]]&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1573_sap&amp;diff=97349</id>
		<title>CSC/ECE 517 Fall 2015/oss E1573 sap</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1573_sap&amp;diff=97349"/>
		<updated>2015-10-30T18:04:12Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''E1573 Unit Test for Assignment model''' ==&lt;br /&gt;
&lt;br /&gt;
Assignment.rb is a model in Expertiza -a ruby rails application, that handles the various assignments assigned by the instructors to the teams during their coursework. The OSS project &amp;quot;Unit Test for Assignment model&amp;quot; tests the relationships, validation and scope of the assignment model using RSpec and Factory Girl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Why is unit testing required==&lt;br /&gt;
*Visibility and reporting&lt;br /&gt;
*Control and correction&lt;br /&gt;
*Efficiency and speed&lt;br /&gt;
*Planning and predictability&lt;br /&gt;
*Customer satisfaction&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*Write specs for major instance methods of assignment.rb model&lt;br /&gt;
*Create test data by writing factories and use the test data to test the model with rspec &lt;br /&gt;
&lt;br /&gt;
==Tested Spec Methods==&lt;br /&gt;
&lt;br /&gt;
'''team_Assignment''': The methods returns true by default indicating it is a team assignment. The rspec method '''#team_assignment''' checks whether the method returns true or not&lt;br /&gt;
&lt;br /&gt;
'''has_Teams''': The method in the assignment model returns true or false depending upon whether the assignement has one or more teams associated with it. The corresponding rspec method '''#has_teams?''' checks whether the method returns true when a team has been assigned to it. &lt;br /&gt;
&lt;br /&gt;
'''has_Topics''': The method in the assignment model returns true or false depending upon whether the assignment has one or more topics associated with it. The corresponding rspec method '''#has_topics'''? checks whether the method returns true when a team has been assigned to it.&lt;br /&gt;
&lt;br /&gt;
'''is_wiki_assignment''': The method in the assignment model returns true or false depending upon whether the assignment is a wiki assignment or not. It returns true if its '''wiki_type_id &amp;gt; 1'''. The corresponding rspec method '''#is_wiki_assignment''' validates that the model method returns true when the assignment is a wiki assignment with wiki_type_id &amp;gt;1&lt;br /&gt;
&lt;br /&gt;
'''is_google_doc''': The method in the assignment model returns true or false depending upon whether the assignment is a google document or not. It returns true if its '''wiki_type_id =4'''. The corresponding rspec method #is_google_doc validates that the model method returns true when the assignment is a google document with wiki_type_id =4&lt;br /&gt;
&lt;br /&gt;
is_microtask:  The method in the assignment model returns true or false depending upon whether the assignment is a microtask or not. It returns true if the microtask variable isassigned true in the assignment. The corresponding rspec method '''#is_microtask?''' validates that the model method returns true when the microtask variable is assigned true in the assignment&lt;br /&gt;
&lt;br /&gt;
'''dynamic_reviewer_assignment''': The method in the assignment model checks whether the '''review_assignment_strategy''' is set to ''''Auto-Selected'''' or not. It returns true if the review_assignment_strategy value is set to ‘Auto-Selected’. The corresponding rspec method '''#dynamic_reviewer_assignment?''' validates that the model method returns true when the review_assignment_strategy is set to 'Auto-Selected'.&lt;br /&gt;
&lt;br /&gt;
'''candidate_assignment_teams_to_review''': The spec method '''#candidate_assignment_teams_to_review''' validates whether the model method returns nil when there are no contributors to the assignment in the team &lt;br /&gt;
&lt;br /&gt;
'''candidate_topics_for_quiz''': The corresponding spec method validates whether the model method returns nil if the assignment has no sign up topic &lt;br /&gt;
&lt;br /&gt;
==Factory Girl==&lt;br /&gt;
Factory Girl is a fixture replacement which has easy-to-use definition syntax. &amp;lt;ref&amp;gt;http://www.rubydoc.info/gems/factory_girl/file/README.md&amp;lt;/ref&amp;gt;factory_girl_rails provided Rails integration for Factory Girl. We define a factory to create objects which will be used for testing.&lt;br /&gt;
==RSpec==&lt;br /&gt;
RSpec is used for Test Driven Development. It is a Domain Specific Language, also called DSL, used specifically for Ruby Rails projects. It is used for describing the expected behavior of a system with executable examples. RSpec code is similar to Ruby code and it leverages Ruby features and syntax so as to make up a “mini-language” focused on the job of testing. It is commonly used for Unit Testing and Functional testing.&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=oFX1KPNRruA&amp;amp;feature=relmfu&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Rspec and FactoryGirl ==&lt;br /&gt;
&lt;br /&gt;
=== GemFile ===&lt;br /&gt;
Add the following lines of code in the gemfile:&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source 'https://rubygems.org'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 gem 'rspec-rails','~&amp;gt;3.0'&lt;br /&gt;
 gem 'factory_girl-rails','~&amp;gt;4.0'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing FactoryGirl ===&lt;br /&gt;
FactoryGirl is a Ruby Gem that mocks certain classes for&lt;br /&gt;
automated tests. We will use FactoryGirl to mock nodes and&lt;br /&gt;
lists.&lt;br /&gt;
&lt;br /&gt;
Add the following lines of code to the RSpec config in spec/spec_helper.rb.&lt;br /&gt;
 &amp;lt;code&amp;gt;require 'factory_girl_rails'&lt;br /&gt;
 &lt;br /&gt;
 RSpec.configure do |config|&lt;br /&gt;
   config.include FactoryGirl::Syntax::Methods&lt;br /&gt;
 end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building Factories ===&lt;br /&gt;
Each factory has a name and a set of attributes. Implicitly, the name of the factory corresponds to the the class, whose test objects are created by default, but it's possible to explicitly specify the class also.&lt;br /&gt;
&lt;br /&gt;
This will create the objects of the User class:&lt;br /&gt;
       factory :user do&lt;br /&gt;
         sequence(:name) { |n| &amp;quot;NewName #{n}&amp;quot; }&lt;br /&gt;
         fullname {&amp;quot;test_user&amp;quot;}&lt;br /&gt;
         email {&amp;quot;sjolly@ncsu.edu&amp;quot;}&lt;br /&gt;
         parent_id =1&lt;br /&gt;
         is_new_user=true&lt;br /&gt;
       end&lt;br /&gt;
This will use the User class (Admin would have been created):&lt;br /&gt;
     factory :admin '''class: User''' do&lt;br /&gt;
        sequence(:name) { |n| &amp;quot;NewName #{n}&amp;quot; }&lt;br /&gt;
        fullname {&amp;quot;test_user&amp;quot;}&lt;br /&gt;
        email {&amp;quot;sjolly@ncsu.edu&amp;quot;}&lt;br /&gt;
        parent_id =1&lt;br /&gt;
        is_new_user=true&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
It's possible to set up associations within factories. If the factory name is the same as the association name, the factory name can be left out, as given below :&lt;br /&gt;
&lt;br /&gt;
Factory for Assignment having associations with instructor and wiki_type:&lt;br /&gt;
&lt;br /&gt;
     factory :assignment_without_name, class: Assignment do&lt;br /&gt;
        name {}&lt;br /&gt;
        submitter_count {3}&lt;br /&gt;
        is_coding_assignment {true}&lt;br /&gt;
        microtask {true}&lt;br /&gt;
        review_assignment_strategy {'Auto-Selected'}&lt;br /&gt;
        '''''association :instructor, factory: :user'''''&lt;br /&gt;
        '''association :wiki_type, factory: :wiki_typ'''e'' &lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
===Creating specs ===&lt;br /&gt;
&lt;br /&gt;
*Create a assignment_spec.rb file in spec/models folder&lt;br /&gt;
&lt;br /&gt;
An example of a test case is&lt;br /&gt;
 &amp;lt;code&amp;gt;require 'spec_helper'&lt;br /&gt;
 &lt;br /&gt;
 describe &amp;quot;Team_Assignment&amp;quot; do&lt;br /&gt;
    it &amp;quot;checks team assignment should be true&amp;quot; do&lt;br /&gt;
    assign=FactoryGirl.create(:assignment)&lt;br /&gt;
    res=assign.team_assignment&lt;br /&gt;
    expect(res).to be true&lt;br /&gt;
  end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
 $ rspec spec/models/assignment_spec.rb &lt;br /&gt;
You should be able to run tests successfully and see the following message:&lt;br /&gt;
 Finished in 1.11 seconds (files took 14.47 seconds to load)&lt;br /&gt;
 14 examples, 0 failures&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1573_sap&amp;diff=97339</id>
		<title>CSC/ECE 517 Fall 2015/oss E1573 sap</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1573_sap&amp;diff=97339"/>
		<updated>2015-10-30T16:18:26Z</updated>

		<summary type="html">&lt;p&gt;Pmukher: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''E1573 Unit Test for Assignment model''' ==&lt;br /&gt;
&lt;br /&gt;
Assignment.rb is a model in Expertiza -a ruby rails application, that handles the various assignments assigned by the instructors to the teams during their coursework. The OSS project &amp;quot;Unit Test for Assignment model&amp;quot; tests the relationships, validation and scope of the assignment model using RSpec and Factory Girl.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*Write specs for major instance methods of assignment.rb model&lt;br /&gt;
*Create test data by writing factories and use the test data to test the model with rspec  &lt;br /&gt;
&lt;br /&gt;
==Why is unit testing required==&lt;br /&gt;
*Visibility and reporting&lt;br /&gt;
*Control and correction&lt;br /&gt;
*Efficiency and speed&lt;br /&gt;
*Planning and predictability&lt;br /&gt;
*Customer satisfaction&lt;br /&gt;
&lt;br /&gt;
==Factory Girl==&lt;br /&gt;
Factory Girl is a fixture replacement which has easy-to-use definition syntax. &amp;lt;ref&amp;gt;http://www.rubydoc.info/gems/factory_girl/file/README.md&amp;lt;/ref&amp;gt;factory_girl_rails provided Rails integration for Factory Girl. We define a factory to create objects which will be used for testing.&lt;br /&gt;
==RSpec==&lt;br /&gt;
RSpec is used for Test Driven Development. It is a Domain Specific Language, also called DSL, used specifically for Ruby Rails projects. It is used for describing the expected behavior of a system with executable examples. RSpec code is similar to Ruby code and it leverages Ruby features and syntax so as to make up a “mini-language” focused on the job of testing. It is commonly used for Unit Testing and Functional testing.&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=oFX1KPNRruA&amp;amp;feature=relmfu&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up Rspec and FactoryGirl ==&lt;br /&gt;
&lt;br /&gt;
=== GemFile ===&lt;br /&gt;
Add the following lines of code in the gemfile:&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source 'https://rubygems.org'&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 gem 'rspec-rails','~&amp;gt;3.0'&lt;br /&gt;
 gem 'factory_girl-rails','~&amp;gt;4.0'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Preparing FactoryGirl ===&lt;br /&gt;
FactoryGirl is a Ruby Gem that mocks certain classes for&lt;br /&gt;
automated tests. We will use FactoryGirl to mock nodes and&lt;br /&gt;
lists.&lt;br /&gt;
&lt;br /&gt;
Add the following lines of code to the RSpec config in spec/spec_helper.rb.&lt;br /&gt;
 &amp;lt;code&amp;gt;require 'factory_girl_rails'&lt;br /&gt;
 &lt;br /&gt;
 RSpec.configure do |config|&lt;br /&gt;
   config.include FactoryGirl::Syntax::Methods&lt;br /&gt;
 end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building Factories ===&lt;br /&gt;
Each factory has a name and a set of attributes. Implicitly, the name of the factory corresponds to the the class, whose test objects are created by default, but it's possible to explicitly specify the class also.&lt;br /&gt;
&lt;br /&gt;
This will create the objects of the User class:&lt;br /&gt;
       factory :user do&lt;br /&gt;
         sequence(:name) { |n| &amp;quot;NewName #{n}&amp;quot; }&lt;br /&gt;
         fullname {&amp;quot;test_user&amp;quot;}&lt;br /&gt;
         email {&amp;quot;sjolly@ncsu.edu&amp;quot;}&lt;br /&gt;
         parent_id =1&lt;br /&gt;
         is_new_user=true&lt;br /&gt;
       end&lt;br /&gt;
This will use the User class (Admin would have been created):&lt;br /&gt;
     factory :admin '''class: User''' do&lt;br /&gt;
        sequence(:name) { |n| &amp;quot;NewName #{n}&amp;quot; }&lt;br /&gt;
        fullname {&amp;quot;test_user&amp;quot;}&lt;br /&gt;
        email {&amp;quot;sjolly@ncsu.edu&amp;quot;}&lt;br /&gt;
        parent_id =1&lt;br /&gt;
        is_new_user=true&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
It's possible to set up associations within factories. If the factory name is the same as the association name, the factory name can be left out, as given below :&lt;br /&gt;
&lt;br /&gt;
Factory for Assignment having associations with instructor and wiki_type:&lt;br /&gt;
&lt;br /&gt;
     factory :assignment_without_name, class: Assignment do&lt;br /&gt;
        name {}&lt;br /&gt;
        submitter_count {3}&lt;br /&gt;
        is_coding_assignment {true}&lt;br /&gt;
        microtask {true}&lt;br /&gt;
        review_assignment_strategy {'Auto-Selected'}&lt;br /&gt;
        '''''association :instructor, factory: :user'''''&lt;br /&gt;
        '''association :wiki_type, factory: :wiki_typ'''e'' &lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
===Creating specs ===&lt;br /&gt;
&lt;br /&gt;
*Create a assignment_spec.rb file in spec/models folder&lt;br /&gt;
&lt;br /&gt;
An example of a test case is&lt;br /&gt;
 &amp;lt;code&amp;gt;require 'spec_helper'&lt;br /&gt;
 &lt;br /&gt;
 describe &amp;quot;Team_Assignment&amp;quot; do&lt;br /&gt;
    it &amp;quot;checks team assignment should be true&amp;quot; do&lt;br /&gt;
    assign=FactoryGirl.create(:assignment)&lt;br /&gt;
    res=assign.team_assignment&lt;br /&gt;
    expect(res).to be true&lt;br /&gt;
  end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tested Spec Methods==&lt;br /&gt;
&lt;br /&gt;
'''team_Assignment''': The methods returns true by default indicating it is a team assignment. The rspec method '''#team_assignment''' checks whether the method returns true or not&lt;br /&gt;
&lt;br /&gt;
'''has_Teams''': The method in the assignment model returns true or false depending upon whether the assignement has one or more teams associated with it. The corresponding rspec method '''#has_teams?''' checks whether the method returns true when a team has been assigned to it. &lt;br /&gt;
&lt;br /&gt;
'''has_Topics''': The method in the assignment model returns true or false depending upon whether the assignment has one or more topics associated with it. The corresponding rspec method '''#has_topics'''? checks whether the method returns true when a team has been assigned to it.&lt;br /&gt;
&lt;br /&gt;
'''is_wiki_assignment''': The method in the assignment model returns true or false depending upon whether the assignment is a wiki assignment or not. It returns true if its '''wiki_type_id &amp;gt; 1'''. The corresponding rspec method '''#is_wiki_assignment''' validates that the model method returns true when the assignment is a wiki assignment with wiki_type_id &amp;gt;1&lt;br /&gt;
&lt;br /&gt;
'''is_google_doc''': The method in the assignment model returns true or false depending upon whether the assignment is a google document or not. It returns true if its '''wiki_type_id =4'''. The corresponding rspec method #is_google_doc validates that the model method returns true when the assignment is a google document with wiki_type_id =4&lt;br /&gt;
&lt;br /&gt;
is_microtask:  The method in the assignment model returns true or false depending upon whether the assignment is a microtask or not. It returns true if the microtask variable isassigned true in the assignment. The corresponding rspec method '''#is_microtask?''' validates that the model method returns true when the microtask variable is assigned true in the assignment&lt;br /&gt;
&lt;br /&gt;
'''dynamic_reviewer_assignment''': The method in the assignment model checks whether the '''review_assignment_strategy''' is set to ''''Auto-Selected'''' or not. It returns true if the review_assignment_strategy value is set to ‘Auto-Selected’. The corresponding rspec method '''#dynamic_reviewer_assignment?''' validates that the model method returns true when the review_assignment_strategy is set to 'Auto-Selected'.&lt;br /&gt;
&lt;br /&gt;
'''candidate_assignment_teams_to_review''': The spec method '''#candidate_assignment_teams_to_review''' validates whether the model method returns nil when there are no contributors to the assignment in the team &lt;br /&gt;
&lt;br /&gt;
'''candidate_topics_for_quiz''': The corresponding spec method validates whether the model method returns nil if the assignment has no sign up topic &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running RSpec===&lt;br /&gt;
&lt;br /&gt;
 $ rspec spec/models/assignment_spec.rb &lt;br /&gt;
You should be able to run tests successfully and see the following message:&lt;br /&gt;
 Finished in 1.11 seconds (files took 14.47 seconds to load)&lt;br /&gt;
 14 examples, 0 failures&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pmukher</name></author>
	</entry>
</feed>