Test Design Technique in Software Testing

What is test design technique?

By design we mean to create a plan for how to implement an idea and technique is a method or way for performing a task. So, Test Design is creating a set of inputs for given software that will provide a set of expected outputs. The idea is to ensure that the system is working good enough and it can be released with as few problems as possible for the average user.

Broadly speaking there are two main categories of Test Design Techniques. They are:

  • Static Techniques
  • Dynamic Techniques

Importance of Test Design Techniques

Although the main purpose is to ensure that the products meet the expectations of clients and their businesses, these techniques specifically allow testers to execute the test effortlessly based on various risk factors. Here is a checklist of standards that a smooth testing process meets:

  • Gather information to understand users’ requirements
  • Derive all important business scenarios
  • Design test scenarios for every derived critical business scenarios
  • Assign all planned test scenarios to different test cases

Purpose of Test Design Techniques

  • Identifying test conditions only, not Identifying test cases
  • Not Identifying test conditions, Identifying test cases only
  • Identifying test conditions and Identifying test cases
  • Identifying test conditions or Identifying test cases

Static Testing

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

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.

Things to Consider while Choosing Test Design Techniques:

While deciding the type of test design techniques, there can be several factors that can affect the choice of testers and developers.

From technical attributes, client’s requirements, and project specifications to other necessary factors like time and budget, the reasons for choosing one test case design technique over other can be numerous. Therefore, here is a list of some crucial factors are considered while choosing test design techniques.

  • Risks & Objectives: The objective and purpose of each software testing process differs from another, hence their requirements for test design technique also differs from each other. Moreover, the risks of testing also vary from one another and are therefore taken into considerations while choosing design techniques.
  • Type of System & Dev Cycle: Another factor that affects the choice of design techniques is the type of system (embedded, financial, graphical, etc.) and development cycle used by the program.
  • Regulatory Standards: Considering regulatory standards is an important factor. These are the common regulatory standards that are recognized internationally and followed by software testers everywhere.
  • Time & Budget: Time and budget play an extremely important role in choosing designing techniques. Without time & budget constraints, testers can easily experiment with multiple techniques. However, these constraints force them to choose a technique that enables them to get accurate outputs within a limited period of time.
  • Knowledge & Experience: Tester’s knowledge of the techniques and the project, along with their experience has a great impact on their choice. Their experience of test execution, defect detection, and delivering a quality product enables them to choose the appropriate designing technique.