AN OVERVIEW OF TEST DESIGN TECHNIQUES
Design is everything. Everything!
– Paul Rand
I believe you will agree with me that any software cannot be tested 100 percent within the tight project deadlines and budgets and that designing the tests is the one of the most vital elements of the whole software testing life cycle. There can be infinitely many test cases exercising any software (ends up with exhaustive testing), and a tester’s challenge is to find the wisest, most fitting, and most defect-detecting ones (ends up with selective testing). If you are playing this game, you need to fit the ocean into the aquarium.
Since test designing is every test organization’s concern, you can find numerous resources explaining the techniques, tips, and tricks. In this book, I prefer to follow the ISTQB (International Software Testing Qualifications Board) version of the test design techniques. Surely there will be minor customizations, and you will observe some enhancements regarding mobile testing.
The parent classification of test design techniques will be basically static and dynamic testing. These test design techniques are different by the work products (requirements, specifications, code, system under test, end product, etc.) they are exercised upon and the execution base they possess. Let me dive deeper into the subject and provide more details:
Static testing (nonexecutable testing) is reviewing test basis, planning, analysis and design documents (work products), and code.
- Walkthrough is a static test technique (formal or informal) performed on any kind of requirements, design, or project plan and is generally moderated by the owner of the work product. Walkthrough can be also done for training people and establishing consensus.
- Informal review is an informal static test technique performed on any kind of requirements, design, code, or project plan. During informal review, the work product is given to a domain expert and the feedback/comments are reviewed by the owner/author.
- Technical review is a static test technique performed on any kind of requirements, design, code, or project plan and is generally moderated by the technical lead. Technical review is a formal type of static test and done for observing whether or not the work product meets the technical specifications/standards.
- Management review is a static test technique performed on project plan, risk charter, audit report, or any progress report and is generally moderated by a project manager or lead. Participants are the decision makers, and the related documents are evaluated for their adequacy and consistency.
- Audit is a static test technique performed on any kind of requirements, design, or project plan and is generally moderated by an external team of experts. Because of the fact that the assessors are generally coming from outside, audits can be regarded as the most independent type of static tests. Work products are evaluated for their consistency to specific regulations, standards, guidelines, and/or formal procedures.
- Inspection is a static test technique performed on any kind of requirements, design, code, or project plan and is generally led by a moderator. Because inspection is the most formal type of static test, there exist specific roles for reading/tracing, recording, managing, and reviewing.
Dynamic testing (executable testing) tests a working (coding is over) software product or a component.
- Specification-based (requirement-based) is a dynamic test technique based on written procedures, specifications, requirements, user manuals, use cases, screen prototypes, and business processes. It can also be defined as black-box testing and have many subtechniques such as equivalence partitioning, boundary value analysis, pairwise testing, state transition testing, use case testing, user story testing, decision table testing, combinatorial testing, classification tree testing, and so on.
- Structure-based (code-based) is a dynamic test technique based on the internal structure of the code, database, architecture, or system flow. It can be defined as white-box testing and have many subtechniques such as statement testing, decision testing, multiple condition testing, path testing, branch testing, and API testing. These techniques differ from each other by the coverage criteria they possess.
- Model-based is a dynamic test technique based on the model representations of the software product. Test cases are designed from models, not from the source code; consequently, model-based testing cannot be taken as a white-box test activity. Instead, the models can be regarded as partial and abstract presentations of the system under test.
- Risk-based is a dynamic test technique based on the risks of the software product. In order to identify the risks well, several stakeholders such as developers, help-desk/call-center agents, audits, users, business analysts, testers, and operation staff should be included, and their views should be considered. For a detailed risk identification, you can use techniques such as brainstorming sessions, risk workshops, benchmark metrics from past projects, expert interviews, and retrospective meetings.
- Defect-based is a dynamic test technique based on the type, classification, and clustering of defects. Defect categories such as interface defects, timing problems, computational problems, text field problems, date field problems, and data-related problems can be taken as foundations for defect-based testing.
- Experience-based is a dynamic test technique based on the tester’s practice in a specific field. Error guessing, checklist-based testing, attacks, and exploratory testing can be taken as experience-based test design techniques.
- Platform-based is a dynamic test technique based on the characteristics and constraints of different mobile platforms. OS settings, platform-specific features, application store behavior, and multitasking features can be taken as platform-specific attributes a tester should focus on.
- Device-based is a dynamic test technique based on the characteristics and constraints of different mobile devices such as smartphones, feature phones, tablets, or phablets (devices designed to combine the functions of a smartphone and tablet). Device settings, hidden features, interruptions, notifications, battery usage, gestures, session frequency, session duration, and device-specific features can be taken as device-based attributes a tester should focus on.
Designing test cases has become increasingly complex as there are many variables and diversities in the software world. If you are good at Googling, you may find lots of valuable resources explaining the above test design techniques in more detail. Although you may think that some of these techniques are old-fashioned, they can still serve as the foundations of any test design activity, and they will help you cope with the challenges ahead.