Below topic will be covered under this page
• What is Software Testing
• Functional Testing Types
o Unit Testing (White Box Testing)
o Integration Testing (Gray Box Testing)
Incremental Testing
o Top down
o Bottom up
Non-Incremental Testing
o System Testing (Black Box Testing)
Smoke Testing
Sanity Testing
Regression Testing
o End To End Testing
o Acceptance Testing
Alpha Testing
Beta Testing
• Non-functional Testing
o Performance Testing
Load Testing
Stress Testing
Scalability Testing
Stability Testing
o Security/Penetration Testing
o Usability Testing
Exploratory Testing
Cross Browser Testing
Accessibility Testing
o Compatibility Testing
• Other Testing Types
What is Software Testing:
The Whole process of systematically executing program to demonstrate the correct implementation of requirement, to increase confidence and to detect failure is called Software Testing.
In order to get bug free software many types of software testing are performed at various stages of SDLC life cycle. At broad level all the testing types are categorized under two types as per functional or non-functional type.
- Functional Testing Types
1.1. Unit Testing (White Box Testing)
Unit testing is the initial level of functional testing to test any software. This type of testing is also called as White box testing because this is done by developer at module/unit level as soon as single module gets ready by running the code/program to validate if it’s functioning as expected.
1.2. Integration Testing (Gray Box Testing)
Integration testing is the next level of functional testing after unit testing where testers test the functionality among the modules. This is also called as Gray box because it is the combination of Black box and White box testing. Once few inter dependent modules are ready, tester will pass the test data among them and validate if data is flowing as expected and modules are functioning correctly.
As per the incremental or non-incremental approach Integration testing is divided into two categories mentioned below:
1.2.1. Incremental Integration Testing
Under Incremental integration testing testers will keep on adding/incrementing inter dependent modules one by one to validate the data flow and functionality. First testers will validate data flow and functionality between two modules then will keep on incrementing modules overall combined functionality.
As per the approach to add module with each other incremental testing is further divided into two parts.
1.2.1.1. Top-down Incremental Integration Testing
Under Top-down approach tester will keep on incrementing lower/child module of earlier one and validate integrated functionality. Under this approach first Top/main module should be ready then keep on adding child module of earlier one to validate the data flow.
1.2.1.2. Bottom-up Incremental Integration Testing
Under Bottom-up approach first base(bottom) module should be ready then keep on incrementing next level (parent) module of earlier one and validate data flow and overall functionality of integrated module.
1.2.2. Non-Incremental Integration Testing
Non-incremental integration testing is done when modules of any application are not linked with each other in hierarchical (Parent/child) approach so tester will integrate modules one by one as per functionality and validate data flow and overall functionality.
1.3. System Testing (Black Box Testing)
System testing is the next level of functional testing post integration testing, once all modules of any application are ready then tester does system testing to validate the functionality of the AUT (Application under test) as a whole system.
This type of testing is also called as black box testing because tester validate the overall functionality of the whole system as per business/end user specification document without much knowledge of internal code.
System testing can be further divided into below mentioned 3 categories:
1.3.1. Smoke Testing
As soon as developer handover the build to testers, tester validates basic critical functionality of the application to ensure that provided build is stable with no major defects and detailed testing can be started.
1.3.2. Regression Testing
Regression testing is done on the stable build post deployment of new functionality into the existing application to ensure that existing functionality is still working fine as before deployment.
It is advisable to find the correct scope of regression test suite as per the change deployed as running full regression test suite is not advisable each time. Generally, automation testing tools are used to run the test as it is time, cost and effort saving.
1.3.3. Sanity Testing
Sanity testing is done post deployment of any small changes or bug fixes to validate the newly added functionality only, tester will not validate whole system.
1.4. End To End Testing
Post successful completion of system testing tester start end to end testing of the application to validate the interaction and data flow between main application and various third-party application like payment gateway or print etc.
1.5. Acceptance Testing
Acceptance testing is done by end users to validate the application if it is working as per end user’s expectation by running real time use cases provided by business team, this is also called as UAT (User Acceptance Testing). Client will accept the application only when all the test scenario work fine. This is further divided into below two categories as per testing location and team:
1.5.1. Alpha Testing
Alpha testing is done by testing team only, by running all business use cases before releasing it to customer.
1.5.2. Beta Testing
Beta testing is done by limited number of actual business/end users in real time environment at client location before releasing into production.
- Non-functional Testing
This type of testing is done to validate other non-functional parameters of application like Performance, Security, Usability & Compatibility.
2.1. Performance Testing
Performance testing is done to validate the response time of any application by putting some load on it. Performance testing is further divided into 4 categories on the basis of
Performance validation parameters:
2.1.1. Load Testing
Load testing is done by putting load of maximum number of users (as per system’s capacity from real time world) on application to test the response time. For e.g., if application is designed to take a load of 500 users at a time with 2 sec turnaround time, then tester will put load and validate if system is responding as expected or not, any webpage should get loaded in 2 sec for all 500 users.
2.1.2. Stress Testing
Stress testing is done by putting more than expected load on the application to test the turnaround time i.e., to check the performance of the application under stressed conditions. For e.g., if system is designed for 500 users, then tester will put load of more than 500 users to check the turnaround time.
2.1.3. Scalability Testing
Scalability testing is done by gradually increasing load on the application beyond its limit and checking at what time system is crashing, this is to validate up to what extent application is scalable.
2.1.4. Stability Testing
Stability testing is done by putting load of certain number of users on the application for certain amount of time and check how much application is stable when load is mounted for some time.
2.2. Security/ Penetration Testing
Security testing of any application is done to test how much secure the software/ Application is from external threats and viruses. Also, certain testing scenarios would be run from authorization/authentication perspective. This type of testing is done by professional hackers to validate if application can be hacked or penetrate by running certain security testing scenarios at weak points of the system.
2.3. Usability Testing
Usability testing is done from end user’s perspective to validate how much UI (user interface) and functionality of the application is usable.
Usability testing can be categorized into below three types:
2.3.1. Exploratory Testing
Exploratory testing is done by such end users/testers who don’t have much knowledge of application and they just explore the application and report the bug if any defect found. This is the informal way of testing.
2.3.2. Cross Browser Testing
Cross browser testing is done on various available browsers and their versions to test the UI (user interface) and performance, as different end users may use different devices and browser to access the application. Organization ensures that end user’s experience should be consistent no matter what device or browser they are using.
2.3.3. Accessibility Testing
Accessibility testing is done to ensure if application is usable for disabled people like deaf, colour blindness, complete blind, old age, mentally retarded or with any other disability, this type of testing is done by disabled people only to ensure that if they can use the application without any issue.
2.4. Compatibility Testing
Compatibility testing is done by testers to ensure how much application is compatible/ useful with different hardware/software environment, operating system, browsers and network conditions.
Leave a Reply