Software testing is an art. Most of the testing practices and methods are not very different from 20 years ago. There are many tools and techniques available to use. Good testing also requires a tester’s experience and intuition, creativity, together with proper techniques. Software testing is more than just debugging. It is not only used to locate defects and correct them. It is also used in verification process, validation, and reliability measurement.
Advantages of Software Testing
Types of Software Testing
White box testing – This testing is based on knowledge of the internal logic of an application’s code. Internal software and code working must be known for this type of testing. Tests are based on coverage of code statements, paths, branches, conditions. . Also known as Glass box Testing
Black box testing -. Tests are based on requirements and functionality. Internal system design is not considered in this type of testing.
Unit testing – There is a Testing of individual software components or modules by the programmer and not by testers as it requires detailed knowledge of the internal program design and code. It may require developing test driver modules or test harnesses.
Integration testing – Testing of integrated modules to verify the combined functionality after integration. Modules are code modules typically, individual applications, client and server applications on a network, etc. This kind of testing is especially relevant to distributed systems and client/server.
Incremental integration testing – Bottom up approach for testing means continuous testing of an application as new functionality is added. Application functionality and modules should be independent to test separately. It can be done by programmers or by testers.
System testing – Whole system is tested as per the requirements. This type of testing that is based on overall requirements specifications which covers all combined parts of a system.
Functional testing – This testing method ignores the internal parts and focus on the output as per requirement or not. Black-box type of testing geared to functional requirements of an application.
End-to-end testing – Involves testing of a complete application in a situation that mimics real-world use such as interacting with a database, using network communications, or interacting with other applications, hardware or systems if appropriate.
Regression testing – Testing the application as a whole for the modification in any module or functionality. Difficult to cover all the systems in regression testing so typically automation tools are used for these testing types.
Sanity testing – Testing is done to determine if a new software version is performing well to accept it for a major testing effort. If application is crashing for initial use then system is not stable for further testing and build or application is assigned to fix.