Best Practices of Software Testing
Software testing is to determine and predict the defects early by using predictable models and implying strategies and different test methodologies to identify those at early stages. Software Testing is a systematic activity but it also involves economics and human psychology.
Psychology of software testing is to destructively test the application by identifying as many exceptional or out of the box scenarios or sometimes called as the third vision. A set of good test scenarios evaluates every possible permutation and combination of a program during ideal conditions.
A software Test Engineer needs the proper vision to successfully test a piece/whole application to comply with the standards and quality expected by the industry. Whenever Software Test Engineers tests a program, they should add some value in it rather than performing only the requirements conformance and validation.
The best practices of Software Testing:
1. Understanding Scope/purpose of the project will help to judge the degree/level of testing required.
2. Testers should go thro’ the requirements in detail without missing any points given by the client before writing test cases. If they find any ambiguity in the requirement they should get clarification from the business instead of doing any assumptions.
3. The test cases should be updated immediately once the client gives new requirement or changes the requirements.
4. The test case document should cover all the requirements even if some requirements are non-testable. These non-testable items should be marked as non-testable. Keeping traceability matrix document will helpful to achieve this.
5. The Test case document should help to clearly identify hierarchy/arrangement of test cases. It should have clear approach to arrange test cases if many test cases exist with similar steps. It is not advisable to copy & paste the similar test cases many times, instead we can specify only the additional/different steps.
6. Description of each test case should be written clearly after understanding the context/module of description. Steps should be written only after manually executing them. Expected results should not have any ambiguity. If required, Prerequisite/preconditions should be mentioned.
7. Planning and creating test plan document is essential even for small short-term projects. The test plan document need not contain all the details, but it should contain at least very basic components such as scope, schedule, risks, environments, testers
8. Planning of development/test/staging environments should be done clearly. And it is very important to move the code and maintain version of code in each environment without any ambiguity/confusion. Testers should know which version of code/data is available in each environment
9. Test execution should be done carefully based on the test cases. It is very important to use appropriate test data. It is better to create different set of test data during test case creation itself. The test data should cover valid format, invalid format and boundary values.
10. Test result(pass/fail) should be clearly updated for each test case. It is good practice to mention Actual behavior if the test case fails.
11. The test results should be communicated to the other parties (developers, business/client) daily even if all the test cases are not executed. In this case, we should add a note to indicate that the test execution is still in progress.
12. The test execution summary document/mail should clearly mention date of execution, environment, test name and test result.
13.In case, most of test cases are getting failed continuously, there is no meaning of continuing the execution. Execution should be resumed once after fixing the major issues. It will be nice if we highlight the testing status (pass, fail, yetToStart) in appropriate color.
Just highlighting the test case with appropriate color without specifying status is not a good practice. Because while taking single color printout of the test report, it is difficult to see the status from the color.
14. It is good practice to do some adhoc testing in addition to the test case execution.
15. Clear/proper communication/co-ordination within the Testing team and also with other teams (developers, client/business)is very essential.
16. The bug report should be prepared very clearly with all essential details, especially with the steps/test data for reproducing the bug. The bug report should help the developers to reproduce the bug and to fix it. Providing screenshots of error message and screenshots of each step will be useful.
17. Doing re-test and small regression test is essential whenever a reported bug is fixed
18. It is not good if we do all the testing manually, as manual testing will take more time/effort and it is difficult to manage, and also it not consistent or repeatable. So it is better to automate the test cases using test tools such as QTP (Quick Test professional).