<?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=Apatel13</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=Apatel13"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Apatel13"/>
	<updated>2026-08-09T04:48:55Z</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_2017/E17AA_Nomination_for_Badges&amp;diff=113219</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113219"/>
		<updated>2017-11-14T04:38:04Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd5.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views Expertiza Github Master Branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format Expertiza Database Schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd5.PNG&amp;diff=113218</id>
		<title>File:Oodd5.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd5.PNG&amp;diff=113218"/>
		<updated>2017-11-14T04:37:39Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113217</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113217"/>
		<updated>2017-11-14T04:36:40Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd4.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views Expertiza Github Master Branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format Expertiza Database Schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd4.PNG&amp;diff=113216</id>
		<title>File:Oodd4.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd4.PNG&amp;diff=113216"/>
		<updated>2017-11-14T04:36:19Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113215</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113215"/>
		<updated>2017-11-14T04:35:30Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:OODD3.png]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views Expertiza Github Master Branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format Expertiza Database Schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OODD3.png&amp;diff=113214</id>
		<title>File:OODD3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OODD3.png&amp;diff=113214"/>
		<updated>2017-11-14T04:34:38Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113210</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113210"/>
		<updated>2017-11-14T04:24:17Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views Expertiza Github Master Branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format Expertiza Database Schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113209</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113209"/>
		<updated>2017-11-14T04:23:50Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Reference Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views Expertiza Master Branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format Expertiza Database Schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113208</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113208"/>
		<updated>2017-11-14T04:23:14Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Reference Links==&lt;br /&gt;
*[https://github.com/expertiza/expertiza/tree/master/app/views expertiza master branch]&lt;br /&gt;
*[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format expertiza schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113207</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113207"/>
		<updated>2017-11-14T04:22:46Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://github.com/expertiza/expertiza/tree/master/app/views expertiza master branch]&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format expertiza schema]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113206</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113206"/>
		<updated>2017-11-14T04:22:18Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://github.com/expertiza/expertiza/tree/master/app/views]&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2015_E1575_Share_the_data_in_Expertiza_to_a_remote_server_via_PRML_format]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113205</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113205"/>
		<updated>2017-11-14T04:21:51Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[https://github.com/expertiza/expertiza/tree/master/app/views]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113204</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113204"/>
		<updated>2017-11-14T04:21:42Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
:·[https://github.com/expertiza/expertiza/tree/master/app/views]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113203</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113203"/>
		<updated>2017-11-14T04:20:15Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
:·[https://github.com/expertiza/expertiza/tree/master/app/views]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113202</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113202"/>
		<updated>2017-11-14T04:19:58Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
:·[https://github.com/expertiza/expertiza/tree/master/app/views 1]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113200</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113200"/>
		<updated>2017-11-14T04:18:16Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
We will be creating test cases in the files &lt;br /&gt;
:·peer review.rb :Check with peer reviewer will be able to nominate badges&lt;br /&gt;
:·review_assignment_spec.rb:Check whether user is able to review assignment with Team Size=1&lt;br /&gt;
:·team_creation_spec.rb:Check the Team Size&lt;br /&gt;
:·review_mapping_spec.rb:Check whether reviewer is correctly mapped to the enrolled course&lt;br /&gt;
:·Write feature tests to verify the modifications:Include tests in the a new badge_system_spec.rb file in the spec/features directory&lt;br /&gt;
&lt;br /&gt;
*UI design Testing:&lt;br /&gt;
:·Check if peer reviewer is able to nominate for badges with drop down list and contains text boxes for justification.&lt;br /&gt;
:·Check if instructor is able to view the summary of all nominations.&lt;br /&gt;
:·Cosmetic Inconsistencies – The screen look, feel and design should match the other screens in your application.&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113199</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113199"/>
		<updated>2017-11-14T04:15:26Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113198</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113198"/>
		<updated>2017-11-14T04:14:49Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Design Pattern==&lt;br /&gt;
  [[File:Oodd2.PNG]]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113197</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113197"/>
		<updated>2017-11-14T04:13:32Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;br /&gt;
&lt;br /&gt;
==Execution Flow==&lt;br /&gt;
  [[File:Oodd1.PNG]]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd2.PNG&amp;diff=113196</id>
		<title>File:Oodd2.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd2.PNG&amp;diff=113196"/>
		<updated>2017-11-14T04:12:20Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd1.PNG&amp;diff=113195</id>
		<title>File:Oodd1.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Oodd1.PNG&amp;diff=113195"/>
		<updated>2017-11-14T04:12:05Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113194</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113194"/>
		<updated>2017-11-14T04:11:09Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Add the code to include the selection of relevant badges and the justification text box Assignment_questionnaire_controller.rb.&lt;br /&gt;
:· Add the badges model to assignment_questionnaire.rb.&lt;br /&gt;
:· Add the code to display the nomination summary on the page student_task/list page&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113193</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113193"/>
		<updated>2017-11-14T04:09:39Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project.&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
   id: primary key&lt;br /&gt;
   name: varchar&lt;br /&gt;
   description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
   Id: Primary key&lt;br /&gt;
   assignment_id: foreign key&lt;br /&gt;
   questionnaire_id: foreign key&lt;br /&gt;
   badge_id: foreign key&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113192</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113192"/>
		<updated>2017-11-14T04:09:08Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project.&lt;br /&gt;
&lt;br /&gt;
*Tables to be Modified&lt;br /&gt;
:· We’ll be creating a table named “badges”, with the following attributes: &lt;br /&gt;
id: primary key&lt;br /&gt;
name: varchar&lt;br /&gt;
description: varchar&lt;br /&gt;
&lt;br /&gt;
:· We’ll be creating a table named “assignment_questionnaires_badges”, with the following attributes: &lt;br /&gt;
Id: Primary key&lt;br /&gt;
assignment_id: foreign key&lt;br /&gt;
questionnaire_id: foreign key&lt;br /&gt;
badge_id: foreign key&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113189</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113189"/>
		<updated>2017-11-14T04:07:58Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project.&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113187</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113187"/>
		<updated>2017-11-14T04:07:40Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;br /&gt;
&lt;br /&gt;
==Modifications To Be Done==&lt;br /&gt;
&lt;br /&gt;
*Files to be Modified&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113183</id>
		<title>CSC/ECE 517 Fall 2017/E17AA Nomination for Badges</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E17AA_Nomination_for_Badges&amp;diff=113183"/>
		<updated>2017-11-14T04:05:15Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
The purpose of the project is to implement a way to allow students to nominate badges to other students while reviewing their work. The professor should also be able to see the nominations to each student in a single page. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pre-Conditions==&lt;br /&gt;
&lt;br /&gt;
These are the pre-conditions that needs to hold true for each functionality to work&lt;br /&gt;
&lt;br /&gt;
:· The maximum number of students that can be assigned to the project cannot be more then 1. &lt;br /&gt;
:· For students to nominate badges, the professor must have provided a list of pre-decided badges possible for that project. &lt;br /&gt;
:· For students to be able to nominate badged without justification only if the project does not have a mandatory justification requirement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementation Steps==&lt;br /&gt;
&lt;br /&gt;
:· Provide professors an option to add all possible badges to a project. &lt;br /&gt;
:· Allow students to nominate badges while peer reviewing.&lt;br /&gt;
:· Show a summary of all nominated badges to professor in a single page.&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=112823</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=112823"/>
		<updated>2017-11-10T21:48:04Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Design Project Documentation'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A8. Use a profiler to identify the problems / pages that take some time to load &amp;amp; fix them]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A0 Team-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join_Team1964]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1791. Track the time that students look at the other submissions - logging improvement]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1799 Improve self-review Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1797_Timestamps_for_students_submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E17A1|CSC/ECE_517_Fall_2017/E17A1 - Let experts as well as students do reviews]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/M1754_Mutation_Testing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1794. Student-generated questions added to rubric]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1792 OSS Visualizations for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment_Team34]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A7_Allow_Reviewers_to_bid_on_what_to_review]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A9 Lazy loading (infinite scroll) for assignments courses questionnaires and user lists with Jscroll]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1796. Unify Create Assignment and Edit Assignment pages]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A3 Upgrade review input UI and sanitize text input]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17AA Nomination for Badges]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas API]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1767 Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1786_OSS project Juniper Bookmark Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1749_Test First Development Refactor questionnaire_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1771_Refactor_team.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1784 Fix mass assignments reported by Brakeman.rb]]&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111090</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111090"/>
		<updated>2017-11-01T00:15:10Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A:&lt;br /&gt;
&lt;br /&gt;
Setting up the environment for Mac OS-Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B:&lt;br /&gt;
Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command from the servo directory:&lt;br /&gt;
&lt;br /&gt;
 cd servo&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
*There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111089</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111089"/>
		<updated>2017-11-01T00:14:31Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A:&lt;br /&gt;
&lt;br /&gt;
Setting up the environment for Mac OS-Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B:&lt;br /&gt;
Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command from the servo directory:&lt;br /&gt;
&lt;br /&gt;
 cd servo&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111088</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111088"/>
		<updated>2017-11-01T00:13:09Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A:&lt;br /&gt;
&lt;br /&gt;
Setting up the environment for Mac OS-Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B:&lt;br /&gt;
Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111087</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111087"/>
		<updated>2017-11-01T00:12:39Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A:&lt;br /&gt;
Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B:&lt;br /&gt;
Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111086</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111086"/>
		<updated>2017-11-01T00:12:12Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111085</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111085"/>
		<updated>2017-11-01T00:11:30Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process and Invoking Script&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command from the servo directory:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111084</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111084"/>
		<updated>2017-11-01T00:11:13Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* Mutation test can be ran using the following command from the servo directory:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111083</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111083"/>
		<updated>2017-11-01T00:09:53Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* From the Servo directory invoke the following script :&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
Mutation test can be ran using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111082</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111082"/>
		<updated>2017-11-01T00:08:50Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation of virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* From the Servo directory invoke the following script :&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111081</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111081"/>
		<updated>2017-11-01T00:08:32Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: &lt;br /&gt;
Install python version 3 and  run the following for installation virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* From the Servo directory invoke the following script :&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111080</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111080"/>
		<updated>2017-11-01T00:08:04Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
&lt;br /&gt;
Step A-Setting up the environment for Mac OS: Install python version 3 and  run the following for installation virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* From the Servo directory invoke the following script :&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111079</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111079"/>
		<updated>2017-11-01T00:07:44Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link].&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
Step A-Setting up the environment for Mac OS: Install python version 3 and  run the following for installation virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository from [https://github.com/dsandeephegde/servo link]&lt;br /&gt;
&lt;br /&gt;
* From the Servo directory invoke the following script :&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111078</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111078"/>
		<updated>2017-11-01T00:05:10Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
Step A-Setting up the environment for Mac OS: Install python version 3 and  run the following for installation virtualenv: &lt;br /&gt;
&lt;br /&gt;
 sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository [https://github.com/dsandeephegde/servo]&lt;br /&gt;
* From the Servo directory invoke the &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111077</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111077"/>
		<updated>2017-11-01T00:04:30Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description.&lt;br /&gt;
&lt;br /&gt;
Example on how to setup the environment and run the mutation testing scripts.&lt;br /&gt;
Step A-Setting up the environment for Mac OS: Install python version 3 and  run the following for installation virtualenv: &lt;br /&gt;
&lt;br /&gt;
sudo port install python27 py27-virtualenv cmake yasm&lt;br /&gt;
&lt;br /&gt;
Step B-Build Process&lt;br /&gt;
* Clone the repository [https://github.com/dsandeephegde/servo]&lt;br /&gt;
* From the Servo directory invoke the &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111076</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111076"/>
		<updated>2017-10-31T23:38:56Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and run tests on them to check for failures. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
There are standard techniques that define what a mutant is. For example, replacing '&amp;amp;&amp;amp;' with '||'. However, there is no specification for the number of replacements that must be made within a single source code, nor is there any specification on the permutations of possible mutations for each technique. This is an ambiguity in the project and our implementation replaces all instances of '&amp;amp;&amp;amp;' to '||' to generate a single type of mutant for the each file of the source code.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111075</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=111075"/>
		<updated>2017-10-31T23:32:32Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base. &lt;br /&gt;
&lt;br /&gt;
The implementation of this project was done by writing python scripts that would modify the source code to generate mutants and test them. The scripts would temporarily modify the source codes, call the corresponding tests and revert back to the original code by reversing the changes that were made earlier. This process was repeated for multiple iterations by modifying various parts of the source code.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. It is expected that any reviewer will face a similar challenge.&lt;br /&gt;
&lt;br /&gt;
We overcame this challenge by discussing possibilities with Mozilla team who suggested us to use web application such as Janitor Technology. Using a web based platform for our testing made the project agnostic of the environment on the local machine and any hassle associated with same.&lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. Due to a large number of source files and WPT tests for the entire project, it was difficult for one individual to have information on the mapping of components to their corresponding WPTs. &lt;br /&gt;
&lt;br /&gt;
Hence, we had to have a mapping to run the corresponding tests for a source file. The mapping framework enabled us to run tests on a few components and provide a base for other members from Mozilla team to add and replicate the same framework as per their requirement.&lt;br /&gt;
&lt;br /&gt;
3. Understanding the extent of mutation testing to be performed.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110987</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110987"/>
		<updated>2017-10-30T05:46:07Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The project is about writing a python script to change the source code and run tests. It does not add any functionality to Servo. So there is no scope for testing in this project.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110986</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110986"/>
		<updated>2017-10-30T04:08:25Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110972</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110972"/>
		<updated>2017-10-30T03:42:39Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Web-platform-tests===&lt;br /&gt;
The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn, gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as a Fault-based testing strategy as it involves creating faults in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/script/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
The script for mutation testing is tested by creating mutants and validating the performance of WPT on the mutants.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110782</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110782"/>
		<updated>2017-10-28T04:17:07Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Execution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as Fault based testing strategy as it involves creating fault in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be invoked by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/scirpt/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110781</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110781"/>
		<updated>2017-10-28T04:14:31Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as Fault based testing strategy as it involves creating fault in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
Mutation test can be started by using the following command:&lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/scirpt/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110780</id>
		<title>CSC/ECE 517 Fall 2017/M1754 Mutation Testing on Servo</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/M1754_Mutation_Testing_on_Servo&amp;diff=110780"/>
		<updated>2017-10-28T04:13:51Z</updated>

		<summary type="html">&lt;p&gt;Apatel13: /* Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Servo uses the Web Platform Test (WPT) suite for testing, but does not perform an evaluation of the breadth of the tests. The goal of this project is to use techniques from mutation testing to evaluate the performance of the WPT suite when bugs are deliberately introduced into the code base.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
&lt;br /&gt;
Servo is a modern, high-performance browser engine designed for both application and embedded use. [https://servo.org Servo] is a web browser layout engine written in [https://github.com/rust-lang/rust Rust]and is currently being developed by [https://en.wikipedia.org/wiki/Mozilla Mozilla]. The aim of the project is not to create a full browser but is rather to create a highly parallel environment that allows for many components be handled by fine-grained, isolated tasks. [https://en.wikipedia.org/wiki/Servo_(layout_engine)]&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
&lt;br /&gt;
[https://doc.rust-lang.org/book/second-edition/ Rust] is an open source,  systems programming language sponsored by Mozilla Research. Rust performs the majority of its safety checks and memory management decisions at compile time, so that program’s runtime performance is not impacted. Making it useful in programs with predictable space and time requirements, embedding in other languages, and writing low-level code, like device drivers and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Mutation Testing===&lt;br /&gt;
Mutation Testing is a type of software testing where we mutate (change) certain statements in the source code and check if the test cases are able to find the errors.The goal of Mutation Testing is to assess the quality of the test cases which should be robust enough to fail mutant code. This method is also called as Fault based testing strategy as it involves creating fault in the program.Faults are introduced into the source code of the program by creating many versions called mutants. Each mutant should contain a single fault, and the goal is to cause the mutant version to fail which demonstrates the effectiveness of the test cases.[https://www.guru99.com/mutation-testing.html ]&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The steps to setup the environment were followed as mentioned in readme file [https://github.com/servo/servo link]. The servo code was built in release mode on a Mac environment using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach build --release&lt;br /&gt;
&lt;br /&gt;
The whole set of WPT was run on the servo code base using the below command:&lt;br /&gt;
&lt;br /&gt;
 ./mach test -wpt --release&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
The approach adopted was based on the requirements mentioned [https://github.com/servo/servo/wiki/Mutation-testing-project here]. The below steps implement the initial steps mentioned in the project description. &lt;br /&gt;
&lt;br /&gt;
* Step 1: A python script was written to mutate one source file and the corresponding WPT was run on it to check if the mutant was killed.&lt;br /&gt;
&lt;br /&gt;
* Step 2: A test framework was defined to identify the source files that require mutation testing along with their corresponding WPTs. This framework is implemented in /servo/components/script/dom.&lt;br /&gt;
&lt;br /&gt;
* Step 3: The script was expanded to include the test framework and automate the process of generating mutations for multiple source files and running their corresponding WPTs based on the test_mapping.json. The script also traverses through sub folders of the parsed path to check for the .json file. The script also logs on the terminal any mutants that the WPT failed to kill.&lt;br /&gt;
&lt;br /&gt;
* Step 4: Integrated the script so that it can be invoked from the CI tool.&lt;br /&gt;
&lt;br /&gt;
===Execution===&lt;br /&gt;
&lt;br /&gt;
The script can be called by running in terminal: &lt;br /&gt;
&lt;br /&gt;
 python python/servo/mutation/init.py components/scirpt/dom&lt;br /&gt;
&lt;br /&gt;
===Output===&lt;br /&gt;
&lt;br /&gt;
The log for success to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss4.png]]&lt;br /&gt;
&lt;br /&gt;
The log for failure to kill a mutant is as shown below:&lt;br /&gt;
&lt;br /&gt;
[[File:Oss1.png]]&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
&lt;br /&gt;
The following subsequent steps will be followed to meet the project requirements as per this [https://github.com/servo/servo/wiki/Mutation-testing-project].&lt;br /&gt;
&lt;br /&gt;
* implement mutations like replacing if statements by if true/if false, duplicating statements, reordering statements, changing arithmetic &amp;amp; atomic string constant.&lt;br /&gt;
* improving the performance of the testing, for example randomizing the test order, fast-failing, running tests with faster builds (e.g. ./mach build -d).&lt;br /&gt;
* find heuristics for identifying false positives, that is mutations which are expected to have no effect, for example removing logging.&lt;br /&gt;
* find search heuristics for identifying mutations that cause no test failures.&lt;br /&gt;
&lt;br /&gt;
===Challenges===&lt;br /&gt;
&lt;br /&gt;
1. Setting up environment in local machine:&lt;br /&gt;
&lt;br /&gt;
*The amount of time taken to build and test the WPT in local machine was pretty long due to machine memory. Additionally faced problems on intermittent WPT test failures. &lt;br /&gt;
&lt;br /&gt;
2. Defining the test mapping framework:&lt;br /&gt;
 &lt;br /&gt;
*Servo consists of multiple components of which there are many wpt tests written for each component. The test cases are organized according to the functionality they test, whereas the servo source code is organized according to the specific components. We had to have a mapping to be able to run the corresponding tests for a source file.&lt;br /&gt;
&lt;br /&gt;
==Pull Request==&lt;br /&gt;
&lt;br /&gt;
Here is our pull request [https://github.com/servo/servo/pull/18984  link]. &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
1.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://www.guru99.com/mutation-testing.html&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://github.com/servo/servo&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Mutation-testing-project&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Apatel13</name></author>
	</entry>
</feed>