Black box testing – Internal system design is not considered in this type of testing. Tests are based on requirements and functionality.
White box testing – Testing technique based on knowledge of the internal logic of an application’s code. Tests are based on coverage of code statements, branches, paths, conditions. Also known as Glass box Testing. Detailed knowledge of internal software and code working is critical for this type of testing. It is performed by software developers.
Unit testing – Software verification and validation method in which a programmer tests if individual units of software source code, components or modules are fit for use. Typically executed by the development team and not by testers, as it requires detailed knowledge of the internal program design and code. May require developing test driver modules or test harnesses.
Integration testing – The phase in software testing lifecycle in which individual software modules are combined and tested as integrated groups to verify combined functionality and confirms its coexistence with rest of the ecosystem after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. It is usually conducted by testing teams.
Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. This is a type of Black Box testing that is geared to functional requirements of an application. Bases its test cases on the specifications of the software component under test. Typically, performed by testing teams.
System testing –Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system. Entire system is undergoes rigorous testing as per the requirements.
End-to-end testing – Similar to system testing, involves testing of a complete application environment in a situation that simulates real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate. This test increases the confidence of system’s ability to face circumstances that are typically not encountered during other testing and fulfill user ‘s requirements.
Usability testing – Testing technique which verifies the ease with which a user can learn to operate, prepare inputs for, and interpret outputs of a system or component. This test validates user intuitiveness, easier navigation, adequate help menus and other documentation. It is usually performed by end users.
User Acceptance Testing (UAT) -Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer do this testing to determine whether to accept application.
Formal testing conducted to determine whether a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. It is usually performed by the customer.
Regression testing – Type of software testing that seeks to discover software errors after changes are applied to the program (e.g. bug fixes or new functionality) have been made, by retesting the program. Regression Testing ensures that the existing functionality has been broken after the new changes are introduced. Testing the application as a whole for the modification in any module or functionality. As regression testing involves in comparing before and after image of the application functionality, it is an ideal candidate for Test Automation using Automated Test Tools. This test is performed by the testing teams.
Upgrade Testing: Testing technique that verifies if assets created with prior versions can be used properly and those assets have not degraded from functionality, usability and performance and that user’s learning is not challenged. It is performed by the testing teams.
Performance testing –Validates if system meets performance requirements. Functional testing conducted to evaluate the compliance of a system or component with specified performance requirements. It is usually conducted by the performance engineer using different performance and load testing tools.
Load testing – Its a performance testing to check system behavior under simulated load. Testing an application under heavy loads to determine at what point the system’s response time degrades or fails. Testing technique that generates demand on a system and measures its response. It is usually conducted by the performance engineers.
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. Testing technique which evaluates a system or component at or beyond the limits of its specified requirements. It is usually conducted by the performance engineer.