ScreenshotNeo

BlogGuides

Test Case Design Techniques: When to Update Them

Learn which test design technique fits each risk, and when changed behavior, incidents, or dependencies mean your test cases need an update.

By the ScreenshotNeo team4 October 202610 min read

Update test cases when the behavior, assumptions, or risks they cover change; when a defect or incident reveals a gap; or when changed dependencies make existing coverage insufficient. Review the affected cases, revise their setup, data, steps, and expected results, then run the right regression tests. Choose design techniques according to the behavior and coverage goal: partitions and boundaries for input ranges, decision tables for rule combinations, state transitions for workflows, and structural techniques for code paths.

There is no universal review interval established by the sources cited here. Treat meaningful changes as prompts for impact review rather than relying on a calendar alone.

1. What test design techniques do

A test design technique is a method for building or selecting a model of what to test, identifying coverage items, and deriving test cases. ISO/IEC/IEEE 29119-4:2021 defines techniques used during test design and implementation; it is the published second edition of Part 4. ISO’s standard page describes its scope and publication details.

Techniques help make test selection explainable and repeatable. They do not prove that software is defect-free. The useful question is not “Which technique is best?” but “Which behavior, risk, or coverage item do I need to exercise, and what information do I have to design that test?”

2. Choose a technique that matches the behavior

Technique Use it when Example Coverage focus
Equivalence partitioning Many inputs are expected to be handled the same way. A discount field accepts whole percentages from 0 through 50. Select representative valid and invalid values. Representative groups of values.
Boundary value analysis Behavior changes at the edge of an input range or partition. For an inclusive range 0–50, test -1, 0, 1, 49, 50, and 51 as appropriate to the risk. Values at, just inside, and just outside boundaries.
Decision tables Outcomes depend on combinations of conditions or business rules. Determine whether a refund is allowed based on payment status, shipment status, and time since purchase. Relevant condition combinations and outcomes.
State-transition testing Valid behavior depends on the current state and an event. Check order transitions from pending to paid, cancelled, or refunded, including invalid transitions. States, events, transitions, and sequences.
Structural techniques Internal code structure matters to the coverage goal. Exercise both outcomes of a security-sensitive conditional or a specific error-handling path. Code statements, branches, or paths selected by the team.
Experience-based methods Specifications or structural coverage may leave plausible gaps. Explore unusual input sequences, use a checklist, or apply error guessing informed by past defects. Risks suggested by tester knowledge and history.

Black-box techniques derive tests from specified behavior; white-box techniques depend on internal structure. Experience-based methods use tester knowledge and complement the other families. These categories can be combined. For example, use equivalence partitions to select representative input classes, boundary analysis for their edges, and exploratory testing to look for cases the model missed. See the technique scope in ISO/IEC/IEEE 29119-4.

Use four questions to choose among candidate methods:

  1. What is the test basis? Requirements, business rules, a state model, source code, incident history, or a combination?
  2. What failure would matter? Consider user impact, security, financial or operational impact, and how difficult the failure would be to detect.
  3. What coverage item must be exercised? A value class, boundary, rule combination, transition, code decision, or known failure pattern?
  4. What knowledge is available? Are requirements current? Is the implementation accessible? Do testers understand the domain and its failure history?

No one technique is sufficient for every system. NIST recommends complementary developer verification approaches, including black-box and code-based structural test cases, historical test cases, fuzzing, and security-focused methods. Its guidance is in NIST IR 8397.

3. When to review and update existing cases

Make an impact review when a meaningful change could invalidate a test’s assumptions or leave an important risk uncovered. These are practical triggers, not a standards-mandated exhaustive checklist.

  • Requirements or acceptance criteria changed: A test may assert an obsolete result or omit a newly required behavior.
  • Business rules changed: Revisit decision tables, combinations, thresholds, exceptions, and their expected outcomes.
  • Interfaces, workflows, or data constraints changed: Review setup, test data, validation rules, integration assumptions, and valid state transitions.
  • Code or a dependency changed: Assess affected branches, integrations, browser behavior, libraries, services, and failure handling.
  • A defect or production incident occurred: Add or revise a case that would detect the failure, including its relevant conditions and regression coverage.
  • Risk or regulatory context changed: Reassess whether the old test set still addresses the consequences that now matter.
  • Tests repeatedly fail for stale reasons or no longer represent real usage: Repair, replace, or retire them so their results remain actionable.

A code change alone does not mean every test must be rewritten. Trace the change to affected behavior and risk, identify which cases depend on that behavior, and expand review where dependencies or shared components could create side effects.

4. A practical update workflow

  1. Identify the change and its test basis. Record the changed requirement, rule, interface, code area, dependency, incident, or risk. Link it to the current requirement or risk where possible.
  2. Map impact. Find cases that exercise the changed behavior and unchanged areas that may be affected. Follow shared data, interfaces, state transitions, and dependencies.
  3. Check the model. Revisit partitions, boundaries, decision combinations, state transitions, structural coverage goals, and assumptions behind exploratory checks. Decide whether a new technique or additional technique is needed.
  4. Revise the cases. Update preconditions, setup, inputs, steps, expected results, cleanup, and traceability. Remove obsolete steps and add cases for changed behavior, important boundaries, invalid inputs, and uncovered failure modes.
  5. Separate retesting from regression testing. Retest the specific modification to check that it works. Run regression tests to check whether the modification unintentionally affected other parts. ISO’s terminology distinguishes these purposes; regression testing is not just another name for retesting. See the ISO standard reference.
  6. Record why the case changed. A short link to a requirement, issue, incident, or risk helps the next reviewer judge whether it remains valid.

5. Example: updating tests for a changed refund rule

Suppose a service previously allowed refunds within 30 days of purchase. A product change extends eligibility to 45 days for delivered orders, while undelivered orders remain refundable under a separate rule. Review the decision model rather than merely changing “30” to “45” in one test.

Condition to examine Example cases to derive Technique
Days since purchase Test around the applicable cutoff: one day before, on the cutoff, and one day after. Confirm whether the boundary is inclusive. Boundary value analysis
Delivery status Compare delivered and undelivered orders where the rule differs. Equivalence partitioning and decision table
Combination of status and age Cover each distinct outcome-producing combination, including combinations the new rule makes newly valid or invalid. Decision table
Refund lifecycle Check allowed transitions and attempts to refund an already refunded or otherwise ineligible order. State-transition testing
Implementation paths If relevant, verify code decisions for the changed conditions and error handling. Structural testing

The exact cases depend on the actual requirements. Do not assume that a cutoff is inclusive, or that one condition overrides another, unless the specification or product owner establishes that behavior. First update the test basis; then derive expected results from it.

6. Test case maintenance checklist

  • Does the case still map to a current requirement, risk, or documented behavior?
  • Are its preconditions and environment assumptions still true?
  • Are test data and input constraints representative of current behavior?
  • Do expected results describe the current rule, including boundary behavior?
  • Are negative, invalid, and exceptional paths covered where risk warrants?
  • Does the case cover a changed state, interface, dependency, or security assumption?
  • Would a regression test catch unintended effects in connected areas?
  • Can an engineer understand a failure and reproduce it from the recorded steps and data?
  • Should obsolete cases be revised, replaced, or retired to prevent misleading results?

7. Browser-based visual checks for changed behavior

When a change affects rendered pages, visual checks can complement functional cases. Capture the relevant page or component before and after the change under controlled conditions, and inspect differences alongside assertions about behavior. Keep viewport, device scale, browser state, data, and timing consistent; otherwise a comparison may reflect capture conditions rather than a product change.

For manual capture, open the target page in a browser, prepare a stable test state, set the viewport, wait for the page to settle, and use the browser’s screenshot command or developer tools to save the full page or the relevant element. Repeat the same setup after the change. For automated capture, use the browser automation already present in your test suite and preserve the same URL, state, viewport, and wait condition in both runs. Treat dynamic content, timestamps, animations, and personalized data as sources of noisy differences; stabilize them or exclude those regions when appropriate.

8. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF; its parameters also support options such as full-page capture, element selectors, viewport and device presets, wait conditions, custom CSS or JavaScript, cookies, and hiding selectors. See the ScreenshotNeo API documentation for available parameters and formats.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Replace the example URL with the page under test and keep the API key out of client-side code and public repositories. ScreenshotNeo removes cookie and consent banners, newsletter popups, and chat widgets before capture; each cleanup step can be disabled. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server gives AI agents tools for screenshots, page information, and PDF capture. The free plan includes 1,000 screenshots each month with no card; paid plans start at $5 for 3,000 screenshots.

Sign up for 1,000 free screenshots a month, with no card required.

9. Troubleshooting stale or ineffective test cases

Symptom Likely cause What to do
A test passes, but users still encounter the defect. The case checks an outdated assumption, misses the triggering combination, or covers a different path. Reconstruct the conditions from the defect, update the test basis, and add a regression case that fails before the fix and passes after it.
Many tests fail after a small rule change. Expected results, shared fixtures, or dependent cases were not reviewed as a set. Trace the changed rule through related tests and data; update cases with the rule’s current behavior and isolate unrelated failures.
Boundary defects escape. Tests sample typical values but not values at or next to the threshold. Apply boundary value analysis and document inclusivity, units, rounding, and minimum/maximum behavior.
Combinations of rules are missed. Cases were written independently without modeling interacting conditions. Build a decision table, identify outcome-changing combinations, and prioritize them by risk.
Workflow bugs appear only after several actions. Tests assert screens or inputs without covering state and event sequences. Model states and transitions, then test valid, invalid, and repeated transitions that matter.
Visual comparisons fail intermittently. Content, timing, animation, fonts, viewport, or browser state varies between captures. Use the same capture conditions, wait for a defined state, stabilize dynamic regions, and compare the same device scale and viewport.
The suite takes too long after updates. Every change triggers an undifferentiated full suite, or redundant cases accumulated. Run focused retests first, select regression tests by impact and risk, and periodically remove cases that provide no distinct coverage. Keep broader suite runs where system risk requires them.
Tests fail because setup data or dependencies drifted. Fixtures or external service assumptions are stale. Refresh setup and contract assumptions, make dependencies explicit, and include failure or unavailable-service cases when the behavior requires them.

10. Performance, reliability, and maintenance cost

More cases are not automatically better. A small set of well-modeled cases can cover representative partitions, critical boundaries, outcome-changing rules, and high-risk transitions, while broad or random testing can probe additional space. The right amount depends on impact and uncertainty. NIST’s guidance supports using multiple verification approaches, including historical cases and fuzzing, rather than relying on one technique alone.

  • Keep fast checks close to the change: Run focused tests during development, then add impacted integration or regression coverage according to dependencies and risk.
  • Control flaky conditions: Make setup, data, time, environment, and external dependencies explicit. A test with unstable preconditions costs investigation time and weakens confidence.
  • Preserve diagnostic value: Include enough context to reproduce failures, but avoid duplicating cases whose inputs, paths, and assertions are indistinguishable.
  • Balance maintenance cost against missed-risk cost: Prioritize cases for consequential behavior, frequent changes, complex rules, and areas implicated by defects. This is a risk decision, not a universal numeric formula.
  • Review at change points: Requirements, implementation, dependencies, incidents, and risk reviews provide concrete moments to revisit coverage. The cited sources do not establish a universal calendar cadence.

11. Frequently asked questions

How often should a team review test cases?

Review them when relevant behavior, assumptions, dependencies, incidents, or risks change. No universal interval is established by the cited sources; teams can also schedule periodic maintenance based on their release and risk practices.

Should every code change require new test cases?

No. Assess impact first. A change may need revised expected results, new cases, regression execution, or no case change if existing coverage remains valid and sufficient.

Are retesting and regression testing the same?

No. Retesting checks a specific modification. Regression testing checks whether that modification unintentionally affected other parts of the system.

Can I use more than one test design technique for a feature?

Yes. Combining techniques is often useful when a feature has input ranges, interacting rules, workflow states, or implementation risks.

What standard covers test design techniques?

ISO/IEC/IEEE 29119-4:2021 covers software testing test techniques. The official ISO catalog entry provides the scope and edition information.