Key challenges in testing process and some ideas to bring in efficiencies in these elements to improve testing process –
* Time taken in Test Case Generation – Test case generation consumes 40-45 percent of the testing effort.
Recommendations Efficient and complete test cases ensure efficiency of the test process. Automating the test case generation process could reduce the test case generation time by up to 60-70%. Also, low-level design from similar past projects should be considered to aid in test case generation.
* Time taken in Test Case Execution – Test case execution consumes 40-50 percent of test effort. Application changes during maintenance result in need for increased number of regressions. In manual test execution, the test effort increases with increased number of regressions.
Recommendations By automating the test execution, testing effort per regression test round reduces as number of regressions increase.
* High defect injection and delayed defect detection – On average a programmer makes 10-12 defects per 100 lines of code (LOC). Also 70 percent of the defects relate to analysis and design phase and only 30 percent relate to coding phase.
Recommendations Defect injection can be reduced to 2-3 percent per LOC with well-constructed and documented code. Detecting defects early (defects relating to requirement and design phase in the review of same phase) reduces the cost of defect detection and removal.
* Incomplete or inadequate test specification It results in omitted scenarios and functionality.
Recommendations The requirement specification process should include specifying tests to be performed against specific requirements, expected results/behaviors in the test result.
* Inadequate testing levels or testing levels not followed It results in poor quality of testing.
Unit Testing – Peer reviews of the code should be conducted to ensure continuous improvement and transfer good practices across the team. Test logs should be maintained to report the bugs found, and bugs awaiting re-testing. Test logs can be used to learn from testing process and improve later development cycles.
Integration Testing – It is good to have firm foundation and unhurried attention to details of the units being integrated before conducting integration tests.
System Testing – Knowledge of the business and its requirements should be combined with knowledge of how to use the system.
Acceptance Testing – Acceptance testing builds confidence of client and users. Often a subset of system tests can be used to demonstrate key functionality that provides 80 percent value to business (Pareto Principle). Particular attention should be paid to usability and performance of the few (20 percent) functions that provide 80 percent value to business.
Source : “Software Testing – Effective Methods, Tools and Techniques“ book authored by our director, Mr Pradeep Oak and published by McGraw Hill.