Software Testing is a process of evaluating a product and its conformance. Software Testing is a subset of Software Development Life Cycle (Requirements > Design > Code > Testing > Maintenance). Software testing is very critical phase in SDLC as it measures the quality aspects of the product.
Software testers verify and validate the product before it reaches the intended audience or end-users. Cost of fixing the defect in earlier phase (Requirements, Design, Code, and Testing) is lesser than in later phases (Maintenance and Live).
Below is the graphical representation of cost of fixing defects (in dollars) in various phases of product development.
Software testing can be called as verification and validation.
Verification is the process of checking whether the right process (or requirements) implemented or not during the initial phase of development.
Validation is the process of checking the product whether it is meeting the requirements or not at the end of development phase.
There are two types of testing: Static and Dynamic.
Static Testing is non-execution based technique i.e. document-based testing. It involves of reviewing, understanding the requirements, coding, and design documents. Each document undergoes reviews against checklist, standards, and practices. It includes: Informal Review, Walk-through, and Inspections.
- Informal Review: Documents undergoes review process by peer on a need basis.
- Walk-through: It is a semi-formal review where the document undergoes review by the author.
- Inspection: Formal review done by third persons who are experts.
Dynamic Testing is an execution-based testing where the actual test execution takes place by the independent testers or developers. Entire system will undergo testing process to check the actual and expected results are meeting or not.
Dynamic Testing is divided into two types: Black Box and White Box.
Black Box Testing:
It is very famous and widely used type of testing. Testers will not know what is happening inside the product (which is a black box). Testers inject the inputs and checks whether the product is providing expected output or not.
- It is conducted more from the end-users perspective.
- No technical knowledge is required
- It doesn’t focus on the implementation
System, Functional, Regression, and Performance testing falls under Black box testing.
White Box Testing:
White box testing is commonly used by developers where the internal structure/code is visible. Complete code is required to perform this testing. It helps to achieve code coverage, program logic and structure, functions, sub-routines, procedures, and complex paths.
- Technical knowledge is required
- It focusses on the implementation
- It is conducted more from the developer’s perspective
Types of Testing