0.1.13 Tasks and Testing

A Story Tells You Where You Are Going

A user story gives technical work a destination.

For example:

As a coach, I want to see which players are available for an upcoming match so that I can prepare the lineup.

Acceptance criteria make that destination more precise.

Suppose the current criteria say:

Now the team knows what successful work should accomplish.

But the story and criteria still do not tell you everything that must be done to create the result.

That is where tasks become useful.

Tasks Break the Work Into Meaningful Pieces

A task is a focused piece of work that contributes to the larger user story.

For the soccer example, possible tasks could include:

  1. Identify the information needed to record a player's availability for a match.
  2. Create a way to record that availability.
  3. Create a way for the coach to review the recorded information.
  4. Check the result against the acceptance criteria.

The exact tasks would depend on the actual system and what already exists.

What matters here is the relationship:

User story → acceptance criteria → tasks

The story describes the user's goal.

The criteria describe what successful completion looks like.

The tasks organize the work needed to reach that result.

A Task Should Have a Clear Purpose

A task such as:

Work on the soccer system.

is too broad to be useful.

It does not tell you what part of the problem you are addressing or when the task is complete.

Compare it with:

Create a way to record whether a player is available for a selected match.

That task has a more focused purpose.

You can work on it, stop, and inspect the result.

Useful tasks are small enough to understand and check but large enough to represent meaningful progress.

Finishing a Task Is Not the Same as Meeting the Need

Suppose a developer completes the task:

Create a way to record player availability.

The new feature accepts an availability choice without an error.

Is the user story finished?

Not necessarily.

The coach still needs to see that information.

This is why technical work cannot be judged only by whether every task has been marked complete.

You must return to the user story and acceptance criteria and ask:

Does the result actually satisfy the need?

Testing Compares Expected and Actual Results

At this level, testing means deliberately checking what the system does and comparing it with what should happen.

You do not need a formal testing framework to begin thinking like a tester.

Start with a specific situation.

For example:

Situation Expected result
A player reports being available for Saturday's match. The coach's view shows that player's recorded availability for Saturday's match.
The coach reviews a different match. The displayed information clearly belongs to the match being reviewed.

A test becomes useful when you know what result you expect before you look at what actually happened.

Then compare:

Expected result → Actual result

If they match, you have evidence that the checked behavior works for that situation.

If they do not match, you have evidence that something needs attention.

A Failed Check Is Useful Information

Imagine this test:

Situation: A player reports being available for Saturday.

Expected: The coach sees that player as available for Saturday.

Actual: The coach sees the player, but the screen does not identify which match is being shown.

The test has revealed a gap.

That is not wasted work.

It tells you that the current result does not fully satisfy the criterion requiring the coach to identify the match being reviewed.

A useful technical workflow is:

  1. Perform the task.
  2. Check the result.
  3. Compare the evidence with the criteria.
  4. Identify the gap.
  5. Revise.
  6. Check again.

Feedback and testing make the work stronger because they keep the result connected to the original need.

Test the Important Behavior, Not Random Details

Testing should connect back to the criteria.

If the story is about player availability, changing the page background color from one shade of blue to another does not tell you whether the coach can prepare the lineup.

A good check asks a meaningful question.

For example:

The most useful checks provide evidence about the behavior that matters to the user.

Keep the Levels of Work Straight

When technical work becomes confusing, identify which level you are discussing.

User story
What does the user need and why?

Acceptance criteria
What observable conditions define success?

Task
What focused work contributes to that success?

Test or check
What evidence tells us whether the result behaves as expected?

These parts work together, but each has a different job.

Key Takeaway

Structured technical work connects four ideas:

User story → Acceptance criteria → Tasks → Testing

Tasks organize the work.

Testing provides evidence.

Neither replaces the original user need.

When a check reveals a problem, use that evidence to revise the work and check again.

That cycle—build, check, learn, revise—is a normal part of creating computerized solutions.