<?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=Abora</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=Abora"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Abora"/>
	<updated>2026-05-06T21:22:24Z</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_2014/final_E1471_asuv&amp;diff=92034</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92034"/>
		<updated>2014-11-12T04:43:13Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92033</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92033"/>
		<updated>2014-11-12T04:38:28Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard.jpg&amp;diff=92032</id>
		<title>File:Dashboard.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard.jpg&amp;diff=92032"/>
		<updated>2014-11-12T04:37:10Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92013</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92013"/>
		<updated>2014-11-12T03:42:25Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91755</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91755"/>
		<updated>2014-11-11T22:03:42Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UML.jpg&amp;diff=91754</id>
		<title>File:UML.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UML.jpg&amp;diff=91754"/>
		<updated>2014-11-11T21:55:45Z</updated>

		<summary type="html">&lt;p&gt;Abora: uploaded a new version of &amp;amp;quot;File:UML.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91749</id>
		<title>File:Dashboard existing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91749"/>
		<updated>2014-11-11T21:40:04Z</updated>

		<summary type="html">&lt;p&gt;Abora: uploaded a new version of &amp;amp;quot;File:Dashboard existing.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91743</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91743"/>
		<updated>2014-11-11T21:34:01Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaires&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91742</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91742"/>
		<updated>2014-11-11T21:33:24Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaires&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91741</id>
		<title>File:Dashboard existing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91741"/>
		<updated>2014-11-11T21:29:16Z</updated>

		<summary type="html">&lt;p&gt;Abora: uploaded a new version of &amp;amp;quot;File:Dashboard existing.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_new.jpg&amp;diff=91731</id>
		<title>File:Dashboard new.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_new.jpg&amp;diff=91731"/>
		<updated>2014-11-11T21:15:33Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91730</id>
		<title>File:Dashboard existing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_existing.jpg&amp;diff=91730"/>
		<updated>2014-11-11T21:15:17Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_display_existing.jpg&amp;diff=91728</id>
		<title>File:Assignment display existing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_display_existing.jpg&amp;diff=91728"/>
		<updated>2014-11-11T21:14:46Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91724</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91724"/>
		<updated>2014-11-11T19:33:12Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub. Our contribution in this project is by improving the display of assignments for all the instructors and also to improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90042</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90042"/>
		<updated>2014-10-28T03:02:25Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
==Modification to Existing Code==&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90041</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90041"/>
		<updated>2014-10-28T02:57:48Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90039</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90039"/>
		<updated>2014-10-28T01:28:59Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;The Expertiza project is system for using peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90033</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90033"/>
		<updated>2014-10-28T00:28:27Z</updated>

		<summary type="html">&lt;p&gt;Abora: Created page with &amp;quot;=Expertiza - Refactoring DynamicReviewMapping Controller=  __TOC__  ==Introduction==  ==Project Description==  ==References== &amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88279</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88279"/>
		<updated>2014-09-25T09:45:00Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;'''HP Unified Functional Testing (UFT)''' software, previously known as '''HP Quick Test Professional (QTP)''',&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt;&amp;quot;'' HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests cases, the comparison of actual to predicted results, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
HP UFT is generally used for GUI based Test Case Automation, it can also automate some non-GUI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing allows us to perform data-driven testing. For example, data can be output to a data table for reuse. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook, which is accessible from HP Unified Functional Testing. HP Unified Functional Testing has two data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Types of testing===&lt;br /&gt;
UFT typically supports following types of testing:&lt;br /&gt;
&lt;br /&gt;
1. Regression testing&lt;br /&gt;
&lt;br /&gt;
2. Unit testing &lt;br /&gt;
&lt;br /&gt;
3. Load testing&lt;br /&gt;
&lt;br /&gt;
4. Integration testing&lt;br /&gt;
&lt;br /&gt;
5. Functional testing&lt;br /&gt;
&lt;br /&gt;
6. Regression testing&lt;br /&gt;
&lt;br /&gt;
7. Acceptance testing&lt;br /&gt;
&lt;br /&gt;
8. Performance testing&lt;br /&gt;
&lt;br /&gt;
9. Stress testing&lt;br /&gt;
&lt;br /&gt;
Further reading on [http://www.softwaretestinghelp.com/types-of-software-testing/ testing types]&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
QTP script for opening a Notepad file&amp;lt;ref&amp;gt;http://kuldeepse.wordpress.com/2007/11/11/qtp-script-for-sending-a-mail-using-outlook/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;invokeapplication”c:/whatever the path”&lt;br /&gt;
Run &lt;br /&gt;
Dim a&lt;br /&gt;
Set a = WScript.CreateObject (“WSCript.shell”)&lt;br /&gt;
a.run “notepad.exe”&lt;br /&gt;
&lt;br /&gt;
Dim oShell&lt;br /&gt;
Set oShell = CreateObject (“WSCript.shell”)&lt;br /&gt;
oShell.run “cmd/notepad.exe”&lt;br /&gt;
Set oShell = Nothing&lt;br /&gt;
&lt;br /&gt;
DsystemUtil.Run “Notepad.exe”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can interrupt the run session and mislead results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle these situations, Exception Handling and Error handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by any of the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
A typical [http://www.learnqtp.com/forums/Thread-Automation-Life-Cycle life cycle] of HP UFT looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools like [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the viewpoint of the user. Cucumber translates user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' talks to a website, just like a human would do (example: visit a url, click on the specific area of the sceen, input data and submit the form). It imitates user flow over website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' tests are very much human readable. Example:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://www.qtphelp.com/2011/06/advantages-and-disadvantages-of-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script written in	&lt;br /&gt;
|VBScript&lt;br /&gt;
|Java, Ruby, Python, C#, and PHP&lt;br /&gt;
|Ruby&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Multiple threads/instances	&lt;br /&gt;
|Not supported&lt;br /&gt;
|Supported, we can run multiple instances of the &lt;br /&gt;
application on different browsers at the same time&lt;br /&gt;
|Supported, we can run multiple instances of the &lt;br /&gt;
application on different browsers at the same time&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + [http://en.wikipedia.org/wiki/MAVEN Maven] / [http://en.wikipedia.org/wiki/Apache_Ant ANT] &lt;br /&gt;
+[http://en.wikipedia.org/wiki/Jenkins_(software) Jenkins] / [http://en.wikipedia.org/wiki/Hudson_(software) Hudson] &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + [http://en.wikipedia.org/wiki/TestNG TestNG] + [http://en.wikipedia.org/wiki/Apache_Subversion SVN]	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
[http://en.wikipedia.org/wiki/Merb Merb]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Sinatra_(software) Sinatra]&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and [http://en.wikipedia.org/wiki/JUnit JUnit] output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Advantages'''==&lt;br /&gt;
1. Support for different addins like Java, Oracle, SAP, .NET, Web Forms, Siebel, PeopleSoft, Web services, Main frame (Terminal Emulator) etc.&lt;br /&gt;
&lt;br /&gt;
2. UFT comes with an inbuilt IDE&lt;br /&gt;
&lt;br /&gt;
3. UFT can be integrated with Test management tools like QC (Quality Center)&lt;br /&gt;
&lt;br /&gt;
4. Easy to maintain test iterations and data driving the tests through configurations&lt;br /&gt;
&lt;br /&gt;
5.''' Record and Playback:''' It is pretty easy even for a non-programmer to record scripts / test cases, customize / modify and play back the tests&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT popularity is slowly shrinking.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more for legacy applications.&lt;br /&gt;
&lt;br /&gt;
People are moving away from UFT because of it's reactive approach of writing test automation. Testers write the scripts. With cucumber, capybara and selenium, automation test are joint effort between developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88278</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88278"/>
		<updated>2014-09-25T09:37:05Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;'''HP Unified Functional Testing (UFT)''' software, previously known as '''HP Quick Test Professional (QTP)''',&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt;&amp;quot;'' HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests cases, the comparison of actual to predicted results, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
HP UFT is generally used for GUI based Test Case Automation, it can also automate some non-GUI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing allows us to perform data-driven testing. For example, data can be output to a data table for reuse. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook, which is accessible from HP Unified Functional Testing. HP Unified Functional Testing has two data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Types of testing===&lt;br /&gt;
UFT typically supports following types of testing:&lt;br /&gt;
&lt;br /&gt;
1. Regression testing&lt;br /&gt;
&lt;br /&gt;
2. Unit testing &lt;br /&gt;
&lt;br /&gt;
3. Load testing&lt;br /&gt;
&lt;br /&gt;
4. Integration testing&lt;br /&gt;
&lt;br /&gt;
5. Functional testing&lt;br /&gt;
&lt;br /&gt;
6. Regression testing&lt;br /&gt;
&lt;br /&gt;
7. Acceptance testing&lt;br /&gt;
&lt;br /&gt;
8. Performance testing&lt;br /&gt;
&lt;br /&gt;
9. Stress testing&lt;br /&gt;
&lt;br /&gt;
Further reading on [http://www.softwaretestinghelp.com/types-of-software-testing/ testing types]&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
QTP script for opening a Notepad file&amp;lt;ref&amp;gt;http://kuldeepse.wordpress.com/2007/11/11/qtp-script-for-sending-a-mail-using-outlook/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;invokeapplication”c:/whatever the path”&lt;br /&gt;
Run &lt;br /&gt;
Dim a&lt;br /&gt;
Set a = WScript.CreateObject (“WSCript.shell”)&lt;br /&gt;
a.run “notepad.exe”&lt;br /&gt;
&lt;br /&gt;
Dim oShell&lt;br /&gt;
Set oShell = CreateObject (“WSCript.shell”)&lt;br /&gt;
oShell.run “cmd/notepad.exe”&lt;br /&gt;
Set oShell = Nothing&lt;br /&gt;
&lt;br /&gt;
DsystemUtil.Run “Notepad.exe”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can interrupt the run session and mislead results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle these situations, Exception Handling and Error handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by any of the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
A typical [http://www.learnqtp.com/forums/Thread-Automation-Life-Cycle life cycle] of HP UFT looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools like [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the viewpoint of the user. Cucumber translates user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' talks to a website, just like a human would do (example: visit a url, click on the specific area of the sceen, input data and submit the form). It imitates user flow over website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' tests are very much human readable. Example:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://www.qtphelp.com/2011/06/advantages-and-disadvantages-of-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script written in	&lt;br /&gt;
|VBScript&lt;br /&gt;
|Java, Ruby, Python, C#, and PHP&lt;br /&gt;
|Ruby&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!Multiple threads/instances	&lt;br /&gt;
|Not supported&lt;br /&gt;
|Supported, we can run multiple instances of the &lt;br /&gt;
application on different browsers at the same time&lt;br /&gt;
|Supported, we can run multiple instances of the &lt;br /&gt;
application on different browsers at the same time&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + [http://en.wikipedia.org/wiki/MAVEN Maven] / [http://en.wikipedia.org/wiki/Apache_Ant ANT] &lt;br /&gt;
+[http://en.wikipedia.org/wiki/Jenkins_(software) Jenkins] / [http://en.wikipedia.org/wiki/Hudson_(software) Hudson] &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + [http://en.wikipedia.org/wiki/TestNG TestNG] + [http://en.wikipedia.org/wiki/Apache_Subversion SVN]	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
[http://en.wikipedia.org/wiki/Merb Merb]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Sinatra_(software) Sinatra]&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and [http://en.wikipedia.org/wiki/JUnit JUnit] output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT popularity is slowly shrinking.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more for legacy applications.&lt;br /&gt;
&lt;br /&gt;
People are moving away from UFT because of it's reactive approach of writing test automation. Testers write the scripts. With cucumber, capybara and selenium, automation test are joint effort between developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88277</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88277"/>
		<updated>2014-09-25T09:04:19Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
'''HP Unified Functional Testing (UFT)''' software, previously known as '''HP Quick Test Professional (QTP)''',&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests cases, the comparison of actual to predicted results, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is generally used for GUI based Test Case Automation, it can also automate some non-GUI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing allows us to perform data-driven testing. For example, data can be output to a data table for reuse. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook, which is accessible from HP Unified Functional Testing. HP Unified Functional Testing has two data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
QTP script for opening a Notepad file&amp;lt;ref&amp;gt;http://kuldeepse.wordpress.com/2007/11/11/qtp-script-for-sending-a-mail-using-outlook/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;invokeapplication”c:/whatever the path”&lt;br /&gt;
Run &lt;br /&gt;
Dim a&lt;br /&gt;
Set a = WScript.CreateObject (“WSCript.shell”)&lt;br /&gt;
a.run “notepad.exe”&lt;br /&gt;
&lt;br /&gt;
Dim oShell&lt;br /&gt;
Set oShell = CreateObject (“WSCript.shell”)&lt;br /&gt;
oShell.run “cmd/notepad.exe”&lt;br /&gt;
Set oShell = Nothing&lt;br /&gt;
&lt;br /&gt;
DsystemUtil.Run “Notepad.exe”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can interrupt the run session and mislead results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle these situations, Exception Handling and Error handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by any of the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
A typical [http://www.learnqtp.com/forums/Thread-Automation-Life-Cycle life cycle] of HP UFT looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools like [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the viewpoint of the user. Cucumber translates user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' talks to a website, just like a human would do (example: visit a url, click on the specific area of the sceen, input data and submit the form). It imitates user flow over website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' tests are very much human readable. Example:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script written in	&lt;br /&gt;
|VBScript&lt;br /&gt;
|Java, Ruby, Python, C#, and PHP&lt;br /&gt;
|Ruby&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + [http://en.wikipedia.org/wiki/MAVEN Maven] / [http://en.wikipedia.org/wiki/Apache_Ant ANT] &lt;br /&gt;
+[http://en.wikipedia.org/wiki/Jenkins_(software) Jenkins] / [http://en.wikipedia.org/wiki/Hudson_(software) Hudson] &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + [http://en.wikipedia.org/wiki/TestNG TestNG] + [http://en.wikipedia.org/wiki/Apache_Subversion SVN]	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
[http://en.wikipedia.org/wiki/Merb Merb]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Sinatra_(software) Sinatra]&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and [http://en.wikipedia.org/wiki/JUnit JUnit] output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT popularity is slowly shrinking.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more for legacy applications.&lt;br /&gt;
&lt;br /&gt;
People are moving away from UFT because of it's reactive approach of writing test automation. Testers write the scripts. With cucumber, capybara and selenium, automation test are joint effort between developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88276</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=88276"/>
		<updated>2014-09-25T08:56:48Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
'''HP Unified Functional Testing (UFT)''' software, previously known as '''HP Quick Test Professional (QTP)''',&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests cases, the comparison of actual to predicted results, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is generally used for GUI based Test Case Automation, it can also automate some non-GUI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing allows us to perform data-driven testing. For example, data can be output to a data table for reuse. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook, which is accessible from HP Unified Functional Testing. HP Unified Functional Testing has two data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
QTP script for opening a Notepad file&amp;lt;ref&amp;gt;http://kuldeepse.wordpress.com/2007/11/11/qtp-script-for-sending-a-mail-using-outlook/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;invokeapplication”c:/whatever the path”&lt;br /&gt;
Run &lt;br /&gt;
Dim a&lt;br /&gt;
Set a = WScript.CreateObject (“WSCript.shell”)&lt;br /&gt;
a.run “notepad.exe”&lt;br /&gt;
&lt;br /&gt;
Dim oShell&lt;br /&gt;
Set oShell = CreateObject (“WSCript.shell”)&lt;br /&gt;
oShell.run “cmd/notepad.exe”&lt;br /&gt;
Set oShell = Nothing&lt;br /&gt;
&lt;br /&gt;
DsystemUtil.Run “Notepad.exe”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can interrupt the run session and mislead results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle these situations, Exception Handling and Error handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by any of the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
A typical [http://www.learnqtp.com/forums/Thread-Automation-Life-Cycle life cycle] of HP UFT looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools like [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the viewpoint of the user. Cucumber translates user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' talks to a website, just like a human would do (example: visit a url, click on the specific area of the sceen, input data and submit the form). It imitates user flow over website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' tests are very much human readable. Example:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + [http://en.wikipedia.org/wiki/MAVEN Maven] / [http://en.wikipedia.org/wiki/Apache_Ant ANT] &lt;br /&gt;
+[http://en.wikipedia.org/wiki/Jenkins_(software) Jenkins] / [http://en.wikipedia.org/wiki/Hudson_(software) Hudson] &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + [http://en.wikipedia.org/wiki/TestNG TestNG] + [http://en.wikipedia.org/wiki/Apache_Subversion SVN]	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
[http://en.wikipedia.org/wiki/Merb Merb]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Sinatra_(software) Sinatra]&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and [http://en.wikipedia.org/wiki/JUnit JUnit] output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT popularity is slowly shrinking.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more for legacy applications.&lt;br /&gt;
&lt;br /&gt;
People are moving away from UFT because of it's reactive approach of writing test automation. Testers write the scripts. With cucumber, capybara and selenium, automation test are joint effort between developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85781</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85781"/>
		<updated>2014-09-16T17:59:15Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
A typical [http://www.learnqtp.com/forums/Thread-Automation-Life-Cycle life cycle] of HP UFT looks like this.&lt;br /&gt;
&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools like [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the viewpoint of the user. Cucumber translates user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' talks to a website, just like a human would do (example: visit a url, click on the specific area of the sceen, input data and submit the form). It imitates user flow over website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' tests are very much human readable. Example:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + [http://en.wikipedia.org/wiki/MAVEN Maven] / [http://en.wikipedia.org/wiki/Apache_Ant ANT] &lt;br /&gt;
+[http://en.wikipedia.org/wiki/Jenkins_(software) Jenkins] / [http://en.wikipedia.org/wiki/Hudson_(software) Hudson] &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + [http://en.wikipedia.org/wiki/TestNG TestNG] + [http://en.wikipedia.org/wiki/Apache_Subversion SVN]	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
[http://en.wikipedia.org/wiki/Merb Merb]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Sinatra_(software) Sinatra]&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT popularity is slowly shrinking.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more in legacy application.&lt;br /&gt;
&lt;br /&gt;
People are moving away from UFT because of it's reactive approach of writing test automation. Testers write the scripts. With cucumber, capybara and selenium, automation test are joint effort between developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85678</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85678"/>
		<updated>2014-09-16T01:58:14Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* [http://www.softwaretestinghelp.com/conditional-loop-statements-qtp-tutorial-4/ Conditional Statement] &lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_error_handling.htm On Error statement]&lt;br /&gt;
* [http://www.tutorialspoint.com/qtp/qtp_recovery_scenarios.htm Recovery Scenarios]&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [http://rubygems.org/gems/capybara Capybara] run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT market is shrinking slowly.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more in legacy application and tools like Selenium, Cucumber and Capybara are becoming more popular.&lt;br /&gt;
&lt;br /&gt;
One of the main reason that we move from UFT is that it is a reactive approach of writing test automation. The product is finished and the tester starts writing the automation test. Only the tester writes the automation. With cucumber and selenium, writing automation test is a joint effort between the developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85676</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85676"/>
		<updated>2014-09-16T01:52:22Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [https://rubygems.org/gems/capybara Capybara] run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with [http://en.wikipedia.org/wiki/HP_Quality_Center HP Quality Center] or [http://en.wikipedia.org/wiki/HP_Application_Lifecycle_Management HP ALM]	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT market is shrinking slowly.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more in legacy application and tools like Selenium, Cucumber and Capybara are becoming more popular.&lt;br /&gt;
&lt;br /&gt;
One of the main reason that we move from UFT is that it is a reactive approach of writing test automation. The product is finished and the tester starts writing the automation test. Only the tester writes the automation. With cucumber and selenium, writing automation test is a joint effort between the developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85671</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85671"/>
		<updated>2014-09-16T01:45:24Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script ([http://en.wikipedia.org/wiki/Windows_Script_Host WScript],[http://en.wikipedia.org/wiki/WSH WSH],[http://en.wikipedia.org/wiki/Wmii WMI]) &amp;amp; [http://en.wikipedia.org/wiki/Visual_Basic_.NET VB.Net] code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as [http://en.wikipedia.org/wiki/Cucumber_(software) Cucumber] and [https://rubygems.org/gems/capybara Capybara] run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Selenium Selenium] is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
UFT market is shrinking slowly.&amp;lt;ref&amp;gt;http://www.quora.com/Is-there-demand-for-QTP&amp;lt;/ref&amp;gt; It is being used more in legacy application and tools like Selenium, Cucumber and Capybara are becoming more popular.&lt;br /&gt;
&lt;br /&gt;
One of the main reason that we move from UFT is that it is a reactive approach of writing test automation. The product is finished and the tester starts writing the automation test. Only the tester writes the automation. With cucumber and selenium, writing automation test is a joint effort between the developers and the testers. The testers write the test cases in cucumber scenario format, then the developers write the steps definition. This way, everyone is contributing and everyone is reviewing the test cases. Cucumber code is readable and easy to understand.&amp;lt;ref&amp;gt;http://qastuffs.blogspot.com/2010_12_01_archive.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85664</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85664"/>
		<updated>2014-09-16T01:33:45Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Uniffied Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
[[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85663</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85663"/>
		<updated>2014-09-16T01:33:22Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides [http://en.wikipedia.org/wiki/Functional_testing functional testing] and [http://en.wikipedia.org/wiki/Regression_testing regression testing] automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise [http://en.wikipedia.org/wiki/Quality_assurance quality assurance].&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by [http://en.wikipedia.org/wiki/Mercury_Interactive Mercury Interactive] and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard Hewlett Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, [http://en.wikipedia.org/wiki/Service_layer the service layer] and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Unified Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application [http://en.wikipedia.org/wiki/Graphical_user_interface GUI](i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. [http://en.wikipedia.org/wiki/Data-driven_testing Data-driven testing] is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
[File:LifeCycle.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:LifeCycle.jpg&amp;diff=85661</id>
		<title>File:LifeCycle.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:LifeCycle.jpg&amp;diff=85661"/>
		<updated>2014-09-16T01:31:20Z</updated>

		<summary type="html">&lt;p&gt;Abora: uploaded a new version of &amp;amp;quot;File:LifeCycle.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:LifeCycle.jpg&amp;diff=85654</id>
		<title>File:LifeCycle.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:LifeCycle.jpg&amp;diff=85654"/>
		<updated>2014-09-16T01:24:43Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85648</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85648"/>
		<updated>2014-09-16T01:19:35Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides functional testing and regression testing automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise quality assurance.&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Unified Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
'''Comparison of UFT with other tools'''&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! UFT&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85641</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85641"/>
		<updated>2014-09-16T01:14:04Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides functional testing and regression testing automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise quality assurance.&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by [http://en.wikipedia.org/wiki/Hewlett-Packard].&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Unified Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;''The Testing Network, An Integral Approach to Test Activities in Large Software Projects'' by Jean-Jacques Pierre Henry (Aug 17, 2008), p413, ISBN 978-3-540-78504-0&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;''Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing'', Beta Edition 0.9.0 by Armando Fox and David Patterson, August 23, 2012, p136, &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Comparison of QTP with other tools&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! QTP&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85626</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85626"/>
		<updated>2014-09-16T00:46:51Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides functional and regression test automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise quality assurance.&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by Hewlett Packard.&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Unified Functional Testing&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;The Testing Network: An Integral Approach to Test Activities in Large p413&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;Engineering Long Lasting Software p136&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Comparison of QTP with other tools&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! QTP&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85624</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85624"/>
		<updated>2014-09-16T00:42:28Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),&amp;lt;ref&amp;gt;http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features&amp;lt;/ref&amp;gt; provides functional and regression test automation for software applications and environments.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/application-lifecycle-management-application-test-software/index.html?zn=bto&amp;amp;cp=1-11-127-24^1352_4000_1__&amp;lt;/ref&amp;gt; HP Unified Functional Testing can be used for enterprise quality assurance.&amp;lt;ref&amp;gt;http://www.learnqtp.com/qtp-quality-center-test-director-guide/&amp;lt;/ref&amp;gt; HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by Hewlett Packard.&amp;lt;ref&amp;gt; http://www.devbistro.com/articles/Testing/Mercury-QuickTest-Professional-Evaluation&amp;lt;/ref&amp;gt;  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,&amp;lt;ref&amp;gt; http://selftechy.com/2013/10/07/hp-uft-11-50-unified-functional-testing&amp;lt;/ref&amp;gt; which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.&amp;lt;ref&amp;gt;http://www.computerworld.com/article/2493313/data-center/hp-simplifies-automated-software-testing-suite.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1eq3XHiUUBIrEBx-R2Mgolaw7HttSgzPniwDLEF5oVk0/edit# Writeup page.]&lt;br /&gt;
{| align=right style=&amp;quot;border: 1px solid gray;&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ HP Unified Functional Testing&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_developer? Developer(s)] || [http://en.wikipedia.org/wiki/Hewlett-Packard? HP], [http://en.wikipedia.org/wiki/HP_Software_Division? HP Software Division]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_release_life_cycle? Stable release] || 12.01&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Operating_system? Operating system] || [http://en.wikipedia.org/wiki/Microsoft_Windows? Microsoft Windows]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/List_of_software_categories? Type] || [http://en.wikipedia.org/wiki/Test_automation? Test automation tools]&lt;br /&gt;
|-&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Software_license? License] || [http://en.wikipedia.org/wiki/Proprietary_software? Proprietary]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.&amp;lt;ref&amp;gt;The Testing Network: An Integral Approach to Test Activities in Large p413&amp;lt;/ref&amp;gt; Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
* Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
* How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
* The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
* Increased Productivity&lt;br /&gt;
* Easy and Reduced maintenance effort&lt;br /&gt;
* Consistent automation development across projects&lt;br /&gt;
* Process driven than person driven approach&lt;br /&gt;
* Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/List_of_web_testing_tools&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/using-global-and-action-data-sheets-in.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/HP_QuickTest_Professional&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&amp;lt;ref&amp;gt;http://www.qtp10.com/2009/07/working-with-keyword-view-in-hp-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.&amp;lt;ref&amp;gt;http://www.fdscallcentre.com/homepage/data/mi/DS-0413-020_QTPro6.0.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&amp;lt;ref&amp;gt;http://qtpautomationcodes.blogspot.com/2013/05/error-handling-in-qtp.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;Engineering Long Lasting Software p136&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a form and submitting it). It is used to emulate a user's flow through a website. Test cases in Capybara will look like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' writes human-readable tests that are mapped onto code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Comparison of QTP with other tools&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! QTP&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85458</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85458"/>
		<updated>2014-09-14T19:04:26Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),[1] provides functional and regression test automation for software applications and environments.[2] HP Unified Functional Testing can be used for enterprise quality assurance.[3] HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by Hewlett Packard.[1]  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,[7] which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.[8]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/ncsu.edu/document/d/1XzVu0zEuk7LP4smGZV9lRpSx5-wri6oClpUAmGYPN44/edit# Writeup page.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions. Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
   * Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
   * How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
   * The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
   * Increased Productivity&lt;br /&gt;
   * Easy and Reduced maintenance effort&lt;br /&gt;
   * Consistent automation development across projects&lt;br /&gt;
   * Process driven than person driven approach&lt;br /&gt;
   * Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools[] &lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.[12]&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.[17]&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;Engineering Long Lasting Software p136&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' is a tool that interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a &lt;br /&gt;
&lt;br /&gt;
form and submitting it). It is used to emulate a user's flow through a website. With Capybara you can write something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' is a tool to write human-readable tests that are mapped into code. With it, you can rewrite the above example like this:&amp;lt;ref&amp;gt;http://stackoverflow.com/questions/15004918/cucumber-vs-capybara&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Comparison of QTP with other tools&amp;lt;ref&amp;gt;http://www.aspiresys.com/WhitePapers/QTPvsSelenium.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Feature&lt;br /&gt;
! QTP&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes &lt;br /&gt;
| No &lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
!Software Cost&lt;br /&gt;
| License &amp;amp; Annual maintenance Fees &lt;br /&gt;
| Zero&lt;br /&gt;
| Zero&lt;br /&gt;
|-&lt;br /&gt;
!Coding Experience of &lt;br /&gt;
Engineer	&lt;br /&gt;
|Not Much	&lt;br /&gt;
|Should be very good along with &lt;br /&gt;
technical capabilities of integrating &lt;br /&gt;
different pieces of framework	&lt;br /&gt;
|Requires minimal use of Ruby programming&lt;br /&gt;
|-&lt;br /&gt;
!Script Creation Time	&lt;br /&gt;
|Low	&lt;br /&gt;
|High	&lt;br /&gt;
|Medium&lt;br /&gt;
|-&lt;br /&gt;
!Hardware resource (CPU &lt;br /&gt;
+ RAM) consumption during &lt;br /&gt;
script execution	&lt;br /&gt;
|High	&lt;br /&gt;
|Low	&lt;br /&gt;
|Low&lt;br /&gt;
|-&lt;br /&gt;
!Product Support	&lt;br /&gt;
|Dedicate HP support along with &lt;br /&gt;
support forums	&lt;br /&gt;
|Open Source Community	&lt;br /&gt;
|Open Source Community&lt;br /&gt;
|-&lt;br /&gt;
!Framework	&lt;br /&gt;
|Easily integrated with HP Quality &lt;br /&gt;
Center or HP ALM	&lt;br /&gt;
|Selenium + Eclipse + Maven / ANT &lt;br /&gt;
+ Jenkins / Hudson &amp;amp; its plugins / &lt;br /&gt;
Cruise Control + TestNG + SVN	&lt;br /&gt;
|Ruby on Rails&lt;br /&gt;
Merb&lt;br /&gt;
Sinatra&lt;br /&gt;
|-&lt;br /&gt;
!Continuous Integration	&lt;br /&gt;
|Possible through Quality Center &lt;br /&gt;
/ ALM or Jenkins	&lt;br /&gt;
|Possible through Jenkins / Hudson &lt;br /&gt;
/ Cruise Control	&lt;br /&gt;
|Possible through Rake, Ant, Maven and JUnit output&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85418</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 22 as</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_22_as&amp;diff=85418"/>
		<updated>2014-09-14T18:16:47Z</updated>

		<summary type="html">&lt;p&gt;Abora: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''HP Unified Functional Testing Professional'''&lt;br /&gt;
&lt;br /&gt;
HP Unified Functional Testing (UFT) software, formerly known as HP Quick Test Professional (QTP),[1] provides functional and regression test automation for software applications and environments.[2] HP Unified Functional Testing can be used for enterprise quality assurance.[3] HP Unified Functional Testing is a test automation tool originally developed by Mercury Interactive and later acquired by Hewlett Packard.[1]  HP Unified Functional Testing 11.5 combined HP QuickTest Professional and HP Service Test into a single software package,[7] which is currently available from the HP Software Division. The integrated HP Unified Functional Testing software allows developers to test from a single console all three layers of a program’s operations: the interface, the service layer and the database layer.[8]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/ncsu.edu/document/d/1XzVu0zEuk7LP4smGZV9lRpSx5-wri6oClpUAmGYPN44/edit# Writeup page.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Background'''==&lt;br /&gt;
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions. Test Automation is a development discipline as it uses scripting languages to instruct the tool how to interact with your application. As such careful consideration needs to be paid to&lt;br /&gt;
&lt;br /&gt;
   * Exception handling for bugs that occur during testing cycles(i.e, unexpected error messages during a test run).&lt;br /&gt;
   * How the tool synchronizes with your application(e.g. if there are slow response times from your environment)&lt;br /&gt;
   * The level of maintenance required to keep the tests up to date with changes in the application GUI(i.e, new buttons, data fields, custom controls etc)&lt;br /&gt;
&lt;br /&gt;
Any test automation framework is a set of assumptions, concepts and tools that provide support for automating the major activities in the testing process. The main advantage of a framework is&lt;br /&gt;
&lt;br /&gt;
   * Increased Productivity&lt;br /&gt;
   * Easy and Reduced maintenance effort&lt;br /&gt;
   * Consistent automation development across projects&lt;br /&gt;
   * Process driven than person driven approach&lt;br /&gt;
   * Controlled maintenance of automation artifacts&lt;br /&gt;
&lt;br /&gt;
There is a range of automation testing tools available. Some of them are licensed and few others are open sourced. QTP, Cucumber, Capybara and other tools[] &lt;br /&gt;
&lt;br /&gt;
=='''Description'''==&lt;br /&gt;
Although HP UFT is usually used for UI based Test Case Automation, it can also automate some non-UI based test cases like database testing, webservice testing and file based operations. It offers a graphical user interface, keyboard support, multiple testing views, and scripting language. &lt;br /&gt;
&amp;lt;ref&amp;gt;http://www.softwaretestinghelp.com/qtp-quicktest-professional-tutorial-1/&amp;lt;/ref&amp;gt;&lt;br /&gt;
===Data Driven Testing===&lt;br /&gt;
HP Unified Functional Testing supports data-driven testing. For example, data can be output to a data table for reuse elsewhere. Data-driven testing is implemented as a Microsoft Excel workbook that can be accessed from HP Unified Functional Testing. HP Unified Functional Testing has two types of data tables: the Global data sheet and Action (local) data sheets. The test steps can read data from these data tables in order to drive variable data into the application under test, and verify the expected result.[12]&lt;br /&gt;
&lt;br /&gt;
===Views===&lt;br /&gt;
HP Unified Functional Testing provides two views—and ways to modify—a test script: Keyword View and Expert View. These views enable HP Unified Functional Testing to act as an Integrated Development Environment (IDE) for the test, and HP Unified Functional Testing includes many standard IDE features, such as breakpoints to pause a test at predetermined places.&lt;br /&gt;
&lt;br /&gt;
====Keyword view====&lt;br /&gt;
Keyword View lets users create and view the steps of a test in a modular, table format. In Keyword View, users can also view properties for items such as checkpoints, output values, and actions, use conditional and loop statements, and insert breakpoints to assist in debugging a test.&lt;br /&gt;
&lt;br /&gt;
====Expert View====&lt;br /&gt;
Expert view displays test code using [http://en.wikipedia.org/wiki/VBScript VBScript]. Designed for more advanced users, users can edit all test actions except for the root Global action, and changes are synchronized with the Keyword View.[17]&lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
HP UFT's VBScript allows for classes, but not other object oriented properties such as inheritance and polymorphism. It also lacks a debugger, however UFT has a debugger provided by HP. Some Windows script (WScript,WSH,WMI) &amp;amp; VB.Net code can be used in a script in the expert view  &amp;lt;ref&amp;gt;https://h20546.www2.hp.com/main/training/course_details.cfm?Course=00008165&amp;amp;sitepick=US&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Exception handling===&lt;br /&gt;
Application crashes, Unexpected events and errors during a run session can disrupt the run session and distort results. This is a problem particularly when tests run unattended—the test pauses until one performs the operation needed to recover. To handle such situations, Error and Exception Handling is must while developing script or Automation Framework.&lt;br /&gt;
Error and Exception handling in HP UFT can be done by the following ways:&lt;br /&gt;
&lt;br /&gt;
* Conditional Statement &lt;br /&gt;
* On Error statement&lt;br /&gt;
* Recovery Scenarios&lt;br /&gt;
&lt;br /&gt;
=='''Life Cycle'''==&lt;br /&gt;
&lt;br /&gt;
=='''Comparison to other tools'''==&lt;br /&gt;
Tools such as Cucumber and Capybara run tests from the perspective of the user. Cucumber converts user stories into tests and Capybara simulates a user or web browser. Unified Functional Testing is used by programmers to preform specific test cases they code themselves.&amp;lt;ref&amp;gt;Engineering Long Lasting Software p136&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Capybara''' is a tool that interacts with a website the way a human would (like visiting a url, clicking a link, typing text into a &lt;br /&gt;
&lt;br /&gt;
form and submitting it). It is used to emulate a user's flow through a website. With Capybara you can write something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe &amp;quot;the signup process&amp;quot;, :type =&amp;gt; :feature do&lt;br /&gt;
  before :each do&lt;br /&gt;
    User.make(:email =&amp;gt; 'user@example.com', :password =&amp;gt; 'caplin')&lt;br /&gt;
  end&lt;br /&gt;
  it &amp;quot;signs me in&amp;quot; do&lt;br /&gt;
    visit '/sessions/new'&lt;br /&gt;
    within(&amp;quot;#session&amp;quot;) do&lt;br /&gt;
      fill_in 'Login', :with =&amp;gt; 'user@example.com'&lt;br /&gt;
      fill_in 'Password', :with =&amp;gt; 'password'&lt;br /&gt;
    end&lt;br /&gt;
    click_link 'Sign in'&lt;br /&gt;
    page.should have_content 'Success'&lt;br /&gt;
  end&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cucumber''' is a tool to write human-readable tests that are mapped into code. With it, you can rewrite the above example like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Scenario: Signup process&lt;br /&gt;
Given a user exists with email &amp;quot;user@example.com&amp;quot; and password &amp;quot;caplin&amp;quot;&lt;br /&gt;
When I try to login with &amp;quot;user@example.com&amp;quot; and &amp;quot;caplin&amp;quot;&lt;br /&gt;
Then I should be logged in successfully&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Selenium''' is a tool for automating web applications for testing purposes.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Comparison of QTP with other tools&lt;br /&gt;
! Feature&lt;br /&gt;
! QTP&lt;br /&gt;
! Selenium&lt;br /&gt;
! Cucumber/  Capybara &lt;br /&gt;
|-&lt;br /&gt;
! Windows (Non-browser) &lt;br /&gt;
based Application support&lt;br /&gt;
| Yes || No || No&lt;br /&gt;
|-&lt;br /&gt;
! Environment Support&lt;br /&gt;
| Only Windows&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
| Windows , Linux , Solaris&lt;br /&gt;
OS X , Others&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=='''Disadvantages'''==&lt;br /&gt;
Unified Functional Testing is developed mainly for Windows based systems and it relies on outdated Windows tools like VBXScript. Tests can not be run outside of the UFT environment nor are they compatible with all browser types.&amp;lt;ref&amp;gt;http://www8.hp.com/us/en/software-solutions/unified-functional-testing-automated-testing/demos-documents.html#!&amp;amp;pd1=1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abora</name></author>
	</entry>
</feed>