Interview Insights · Software Tester
Why Every Software Tester Should Practice Explaining Their Model Aloud
Quick summary — Tester's model
For a software tester, a model is the thinking tool between a requirement and the test cases. Two kinds matter most in interviews. A risk model, such as a likelihood and impact matrix, explains why you tested some areas first and deepest. A test model, such as a state transition diagram or decision table, explains how you derived your cases and what coverage you achieved. Both are easy to draw and surprisingly hard to explain aloud. Practising that explanation shows you designed your tests rather than guessed them.
In this guide you will learn:
- How I read 'model' for a tester, and why it is not about ML
- How to explain a risk matrix and the priorities it produced
- A state transition model for an order, with valid and invalid moves
- Decision tables for business rules with several conditions
- A spoken script for defending your model in an interview
SECTION 01Explaining a risk model: why you tested what you tested
In this page, 'model' means a simplified picture of the system or its risks that you use to make testing decisions. If you tested a machine learning feature, that is a different topic. Here I focus on the models every tester uses.
The first is a risk model. Most teams use a simple likelihood and impact matrix: each feature or area gets a score for how likely it is to fail and how bad a failure would be. Multiply them, and you get a priority. When I ask why you spent most of your time on one module, a risk model is the answer I hope to hear.
| Area | Likelihood (1-3) | Impact (1-3) | Priority and test depth |
|---|---|---|---|
| Payment and refunds | 2: integrates with external gateway | 3: direct money loss | 6, highest: deep functional, negative and retry tests |
| Search filters | 3: rewritten this sprint | 2: users cannot find items | 6, highest: regression and exploratory sessions |
| Profile page | 1: unchanged for months | 2: user annoyance | 2, low: smoke checks only |
| Footer links | 1: static content | 1: cosmetic | 1, lowest: quick visual check |
areas = [
{"name": "Payment and refunds", "likelihood": 2, "impact": 3},
{"name": "Search filters", "likelihood": 3, "impact": 2},
{"name": "Profile page", "likelihood": 1, "impact": 2},
{"name": "Footer links", "likelihood": 1, "impact": 1},
]
def depth(score):
if score >= 6:
return "deep: functional, negative, exploratory"
if score >= 3:
return "medium: main flows and key negatives"
return "light: smoke check"
for area in areas:
area["score"] = area["likelihood"] * area["impact"]
for area in sorted(areas, key=lambda a: a["score"], reverse=True):
print(f"{area['score']:>2} {area['name']:<20} {depth(area['score'])}")"I scored each area on likelihood and impact from one
to three. Likelihood went up for anything that changed
recently or depends on an outside system. Impact went
up for money, data and blocking the main user journey.
Payment and search both scored six, but for different
reasons: payment because failure is expensive, search
because it was rewritten. So payment got deeper negative
tests, and search got broader regression.
The profile page scored two, so I only smoke-tested it
and said so in my summary."
Running the script prints the areas from highest to lowest score with a suggested test depth. You do not need code for a risk model, a spreadsheet works fine, but being able to show the logic in any form proves the priorities were deliberate.
SECTION 02Explaining a state transition model without losing the listener
The second kind of model is a test model of the system's behaviour. State transition models are ideal for anything with a lifecycle: orders, tickets, bookings, user accounts. You list the states, the events that move between them, and which moves are not allowed.
State diagrams are popular in interviews because they reveal whether you think about invalid transitions. Almost every candidate tests 'placed to shipped to delivered'. Fewer test 'can a delivered order be cancelled?' or 'what happens if payment succeeds twice?'. Those invalid moves are where real bugs live.
| Current state | Event | Expected next state | Test type |
|---|---|---|---|
| Placed | Payment confirmed | Paid | Valid transition |
| Paid | Seller ships | Shipped | Valid transition |
| Paid | Customer cancels | Cancelled, refund started | Valid transition |
| Delivered | Customer cancels | Rejected, stays Delivered | Invalid transition, return flow instead |
TRANSITIONS = {
("Placed", "pay"): "Paid",
("Placed", "cancel"): "Cancelled",
("Paid", "ship"): "Shipped",
("Paid", "cancel"): "Cancelled",
("Shipped", "deliver"): "Delivered",
}
STATES = ["Placed", "Paid", "Shipped", "Delivered", "Cancelled"]
EVENTS = ["pay", "cancel", "ship", "deliver"]
valid, invalid = [], []
for state in STATES:
for event in EVENTS:
target = TRANSITIONS.get((state, event))
if target:
valid.append(f"{state} --{event}--> {target}")
else:
invalid.append(f"{state} --{event}--> REJECT")
print("Valid transitions to test:", len(valid))
print("\n".join(valid))
print("\nInvalid transitions to test:", len(invalid))
print("\n".join(invalid))"The order has five states and four events.
I wrote the allowed moves as a table, then generated
every state and event pair.
Five valid transitions become positive test cases.
The other fifteen pairs are invalid, for example
paying twice, or cancelling after delivery.
I did not run all fifteen with equal effort. I picked
the risky ones first: pay on Paid, which could double
charge, and cancel on Shipped or Delivered, which could
trigger a wrong refund."
The script makes one useful point concrete: with five states and four events there are twenty pairs, and only five are valid. Saying 'my model gave me five positive and fifteen negative transitions, and I prioritised these negatives' is a precise coverage statement that few candidates can make.
SECTION 03Decision tables: the model for rules with many conditions
The third model I often ask about is the decision table. Use it when a feature's result depends on several conditions together, such as discounts, loan eligibility or shipping charges. Writing every combination of conditions as a column makes missing rules obvious.
When you explain a decision table aloud, start with the conditions, say how many combinations they create, and then point out which combinations the requirement did not define. That last part is gold: it shows your model found a requirement gap before a single test ran.
| Rule | Member? | Cart above threshold? | Expected shipping |
|---|---|---|---|
| R1 | Yes | Yes | Free shipping |
| R2 | Yes | No | Free shipping |
| R3 | No | Yes | Free shipping |
| R4 | No | No | Standard shipping charge |
Add a third condition: coupon FREESHIP applied (Y/N)
2 x 2 x 2 = 8 combinations
| C1 Member | C2 Above threshold | C3 Coupon | Result
------|-----------|--------------------|-----------|---------
R1 | Y | Y | Y | Free
R2 | Y | Y | N | Free
R3 | Y | N | Y | Free
R4 | Y | N | N | Free
R5 | N | Y | Y | Free
R6 | N | Y | N | Free
R7 | N | N | Y | Free?
R8 | N | N | N | Charge
R7 is not defined in the requirement.
Does the coupon work for non-members below the threshold?"Shipping depends on three yes-or-no conditions, so
there are eight combinations. I wrote all eight as rules.
Six of them clearly give free shipping and one clearly
charges. But the requirement never said what happens
when a non-member below the threshold uses the coupon.
I raised that with the product owner before testing.
The answer was that the coupon should work, so R7
became a test case, and it actually failed on the
first build."
The spoken explanation is an example, but the pattern is common in real projects: an undefined combination in a decision table is often exactly where the code also forgot a branch.
SECTION 04Worksheets to build and rehearse your own test model
Pick one feature from a project you tested and build at least one of these models for it. Then use the script sheet to practise explaining it in under two minutes.
RISK MODEL FOR: ____________________
Area | Likelihood 1-3 | Why | Impact 1-3 | Why | Score
-------------|----------------|-----|------------|-----|------
____________ | | | | |
____________ | | | | |
____________ | | | | |
____________ | | | | |
Likelihood rises with: recent change, complexity,
external integrations, past defects.
Impact rises with: money, data loss, security,
blocking the main user journey.STATE MODEL FOR: ____________________
States: ______, ______, ______, ______, ______
Events: ______, ______, ______, ______
Total state-event pairs = states x events = ____
Valid transitions (positive cases):
______ --______--> ______
______ --______--> ______
Riskiest invalid transitions (negative cases):
______ --______--> must be rejected because ______
______ --______--> must be rejected because ______TWO-MINUTE MODEL EXPLANATION
1. The feature and why it needed a model (15s)
2. Which model and why that one (15s)
risk matrix / state diagram / decision table
3. Walk the model briefly (30s)
4. How many cases it produced, valid vs invalid (20s)
5. One gap or bug the model revealed (25s)
6. What the model did not cover (15s)
Record it. If step 5 is empty, build the model
again more carefully. Models should find something.
SECTION 05Habits for explaining any tester's model with confidence
These habits make models useful in interviews and in real sprints.
- Say what 'model' means first — Open with 'by model I mean the state diagram I used to design cases', so the interviewer knows exactly what you are describing.
- Pick the model for the problem — Use state models for lifecycles, decision tables for combined rules and risk matrices for prioritising. Explain that choice.
- Count your coverage — Numbers such as 'five valid and fifteen invalid transitions' make your coverage claim concrete and checkable.
- Show what the model found — A gap in the requirement or a failing invalid transition is the best proof that the model was worth building.
- Keep it on one page — If your model needs several pages to explain, split it by feature. Interviewers follow a small model far more easily.
SECTION 06Interview Q&A — Tester's model
Q1What is state transition testing, and when would you use it?
It is a technique where you model the states a system can be in and the events that move it between states, then test valid and invalid transitions. I use it for features with a lifecycle, such as orders, bookings, tickets or account status, where the same action should behave differently depending on the current state.
Q2How do you build a risk-based priority for testing?
I list the areas, score each for likelihood of failure and impact of failure, often on a scale of one to three, and multiply them. High scores get deeper testing earlier. I base likelihood on change, complexity and history, and impact on money, data, security and user journeys.
Q3When is a decision table better than writing cases directly?
When the output depends on several conditions together. Listing every combination shows missing or conflicting rules, and each rule column becomes a test case. Writing cases directly often misses one combination that the code also forgot.
Q4How many test cases does a decision table with three yes-or-no conditions need?
A full table has two to the power of three, which is eight rules, so up to eight cases. It can sometimes be reduced if one condition alone decides the result, but I start with the full table so no combination is missed.
Q5What is model-based testing?
It means designing or generating tests from a model of the system's expected behaviour, such as a state machine. Tools can generate test paths automatically from the model. Even without tools, deriving cases from a model makes coverage clear and repeatable.
SECTION 07Test yourself — Tester's model quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
What is a test model in software testing?
A test model is a simplified representation of the system or its behaviour, such as a state diagram, decision table or flow chart, used to derive test cases systematically and measure coverage.
What is a risk matrix in software testing?
It is a grid that rates each area by how likely it is to fail and how severe the impact would be. The combined score helps decide which areas to test first and most thoroughly.
How do you write test cases from a state transition diagram?
List each valid transition as a positive case with its starting state, event and expected end state. Then list invalid state and event pairs as negative cases, and prioritise the risky ones, such as paying twice or cancelling after delivery.
What test design techniques are asked in QA interviews?
Common ones are equivalence partitioning, boundary value analysis, decision tables, state transition testing, use case testing and error guessing. Interviewers usually ask you to apply one to a simple feature, so practise with examples.
Do manual testers need to know modelling techniques?
Yes. Models like decision tables and state diagrams are core manual test design skills. They help you find missing requirements, design complete cases and explain your coverage clearly to the team.
How can I prepare for Software Tester interview answers with a trainer?
Yes. Uncodemy's Software Testing Training Course in Noida (classroom and online) includes live projects, one-to-one mock interviews and resume reviews, so you practise Software Tester interview answers with trainer feedback before the real interview. You can book a free demo class from this page to see how the sessions work.
SECTION 09Related reads
Classroom & online · Noida
Design tests from models you can defend
Our Software Testing Training Course teaches test design techniques such as state transition, decision tables and risk-based testing, applied to real project features and interview practice.
Talk to a counsellor for current fees- Test design techniques
- Risk-based prioritisation
- Mock QA interviews
- Weekday & weekend batches