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. Testing of software or applications pursue 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 in detecting bugs: Testing any software or project can help in revealing 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 find to 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 health device needs more testing and doctor based feedbacks 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 software, you as a tester need to test whether your software is meeting all the requirements of the user or client or not and whether the bugs found during testing has been mended or 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 very important in software testing. So, what they denote, let's dig deep into it. Verification focuses on the concern that 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 check, 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.