<?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=Vshesha</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=Vshesha"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Vshesha"/>
	<updated>2026-08-22T03:32:45Z</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_2013/oss_vna&amp;diff=82620</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=82620"/>
		<updated>2013-11-30T18:40:46Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Known Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
====Design Considerations====&lt;br /&gt;
The Topics tab should ideally render &amp;quot;sign_up_sheet\add_signup_topcis.html.erb&amp;quot; partial, but to reuse this partial, Assignments would need to have several other attributes like 'sign_up_topics', 'slots_filled', 'slots_waitlisted', which are not really properties of an assignment. Hence, a new partial for adding topics &amp;quot;assignments/edit/add_signup_topics.html.erb&amp;quot; has been added. Partials for 'table_header', 'table_line', 'add_topics' from &amp;quot;sign_up_sheet&amp;quot; have been modified to be accessed from other views as well and re-used.&lt;br /&gt;
Also, the option to add new topics should be available only if 'Has Topics' has been checked. &lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Code changes==&lt;br /&gt;
Following is the code change in the app/views/assignments/edit._due_dates.html.erb file :&lt;br /&gt;
&lt;br /&gt;
 jQuery('#datetimepicker_' + element_id).datetimepicker({&lt;br /&gt;
 dateFormat: 'yy/mm/dd',&lt;br /&gt;
 timeFormat: 'HH:mm z',&lt;br /&gt;
 controlType: 'select',&lt;br /&gt;
 timezoneList: [{value:'&amp;lt;%=Time.zone_offset(@user.timezonepref)%&amp;gt;', label: '&amp;lt;%=@user.timezonepref.split(&amp;quot;\s&amp;quot;)[0]%&amp;gt;'}]&lt;br /&gt;
&lt;br /&gt;
The Zone_offset picks the time zone set by user in the profile tab and sets it as default&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
Certain timezones like Arizona are obsolete. However these are listed under available timezones as they are rendered by the form helper. When such timezones are used, the time is saved properly, but it is known to cause issues while changing timezones. In order to avoid such issues, use standard timezones. Ex: Mountain Time Zone instead of Arizona etc.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project. Testing was concentrated around assignment controller and profile tab as the project modified code around these areas.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the 3 main tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
In addition to the above tests, the following tests were added to check the sanity of the code&lt;br /&gt;
 Creating an assignment&lt;br /&gt;
 Login as admin&lt;br /&gt;
 Open home page&lt;br /&gt;
 &lt;br /&gt;
The tests were run in ruby 1.9.3 environment sucessfully.&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
:4. Due date formatting can be improvised.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=82616</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=82616"/>
		<updated>2013-11-30T18:39:34Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Timezone Issue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
====Design Considerations====&lt;br /&gt;
The Topics tab should ideally render &amp;quot;sign_up_sheet\add_signup_topcis.html.erb&amp;quot; partial, but to reuse this partial, Assignments would need to have several other attributes like 'sign_up_topics', 'slots_filled', 'slots_waitlisted', which are not really properties of an assignment. Hence, a new partial for adding topics &amp;quot;assignments/edit/add_signup_topics.html.erb&amp;quot; has been added. Partials for 'table_header', 'table_line', 'add_topics' from &amp;quot;sign_up_sheet&amp;quot; have been modified to be accessed from other views as well and re-used.&lt;br /&gt;
Also, the option to add new topics should be available only if 'Has Topics' has been checked. &lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Code Changes==&lt;br /&gt;
&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Code changes==&lt;br /&gt;
Following is the code change in the app/views/assignments/edit._due_dates.html.erb file :&lt;br /&gt;
&lt;br /&gt;
 jQuery('#datetimepicker_' + element_id).datetimepicker({&lt;br /&gt;
 dateFormat: 'yy/mm/dd',&lt;br /&gt;
 timeFormat: 'HH:mm z',&lt;br /&gt;
 controlType: 'select',&lt;br /&gt;
 timezoneList: [{value:'&amp;lt;%=Time.zone_offset(@user.timezonepref)%&amp;gt;', label: '&amp;lt;%=@user.timezonepref.split(&amp;quot;\s&amp;quot;)[0]%&amp;gt;'}]&lt;br /&gt;
&lt;br /&gt;
The Zone_offset picks the time zone set by user in the profile tab and sets it as default&lt;br /&gt;
&lt;br /&gt;
==Known Issues==&lt;br /&gt;
Certain timezones like Arizona are obsolete. However these are listed usder available timezones as they are rendered by the form helper. When such timezones are used it is known to cause issues while changing timezones. In order to avoid such issues, use standard timezones. Ex: Mountain Time Zone instead of Arizona etc.&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project. Testing was concentrated around assignment controller and profile tab as the project modified code around these areas.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the 3 main tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
In addition to the above tests, the following tests were added to check the sanity of the code&lt;br /&gt;
 Creating an assignment&lt;br /&gt;
 Login as admin&lt;br /&gt;
 Open home page&lt;br /&gt;
 &lt;br /&gt;
The tests were run in ruby 1.9.3 environment sucessfully.&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
:4. Due date formatting can be improvised.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=82372</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=82372"/>
		<updated>2013-11-07T01:31:08Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project. Testing was concentrated around assignment controller and profile tab as the project modified code around these areas.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the 3 main tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
In addition to the above tests, the following tests were added to check the sanity of the code&lt;br /&gt;
 Creating an assignment&lt;br /&gt;
 Login as admin&lt;br /&gt;
 Open home page&lt;br /&gt;
 &lt;br /&gt;
The tests were run in ruby 1.9.3 environment sucessfully.&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
:4. Due date formatting can be improvised.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80576</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80576"/>
		<updated>2013-10-30T05:38:50Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Future work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the 3 main tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
In addition to the above tests, the following tests were added to check the sanity of the code&lt;br /&gt;
 Creating an assignment&lt;br /&gt;
 Login as admin&lt;br /&gt;
 Open home page&lt;br /&gt;
 &lt;br /&gt;
The tests were run in ruby 1.9.3 environment sucessfully.&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
:4. Due date formatting can be improvised.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80574</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80574"/>
		<updated>2013-10-30T05:37:18Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the 3 main tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
In addition to the above tests, the following tests were added to check the sanity of the code&lt;br /&gt;
 Creating an assignment&lt;br /&gt;
 Login as admin&lt;br /&gt;
 Open home page&lt;br /&gt;
 &lt;br /&gt;
The tests were run in ruby 1.9.3 environment sucessfully.&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80570</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80570"/>
		<updated>2013-10-30T05:34:50Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
1) First, add Capybara to your Gemfile:&lt;br /&gt;
 group :development, :test do&lt;br /&gt;
  gem 'rspec-rails'&lt;br /&gt;
  gem 'capybara'&lt;br /&gt;
 end&lt;br /&gt;
Run bundle install &lt;br /&gt;
&lt;br /&gt;
2) In spec/spec_helper.rb, add two require calls for Capybara near the top:&lt;br /&gt;
 ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= 'test'&lt;br /&gt;
 require File.expand_path(&amp;quot;../../config/environment&amp;quot;, __FILE__)&lt;br /&gt;
 require 'rspec/rails'&lt;br /&gt;
 &lt;br /&gt;
 # Add this to load Capybara integration:&lt;br /&gt;
 require 'capybara/rspec'&lt;br /&gt;
 require 'capybara/rails'&lt;br /&gt;
&lt;br /&gt;
3) In spec/spec_helper.rb, add&lt;br /&gt;
 config.include Capybara::DSL&lt;br /&gt;
&lt;br /&gt;
===Test database===&lt;br /&gt;
Prepare the test db as follows&lt;br /&gt;
 $ rake db:prepare:test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
 $ rake db:test:load &lt;br /&gt;
 $ rake db:seed RAILS_ENV=test&lt;br /&gt;
 $ rake db:migrate RAILS_ENV=test&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
Following are the tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
Test1 : profile_spec.rb&lt;br /&gt;
 Assertion : Ensure user can set default timezone&lt;br /&gt;
&lt;br /&gt;
Test2 : due_date_spec.rb&lt;br /&gt;
 Assertion : User should be able to change due dates&lt;br /&gt;
&lt;br /&gt;
Test3 : topic_spec.rb&lt;br /&gt;
 Assertion : User should be able to create sign up topics by clicking the topic tab in edit assignment page&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80431</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80431"/>
		<updated>2013-10-29T21:47:45Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
Capybara DSL was selected for running the tests in this project.&lt;br /&gt;
&lt;br /&gt;
Following are the tests that were written to check the modified code.&lt;br /&gt;
&lt;br /&gt;
===Test1===&lt;br /&gt;
Assertion :&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80429</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80429"/>
		<updated>2013-10-29T21:40:10Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Project Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.3 Seconds field should not be displayed&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80428</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80428"/>
		<updated>2013-10-29T21:38:45Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80427</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80427"/>
		<updated>2013-10-29T21:38:30Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assignment. &lt;br /&gt;
&lt;br /&gt;
Various issues in the assignments controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80426</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80426"/>
		<updated>2013-10-29T21:37:38Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
Our main focus in this OSS project was on the Class: controllers/assignment_controller.rb. This controller handles interaction with an instructor who is creating or editing an assigment. Various issues in the controller and the suitable code changes have been explained in the following sections.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80423</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80423"/>
		<updated>2013-10-29T21:35:10Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]&lt;br /&gt;
&lt;br /&gt;
Experitza is an open source project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80421</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80421"/>
		<updated>2013-10-29T21:33:31Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]&lt;br /&gt;
&lt;br /&gt;
Experitza is a opensource project. The source code can be forked from [https://github.com/expertiza/expertiza github] and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80419</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80419"/>
		<updated>2013-10-29T21:32:22Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]&lt;br /&gt;
&lt;br /&gt;
Experitza is a opensource project. The source code can be forked from github and cloned for making modifications.&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80416</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80416"/>
		<updated>2013-10-29T21:27:49Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities to manage peer reviews in coursework. &lt;br /&gt;
&lt;br /&gt;
Expertiza is built on Ruby on Rails platform. It uses the mysql db as the backend datatbase. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80412</id>
		<title>CSC/ECE 517 Fall 2013/oss vna</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/oss_vna&amp;diff=80412"/>
		<updated>2013-10-29T21:22:42Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
1. Topics tab is non-functional, but should do what the popup menu item “Add/edit signup sheet” does.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Rubrics tab should show  “Teammate Review:” option if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&amp;lt;br&amp;gt;&lt;br /&gt;
3. The code should retrieve timezonepref of current user in Due dates tab. Also, time/date picker asks a user to specify the hours, minutes, and seconds of a due date.&amp;lt;br&amp;gt;&lt;br /&gt;
:3.1 Use a time/date picker that doesn’t show seconds.&amp;lt;br&amp;gt; &lt;br /&gt;
:3.2 Minutes should be in the step size 5.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Refactoring&amp;lt;br&amp;gt;&lt;br /&gt;
5. Tests for all the functionality mentioned above&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
This section gives brief details of all the implementations done for project E801.&lt;br /&gt;
===  Topics Tab ===&lt;br /&gt;
The requirement of this implementation was to make topics tab functional. This tab is mainly responsible to display a page where user can create a topic for a assignment and can see already created topics for that assignment.&lt;br /&gt;
    &lt;br /&gt;
====Initial Design====&lt;br /&gt;
Ideally, when we click on topics tab, it should display what the popup menu item “Add/edit signup sheet” does.&lt;br /&gt;
    1.Go to Manage-&amp;gt;Assignments&lt;br /&gt;
    2.For a assignment, click on edit signup sheet&lt;br /&gt;
However, in main expertiza project, topics tab was non-functional as shown below. To check Topics tab, follow below mentioned steps: &amp;lt;br&amp;gt;&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You will not be able to view existing topics and create new ones)&lt;br /&gt;
&lt;br /&gt;
 [[File:Topics-before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
In our implemented project, Topics tab shows already existing topics for an assignment and link to create a new topic where a user can create a new topic. This is similar to popup menu item “Add/edit signup sheet”.&lt;br /&gt;
One can follow the same steps as mentioned above to view the functionality:&lt;br /&gt;
    1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
    2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
    3.Go to “Topics” tab (You should be able to view existing topics and create new ones)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:topics-after.png]]&lt;br /&gt;
&lt;br /&gt;
=== Teammate Review Rubric===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
While editing or creating an assignment the Teammate Review rubric shows up irrespective of whether the assignment is a team assignment or not. It should ideally only show up if the assignment under consideration has teams.&lt;br /&gt;
====Modified Design====&lt;br /&gt;
Now, the Teammate Review rubric shows up under the Rubrics tab, only if “Has Teams?” is selected and “Maximum number of members per team”  is greater than 0 in General Tab.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
One can follow the below mentioned steps to view the functionality:&lt;br /&gt;
 1.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 2.Click on “edit assignment” image for any of the assignments&lt;br /&gt;
 3.Click on “General” tab&lt;br /&gt;
 4.Check “Has teams?” and give “Maximum number of members per team” greater than 0.&lt;br /&gt;
 5.Save assignment&lt;br /&gt;
 6.Go to “Rubrics” tab. Check if “Teammate Review:” is present.&lt;br /&gt;
 7.Repeat the same process with “Has Teams?” unchecked and “Maximum number of members” equal to 0. This will not display “Teammate Review:” in &amp;lt;br&amp;gt;the Rubrics tab.&lt;br /&gt;
&lt;br /&gt;
[[File:teams.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:rubric.png]]&lt;br /&gt;
&lt;br /&gt;
=== Refactoring===&lt;br /&gt;
Requirements for this section were centered around the following points:&lt;br /&gt;
&amp;lt;br&amp;gt;1. Renaming set_up method. It does not indicate its functionality.&lt;br /&gt;
&amp;lt;br&amp;gt;2. Refactoring copy method&lt;br /&gt;
&amp;lt;br&amp;gt;3. Fixing spell check issue for &amp;quot;Maximum number of review per team&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Initial Design====&lt;br /&gt;
1. set_up method is badly named. It does not indicate what functionality it implements. This method is present in assignments controller.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; under rubrics tab is not spelled correctly. This can be found under :&lt;br /&gt;
    Manage-&amp;gt;Assignments-&amp;gt;Edit Assignment-&amp;gt;Rubrics&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method in assignments controller is too long.&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
1. set_up has been renamed to set_up_assignment_review to better reflect what it actually implements.&amp;lt;br&amp;gt;&lt;br /&gt;
2. &amp;quot;Maximum number of review&amp;quot; has been renamed to &amp;quot;Maximum number of reviews&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
3. &amp;quot;copy&amp;quot; method has been refactored by moving some of its functionality into its respective method copy_assignment_questionnaire.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone Issue ===&lt;br /&gt;
====Initial Design====&lt;br /&gt;
Time zones are not handled properly in the code. The code should retrieve the Preferred Time Zone of the current user and pre-select it in the time/date picker.  Also, the time/date picker asks a user to specify the hours, minutes, and seconds of a due date.  Obviously we don’t care about seconds, so it would be nice to use a time/date picker that doesn’t show seconds and minutes are in steps of 5. Also daylight savings time needs to be taken care of.&lt;br /&gt;
&lt;br /&gt;
[[File:Time_zone_before.png]]&lt;br /&gt;
&lt;br /&gt;
====Modified Design====&lt;br /&gt;
The above mentioned issues are addressed and can be viewed by following the below mentioned steps:&lt;br /&gt;
 1.Go to Profile. Set timezone to any new timezone and save it.&lt;br /&gt;
 2.Go to Manage-&amp;gt; Assignments&lt;br /&gt;
 3.Click on “Edit Assignment” image for any of the assignments&lt;br /&gt;
 4.Go to “Due dates” tab. Click on the textfield for  “Round 1: Submission”. You can find that it doesn’t show seconds and minutes are in &amp;lt;br&amp;gt;the step size 5, also, in “Time Zone”, it shows the timezone set in the earlier step.&lt;br /&gt;
&lt;br /&gt;
[[File:profile.png]]&lt;br /&gt;
[[File:Time_zone.png]]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
The testing was limited to the changes made as part of this project.&lt;br /&gt;
&lt;br /&gt;
Following test&lt;br /&gt;
&lt;br /&gt;
==Future work ==&lt;br /&gt;
In order to further refactor the assignments_controller.rb&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:1. No usages for the following methods were found:&lt;br /&gt;
::- copy_participants_from_course&lt;br /&gt;
::- define_instructor_notification_limit&lt;br /&gt;
&lt;br /&gt;
:2. Following methods can be moved to Model classes but are non-functional(throwing errors) in the existing code itself.&lt;br /&gt;
::-associate_assignment_with_course&lt;br /&gt;
::-remove_assignment_from_course&lt;br /&gt;
&lt;br /&gt;
:3. Methods that add to and delete from delayed_queue should be in the delayed_queue class.(Part of different project)&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
# [https://github.com/expertiza/expertiza Expertiza]&lt;br /&gt;
# [https://github.com/vshesha/expertiza/ E801_Expertiza]&lt;br /&gt;
# [http://152.46.18.166:3000/ Demo]&lt;br /&gt;
# [http://jqueryui.com/datepicker/ Datepicker]&lt;br /&gt;
# [http://trentrichardson.com/examples/timepicker/ Timepicker]&lt;br /&gt;
# [http://guides.rubyonrails.org/layouts_and_rendering.html Layouts and Rendering in Rails]&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80219</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80219"/>
		<updated>2013-10-15T03:00:38Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Headline text */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
'''Open Source GUI Testing Tools'''&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
*Webrat&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==Webrat==&lt;br /&gt;
Webrat lets you quickly write expressive and robust acceptance tests for a Ruby web application.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*''GUI Testing: Pitfalls and Process'', Atif M. Memon, University of Maryland, IEEE Computer 2002, p. 87 - 88 [http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf ]&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80217</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80217"/>
		<updated>2013-10-15T02:49:36Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
'''Open Source GUI Testing Tools'''&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
*Webrat&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
== Headline text ==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*''GUI Testing: Pitfalls and Process'', Atif M. Memon, University of Maryland, IEEE Computer 2002, p. 87 - 88 [http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf ]&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80216</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80216"/>
		<updated>2013-10-15T02:42:32Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
'''Open Source GUI Testing Tools'''&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
*Webrat&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[#nbFoot03a|^]]''' For the sun's size, see Miller, Edward. ''The Sun''. Academic Press, 2005, p. 1. For the moon's size, see Brown, Rebecca. &amp;quot;Size of the Moon,&amp;quot; ''Scientific American'', 51(78):46. For the sun's heat, see Smith, John. ''The Sun's Heat''. Academic Press, 2005, p. 2.&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80214</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80214"/>
		<updated>2013-10-15T02:30:44Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
'''Open Source GUI Testing Tools'''&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80213</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80213"/>
		<updated>2013-10-15T02:26:55Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Open Source GUI Testing Tools'''&lt;br /&gt;
[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80212</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80212"/>
		<updated>2013-10-15T02:25:45Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80211</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80211"/>
		<updated>2013-10-15T02:25:10Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* GUI Testing Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80210</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80210"/>
		<updated>2013-10-15T02:24:08Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Open Source GUI Testing Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80209</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80209"/>
		<updated>2013-10-15T02:23:30Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Open Source GUI Testing Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
==Open Source GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80208</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80208"/>
		<updated>2013-10-15T02:20:28Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Open Source GUI Testing Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Open Source GUI Testing Tools==&lt;br /&gt;
[[File:Browsers.png|frame|alt=Puzzle globe|GUI Testing]]&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Browsers.png&amp;diff=80207</id>
		<title>File:Browsers.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Browsers.png&amp;diff=80207"/>
		<updated>2013-10-15T02:18:56Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80206</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80206"/>
		<updated>2013-10-15T02:14:51Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Open Source GUI Testing Tools==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
* Scalable UI Testing with Selenium [http://jeffmw.com/2012/05/28/scalable-ui-testing-with-selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80205</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80205"/>
		<updated>2013-10-15T02:11:46Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* OPEN SOURCE GUI TESTING TOOLS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Open Source GUI Testing Tools==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80204</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80204"/>
		<updated>2013-10-15T02:11:13Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''OPEN SOURCE GUI TESTING TOOLS'''==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80203</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80203"/>
		<updated>2013-10-15T02:07:59Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''OPEN SOURCE GUI TESTING TOOLS'''==&lt;br /&gt;
==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80202</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80202"/>
		<updated>2013-10-15T02:02:03Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf - 2004-05&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80201</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80201"/>
		<updated>2013-10-15T02:00:51Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
*http://cvs.cs.umd.edu/~atif/papers/MemonIEEEComputer2002.pdf - 2000&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80200</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80200"/>
		<updated>2013-10-15T01:59:57Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* GUI testing in Ruby and Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara[https://github.com/jnicklas/capybara]  - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec[http://rspec.info/] - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber[https://github.com/cucumber/cucumber] - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing - Pitfalls==&lt;br /&gt;
*Coverage criteria cannot be determined accurately with GUI testing.&lt;br /&gt;
*Verifying whether the GUI test executes correctly poses a problem as the logging is difficult.&lt;br /&gt;
*Developing a stable regression suite is difficult since simple changes in GUI can render the test suite obsolete.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using [http://en.wikipedia.org/wiki/Jython Jython] to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
*http://dojotoolkit.org/reference-guide/1.9/util/dohrobot.html&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80194</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80194"/>
		<updated>2013-10-15T01:34:52Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Event-driven_architecture Event-driven architecture]. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Regression_testing Regression testing] is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests is not a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
* Selenium by example [http://learnseleniumautomation.blogspot.in/2012/08/learn-selenium-webdriver-by-example.html]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80191</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80191"/>
		<updated>2013-10-15T01:23:36Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
*http://sivaeluri.blogspot.com/2012/08/advantages-and-disadvantages-of.html&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80190</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80190"/>
		<updated>2013-10-15T01:22:48Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Advantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
*Identifying the locators and common attributes like id, names etc as well as XPATH, javascript DOM and others is difficult.&lt;br /&gt;
*Results are not available in good detail. Debugging failures migt prove to be difficult sometimes.&lt;br /&gt;
*Loop and data driven testing is not supported by Selenium IDE.&lt;br /&gt;
*Options to verify the images are not available.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80189</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=80189"/>
		<updated>2013-10-15T00:46:56Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, [http://groovy.codehaus.org/ Groovy], Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79982</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79982"/>
		<updated>2013-10-08T01:30:10Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
* Using Selenium [http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79981</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79981"/>
		<updated>2013-10-08T01:29:43Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Advantage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantages===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79980</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79980"/>
		<updated>2013-10-08T01:28:31Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Test Automation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
More here&lt;br /&gt;
&lt;br /&gt;
NOte ; can we add this http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79903</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79903"/>
		<updated>2013-10-07T23:47:11Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
Note : Rework&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
More here&lt;br /&gt;
&lt;br /&gt;
NOte ; can we add this http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* Web testing tools [http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
* Selenium Framework [http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
* Selenium [http://www.jroller.com/selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79902</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79902"/>
		<updated>2013-10-07T23:45:22Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* GUI testing in Ruby and Rails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
Note : Rework&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers - The earlier the problems are found, the cheaper it is to fix them. An automated unit test suite finds problems effectively as early as possible, long before the software reaches a customer, and even before it reaches the QA team.&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
Ruby prefers the term scripted testing over the more traditional automated testing. For testing a GUI application there can be several kind of tests in the background to verify the functionality and requirements of an application.&lt;br /&gt;
&lt;br /&gt;
Various frameworks that support testing in Ruby are:&lt;br /&gt;
* Test:Unit - It is a unit testing framework for Ruby.&lt;br /&gt;
* Capybara - It is an integration testing tool for web applications.&lt;br /&gt;
* Rspec - Behaviour Driven Development (BDD) framework/ test tool&lt;br /&gt;
* Cucumber - It is a tool for running automated acceptance tests written in a behavior-driven development (BDD) style&lt;br /&gt;
&lt;br /&gt;
Ruby on Rails testing frameworks are much more advanced than other web frameworks.&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
*Deploys on multiple paltforms - Windows, Linux, and Macintosh.&lt;br /&gt;
&lt;br /&gt;
More here&lt;br /&gt;
&lt;br /&gt;
NOte ; can we add this http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[http://en.wikipedia.org/wiki/List_of_web_testing_tools]&lt;br /&gt;
[http://www.mediawiki.org/wiki/Selenium_Framework]&lt;br /&gt;
[http://www.jroller.com/selenium/]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79599</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79599"/>
		<updated>2013-10-07T01:11:27Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Selenium */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
Note : Rework&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
&lt;br /&gt;
More here&lt;br /&gt;
&lt;br /&gt;
NOte ; can we add this http://aspyct.org/blog/2012/09/09/functional-web-testing-with-selenium-and-ruby/&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79597</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79597"/>
		<updated>2013-10-07T01:09:21Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* GUI testing in Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
Note : Rework&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby and Rails==&lt;br /&gt;
&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79596</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79596"/>
		<updated>2013-10-07T01:08:56Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Test Automation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
&lt;br /&gt;
Note : Rework&lt;br /&gt;
&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby==&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79573</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79573"/>
		<updated>2013-10-07T00:19:56Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Supported Browsers and Platforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby==&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Advantage===&lt;br /&gt;
The chief advantages of Selenium are :&lt;br /&gt;
*Flexibility - Test automation can be customized by adding functionality to Selenium test scripts and Selenium framework.&lt;br /&gt;
*Open Source - The source code can be downloaded and modified as needed to suit new browsers.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79572</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79572"/>
		<updated>2013-10-07T00:15:49Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Selenium 1 and Selenium IDE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby==&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2, 3||Record and playback tests ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 6, 7, 8||Unsupported  ||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2, 3, 4||Unsupported ||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8, 9, 10||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Unsupported  ||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79571</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79571"/>
		<updated>2013-10-07T00:12:05Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Selenium Grid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby==&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
===Supported Browsers and Platforms===&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Google Chrome 12.0.712.0+&lt;br /&gt;
*Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable&lt;br /&gt;
*Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7&lt;br /&gt;
*Opera 11.5+&lt;br /&gt;
*HtmlUnit 2.9&lt;br /&gt;
*Android – 2.3+ for phones and tablets (devices &amp;amp; emulators)&lt;br /&gt;
*iOS 3+ for phones (devices &amp;amp; emulators) and 3.2+ for tablets (devices &amp;amp; emulators)&lt;br /&gt;
&lt;br /&gt;
====Selenium 1 and Selenium IDE====&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Browser'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium IDE'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Selenium 1 (RC)'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Operating Systems'''&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 3.x||Record and playback tests||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 3||Record and playback tests||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Firefox 2||Record and playback tests||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| IE 8||Test execution only via Selenium RC||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| IE 7||Test execution only via Selenium RC||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| IE 6||Test execution only via Selenium RC||Start browser, run tests||Windows&lt;br /&gt;
|-&lt;br /&gt;
| Safari 4||Test execution only via Selenium RC||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Safari 3||Test execution only via Selenium RC||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Safari 2||Test execution only via Selenium RC||Start browser, run tests||Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 10||Test execution only via Selenium RC||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 9||Test execution only via Selenium RC||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Opera 8||Test execution only via Selenium RC||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Google Chrome||Test execution only via Selenium RC||Start browser, run tests||Windows, Linux, Mac&lt;br /&gt;
|-&lt;br /&gt;
| Others||Test execution only via Selenium RC||Partial support possible**||As applicable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79570</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w32 av</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w32_av&amp;diff=79570"/>
		<updated>2013-10-07T00:05:15Z</updated>

		<summary type="html">&lt;p&gt;Vshesha: /* Selenium 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its designed specifications.&lt;br /&gt;
&lt;br /&gt;
GUI testing is difficult mainly due to following reasons :&lt;br /&gt;
* Large space of possibilities. Each sequence of GUI commands can result in various states. Evaluation of all these states is essential for validation of the GUI of the given software.&lt;br /&gt;
* Event-driven architecture. The test suite has to simulate the various user created actions.&lt;br /&gt;
&lt;br /&gt;
Following are the challenges encountered while testing the graphical user interface of any software or system:&lt;br /&gt;
* Automation is difficult.&lt;br /&gt;
* The scope for testing is enormous&lt;br /&gt;
* Inability to determine the state of the program from GUI.&lt;br /&gt;
* Regression testing is difficult. Testcases may not be reusable&lt;br /&gt;
&lt;br /&gt;
The current trend in user interfaces is geared towards graphical user interfaces (GUIs). This presents a problem for designing tests for software, since GUIs are very complex and hence GUI testing is very time consuming. Automation is a requirement for testing any larger graphical user interfaces, but automating GUI tests isn’t a straightforward task. Techniques which are familiar from the command line interface (CLI) age, don’t translate to the GUI world without problems.&lt;br /&gt;
&lt;br /&gt;
==Test Automation==&lt;br /&gt;
The advantages of test automation are as follows.&lt;br /&gt;
*Frequent regression testing&lt;br /&gt;
*Rapid feedback to developers&lt;br /&gt;
*Virtually unlimited iterations of test case execution&lt;br /&gt;
*Support for Agile and extreme development methodologies&lt;br /&gt;
*Disciplined documentation of test cases&lt;br /&gt;
*Customized defect reporting&lt;br /&gt;
*Finding defects missed by manual testing&lt;br /&gt;
&lt;br /&gt;
The challenge is in extending these advantages to GUI testing.&lt;br /&gt;
&lt;br /&gt;
==GUI testing in Ruby==&lt;br /&gt;
==GUI Testing Tools==&lt;br /&gt;
&lt;br /&gt;
GUI testing tools serve the purpose of automating the testing process of software with graphical user interfaces. Following are few of the available open source GUI testing tools:&lt;br /&gt;
&lt;br /&gt;
*AutoHotkey&lt;br /&gt;
*CubicTest &lt;br /&gt;
*Dogtail &lt;br /&gt;
*Dojo &lt;br /&gt;
*Selenium &lt;br /&gt;
*Watir &lt;br /&gt;
*GNU Xnee&lt;br /&gt;
*Sikuli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selenium==&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.&lt;br /&gt;
&lt;br /&gt;
===Selenium Tool Suite===&lt;br /&gt;
Selenium is composed of multiple software tools.&lt;br /&gt;
&lt;br /&gt;
====Selenium IDE====&lt;br /&gt;
*Prototyping tool for building testscripts.&lt;br /&gt;
*Firefox plugin provides easy to use interface for developing automated tests.&lt;br /&gt;
*Supports 'record and play' feature to create reusable scripts for testing.&lt;br /&gt;
&lt;br /&gt;
====Selenium1====&lt;br /&gt;
*Also known as Selenium RC or Remote Control&lt;br /&gt;
*Provides flexibility in porting tests across browsers and platforms.&lt;br /&gt;
*Currently in maintainence mode. No active development.&lt;br /&gt;
&lt;br /&gt;
====Selenium 2====&lt;br /&gt;
*Also known as Selenium Webdriver&lt;br /&gt;
*Supports WebDriver API thus providing maximum flexibility in porting the tests.&lt;br /&gt;
*Runs Selenium 1’s Selenium RC interface for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
====Selenium Grid====&lt;br /&gt;
*Selenium-Grid allows the Selenium RC solution to scale for large test suites and for test suites that must be run in multiple environments. &lt;br /&gt;
*Selenium Grid runs the tests in parallel, that is, different tests can be run at the same time on different remote machines. &lt;br /&gt;
*Selenium Grid greatly improves the time it takes to run the suite by making use of parallel processing.&lt;br /&gt;
&lt;br /&gt;
==Auto Hot Key==&lt;br /&gt;
AutoHotkey automates tests by sending keystrokes and mouse clicks to the target application with the help of a macro recorder.&lt;br /&gt;
Virtually any key, button, or combination can become a hotkey.&lt;br /&gt;
Following are the notable features of hotkey:&lt;br /&gt;
* Expand abbreviations as you type them. For example, typing &amp;quot;gn&amp;quot; can automatically produce &amp;quot;good night&amp;quot;.&lt;br /&gt;
* Create custom data-entry forms, user interfaces, and menu bars. &lt;br /&gt;
* Remap keys and buttons on your keyboard, joystick, and mouse.&lt;br /&gt;
* Convert any script into an EXE file that can be run on computers that don't have AutoHotkey installed.&lt;br /&gt;
&lt;br /&gt;
Quick start tutorial : http://www.autohotkey.com/docs/Tutorial.htm&lt;br /&gt;
&lt;br /&gt;
==Watir==&lt;br /&gt;
Watir, pronounced water, stands for Web Application Testing in Ruby. Watir is an open-source (BSD) family of Ruby libraries for automating web browsers. It is distributed as a Ruby GEM named 'Watir'. Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page or not.&lt;br /&gt;
&lt;br /&gt;
There are 2 version available :&lt;br /&gt;
* Watir-Classic : supports only Internet Explorer on Windows&lt;br /&gt;
* Watir-WebDriver : supports Chrome, Firefox, Internet Explorer, Opera and also running in headless mode (HTMLUnit).&lt;br /&gt;
&lt;br /&gt;
==GNU Xnee==&lt;br /&gt;
GNU Xnee is a suite of programs that can record, replay and distribute user actions under the X11 environment. Xnee has the capability to :&lt;br /&gt;
* Automate tests like nightly regression&lt;br /&gt;
* Demonstrate programs by recording and replaying a user interaction with the system&lt;br /&gt;
* Distribute actions from system admin to end users.&lt;br /&gt;
&lt;br /&gt;
The Record and replay ‘macro’ is the highlight of Xnee.&lt;br /&gt;
&lt;br /&gt;
==DOJO==&lt;br /&gt;
Dojo is a JavaScript framework targeting the many needs of large-scale client-side web development. &lt;br /&gt;
&lt;br /&gt;
* Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server under Node.js)&lt;br /&gt;
* It establishes a framework for defining modules of code and managing their inter-dependencies&lt;br /&gt;
* Supports internationalization, localization, and accessibility&lt;br /&gt;
* Provides a rich suite of commonly needed utility classes and user-interface widgets.&lt;br /&gt;
&lt;br /&gt;
==CubicTest==&lt;br /&gt;
CubicTest is a graphical Eclipse plug-in for writing Selenium and Watir tests. It makes tests faster and easier to write, and provides abstractions to make tests more robust and reusable.&lt;br /&gt;
&lt;br /&gt;
* CubicTest's test editor is centered around pages/states and transitions between these pages/states. &lt;br /&gt;
* The model is intuitive for both Ajax and traditional web applications and supports most user interaction types.&lt;br /&gt;
* CubicTest features an innovative test recorder and test runner based on Selenium RC which are fully integrated with the graphical test editor.&lt;br /&gt;
&lt;br /&gt;
==Dogtail==&lt;br /&gt;
Dogtail is a GUI test tool and automation framework written in ​Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. Dogtail scripts are written in Python and executed like any other Python program.&lt;br /&gt;
Follwoing are the notable features of Dogtail:&lt;br /&gt;
* Object-Oriented API: With the object oriented API, you are under control of the UI tree and its elements, allowing you to write sophisticated scripts utilizing benefits of OO right deep from dogtail.&lt;br /&gt;
* Procedural API: Ace programmer credentials are not necessary to write useful automated scripts with procedural API.&lt;br /&gt;
* Easily Extensible: Writing custom classes and helper libraries are easy.&lt;br /&gt;
* Results and debug reporting: Separate logs for test case comparisons and debug information are generated.&lt;br /&gt;
&lt;br /&gt;
==Sikuli==&lt;br /&gt;
Sikuli automates GUI testing by using image recognition to identify and control GUI components. It is useful when there is no easy access to a GUI's internal or source code.&lt;br /&gt;
* Sikuli uses an innovative approach of automating GUI tests by using screenshots and powerpoint slides. &lt;br /&gt;
* Sikuli Script is a visual scripting API using Jython to create automation scripts.&lt;br /&gt;
* Sikuli includes an integrated development environment (IDE) for writing visual Sikuli scripts with screenshots.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
==References==&lt;br /&gt;
*http://docs.seleniumhq.org/docs/&lt;br /&gt;
*http://www.eecs.yorku.ca/course_archive/2004-05/W/4313/Slides/Module10-GUI.pdf&lt;br /&gt;
*http://www.cs.helsinki.fi/u/paakki/mikkolainen.pdf&lt;br /&gt;
*http://watir.com/&lt;br /&gt;
*http://www.gnu.org/software/xnee/&lt;br /&gt;
*https://fedorahosted.org/dogtail/&lt;br /&gt;
*http://www.cubictest.org/&lt;br /&gt;
*http://www.autohotkey.com/&lt;br /&gt;
*http://www.sikuli.org/&lt;br /&gt;
&lt;br /&gt;
==Note to reviewers==&lt;br /&gt;
The topic is very vast. Hence the wiki is written based on the guidelines provided by the TA's and the Prof. &lt;br /&gt;
* List all GUI tools used in OSS that you can quickly identify.  &lt;br /&gt;
* Try to describe the tools to the same level of detail, except that you may choose to go into more detail on tools that are used with Rails.&lt;br /&gt;
* Listing of commands is not a good idea.  You are not writing a reference manual; you are writing a descriptive article that someone might read to learn about what's available before choosing a tool or tools.  You should aim for readability.&lt;br /&gt;
&lt;br /&gt;
We have referred the respective tool websites to provide the overview for each one of them. We have provided appropriate citations as well. Additionally the tool and the documentation itself are under GNU/ open source licence and hence will not fall under copyright violation. Please correct us if we are wrong.&lt;/div&gt;</summary>
		<author><name>Vshesha</name></author>
	</entry>
</feed>