Unit Testing: It is defined as the first level of testing in which soon after the unit (smaller part of project/ sub module) is developed; it will be tested for its perfection. If it is working properly as per the design.
Module Testing: It is another level of testing in which once all the sub modules or units are developed to form a module, it will be checked for its perfection, if it is as per requirements.
Module testing belongs to black box testing because at this level usually GUI is made available on which the functionality can be seen and tested hence it is always done by test engineers.
Integration Testing: It is another important level of testing in which soon after the individual modules are developed, tested are brought together to make an application or part of an application. If one performs testing on these integrated modules, it is known as integration testing.
The purpose of integration testing:
To test the individual modules, if their right functionality is affected due to integration.
The net functionality of the integrated modules is to be tested.
To check if the data is flowing among the modules as per DFD’s.
To check the navigation at high level, if it is as per the design.
Integration Approaches:
Integration approach is a process, which defines how the modules are integrated with each other. Based on this criterion there are basically three types of approaches:
1. Top down Approach
2. Bottom up Approach
3. Sandwich Approach
1. Top down Approach: This approach is usually proposed whenever the customer does not interfere and the sequence of development is not affected. In this approach as and when the child modules are developed, they are integrated with the parents, hence the direction of integration is from top to bottom, and hence it is top-bottom approach.
In this approach, there is every possibility that some of the child modules are missing (not yet developed) causing hindrance for the integration among the rest of module. In order to get along with the situation the temporary dummy program is employed in the place of missing child module to make the integration success is known as “STUB”.
2. Bottom-Up Approach: This approach is proposed whenever customer
Interferes in the beginning and changes the sequence of development. In this approach of integration as and when the parents are developed these get integrated with the child modules. In this process there is every possibility that parents are missing, causing hindrance to integration and as usual a temporary dummy program is used as a solution known as “DRIVER”.
3. Sand witch approach: This approach is proposed whenever the customer
Interfere in between the development process. It is basically a combination of top down and bottom up approach hence both the stubs and drivers are seen in this approach.
System Testing: It is another crucial level of testing in which once the application is developed and deployed into the customers specified and simulated environment to prepare the complete system. If one performs testing on entire system to check if the application is functioning as per the requirements, it is known as system testing.
System testing can be considered as full fledged testing as it covers GUI testing, functional testing (positive and negative), performance testing, load testing, and stress testing.
User Acceptance Testing: It is defined as final level of testing in which, the Application is tested in the presence of customer/customer’s representative in order to check, if the users acceptance criteria is justified or not.
The user acceptance testing belongs to black box testing and it is done by either test engineer or customer him self.
Load Testing: It is defined as a type of testing that will be done under system Testing in which the sequential load is performed on the application with a constant increment, in order to determine the load baring capacity of the application.
Performance Testing: It is defined as a type of testing that will be done under system Testing in which set of pre defined end to end transactions are performed on the application to determine the respective response times and to conclude if the performance of the application is ok, depends on, if the actual response times are well with in the expected response times. Hence
performance means “the time factor” i.e., the response time.
Stress Testing: It is defined as the type of testing in which abnormal actions, Beyond capacity and more volumes of data related operations are performed on the application by multiple users. In order to check if the application is stable in spite of the abnormal behavior and stress on the application. Hence stress means to find stability.
Friday, April 25, 2008
Thursday, April 24, 2008
Testing Definitions
Smoke Testing(Cursory Testing): It is a type of testing in which one can perform an initial, non-detailed testing on an application preferably in short span of time to check if all the desired objects/ features/ windows are basically available in order to perform detailed testing on them
Sanity Testing: It is a type of testing that is carried on initially as non-detailed testing in a short span of time, just to make sure that the application is proper ( to see all the entities are available ) in order to carryon detailed testing. Hence Sanity testing is same as Smoke testing.
Regression Testing: It is defined as a type of testing in which an already tested functionality is tested again and again in order to make sure that the functionality is defect free (under bug regression testing) as well as to ensure the existing right functionality is affected or not affected due to the addition of new functionality to it (under functional regression testing).
Regression testing is of two types:
Bug Regression Testing: It is a type of regression testing in which a specific functionality is repeatedly tested to see if there are any bugs as a result of the rectification of old bugs. Since focus is on bugs, it is known as bug regression testing.
Functional Regression Testing: It is another type of regression testing in which the existing right functionality is tested again and again whenever a change is added to it to check if the existing right functionality has any effect due to the new change.
Re-Testing: It is defined as a type of testing in which an already tested functionality is tested again and again to make sure that the defect is tested again and again to make sure that the defect is reproducible if at all any, to rule out environmental issues and to ensure the robustness(strength) of the functionality.
Note: The difference between Regression and Re-testing is that, the regression can’t be done in the first release and it is possible from the second release onwards whereas re-testing is possible in all the releases including first release.
Static Testing: It is a type of testing in which one can perform testing on an application without execution of application.
Example: GUI Testing, document testing, etc.
Dynamic Testing: It is a type of testing in which one can perform testing on an application while application is executed.
Example: Functionality testing.
Alpha Testing: It is a type of user acceptance testing, that is conducted on the product as a final testing within the development company, just before it is delivered to the customer. Alpha testing is done by either test engineer or the customer representative.
Beta Testing: It is a type of user acceptance testing, that is conducted on the product as a first time testing within the customer’s environment, when the product is delivered to the customer and is deployed in to customers environment and is being used by the real time users. Beta testing is done by the real time user.
The advantage of alpha testing is that if at all any defects are encountered; they can be rectified immediately as the product is not yet developed. The disadvantage of beta testing is that the immediate rectification is not possible and it is always time consuming as it needs to follow formal process.
Installation Testing (Deployment Testing): It is a type of testing, in which once the module is delivered to the testing department it will be deployed into the testing environment as per the guidelines defined by the deployment document. The developer checks if the deployment is done successfully as per the guidelines.
Compatibility Testing: It is a type of testing in which mostly the products are tested on various environments which are created and simulated with the combinations of several environmental components like clients, application servers, data base servers, operating systems etc., In order to check if these products are compatible for these environments, so that it addresses the business needs of various enterprises.
Usability Testing: It is a type of testing in which the test engineer checks the “user friendliness” factor of an application apart from the functionality of it.
Exploratory Testing: It is a type of testing in which, the test engineer doesn’t have any functional knowledge initially, and through the exploration on the application he will come to know the functionality and then performs testing on it simultaneously. Hence in this type of testing knowing and testing are performed simultaneously. Since exploration is associated with testing it is known as exploratory testing.
Mutation Testing: It is a type of white box testing in which an initial version of the program is modified into multiple versions while each changed version is known as ‘Mutant’. As each mutant is generated the corresponding text data is created to test the new mutant is perfect as per the requirement. Since mutants are used in this testing, it is known as mutation testing.
Monkey Testing: It is a type of testing in which one perform abnormal, beyond capacity and more volumes of data related operations intentionally on the application to check if it is stable in spite of users abnormal behavior.
End-to-End Testing (Environment Testing): It is a type of testing in which a full fledged complete transaction is performed on one application in order to check if all the environmental components are operationally available to complete the transaction successfully.
Forced Error Testing: It is a type of testing in which, application is tested with invalid inputs in order to check if the error message displayed by it is appropriate or not.
Scalability Testing: It is a type of testing in which one can check and ensure that the application can be scaled or enhanced with respect to the new functionality addition or the external factors change without demanding re-design and the environments change.
Reliability Testing: It is a type of testing in which, one perform abnormal and normal activities in combination on the application preferably for longer duration in order to check if the stability of application is retained in spite of abnormality for a longer duration. This testing is also known as Soak Testing.
Security Testing: It is a type of testing in which, the vital information of the application/ the application itself is tested in such a way that, if it is accessed by the valid users, protected from invalid users and destructive agents like virus. In other words security testing ensures the protection of vital information from illegal access and the undesirable transactions.
Accessibility Testing: Accessibility is nothing but extendibility of the user friendliness to the disable/handicapped users apart from the normal users. Precisely accessibility is the extendibility of the usability. Accessibility testing is a type of testing in which the test engineer checks the application if the accessibility criteria is justified in it.
Heuristic Testing: It is a type of testing in which, the test engineer depends upon his past experience cover the hidden areas where the possibility of defects are more apart from the normal testing that he performs that is driven by the test case document.
Ad hoc Testing: It is a type of testing in which, the test engineer perform random, an informal testing on an application without using test case document. Unlike formal testing in order to cover the uncovered area with the help of test case document in the form of testing.
Testing done without any formal testing technique is called ad hoc testing.
Sanity Testing: It is a type of testing that is carried on initially as non-detailed testing in a short span of time, just to make sure that the application is proper ( to see all the entities are available ) in order to carryon detailed testing. Hence Sanity testing is same as Smoke testing.
Regression Testing: It is defined as a type of testing in which an already tested functionality is tested again and again in order to make sure that the functionality is defect free (under bug regression testing) as well as to ensure the existing right functionality is affected or not affected due to the addition of new functionality to it (under functional regression testing).
Regression testing is of two types:
Bug Regression Testing: It is a type of regression testing in which a specific functionality is repeatedly tested to see if there are any bugs as a result of the rectification of old bugs. Since focus is on bugs, it is known as bug regression testing.
Functional Regression Testing: It is another type of regression testing in which the existing right functionality is tested again and again whenever a change is added to it to check if the existing right functionality has any effect due to the new change.
Re-Testing: It is defined as a type of testing in which an already tested functionality is tested again and again to make sure that the defect is tested again and again to make sure that the defect is reproducible if at all any, to rule out environmental issues and to ensure the robustness(strength) of the functionality.
Note: The difference between Regression and Re-testing is that, the regression can’t be done in the first release and it is possible from the second release onwards whereas re-testing is possible in all the releases including first release.
Static Testing: It is a type of testing in which one can perform testing on an application without execution of application.
Example: GUI Testing, document testing, etc.
Dynamic Testing: It is a type of testing in which one can perform testing on an application while application is executed.
Example: Functionality testing.
Alpha Testing: It is a type of user acceptance testing, that is conducted on the product as a final testing within the development company, just before it is delivered to the customer. Alpha testing is done by either test engineer or the customer representative.
Beta Testing: It is a type of user acceptance testing, that is conducted on the product as a first time testing within the customer’s environment, when the product is delivered to the customer and is deployed in to customers environment and is being used by the real time users. Beta testing is done by the real time user.
The advantage of alpha testing is that if at all any defects are encountered; they can be rectified immediately as the product is not yet developed. The disadvantage of beta testing is that the immediate rectification is not possible and it is always time consuming as it needs to follow formal process.
Installation Testing (Deployment Testing): It is a type of testing, in which once the module is delivered to the testing department it will be deployed into the testing environment as per the guidelines defined by the deployment document. The developer checks if the deployment is done successfully as per the guidelines.
Compatibility Testing: It is a type of testing in which mostly the products are tested on various environments which are created and simulated with the combinations of several environmental components like clients, application servers, data base servers, operating systems etc., In order to check if these products are compatible for these environments, so that it addresses the business needs of various enterprises.
Usability Testing: It is a type of testing in which the test engineer checks the “user friendliness” factor of an application apart from the functionality of it.
Exploratory Testing: It is a type of testing in which, the test engineer doesn’t have any functional knowledge initially, and through the exploration on the application he will come to know the functionality and then performs testing on it simultaneously. Hence in this type of testing knowing and testing are performed simultaneously. Since exploration is associated with testing it is known as exploratory testing.
Mutation Testing: It is a type of white box testing in which an initial version of the program is modified into multiple versions while each changed version is known as ‘Mutant’. As each mutant is generated the corresponding text data is created to test the new mutant is perfect as per the requirement. Since mutants are used in this testing, it is known as mutation testing.
Monkey Testing: It is a type of testing in which one perform abnormal, beyond capacity and more volumes of data related operations intentionally on the application to check if it is stable in spite of users abnormal behavior.
End-to-End Testing (Environment Testing): It is a type of testing in which a full fledged complete transaction is performed on one application in order to check if all the environmental components are operationally available to complete the transaction successfully.
Forced Error Testing: It is a type of testing in which, application is tested with invalid inputs in order to check if the error message displayed by it is appropriate or not.
Scalability Testing: It is a type of testing in which one can check and ensure that the application can be scaled or enhanced with respect to the new functionality addition or the external factors change without demanding re-design and the environments change.
Reliability Testing: It is a type of testing in which, one perform abnormal and normal activities in combination on the application preferably for longer duration in order to check if the stability of application is retained in spite of abnormality for a longer duration. This testing is also known as Soak Testing.
Security Testing: It is a type of testing in which, the vital information of the application/ the application itself is tested in such a way that, if it is accessed by the valid users, protected from invalid users and destructive agents like virus. In other words security testing ensures the protection of vital information from illegal access and the undesirable transactions.
Accessibility Testing: Accessibility is nothing but extendibility of the user friendliness to the disable/handicapped users apart from the normal users. Precisely accessibility is the extendibility of the usability. Accessibility testing is a type of testing in which the test engineer checks the application if the accessibility criteria is justified in it.
Heuristic Testing: It is a type of testing in which, the test engineer depends upon his past experience cover the hidden areas where the possibility of defects are more apart from the normal testing that he performs that is driven by the test case document.
Ad hoc Testing: It is a type of testing in which, the test engineer perform random, an informal testing on an application without using test case document. Unlike formal testing in order to cover the uncovered area with the help of test case document in the form of testing.
Testing done without any formal testing technique is called ad hoc testing.
Tuesday, April 15, 2008
Testing Methodologies
Depends on what factor of an application is tested and by when the specific part of an application is tested, the testing methodology is evolved in terms of following testing methods:
Black Box Testing: It is defined as method of testing in which one can perform testing on an application without having internal structural knowledge of the application.
Usually this testing is done by the test engineer without internal structural knowledge but with thorough functional knowledge.
White Box Testing: It is defined as method of testing in which one can perform Testing on an application (program part of it) having internal structural knowledge.
This testing is done by the developers. This testing focus upon the programming part of an application where as black box testing on functional part. Hence the test engineer must be functional expert and the developer must be program expert.
Gray Box Testing: It is defined as another derived method of testing in which both the techniques of white box as well as black box techniques are applied.
In other words, Gray box testing is basically done by the test engineer but with internal structural knowledge in order to make sure that the testing is effective to hint the developer and to point out the error straight away, optimizing the developer’s rectification process.
Black Box Testing: It is defined as method of testing in which one can perform testing on an application without having internal structural knowledge of the application.
Usually this testing is done by the test engineer without internal structural knowledge but with thorough functional knowledge.
White Box Testing: It is defined as method of testing in which one can perform Testing on an application (program part of it) having internal structural knowledge.
This testing is done by the developers. This testing focus upon the programming part of an application where as black box testing on functional part. Hence the test engineer must be functional expert and the developer must be program expert.
Gray Box Testing: It is defined as another derived method of testing in which both the techniques of white box as well as black box techniques are applied.
In other words, Gray box testing is basically done by the test engineer but with internal structural knowledge in order to make sure that the testing is effective to hint the developer and to point out the error straight away, optimizing the developer’s rectification process.
Subscribe to:
Comments (Atom)