The Context-Driven Approach To Software Testing
The Context-Driven Approach To Software Testing
Cem Kaner, J.D., Ph.D. Professor of Computer Sciences Florida Institute of Technology Star East May 17, 2002
Context: It Depends
The value of any practice depends on its context. There are good practices in context, but there are no best practices. People, working together, are the most important part of any project's context. Projects unfold over time in ways that are often not predictable. The product is a solution. If the problem isn't solved, the product doesn't work. Good software testing is a challenging intellectual process. Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products.
Conform to regulations Minimize safety-related lawsuit risk Assess conformance to specification Find safe scenarios for use of the product (find ways to get it to work, in spite of the bugs) Verify correctness of the product Assess quality Assure quality
Will the user interface of the application be stable or not? To what extent are oracles available? To what extent are you looking for delayed-fuse bugs (memory leaks, wild pointers, etc.)? Does your management expect to recover its investment in automation within a certain period of time? How long? How easily can you influence these expectations? For more, see Architectures of Test Automation www.kaner.com/testarch.html and Avoiding Shelfware http://www.kaner.com/pdfs/shelfwar.pdf.
Best Practices?
A Best Practice?
Should we really document every test case in writing and include an expected result?
Bad Practices?
When would it be beneficial? What are its risks and benefits? What do you need to enable it? When is it inappropriate?
We Must Reappraise
Over the last 30 years, the context of our work has shifted dramatically
When I started programming (1967), 10,000 lines of code was a lot In early 1980s, 100,000 lines was a lot Now, we routinely crank out multi-million line systems
Yet, many of the practices and approaches we recommend to testers today, and see on tester certification exams, are unchanged from the 1980s.
Study / train skills rather than practices. Build skills and experience in multiple areas, not just testing. Look for opportunities to collaborate technically with programmers (e.g. on testability or unit testing). Learn a wide range of testing techniques. Select and combine them appropriately for the project at hand. (see Paradigms of Software Testing, www.kaner.com/pdfs/slides/paradigm.pdf) Appraise the techniques you use (and the documentation you create) against the need to test massive systems. You may need to lighten your processes.
The value of any practice depends on its context. There are no best practices. People, working together, are the most important part of any project's context. Projects unfold over time in ways that are often not predictable. The product is a solution. If the problem isn't solved, the product doesn't work. Good software testing is a challenging intellectual process. Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products.