<?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=Vnpai</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=Vnpai"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Vnpai"/>
	<updated>2026-07-13T21:35:35Z</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_2009/wiki1b_4_mv&amp;diff=21168</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21168"/>
		<updated>2009-09-21T17:40:24Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: /* Integration Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.jpg|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;[PRESSMAN ISBN 0073655783]&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
=Beyond Functional and Integration Testing=&lt;br /&gt;
[[Image:TestPhase.jpg|thumb|Test Phases]]&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21160</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21160"/>
		<updated>2009-09-21T17:34:33Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: /* Integration Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.jpg|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;[PRESSMAN]&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
=Beyond Functional and Integration Testing=&lt;br /&gt;
[[Image:TestPhase.jpg|thumb|Test Phases]]&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21152</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21152"/>
		<updated>2009-09-21T17:30:02Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.jpg|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond Functional and Integration Testing=&lt;br /&gt;
[[Image:TestPhase.jpg|thumb|Test Phases]]&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21151</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21151"/>
		<updated>2009-09-21T17:28:54Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.jpg|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond Functional and Integration Testing=&lt;br /&gt;
[[Image:TestPhase.gif|thumb|Test Phases]]&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21149</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21149"/>
		<updated>2009-09-21T17:28:29Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.gif|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond Functional and Integration Testing=&lt;br /&gt;
[[Image:TestPhase.gif|thumb|Test Phases]]&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TestPhase.jpg&amp;diff=21145</id>
		<title>File:TestPhase.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TestPhase.jpg&amp;diff=21145"/>
		<updated>2009-09-21T17:26:52Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: This picture shows us the various phases a software has to go through before it is released to the system. There are various other tests too which have not been shown in the system like stress testing and Regression testing, these also have an important p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This picture shows us the various phases a software has to go through before it is released to the system. There are various other tests too which have not been shown in the system like stress testing and Regression testing, these also have an important part in the deployment of a product. &lt;br /&gt;
For simplicity these tests have been ignored but it is worthy to note that they are an important part of the testing cycle too.&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21129</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21129"/>
		<updated>2009-09-21T17:06:55Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.gif|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps to write good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps to write good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond Funtional and Integration Testing=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21128</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=21128"/>
		<updated>2009-09-21T17:05:45Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Unit Testing is given a lot of importance in [[Software Testing]]. But functional and integration testing are essential too. Hence Functional and Integration Testing is discussed here. This page provides an introduction to these testing methods; also including the good practices to write functional and integration tests. Later additional types of software Tests are mentioned which could  be used to gain further confidence that one's code is correct.&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all the functions of a system, ensuring that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing, as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can be done by using manual or automated methods[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]. In both the methods, a series of tests have to be run marking the interaction between the user and the system, ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system, functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References].   &lt;br /&gt;
&lt;br /&gt;
==Functional Test Plan==&lt;br /&gt;
[[Image:Functional.gif|thumb|Functional test plan life cycle]]&lt;br /&gt;
&amp;quot;The functional test plan measures the quality of the functional components of the system[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1b_4_mv#References]&amp;quot;. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing a good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the developers do not write the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan should be updated when there are changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Examples of pre-test setup, test cases and post-test setup are given below. The complete reference for the example can be found at [http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
The pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
The test cases for the function:&amp;lt;i&amp;gt;Verify that only valid users can access the system&amp;lt;/i&amp;gt; can be given as: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellspacing=&amp;quot;2&amp;quot; width=900 border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#99ffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-test setup for the above scenario can be given as:&lt;br /&gt;
       Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond Funtional and Integration Testing=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating. More can be found at [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing. More can be found at [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha and Beta Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner. More can be found at [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing:''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested. More can be found at [http://en.wikipedia.org/wiki/Security_testing Security Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''The system is overloaded with data and it is checked to whether it crashes. More can be found at [http://en.wikipedia.org/wiki/Stress_testing Stress Testing] &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. More can be found at [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing:'''  smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. More can be found at [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:''' acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing. More can be found at [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
# [http://www.segue.com/pdf/automated_functional_testing.pdf Automated Functional Testing]&lt;br /&gt;
# [http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html# Functional Tests to ensure Software Quality]&lt;br /&gt;
# [http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm Functional Test Plans]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Unit_testing Unit Testing]&lt;br /&gt;
# [http://www.majordojo.com/uploads/AlphaBetaTesting.pdf Alpha Beta Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Recovery_testing Recovery Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Security_testing Security Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Stress_testing Stress Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Performance_testing Performance Testing]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Smoke_test Smoke Test]&lt;br /&gt;
# [http://en.wikipedia.org/wiki/Acceptance_testing Acceptance Testing]&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20467</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20467"/>
		<updated>2009-09-20T18:54:07Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met[http://www.bitpipe.com/tlist/Functional-Testing.html]. Functional testing ensures that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing[http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html#], as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can involve either manual or automated methods [http://www.segue.com/pdf/automated_functional_testing.pdf]. In both the methods a series of tests have to be run marking the interaction between the user and the, system ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html#].   &lt;br /&gt;
&lt;br /&gt;
==Functional test plan==&lt;br /&gt;
[[Image:Functional.gif|thumb|Functional test plan life cycle]]&lt;br /&gt;
The functional test plan measures the quality of the functional components of the system[http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm]. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing a good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the application developers do not author the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan is a dynamic document changing with changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
&lt;br /&gt;
       For example the pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
&lt;br /&gt;
       For example,consider the function:Verify that only valid users can access the system.&lt;br /&gt;
       The test case can be given as: &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;table cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#ffff99&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;ul&amp;gt;&lt;br /&gt;
       &amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
       &amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
       &amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;       &amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
&lt;br /&gt;
       For example:&lt;br /&gt;
       Test Case 1. Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
 &lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:'''[http://en.wikipedia.org/wiki/Unit_testing] This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''[http://www.majordojo.com/uploads/AlphaBetaTesting.pdf] When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:'''[http://en.wikipedia.org/wiki/Recovery_testing] In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing'''[http://en.wikipedia.org/wiki/Security_testing] Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''[http://en.wikipedia.org/wiki/Stress_testing] The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:'''[http://en.wikipedia.org/wiki/Performance_testing] It tests the run time performance of software within the context of the system. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing''' [http://en.wikipedia.org/wiki/Smoke_test] smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:'''[http://en.wikipedia.org/wiki/Acceptance_testing] acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing.&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20466</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20466"/>
		<updated>2009-09-20T18:51:59Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Functional testing is the process of testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met[http://www.bitpipe.com/tlist/Functional-Testing.html]. Functional testing ensures that the system conforms to the user requirements and specifications. It is sometimes referred to as black box testing[http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html#], as it does not require understanding of the internal structure of the implementation. &lt;br /&gt;
&lt;br /&gt;
Functional testing can involve either manual or automated methods [http://www.segue.com/pdf/automated_functional_testing.pdf]. In both the methods a series of tests have to be run marking the interaction between the user and the, system ensuring that the system performs as it was supposed to. Since Use cases mainly depict the interaction between the user and system functional test suites are created from requirement use cases, with each scenario becoming a functional test[http://searchsoftwarequality.techtarget.com/generic/0,295582,sid92_gci1303938,00.html#].   &lt;br /&gt;
&lt;br /&gt;
==Functional test plan==&lt;br /&gt;
[[Image:Functional.gif|thumb|Functional test plan life cycle]]&lt;br /&gt;
The functional test plan measures the quality of the functional components of the system[http://www.developer.com/tech/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm]. The test plan is written by the &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt;. The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; lists a number of test cases, containing the input, expected results, and pre and post-test setup. After a module is unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; executes the functional test cases and records the actual results. The &amp;lt;i&amp;gt;Reviewer&amp;lt;/i&amp;gt; compares the Actual results with the expected results and reports whether each test case passed or failed the test.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing a good Functional Tests== &lt;br /&gt;
# The test plan must be written by persons who have extensive knowledge of the business requirements. It is advisable that the application developers do not author the test plans. This is because developers tend to unknowingly write test cases whose functionality is based on the implementation rather than the initial functional specifications.&lt;br /&gt;
# The functional test plans should be created as early as possible, probably as soon as the functional specifications are ready.&lt;br /&gt;
# The functional test plan is a dynamic document changing with changes in the business requirements.&lt;br /&gt;
# The &amp;lt;i&amp;gt;Author&amp;lt;/i&amp;gt; should clearly include the pre-test setup so that the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; can easily execute the test cases. &lt;br /&gt;
&lt;br /&gt;
       For example the pre-test setup for Test Case: &amp;lt;i&amp;gt;Create new user profile&amp;lt;/i&amp;gt; can be given as:&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username:     &amp;quot;A&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; first name:   &amp;quot;John&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; last name:    &amp;quot;Smith&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; access level: &amp;quot;read-only&amp;quot;]&lt;br /&gt;
       [UserName: &amp;quot;A&amp;quot;: --&amp;gt; password:     &amp;quot;profile1&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
# A list of test cases should be defined to verify a set of &amp;quot;clear-defined&amp;quot; functions of the use-case. &lt;br /&gt;
&lt;br /&gt;
       For example,consider the function:Verify that only valid users can access the system.&lt;br /&gt;
       The test case can be given as: &lt;br /&gt;
&lt;br /&gt;
       &amp;lt;table cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#ffff99&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Test Case #&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Required Input&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Expected Results&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Results&amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;th&amp;gt;Pass/Fail&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td colspan=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;ul&amp;gt;&lt;br /&gt;
       &amp;lt;li&amp;gt;Verify that only valid users can access the system.&amp;lt;/li&amp;gt;&lt;br /&gt;
       &amp;lt;li&amp;gt;Verify that valid users cannot access the system without entering a valid password.&amp;lt;/li&amp;gt;&lt;br /&gt;
       &amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Navigate to the login screen&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Login screen with release number A is loaded.&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name &amp;quot;INVALIDUSER&amp;quot;, password &amp;quot;INVALIDUSER&amp;quot;, and click on login button&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Error message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;User name is not found&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;:--&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;quot;test&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Error Message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;Password for user &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; is invalid&amp;quot;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;Enter user name &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; username&amp;amp;#93;&amp;lt;/b&amp;gt; and password &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; password&amp;amp;#93;       &amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       &amp;lt;td&amp;gt;The main page is loaded with a message:&amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;quot;Welcome &amp;lt;b&amp;gt;&amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; first name&amp;amp;#93; &amp;amp;#91;UserName: &amp;quot;A&amp;quot;: --&amp;amp;gt; last name&amp;amp;#93;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# The Author should provide post-test setup which has instructions on how to clear any data that would prevent the test case from being executed more than once.&lt;br /&gt;
&lt;br /&gt;
       For example:&lt;br /&gt;
       Test Case 1. Remove [UserName: &amp;quot;A&amp;quot;: --&amp;gt; username: &amp;quot;A&amp;quot;] from the LDAP Server.&lt;br /&gt;
 &lt;br /&gt;
# As a module is built and unit tested, the &amp;lt;i&amp;gt;Tester&amp;lt;/i&amp;gt; should execute the particular test cases.&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:'''[http://en.wikipedia.org/wiki/Unit_testing] This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''[http://www.majordojo.com/uploads/AlphaBetaTesting.pdf] When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:'''[http://en.wikipedia.org/wiki/Recovery_testing] In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing'''[http://en.wikipedia.org/wiki/Security_testing] Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''[http://en.wikipedia.org/wiki/Stress_testing] The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:'''[http://en.wikipedia.org/wiki/Performance_testing] It tests the run time performance of software within the context of the system. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing''' [http://en.wikipedia.org/wiki/Smoke_test] smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:'''[http://en.wikipedia.org/wiki/Acceptance_testing] acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing.&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Functional.gif&amp;diff=20458</id>
		<title>File:Functional.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Functional.gif&amp;diff=20458"/>
		<updated>2009-09-20T18:26:53Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20226</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20226"/>
		<updated>2009-09-20T06:16:13Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:'''[http://en.wikipedia.org/wiki/Unit_testing] This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''[http://www.majordojo.com/uploads/AlphaBetaTesting.pdf] When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:'''[http://en.wikipedia.org/wiki/Recovery_testing] In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing'''[http://en.wikipedia.org/wiki/Security_testing] Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''[http://en.wikipedia.org/wiki/Stress_testing] The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:'''[http://en.wikipedia.org/wiki/Performance_testing] It tests the run time performance of software within the context of the system. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Smoke Testing''' [http://en.wikipedia.org/wiki/Smoke_test] smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Acceptance Testing:'''[http://en.wikipedia.org/wiki/Acceptance_testing] acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20225</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20225"/>
		<updated>2009-09-20T06:15:31Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:'''[http://en.wikipedia.org/wiki/Unit_testing] This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''[http://www.majordojo.com/uploads/AlphaBetaTesting.pdf] When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:'''[http://en.wikipedia.org/wiki/Recovery_testing] In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing'''[http://en.wikipedia.org/wiki/Security_testing] Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''[http://en.wikipedia.org/wiki/Stress_testing] The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:'''[http://en.wikipedia.org/wiki/Performance_testing] It tests the run time performance of software within the context of the system. &lt;br /&gt;
'''Smoke Testing''' [http://en.wikipedia.org/wiki/Smoke_test] smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release.&lt;br /&gt;
'''Acceptance Testing:'''[http://en.wikipedia.org/wiki/Acceptance_testing] acceptance testing performed by the customer is known as user acceptance testing (UAT). This is also known as end-user testing, site (acceptance) testing, or field (acceptance) testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20223</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20223"/>
		<updated>2009-09-20T06:11:32Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:'''[http://en.wikipedia.org/wiki/Unit_testing] This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:'''[http://www.majordojo.com/uploads/AlphaBetaTesting.pdf] When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:'''[http://en.wikipedia.org/wiki/Recovery_testing] In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing'''[http://en.wikipedia.org/wiki/Security_testing] Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:'''[http://en.wikipedia.org/wiki/Stress_testing] The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:'''[http://en.wikipedia.org/wiki/Performance_testing] It tests the run time performance of software within the context of the system. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20219</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20219"/>
		<updated>2009-09-20T06:02:04Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# '''Top-Down Approach.''' In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# '''Bottom Up Approach.''' In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# '''Umbrella approach.''' Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:''' When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:''' The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20217</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20217"/>
		<updated>2009-09-20T05:59:54Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:''' When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:''' The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20215</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20215"/>
		<updated>2009-09-20T05:58:48Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein checks are made to ensure that the functional requirements are satisfied.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Alpha and Beta Testing:''' When the product about to be released, it is first exposed to some end users who test the application. This is alpha beta testing.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Recovery Testing:''' In this phase the system is made to crash and is used to check to see if it recovers in the proper manner.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Security Testing''' Systems that store and record sensitive information need to be protected from threats, in this phase the systems protection mechanisms are tested.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Stress Testing:''' The system is overloaded with data and it is checked to whether it crashes. &amp;lt;br /&amp;gt;&lt;br /&gt;
'''Performance Testing:''' It tests the run time performance of software within the context of the system. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20197</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20197"/>
		<updated>2009-09-20T05:15:50Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
Integration and Functional testing are not the only testing that are done for checking the validity of the system. Other test cases includes:&lt;br /&gt;
'''Unit Testing:''' This is the first stage where the developer tests the component he/she is creating.&lt;br /&gt;
'''Validation Testing:''' After integration Testing, validation testing takes place wherein &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20188</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20188"/>
		<updated>2009-09-20T04:54:52Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20185</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20185"/>
		<updated>2009-09-20T04:48:27Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20179</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20179"/>
		<updated>2009-09-20T04:36:57Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
=Beyond=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20174</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20174"/>
		<updated>2009-09-20T04:32:46Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches== &lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20173</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20173"/>
		<updated>2009-09-20T04:32:00Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches== [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
Integration testing can be done in a variety of ways &lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20171</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20171"/>
		<updated>2009-09-20T04:30:51Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Problem Statement=  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Different stages of Software Testing=&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Functional Testing= &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Integration Testing=&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches== [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
Integration testing can be done in a variety of ways &lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20170</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20170"/>
		<updated>2009-09-20T04:28:06Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches== [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
Integration testing can be done in a variety of ways &lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20169</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20169"/>
		<updated>2009-09-20T04:26:23Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches== [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
Integration testing can be done in a variety of ways &lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed &lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]] &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20168</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20168"/>
		<updated>2009-09-20T04:25:40Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20165</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20165"/>
		<updated>2009-09-20T04:24:16Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed [[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20163</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20163"/>
		<updated>2009-09-20T04:22:59Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20162</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20162"/>
		<updated>2009-09-20T04:22:13Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==  &lt;br /&gt;
&amp;lt;blockquote&amp;gt;We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Different stages of Software Testing==&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt; &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;DEFINITION:&amp;lt;/strong&amp;gt;&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20156</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20156"/>
		<updated>2009-09-20T04:19:01Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx]&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20152</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20152"/>
		<updated>2009-09-20T04:17:57Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functional Testing== &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Functional Testing==&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
==Integration Testing==&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integration Test approaches==&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==Prerequisites before Integration Testing==&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
==Steps in writing good Integration Test Cases==&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
==How To write Good Integration Test Cases and do effective Integration Testing==&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20146</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20146"/>
		<updated>2009-09-20T04:14:09Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|thumb|Bottom Up Approach]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20144</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20144"/>
		<updated>2009-09-20T04:12:14Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|thumb|Top Down|right]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|right]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20109</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20109"/>
		<updated>2009-09-20T03:06:15Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|Top Down|right]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|right]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20108</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20108"/>
		<updated>2009-09-20T03:05:10Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[File:TopDown_Approach.jpg|Top Down|right]]&lt;br /&gt;
[[File:BottomUp_Approach.jpg|right]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20107</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20107"/>
		<updated>2009-09-20T03:04:02Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|Bottom Up Approach]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20106</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20106"/>
		<updated>2009-09-20T03:01:05Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|right|Top Down Approach]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|right|Bottom Up Approach]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20105</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20105"/>
		<updated>2009-09-20T02:59:13Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
[[Image:TopDown_Approach.jpg|right]]&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|right]]&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20104</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20104"/>
		<updated>2009-09-20T02:58:38Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:BottomUp_Approach.jpg|right]]&lt;br /&gt;
[[Image:TopDown_Approach.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. &lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TopDown_Approach.jpg&amp;diff=20103</id>
		<title>File:TopDown Approach.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TopDown_Approach.jpg&amp;diff=20103"/>
		<updated>2009-09-20T02:58:26Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: The diagram shows us how the top down approach is performed where A,B,C,D,E,F etc are the individual components&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The diagram shows us how the top down approach is performed where A,B,C,D,E,F etc are the individual components&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20099</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20099"/>
		<updated>2009-09-20T02:53:02Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20097</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20097"/>
		<updated>2009-09-20T02:52:11Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg|left]]&lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20096</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20096"/>
		<updated>2009-09-20T02:42:19Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach. [[Image:BottomUp_Approach.jpg]]&lt;br /&gt;
&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:BottomUp_Approach.jpg&amp;diff=20095</id>
		<title>File:BottomUp Approach.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:BottomUp_Approach.jpg&amp;diff=20095"/>
		<updated>2009-09-20T02:40:03Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: The diagram shows us how the bottom up approach is done where in A,B,C,D,E are individual modules which are combined at various stages and finally result in the integrated product&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The diagram shows us how the bottom up approach is done where in A,B,C,D,E are individual modules which are combined at various stages and finally result in the integrated product&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20089</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20089"/>
		<updated>2009-09-20T02:19:27Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&amp;lt;br/&amp;gt;&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach.&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20086</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20086"/>
		<updated>2009-09-20T02:19:03Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
Testing software based on its functional requirements. It ensures that the program physically works the way it was intended and all required menu options are present. It also ensures that the program conforms to the industry standards relevant to that environment; for example, in a Windows program, pressing F1 brings up help.&lt;br /&gt;
(http://msdn.microsoft.com/en-us/library/aa292128%28VS.71%29.aspx)&lt;br /&gt;
DEFINITION: &amp;lt;i&amp;gt;Testing of all features and functions of a system [software, hardware, etc.] to ensure requirements and specifications are met.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use cases are generally developed from the user specifications. These use cases are useful in providing the guidelines for functional testing.&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Functional Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
# Build Functional test cases from uses cases, with each use case scenario becoming a functional test.&lt;br /&gt;
# As a module is built and unit tested apply the particular test case.&lt;br /&gt;
# Prioritize the test cases.&lt;br /&gt;
# it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document&lt;br /&gt;
# The author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules. Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
DEFINITION:&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach.&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20077</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20077"/>
		<updated>2009-09-20T01:57:11Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules.Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach.&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner. The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20076</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20076"/>
		<updated>2009-09-20T01:56:11Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Functional Testing&amp;lt;/strong&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Integration Testing&amp;lt;/strong&amp;gt;&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules.Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach.&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
{{{&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner.The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20075</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 4 mv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_4_mv&amp;diff=20075"/>
		<updated>2009-09-20T01:52:09Z</updated>

		<summary type="html">&lt;p&gt;Vnpai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;strong&amp;gt;Topic: Functional and integration testing and beyond&amp;lt;/strong&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;strong&amp;gt;Problem Statement:&amp;lt;/strong&amp;gt;  We have focused mainly on unit tests in this course. But functional and integration testing are also important. How does one write good functional and integration tests? Are there any kinds of tests beyond unit, functional, and integration that one should implement to gain confidence that one's code is correct?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Different stages of Software Testing&lt;br /&gt;
http://www.aptest.com/testtypes.html (either use reference to this place or type in our own words)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Testing: &lt;br /&gt;
&lt;br /&gt;
Integration Testing:&lt;br /&gt;
Integration Testing is a process of testing the application on the whole. After going through the unit testing of the modules, these modules need to be integrated, and during this process things may go wrong, Integration process is the phase wherein these errors are captured and rectified.&lt;br /&gt;
It is very common for modules after having successful passed all the unit test cases to fail when they are integrated with other modules.Integration testing is an important phase and sometimes there are separate teams which handle integration testing. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Integration testing is a systematic technique for constructing the program structure while at the same time conducting tests to uncover errors associated with interfacing. The objective is to take unit tested components&lt;br /&gt;
and build a program structure that has been dictated by design.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Integration testing can be done in a variety of ways&lt;br /&gt;
# Top-Down Approach. In this approach the modules higher up in the control hierarchy are integrated first and low-level modules are added later. The advantage of this approach is that the modules with high level logic are tested first and hence bugs in the crucial logic are caught early. Further this approach does not require drivers to be written. Although a number of stubs have to be written and managed&lt;br /&gt;
# Bottom Up Approach. In this approach, the low level modules are integrated first and high level logic is tested late. While integrating the low level modules, the control modules are replaced by dummy modules called as drivers. Thus driver codes have to be written and managed while using this approach.&lt;br /&gt;
# Umbrella approach. Another approach is called the umbrella approach. It is a hybrid of the top down and the botom up approach, ie both the bottom up and top down approaches are used.In this approach we first test along the functional and control flow paths, for this we use the bottom up approach. The results thus gathered are later integrated in a top down manner. This kind of testing allows creating early prototypes of the system with has limited functionality thereby helping is the creations of the product in an incremental manner. This types of testing also minimizes the use of stubs and drivers which are needed in the top-down and bottom up approaches.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Prerequisites before Integration Testing&amp;lt;/strong&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
The system that is being tested, all of its modules should be rigorously tested as a component, i.e they should have gone through unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Steps in writing good Integration Test Cases&amp;lt;/strong&amp;gt;&lt;br /&gt;
#Create a Test Plan&lt;br /&gt;
#Create test cases and the sample data against which they would be tested.&lt;br /&gt;
#If automated tools are being used, scripts should be created.&lt;br /&gt;
#After the components have been integrated, start executing the test cases created in point 2.&lt;br /&gt;
#Log the bugs found and rectify the same.&lt;br /&gt;
#Retest the code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;How To write Good Integration Test Cases and do effective Integration Testing&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
The main focus of integration testing is that it needs to check whether the different components are working smoothly and are interacting with each other in the proper manner.The Integration test cases specifically focus on the flow of data/information/control from one component to the other.&lt;br /&gt;
A few thing that needs to be kept in mind for effective integration testing are&lt;br /&gt;
# Ensure that the correct versions of the components are integrated together.&lt;br /&gt;
# Automate the integration of components so that there is lesser chance for human error.&lt;br /&gt;
# Log all the errors that have been found and document them with the solutions as well as the version number so that we could keep track of which build was being tested when the error was discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functional Tests:&lt;br /&gt;
Functioanl Test usually check whether the code is running according to what the user/client needs. &lt;br /&gt;
&lt;br /&gt;
http://www.davenicolette.net/articles/ftdd.pdf&lt;/div&gt;</summary>
		<author><name>Vnpai</name></author>
	</entry>
</feed>