|
Effective Software Testing
TABLE OF CONTENTS
Preface
Acknowledgments
Chapter I: Requirements Phase
1. Involve testers from the beginning
2. Verify the requirements
3. Design test procedures as soon as requirements are available
4. Ensure that requirement changes are communicated
5. Beware of developing and testing based on an existing system
Chapter II: Test Planning
6. Understand the task at hand and the related testing goal
7. Consider the risks
8. Base testing efforts on a prioritized feature schedule
9. Keep software issues in mind
10. Acquire effective test data
11. Plan for the test environment
12. Estimate test preparation and execution
Chapter III: The Testing Team
13. Define the roles and responsibilities
14. Require a mixture of testing skills, subject matter expertise, and experience
15. Evaluate the testers’ effectiveness
Chapter IV: The System Architecture
16. Understand the architecture and underlying components
17. Verify that the system supports testability
18. Use logging to increase system testability
19. Verify that the system supports debug vs. release execution modes
Chapter V: Test Design and Documentation
20. Divide and conquer
21. Mandate the use of a test procedure template, and other test design standards
22. Derive effective test cases from requirements
23. Treat test procedures as “living” documents
24. Utilize system design and prototypes
25. Use proven testing techniques when designing test case scenarios
26. Avoid constraints and detailed data elements in test procedures
27. Apply exploratory testing
Chapter VI: Unit Testing
28. Structure the development approach to support effective unit testing
29. Develop unit tests in parallel or before the implementation
30. Make unit test execution part of the build process
Chapter VII: Automated Testing Tools
31. Know the different types of testing support tools
32. Consider building a tool instead of buying one
33. Be aware of the impact of automated tools on the testing effort
34. Focus on the needs of your organization
35. Test the tools on an application prototype
Chapter VIII: Automated Testing – Selected Best Practices
36. Do not rely solely on capture/playback
37. Develop a test harness when necessary
38. Use proven test script development techniques
39. Automate regression tests whenever possible
40. Implement automated builds and smoke-tests
Chapter IX: Nonfunctional Testing
41. Do not make nonfunctional testing an afterthought
42. Conduct performance testing with production sized databases
43. Tailor usability tests to the intended audience
44. Consider all aspects of security, for specific requirements and system-wide
45. Investigate the system’s implementation to plan for concurrency tests
46. Setup an efficient environment for compatibility testing
Chapter X: Managing the Test Execution
47. Clearly define the beginning and the end of the test execution cycle
48. Isolate the test environment from the development environment
49. Implement a defect tracking life-cycle
50. Track the execution of the test program |
|