Black box testing – Internal system design and code is not considered in this type of testing. Testers Tests the application from user point of view and this testing is based on requirements and functionality.
Black-box test design techniques include:
ü Decision table testing
ü All-pairs testing
ü State transition tables
ü Equivalence partitioning
ü Boundary value analysis
White box testing (clear box testing, glass box testing, transparent box testing, or structural testing) – This testing is based on knowledge of the internal logic of an application’s code. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions and loops.
white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level .
White-box test design techniques include:
ü Control flow testing
ü Data flow testing
ü Branch testing
ü Path testing
Grey box testing : This type of testing falls somewhere in between Black Box and White box testing it involves understanding of internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level.This distinction is particularly important when conducting integration testing between two modules of code written by two different developers, where only the interfaces are exposed for test.
Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.
Non-functional- Testing verifies other than funtional expectation from the application.It’s usually client side.
ü Load and Performance Testing
ü Ergonomics Testing
ü Stress & Volume Testing
ü Compatibility & Migration Testing
ü Data Conversion Testing
ü Security / Penetration Testing
ü Operational Readiness Testing
ü Installation Testing
ü Security Testing (ApplicationSecurity, Network Security, System Security)
Load testing – It’s a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.
Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.
Performance testing – Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.
Usability testing – User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.
Install/uninstall testing - Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.
Sanity testing - Testing to determine if a new software version or built is performing well enough to accept it for a major testing effort. If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.
Regression testing – Testing the application as a whole for the modification in any module or functionality. In regression testing usually difficult to cover all the system so if we have to do it either by covering only some parts of regression suite if we are doing it manually or we can use automation tools if we have that option .
Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Security testing – Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.
Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combinations of above.
Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.
Beta testing – Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.
Interface Test::As the components are constructed and tested they are then linked together to check if they work with each other. It is a fact that two components that have passed all their tests, when connected to each other produce one new component full of faults. These tests can be done by specialists, or by the developers.Interface Testing is not focussed on what the components are doing but on how they communicate with each other, as specified in the "System Design". The "System Design" defines relationships between components, and this involves stating:
- What a component can expect from another component in terms of services.
- How these services will be asked for.
- How they will be given.
- How to handle non-standard conditions, i.e. errors.
Tests are constructed to deal with each of these.The tests are organised to check all the interfaces, until all the components have been built and interfaced to each other producing the whole system.