Tuesday, December 25, 2007

Testing basics

What is Testing and why we perform Testing?

Testing is a process in which defects are identified, isolated and subjected
For rectification with the help of test cases, inspections and checklists to ensure that the product is defect free and satisfies the customer requirements. The main objective of testing is to detect the errors.
It is a process used to help identify the correctness, completeness, security and Quality of the developed computer software. The main intension of testing is to find errors
For more information on testing log on to
http://www.questioningsoftware.com/2007/11/what-is-software-testing.html

Ways of testing
Conventional testing
Unconventional testing

Conventional testing: It is a sort of testing in which the quality assurance people will test the each and every outcome document right from the initial phase of the software development life cycle.
Unconventional testing: If testing is performed is performed by the developer then we say that it is unconventional testing.

Testing techniques:
There are 3 methods for testing
(1)Black box testing
(2)White box testing
(3)Grey box testing

(1)Black box Testing: If at all one performs testing only on the functional part of the application without having any structural knowledge then the method of testing is known as black box testing. Usually test engineers perform it.
(2)White box testing: If at all one performs testing on the structural part of the application then this type of testing is known as white box testing. usually developers perform it.
(3)Grey box testing: If at all one performs testing on the functional as well as the structural part of the application then this type of testing is known as gray box testing. A test engineer with structural knowledge will perform grey box testing.


Levels of Testing:

Unit Testing
Module Testing
Integration Testing
System Testing
User acceptance Testing

Unit Testing: If one performs testing on a single unit or small component then this type of testing is called as unit testing. It is white box testing. It is a low level testing and it is done by the developer.
Module Testing: If one performs testing on a module then it is called module testing
It is a Black box testing. Usually test engineers perform Black box testing.
Integration Testing: After developing the modules the developer want to integrate the modules so that all the modules combined to form a project. so it need to integrate them. The developer integrates the modules by using a link programs called interfaces. Once the module is linked it is the duty of the developer to test whether these interfaces are working fine or not.This is known as integration as testing.


There are four ways the developer integrate the modules

Top down approach
In this approach the parent modules are integrated with the sub modules.
While integrating the modules in top-down approach if at all any mandatory approach module is missing that is replaced with some temporary program called stub.
Bottom up approach
In this approach the child modules integrated with the parent modules.
While integrating the modules in the bottom up approach if at all any mandatory module is missing then it is replaced by some temporary program called as driver.
Hybrid approach
This is mixed of both top-down and bottom-up approach
Big bang approach
Once all the modules are ready at a time then we integrate all the module at a time is known as big-bang approach.
System level testing: If one performs testing after deploying the complete application into the environment is called as system level testing. It is a black box testing .usually test engineers perform it.
Usually they perform black box integration testing, load testing, stress testing at this level.
User acceptance testing: If one performs the same system testing in the presence of user then this type of testing is known as user acceptance testing.


Different types of testing:


Regression testing: It is a type of testing in which we can perform testing on the
Already tested functionality in order to ensure that the old functionality is working fine with respective to the new functionality.
It is done in two situations
(1)When ever the test engineer raises a defect then he will report the defect to the development department so that the developer fixed the defect and send next build to the testing department. Then the test engineer will test the old functionality
with respective to defect functionality in order to ensure that the old functionality is working fine with respective to the defect functionality. This type of testing is called as Bug regression testing
(2)When ever the customer want new changes in the application then the development department add new changes to the application. Then the test engineer
will perform testing on the old functionalities with respective to the new add-in functionality so that the old functionality has not effected by the new add-in functionality.
Progressive testing: Testing of new features after the regression testing of previous features.
Build verification testing : It is a type of testing one will perform testing on the released build in order to check application is proper to handle the loads .It is similar to hard ware testing. It is also called as sanity testing.
Smoke testing: It is a type of software testing to check whether the basic functionality is working fine or not. If it possess 70% offer we say that the build is stable.
Re-testing: Re-testing means testing the application once again in order to check it is working fine or not. It is a type of testing in which a test engineer performs testing on the application with multiple set of values in order increase the scope of the test.
Structural testing: Structural testing is a white box testing and it is based on the algorithm (or) code.
Functional testing: It is a Black box testing. Testing where tester verifies the functional specification that means .The tester performs on functionality of an
application.
Negative testing: Testing the application with negative data
Eg: testing the password where it should be min 6 chars, testing with 4 chars.
Comparison testing: This is nothing but compare the software strengths and weakness with another competition product.
Alpha-testing: It is type of user acceptance testing which is done in our company by our test engineers.
The advantage is if at all any defects are found in this type of testing there is a chance of rectifying them immediately.
Beta-testing: It is a type of user acceptance testing which is done in the client space
either by third party test engineers or by the end users.
Static testing: It is type of testing in which we can perform testing without executing the application.
Ex: GUI testing, document testing, code review .etc.
Dynamic testing: It is a type of testing in which we can perform some actions on the application.(or)executing the application.
Scalability testing: It is similar to load testing .scalability is nothing but how many users that the application should handle (or) the max. no of users that the system can handle.
Installation testing: It is a type of testing in which one will install the applications into the environment by following the guidelines given by the deployment document and if the installation is successful then he will come to the conclusion that the given guidelines are correct otherwise he will came to the conclusion that the given guidelines are not correct.
Compatibility testing: It is a type of testing in which the test engineer may have to deploy the application into multiple environments prepared with multiple combinations of environmental components in order to check whether the application is compatible with that environment. that means computing environment like operating system, database, browser, compatibility, backwards compatibility ,computing capacity of h/w platform and compact of periperals
Ex: suppose we develop the application in windows environment then we install the application into Unix environment and check whether it is compatible with that environment or not. this is usually done to the product.
Monkey testing: It is a type of testing in which a test engineer will perform abnormal actions intentionally on the application in order to check the stability of the application.
Exploratory testing: It is a type of testing in which domain experts will perform testing on the application without having any requirements by exploring the functionality.
Usability testing: Usability testing is used for checking the user friendliness of the application.
End-End testing: It is a type of testing in which one will perform testing on a complete transaction from one end to the other end in order to ensure that the end to end scenario is working fine.
Port testing: It is a compatibility testing in which one will install the application into the client environment and check whether it is compatible with that environment or not.
Security testing: It is a type of testing in which we can perform testing on the following areas.
Authentication
Direct URL testing
Firewall leakage testing
Authentication: In this type of testing the test engineer will test whether the application allowing only authorized users or not.
Direct URL Testing: In this type of testing a test engineer will try to access the unauthorized pages (or) secure pages directly by giving the URL.
Firewall leakage testing: In this testing the test engineer will try to access the other level pages by entering as another level user.
Reliability testing: It is a type of testing in which one will perform testing on the application for a longer period of time in order to check its stability. it is also called as soak testing.
Mutation testing: It is a type of testing in which developer will do some changes to the program and check for its performance as it is associated with multiple mutants .it is called as mutation testing
Adhoc testing : After understanding the requirements if we perform testing on the application in our own way then this type of testing is called as adhoc testing.
Error-handling testing: It determines the ability of an application system to process the incorrect transactions properly. Errors encompass all unexpected conditions.
Ex: in some system approx. 50% of programming effort will be devoted to handling error condition.
Load testing :It is a type of testing in which one will apply initial loads on the application and continues with sequential loads in order to check whether the target
Loads are met (or) not and to asses the critical load.
Critical or peak load: the load beyond which the application starts degrading its performance is known as critical load
Performance testing: It is a type of testing in which one will apply predefined quantified request in order to check the response time
Stress testing: It is a type of testing in which one will perform either abnormal action (or) perform testing on the application for long period of time in order
to check the stability of an application
Database testing: It is Backend testing. We conduct this testing based on the data validation and data integration. It is used to conduct the validation of data.
Data validation means whether front end values are correctly storing into tables content or not. Data integrity means that whether impact of front end operations is working on base end tables content.
Volume testing: the purpose of volume testing is to find the weakness in the system with respective to the handling large amount of data during short time of period.
Maintenance testing: It is a type of testing which is performed to either identify equipment problems, diagnose equipment problems or to confirm that repair measures have been effective. It can be performed at either the system level, the equipment level, or the component level. It is conducted to ensure functionality and performance. It may include functionality and accuracy.
Maintenance fall into following categories
Preventive maintenance
Corrective maintenance
Perfective maintenance
Adaptive maintenance
Test Design techniques:
While developing the testcases if at all the test engineers is feeling difficulty.then they will use these techniques to develop the test cases in an easy manner.
There are types of testing techniques used in several companies

Boundary value analysis
Equivalence class partition
Error guessing
Cause effect graphing.
Boundary value analysis: While developing the test cases for range kind of input usually the test engineer will use this technique.
Equivalence class partition: When ever there are more no of validations for a feature to develop the test case in an easy manner. Usually a test engineer will use equivalence class partition technique.
Error guessing: Error guessing is a test case design technique where the tester has to guess what faults might occur and to design the tests to represent them.
Cause effect graphing: It is a testing technique that aids in selecting, in a systematic way, a high yield of set of test case that logically relates causes to effect to produce test cases. It has beneficial effect in pointing out incompleteness and ambiguities in specifications.

1 comment:

Anonymous said...

can you tell about preproduction testing