Not all test cases are created equal. Some are too vague, others too specific, and some miss key details. Heuristics can help testers evaluate and refine test cases, making them more useful and effective.
I’ve been designing resources to help junior testers improve their test design skills—who’s up for the challenge?
Your Challenge
Below are three poorly designed test cases. Your task is to spot their issues and improve them using test heuristics such as:
- Goldilocks – Does the test case consider too much, too little, and just the right amount of input?
- Constraint – Does it check limits, restrictions, or system rules?
- CRUD – Does it cover create, read, update, and delete actions?
- Accessibility – Does it consider usability for all users?
Poorly Designed Test Cases
Test Case 1: Login Functionality
Steps: Enter valid credentials and click “Login.”
Expected Result: The user should be logged in successfully.
Test Case 2: Checkout Process
Steps: The user adds an item to the cart and checks out.
Expected Result: The checkout works correctly, and the order is processed smoothly.
Test Case 3: Profile Update
Steps:
- Log in.
- Navigate to Profile Settings.
- Change email address.
- Change password.
- Click Save.
Expected Result: The user’s email and password are updated in the system.
Your Task
- Choose and improve one test case
- Identify the issues; what is missing or unclear?
- Apply one or more heuristics to improve the test case
- Share your findings in reply to this post - What heuristic did you use? How has your changes improved the test case?
4 Likes
I would pick :
Test Case 3: Profile Update
Steps:
- Log in.
- Navigate to Profile Settings.
- Change email address.
- Change password.
- Click Save.
Validation is missing in this test case. As we are updating data it is important valid data is only accepted in the system.
And additional heuristics from my side will be validated.
Validation: Is the test case we write is valid as per the requirements or the data we are using for executing the test case is valid?
So when we focus on validating the data then we cover the negative scenarios also, where we check that an invalid or incomplete email or blank string is not accepted in the email field.
Similarly, new passwords are according to the password policy set by the organization, invalid or incorrect passwords are not getting accepted.
Also, another test case that is missing is a toast notification, usually when we save then there should be a toast notification informing the user that data is successfully updated.
The expected result does not match with the test steps,
the test steps. Because the test steps focus on just saving the data but the expected result says that the user’s email and password are updated in the system,
so either the expected result for the test case mentioned should be like “New email and password is successfully saved.”
or there should be a separate test case for the expected result.
2 Likes
Hi, I used Test Case 1.
What is missing is we don’t know what “valid credentials” are- is it an email address, is a code of 7 numbers etc. Would need to define what Valid Credentials are- correct syntax of the email address and the accepted password format e.g. more than 7 letters, capital letter, symbols etc.
For just the Email field test cases, would use a combo of
Goldilocks (just right, too big )
Data Attack/Constraint Heuristic - how does it handle no spaces/no @ symbol in email address/ no dots etc.
Examples:
- Input email address with correct syntax eg. Test.case@gmail.com
- Input email address without an @
- Input email address with more than 320 characters
- Input email address with no . Between gmail and com with no space
- Input email address with space after com
- Input email address with space before the first letter of the email address
- No email address - leave the field blank
Expectation
- All cases except the correct email address - error message “This email is invalid. Make sure it’s written like example@email.com” under the email address field, or a toaster pop up.
Correct email address format- no error message.
1 Like
1. Goldilocks Heuristic
Issue: The test case lacks enough detail. The description is limited to the main flow and excludes any variations (like different payment methods or items).
Improvement: Increase the level of detail by breaking down steps and considering variations in the checkout process.
Steps:
- Go to a product page and add any item to your cart.
- Go to the cart page and verify that the item is listed correctly.
- Click “Proceed to Checkout.”
- Select a shipping address and verify that it is valid.
- Choose a payment method and enter payment details.
- Review the order summary and confirm the total price.
- Click “Place Order.”
- Verify that the order has been successfully created and a confirmation message has appeared.
- Check if the order appears in the user’s order history.
2. Constraint Heuristic
Issue: The test case does not verify system constraints, such as:
- Minimum/maximum order amount
- Item availability
- Payment method restrictions
Improvement: Add negative test cases (e.g., insufficient balance, invalid card, out-of-stock items).
In my opinion, it should be a separate test case or checklist point.
- Checkout with an empty cart → System should prevent it.
- Payment failure → User should get an appropriate error message.
- Entering an invalid address → System should prompt the user to correct it.
3. CRUD Heuristic
Issue: The test case focuses on the creation of orders, but ignores:
- Read: Can the user see the summary of their order?
- Update: Is it possible for the user to change their shipping address/payment method before confirming?
- Delete: Is it possible for the user to cancel the order if it becomes necessary?
Improvement: Expand the coverage to include these actions.
4. Accessibility Heuristic
Issue: Accessibility features are not evaluated in the test.
- Keyboard navigation
- Screen reader compatibility
- Color contrast for error messages
Improvement: Include accessibility testing steps to ensure compliance.
E.g. Steps to test:
-
- Use the Tab key to navigate through the form fields.
-
- Use Enter to submit the order.
-
- Use Arrow keys to navigate drop-down.
-
- Ensure focus states are visible.
Failure Example: If a “Place Order” button is unreachable via keyboard, users relying on keyboards cannot complete a purchase.
I’m grateful for the brain workout. 
2 Likes