Software testing is one of the major phases of software development, as listed among the SDLC's various phases from the previous chapter. In this chapter, you will learn about the different principles of software testing.
Principles of Testing
Testing of software is exceptionally imaginative and an intellectual task for testers to perform. The testing of software or applications pursues some principles that are mentioned in this chapter. These principles also play a significant role for a software tester to test the project. These principles are:
- Software testing can help detect bugs: Testing any software or project can reveal a few or some defects that may or may not be detected by developers. However, testing of software alone cannot confirm that your developed project or software is error-free. Hence, it's essential to devise test cases and find out as many defects as possible.
- Testing with effectiveness is impossible: Until your project or application under test has a straightforward structure having limited input, it won't be likely or achievable to check and test all feasible sets of data, modules, and scenarios.
- Early testing: The earlier you will begin to test your project or software, the better you will utilize your existing time.
- Defect in clustering: At the time of testing, you can observe that majority of the defects or bugs reported are because of a small number of modules inside your software or system.
- Software testing is context-dependent: Various methods, procedures, and kinds of testing are there, which defines the type and characteristics of the application. For example, an application related to a health device needs more testing and doctor-based feedback than a game or small software.
- Errorfree or Bug-free software is a myth: Just because when a tester tested an application and didn't detect any defects in that project doesn't indicate or imply that your software is ready for shipping.
So, at the time of testing modules or working of the software, you as a tester need to test whether your software meets all the user or client requirements or not and whether the bugs found during testing have been mended not. These many factors need to be considered before shipping the software or releasing it to the market.
Verification and Validation
These two terminologies are also essential in software testing. So, what they denote, let's dig deep into it. Verification focuses on the concern of whether: "Developers are building the system right?". It ensures whether the system is meeting all the functionality as per requirement. The verification process takes place in the 1st position, which includes documentation checks, coding, etc.
On the other hand, validation deals with whether: "Developers are building the right software?". This ensures whether all functionalities are properly behaving or not. The validation process gets performed after the verification and largely engages in the inspection of your overall software.