<?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=Meschwei</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=Meschwei"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Meschwei"/>
	<updated>2026-05-24T12:45:53Z</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=99474</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=99474"/>
		<updated>2015-11-12T04:03:34Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Plan */&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.  We will create a file called spec/features/peer_review.rb to run our integration tests.&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>Meschwei</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=99421</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=99421"/>
		<updated>2015-11-11T17:00:16Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */&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 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>Meschwei</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=99420</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=99420"/>
		<updated>2015-11-11T16:46:25Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */&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;
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>Meschwei</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=99419</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=99419"/>
		<updated>2015-11-11T16:40:09Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */&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;
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;&lt;br /&gt;
&lt;br /&gt;
=== Test Cases Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99319</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99319"/>
		<updated>2015-11-10T03:02:50Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Enforce Good Ruby Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
= Unit Testing =&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec&amp;lt;ref&amp;gt;[http://rspec.info/ RSpec - http://rspec.info/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
.  We also utilized the RSpec-Mocks&amp;lt;ref&amp;gt;[https://github.com/rspec/rspec-mocks RSpec-Mocks - https://github.com/rspec/rspec-mocks]&amp;lt;/ref&amp;gt; to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza - https://github.com/expertiza/expertiza]&amp;lt;/ref&amp;gt;, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
= Refactoring =&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Extracting Variables ==&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enforce Good Ruby Conventions ==&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code&amp;lt;ref&amp;gt;[https://github.com/bbatsov/ruby-style-guide Ruby Style Guidelines - https://github.com/bbatsov/ruby-style-guide]&amp;lt;/ref&amp;gt;.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating New Methods ==&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Run Tests =&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
= Fixing Issue 580 =&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99318</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99318"/>
		<updated>2015-11-10T03:01:39Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Unit Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
= Unit Testing =&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec&amp;lt;ref&amp;gt;[http://rspec.info/ RSpec - http://rspec.info/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
.  We also utilized the RSpec-Mocks&amp;lt;ref&amp;gt;[https://github.com/rspec/rspec-mocks RSpec-Mocks - https://github.com/rspec/rspec-mocks]&amp;lt;/ref&amp;gt; to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza - https://github.com/expertiza/expertiza]&amp;lt;/ref&amp;gt;, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
= Refactoring =&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Extracting Variables ==&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enforce Good Ruby Conventions ==&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Creating New Methods ==&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Run Tests =&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
= Fixing Issue 580 =&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99317</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99317"/>
		<updated>2015-11-10T03:00:22Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Unit Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
= Unit Testing =&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec&amp;lt;ref&amp;gt;[http://rspec.info/ RSpec - http://rspec.info/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
.  We also utilized the RSpec-Mocks&amp;lt;ref&amp;gt;[https://github.com/rspec/rspec-mocks RSpec-Mocks - https://github.com/rspec/rspec-mocks]&amp;lt;/ref&amp;gt; to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
= Refactoring =&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Extracting Variables ==&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enforce Good Ruby Conventions ==&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Creating New Methods ==&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Run Tests =&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
= Fixing Issue 580 =&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99316</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99316"/>
		<updated>2015-11-10T02:59:17Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Unit Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
= Unit Testing =&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec&amp;lt;ref&amp;gt;[http://rspec.info/ RSpec - http://rspec.info/]&amp;lt;/ref&amp;gt;&lt;br /&gt;
.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
= Refactoring =&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Extracting Variables ==&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enforce Good Ruby Conventions ==&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Creating New Methods ==&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Run Tests =&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
= Fixing Issue 580 =&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99315</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99315"/>
		<updated>2015-11-10T02:57:37Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
= Unit Testing =&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
= Refactoring =&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Extracting Variables ==&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enforce Good Ruby Conventions ==&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Creating New Methods ==&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to Run Tests =&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
= Fixing Issue 580 =&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99314</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99314"/>
		<updated>2015-11-10T02:55:27Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Creating New Methods ===&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Run Tests ==&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&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>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99290</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99290"/>
		<updated>2015-11-10T02:10:07Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Unit Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
Before we started working on Expertiza, running RSpec on the codebase resulted in 992 / 4184 lines of code (23.71%) covered.  After our work, running RSpec on the codebase resulted in 1144 / 4278 lines of code (26.74%) covered.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Creating New Methods ===&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Run Tests ==&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99286</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99286"/>
		<updated>2015-11-10T01:56:24Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* How to Run Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Creating New Methods ===&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Run Tests ==&lt;br /&gt;
# Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
# Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
#;&amp;lt;pre&amp;gt;rspec spec/models/sign_up_sheet_spec.rb&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check coverage:&lt;br /&gt;
#;Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
#;# Create() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
#;# self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99285</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99285"/>
		<updated>2015-11-10T01:48:50Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Unit Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller tests and model tests for corresponding functions so as to test various scenarios and get 100% test coverage.  We sought to obtain this high level of coverage to make refactoring more precise.  We believe that highly tested code is resilient errors that could occur when refactoring.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller.&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&lt;br /&gt;
&lt;br /&gt;
# Create() in SignUpSheetController&lt;br /&gt;
# self.add_signup_topic() in  SignUpSheet&lt;br /&gt;
# save_topic_deadlines() in SignUpSheetController&lt;br /&gt;
# self.confirmTopic() in  SignUpSheet&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Creating New Methods ===&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Run Tests ==&lt;br /&gt;
1. Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&lt;br /&gt;
&lt;br /&gt;
rspec spec/models/sign_up_sheet_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Check coverage: &amp;lt;br/&amp;gt;&lt;br /&gt;
Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
 &amp;lt;br/&amp;gt;&lt;br /&gt;
a. Create()in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
b. self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
c. save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
d. self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99284</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=99284"/>
		<updated>2015-11-10T01:44:36Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.  We found that directly testing the functions that we refactored provided better assurances that our refactorings were correct rather than manual testing the user interface.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We wrote multiple controller and model tests for corresponding functions so as to tests various scenarios and get 100 % test coverage.&lt;br /&gt;
&lt;br /&gt;
E.g. If you run the test in spec/controllers/sign_up_sheet_spec.rb by command &amp;quot;rspec spec/controllers/sign_up_sheet_spec.rb&amp;quot;, then you can see the 100% line coverage for controller method save_topic_deadlines() in sign_up_sheet_controller.rb. For checking the coverage, open the index.html page coverage folder and go to respective controller. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar, run the tests in Model and Controllers folder to see 100% test coverage for following functions.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Create()in SignUpSheetController&amp;lt;br/&amp;gt;&lt;br /&gt;
2. self.add_signup_topic() in  SignUpSheet Model&amp;lt;br/&amp;gt;&lt;br /&gt;
3. save_topic_deadlines() in SignUpSheetController&amp;lt;br/&amp;gt;&lt;br /&gt;
4. self.confirmTopic() in  SignUpSheet&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We replaced &amp;quot;=&amp;gt;&amp;quot; while passing parameter by colon (:)&lt;br /&gt;
So that &amp;lt;pre&amp;gt;&lt;br /&gt;
'due_at' =&amp;gt; due_dates[session[:duedates][j]['id'].to_s &amp;lt;/pre&amp;gt;&lt;br /&gt;
became &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
due_at: due_dates[session[:duedates][j]['id'].to_s &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=== Creating New Methods ===&lt;br /&gt;
We have refactored the methods which were doing a lot of things into two or more methods so as to segregate the functionality and following the basic principal that one method should do only one thing. Also, this helped in making the methods more readable and easy to understand.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. In sign_up_sheet.rb Model, &amp;quot;def sign_up_wailisted()&amp;quot; is the new method extracted from original method self.confirmTopic(). There are many more such examples which are done as part of refactoring.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to Run Tests ==&lt;br /&gt;
1. Clone the repo &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;git clone https://github.com/MaxSchweizer/expertiza&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Change current directory to cloned repository &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Run Command: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;rspec spec/controllers/sign_up_sheet_spec.rb&lt;br /&gt;
&lt;br /&gt;
rspec spec/models/sign_up_sheet_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Check coverage: &amp;lt;br/&amp;gt;&lt;br /&gt;
Open overage/index.html in browser and check line coverage for following methods&lt;br /&gt;
 &amp;lt;br/&amp;gt;&lt;br /&gt;
a. Create()in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
b. self.add_signup_topic() in sign_up_sheet.rb Models&amp;lt;br/&amp;gt;&lt;br /&gt;
c. save_topic_deadlines() in sign_up_sheet_controller.rb in Controllers&amp;lt;br/&amp;gt;&lt;br /&gt;
d. self.confirmTopic() in sign_up_sheet.rb in Models&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</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=98894</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=98894"/>
		<updated>2015-11-07T19:27:22Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */&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 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 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&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>Meschwei</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=98882</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=98882"/>
		<updated>2015-11-07T19:18:16Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Background */&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 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>Meschwei</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=98879</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=98879"/>
		<updated>2015-11-07T19:16:51Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* References */&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 '''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 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;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Meschwei</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=98878</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=98878"/>
		<updated>2015-11-07T19:16:27Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Background */&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 '''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 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>Meschwei</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=98877</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=98877"/>
		<updated>2015-11-07T19:14:49Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza 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 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>Meschwei</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=98872</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=98872"/>
		<updated>2015-11-07T19:10:50Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Technologies to be used */&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;
Once an The project aims to write integration tests for the &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>Meschwei</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=98864</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=98864"/>
		<updated>2015-11-07T19:01:49Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Background */&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;
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;
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>Meschwei</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=98858</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=98858"/>
		<updated>2015-11-07T18:47:59Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */ More test cases&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;
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>Meschwei</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=98857</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=98857"/>
		<updated>2015-11-07T18:45:22Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Test Scenarios */ Basic testing scanarios&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;
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;
==References==&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97625</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97625"/>
		<updated>2015-10-31T19:55:09Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Enforce Good Ruby Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
We attempted to enforce good Ruby conventions while refactoring the code.  This entails doing things like correcting the formatting of the code to make it more readable.  In addition to this, we converted a variety of iterators to follow good ruby conventions.&lt;br /&gt;
&lt;br /&gt;
For example, sign_up_sheet.rb had the function self.add_sign_up_topic(assignment_id) which contained an iteration through a set of topics while manually maintaining an index variable.  Manually maintaining the index variable can be problematic for future maintenance.&lt;br /&gt;
&amp;lt;pre&amp;gt;i=0&lt;br /&gt;
@topics.each { |topic|&lt;br /&gt;
  # Code not relevant to example omitted.&lt;br /&gt;
  i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We replaced these with the Ruby &amp;lt;code&amp;gt;each_with_index&amp;lt;/code&amp;gt; iterator.  This allows us to pass the responsibility of maintaining the count of the index to the iterator.&lt;br /&gt;
&amp;lt;pre&amp;gt;@topics.each_with_index do |topic, i|&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97619</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97619"/>
		<updated>2015-10-31T19:48:07Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Refactoring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enforce Good Ruby Conventions ===&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97615</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97615"/>
		<updated>2015-10-31T19:45:00Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Refactoring */ Extracting Variables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
=== Extracting Variables ===&lt;br /&gt;
We extracted variable from complicated statements to increase the readability of the code.  In the code base we were working with, there were a variety of lines of code that were more than 80 characters long.  These lines of code were hard to read.  So, we split them up into multiple lines of code by extracting statements found in function calls into their own variable.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: DeadlineType.find_by_name('submission').id, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Became:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deadline_type_subm = DeadlineType.find_by_name('submission').id&lt;br /&gt;
duedate_subm = TopicDeadline.where(topic_id: topic.id, deadline_type_id: deadline_type_subm, round: j).first&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97521</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97521"/>
		<updated>2015-10-31T16:36:26Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.&lt;br /&gt;
&lt;br /&gt;
== Unit Testing ==&lt;br /&gt;
For our unit testing, we used the RSpec framework.  We choose this framework since legacy tests of our methods were implemented with RSpec.  We also utilized the RSpec-Mocks to test functions related to the database without having to use fixtures.&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
We performed various refactorings on our code to increase the codes readability and remove redundancy.&lt;br /&gt;
&lt;br /&gt;
== Fixing Issue 580 ==&lt;br /&gt;
We were not able to recreate the problem found in issue 580.  After multiple attempts of trying to recreate the bug we began to examine the source code.  We believe that someone else has already fixed the bug before we started working on the project.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97520</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97520"/>
		<updated>2015-10-31T16:31:34Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: Basic Introduction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb =&lt;br /&gt;
In this project, we have unit tested various methods in SignUpSheetController.rb and SignUpSheet.rb as well as refactoring these methods.  We first wrote unit tests to ensure we had adequate coverage for our methods.  Then, we refactored our methods with confidence found from our unit tests.&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97519</id>
		<title>CSC/ECE 517 Fall 2015/oss E1557 GXM</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1557_GXM&amp;diff=97519"/>
		<updated>2015-10-31T16:24:59Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: First Commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;E1557. Refactoring SignUpSheetController.rb and SignUpSheet.rb&lt;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015&amp;diff=97518</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=97518"/>
		<updated>2015-10-31T16:24:27Z</updated>

		<summary type="html">&lt;p&gt;Meschwei: /* Writing Assignment 2 */&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 E1551 RGS]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1555 GMR]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2015/oss E1552 NRR]]&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;/div&gt;</summary>
		<author><name>Meschwei</name></author>
	</entry>
</feed>