
Manual testing is not just about verifying whether an application works under normal conditions. A good QA engineer also needs to identify situations where the application may behave unexpectedly.
In real-world projects, most testers begin by validating the primary user workflows. They check whether users can log in, submit forms, place orders, make payments, and access different application features. These tests are important, but they do not always reveal problems that occur under unusual conditions.
For example, imagine an e-commerce application where customers can successfully place orders. During normal testing, everything works correctly. However, what happens when a customer clicks the Place Order button twice, loses internet connectivity during payment, or tries to purchase the last available product at the same time as another customer?
These situations are called edge cases.
Edge cases are conditions that occur at the boundaries of expected application behavior or under unusual combinations of inputs, user actions, and system conditions. They are often missed because testers focus more on standard workflows than on less common scenarios.
Identifying these cases requires logical thinking, business understanding, technical knowledge, and experience with how real users interact with software.
In this article, we will understand what edge cases are, why they are missed during manual testing, and how QA engineers can identify and test them using practical examples.
What Are Edge Cases in Software Testing?
An edge case is a specific scenario that occurs at the boundary of an application's expected operating conditions or under an unusual combination of circumstances.
These scenarios may involve minimum or maximum input values, unexpected user actions, unusual data combinations, timing conditions, or system limitations.
For example, consider a registration form that accepts usernames between 5 and 20 characters.
A tester might verify that a username containing 10 characters is accepted. However, important edge cases include:
Entering exactly 5 characters.
Entering exactly 20 characters.
Entering 4 characters.
Entering 21 characters.
Entering only spaces.
Using special characters.
Submitting the same username multiple times.
These conditions help determine whether the application handles input boundaries and unusual data correctly.
Edge cases are not necessarily invalid inputs. Some represent perfectly valid situations that occur less frequently but still need to work correctly.
Why Are Edge Cases Often Missed During Manual Testing?
Even experienced QA engineers can miss edge cases when testing under time constraints or working with incomplete requirements.
There are several common reasons.
1. Focusing Only on Happy Path Scenarios
The happy path represents the normal workflow where users provide valid information and perform expected actions.
For example:
Open the application.
Enter valid login credentials.
Click Login.
Navigate to the dashboard.
If testing focuses only on this workflow, unusual situations such as expired sessions, repeated login attempts, network interruptions, and concurrent access may remain untested.
2. Incomplete Requirements
Requirements usually explain how a feature should work under expected conditions. They may not describe every possible boundary condition.
For example, a requirement might state that customers can upload profile pictures without specifying maximum file size, supported formats, or behavior when an upload is interrupted.
QA engineers need to identify these missing details and discuss them with the development or business team.
3. Limited Test Data
Testing with only a few standard input values can leave important conditions undiscovered.
For example, testing an age field with values such as 25 and 30 does not verify what happens when a user enters 0, 17, 18, 60, 61, or a negative number.
Using different categories of test data helps identify more boundary conditions.
4. Ignoring Real User Behavior
Users do not always follow the workflow expected by developers.
They may refresh pages, open multiple browser tabs, click buttons repeatedly, switch devices, or navigate backward during a transaction.
Manual testing should consider these realistic interactions.
5. Not Considering Integration Dependencies
An application may depend on external APIs, payment gateways, databases, authentication services, and third-party systems.
A feature may work correctly in isolation but fail when one of its dependencies becomes unavailable.
These situations are particularly important when testing enterprise applications.
How to Identify Edge Cases During Manual Testing
Finding edge cases requires a systematic approach. Instead of randomly trying unusual inputs, QA engineers should examine application behavior from different perspectives.
The following techniques are useful in real-world testing projects.
1. Use Boundary Value Analysis
Boundary Value Analysis is one of the most effective techniques for identifying edge cases.
It focuses on testing values at the minimum and maximum limits of an input range, including values immediately outside those limits.
Consider a form that accepts an order quantity between 1 and 100.
The following test values should be considered:
Test Data | Expected Result |
|---|---|
-1 | Reject invalid quantity |
0 | Reject invalid quantity |
1 | Accept minimum quantity |
2 | Accept valid quantity |
99 | Accept valid quantity |
100 | Accept maximum quantity |
101 | Reject quantity exceeding the limit |
Testing only values such as 10 or 50 would not provide sufficient coverage of the input boundaries.
This technique is useful for:
Age restrictions.
Password length.
Transaction limits.
File upload size.
Product quantity.
Pagination limits.
Date and time restrictions.
2. Think About Invalid and Unusual Input Combinations
A field may work correctly when tested individually but fail when combined with other inputs.
Consider a customer registration form containing:
Full Name.
Email Address.
Mobile Number.
Password.
Confirm Password.
Apart from testing each field separately, try different combinations:
Valid email with an invalid mobile number.
Password and confirm password containing different values.
Special characters in the name field.
Leading and trailing spaces in the email address.
Very long input in the name field.
Unicode characters in supported fields.
Multiple fields containing invalid values simultaneously.
These combinations help identify validation problems that individual field testing may miss.
3. Test Repeated User Actions
Repeated actions can create unexpected application behavior, especially when requests involve transactions or data updates.
For example, consider a payment button.
A QA engineer should investigate:
What happens when the user clicks Pay twice?
What happens when the button is clicked repeatedly?
Can the user submit the same form in multiple browser tabs?
Does refreshing the page submit the previous transaction again?
Can a user retry a payment while the previous request is still processing?
The application should handle duplicate requests appropriately.
For financial operations, this often requires server-side duplicate protection and idempotency controls rather than relying only on disabling the button in the UI.
4. Test Network Interruptions and Session Behavior
Network-related edge cases are common in web and mobile applications.
A feature may work correctly with a stable internet connection but behave differently when connectivity changes.
For example, during an online payment, investigate:
Internet disconnects after clicking Pay.
The server responds slowly.
The request times out.
The user reconnects and retries.
The session expires while submitting a form.
The browser is refreshed during an API request.
Verify whether the application displays an appropriate message, maintains data consistency, and prevents duplicate transactions.
5. Test Date and Time Boundaries
Date and time conditions are often overlooked during manual testing.
Consider an employee leave management application.
A QA engineer should investigate:
Applying for leave on the current date.
Selecting a past date.
Selecting a future date.
Applying for leave across two months.
Submitting leave on a weekend.
Applying for leave during a public holiday.
Working with leap-year dates.
Submitting a request near midnight.
Time-zone differences can also affect applications used across multiple countries.
For example, an event scheduled for midnight in one time zone may appear on a different calendar date for users in another location.
6. Consider Different User Roles and Permissions
Applications often support multiple user roles, such as Admin, Manager, Employee, and Customer.
A feature that works correctly for one role may expose unexpected behavior for another.
Consider an employee management application.
Test scenarios should include:
An employee accessing an administrator-only page.
A manager attempting to edit another department's records.
An inactive user accessing an existing session.
A user whose permissions change while logged in.
Two users attempting to update the same record.
Role-based testing helps identify authorization problems and unexpected access to restricted functionality.
Practical Example: Identifying Edge Cases in an E-Commerce Application
Consider an e-commerce application where customers can add products to their shopping cart and complete purchases.
A basic test might verify whether a customer can add a product, proceed to checkout, and place an order.
However, several important edge cases may remain untested.
Feature | Edge Case to Test | Expected Behavior |
|---|---|---|
Product Search | Search using special characters | Application should handle input safely |
Shopping Cart | Add the same product repeatedly | Quantity should update according to business rules |
Inventory | Two customers purchase the last available item | Inventory should not become negative |
Checkout | Refresh the page after submitting an order | Duplicate orders should not be created |
Payment | Payment gateway times out | Transaction status should be handled correctly |
Coupon | Apply an expired coupon | Coupon should be rejected |
Delivery | Enter an unsupported postal code | Application should prevent unsupported delivery |
Product Price | Product price changes after adding it to the cart | Application should follow its defined pricing policy |
Session | Session expires during checkout | User should receive appropriate handling |
Order History | Open order details immediately after payment | Correct order information should be displayed |
Some of these scenarios require testing multiple users, browser sessions, or backend responses. Manual UI testing can identify many of them, while API tools and logs can help investigate the underlying behavior.
How to Prioritize Edge Cases
It is not practical to test every possible combination in a complex application.
QA engineers should prioritize edge cases according to their business impact, likelihood, and technical risk.
A simple risk-based approach can help.
Priority | Scenario | Reason |
|---|---|---|
Critical | Duplicate payment processing | Can cause financial loss |
High | Unauthorized access to restricted data | Creates security and privacy risks |
High | Incorrect inventory updates | Can affect order processing |
Medium | Invalid date selection | May affect scheduling workflows |
Medium | Very long text input | Can cause validation or display issues |
Low | Unusual spacing in non-critical labels | Limited functional impact |
A useful starting point is to prioritize scenarios that can cause data loss, financial problems, security vulnerabilities, or major business disruption.
Practical Checklist for Finding Edge Cases
Before completing manual testing of a feature, review the following areas.
Minimum and maximum input values.
Empty and null values.
Invalid input formats.
Special and Unicode characters.
Duplicate submissions.
Multiple browser tabs or sessions.
Network interruption and timeout.
Session expiration.
Different user roles and permissions.
Concurrent updates.
Date, time, and time-zone conditions.
Large data volumes.
External API failures.
Browser refresh and navigation behavior.
Application recovery after an error.
This checklist can be adapted according to the feature being tested. Not every scenario applies to every application.
Common Mistakes to Avoid While Testing Edge Cases
Identifying unusual conditions is useful, but testers should avoid a few common mistakes.
Common Mistake | Better Approach |
|---|---|
Testing random values without a purpose | Use boundary analysis and equivalence partitioning |
Ignoring business rules | Understand expected application behavior before reporting defects |
Testing only individual fields | Explore combinations of inputs |
Ignoring repeated actions | Check duplicate requests and transaction handling |
Not considering user permissions | Test the feature with different roles |
Treating every unusual behavior as a defect | Confirm whether the behavior violates requirements |
Not documenting unusual scenarios | Maintain clear test evidence and reproduction steps |
Ignoring previously discovered edge cases | Add important scenarios to regression test coverage |
How to Document and Reuse Edge Cases
When a QA engineer discovers an important edge case, it should not remain only in personal testing notes.
Document the scenario with enough information for other team members to reproduce it.
A useful record should include:
Test scenario.
Preconditions.
Test data.
Execution steps.
Expected result.
Actual result.
Environment details.
Screenshots or logs, where applicable.
Defect reference, if one is reported.
Once an edge case is validated and considered important, add it to the relevant test suite.
For example, if repeated payment submission exposes a duplicate transaction defect, that scenario should become part of the payment regression suite after the issue is fixed.
This prevents the same problem from appearing in future releases.
Conclusion
Identifying edge cases is an important part of effective manual testing. Testing only standard user workflows may confirm that an application works under normal conditions, but it does not establish how the application behaves when users provide unusual inputs, repeat actions, lose connectivity, or encounter unexpected system conditions.
QA engineers can improve edge case coverage by applying boundary value analysis, exploring different input combinations, testing repeated actions, checking session behavior, and considering user roles and integration dependencies.
The most important thing is to think beyond the expected user journey.
Before marking a feature as tested, ask yourself what could happen if the user enters an unexpected value, performs an action twice, loses connectivity, or uses the feature under an unusual condition.
That mindset helps QA engineers discover defects that are often missed during routine manual testing and improves application reliability before production release.


Join the conversation! Your thoughts help the community grow.