Edge case
In software testing, an edge case is a situation at the limit of what a feature is meant to handle: an input at the largest or smallest value it accepts, a user with no history, a list with one item, a request that arrives during another. The behaviour there is rarely specified, which is why edge cases are where a feature that passes its main tests still fails.
The longer version
A feature is designed for the typical case and tested on it. An edge case is any condition at the extreme of the feature's parameters: the empty basket, the thousandth item, the name that is one character long, the account created a second before the migration, the file at the size limit, the time zone where the date changes during the request. Each is legitimate, each is rare, and each is a place where the code takes a branch nobody wrote a test for, so the behaviour there is whatever fell out of the implementation. Testers find them by asking what the smallest, largest, first, last, empty and simultaneous versions of every input would be.
A corner case is an edge case on several parameters at once: the largest file, uploaded on the slowest connection, by a user whose session is about to expire. A boundary value is the systematic cousin: it comes from a stated rule and tests the values on either side of the rule's threshold. An edge case includes those values and also the conditions no rule mentions. The term is used outside software, in engineering and safety work, for a rare operating condition, and search results mix that sense in, though it is not the one testers mean.
An edge case that was never found is never weighed. A product owner sees a case few users will hit and a developer sees an afternoon of work, and the case is deferred; that is a fair decision when it is made, and it cannot be made about a case nobody listed. An edge case that was found and reported fails a second way when it cannot be reproduced, because it depends on a condition the reporter did not know they were in: a viewport, a language setting, a clock a few minutes wrong.
Common questions
What is the difference between an edge case and a corner case?
An edge case is one parameter at its extreme: the largest allowed file, the empty list, the first day of the month. A corner case is several parameters at their extremes at the same time: the largest file on the slowest connection with the session about to expire. Corner cases are rarer, harder to reproduce and usually worse when they happen.
What is the difference between an edge case and a boundary value?
A boundary value comes from a stated rule, such as a field's maximum, and boundary value analysis tests the values on each side of it systematically. An edge case is any extreme or unusual condition, including the ones no rule mentions, such as a name of one character or two requests arriving together. Boundary values are a subset of edge cases.
How do you find edge cases?
By asking, for every input and every step, what the smallest, largest, empty, first, last, duplicate and simultaneous versions would be, and what happens if a dependency is slow or absent at that moment. The incident log is the other source: every past outage is an edge case that was real, and it belongs in the test suite so it stays fixed.
Should every edge case be fixed?
No. Each one is a decision about how many users it affects, how badly, and what the fix costs, and deferring a rare and harmless one is reasonable. The mistake is to skip the decision: an edge case that was never found is never weighed, and the first person to weigh it is the user who hits it.
Why are edge cases hard to reproduce?
Because they depend on a condition the reporter was in without knowing it: a narrow viewport, a language setting, a clock a few minutes wrong, a list that happened to be empty, a request that overlapped another. The report describes what was seen and omits the condition, so the developer runs the same steps in the typical state and the defect does not appear.
Bug reports that arrive ready to triage.
Collect replay, console, network and browser context with the Free plan.