Z – Zero
O – One
M – Many (or More complex)
B – Boundary Behaviors
I – Interface definition
E – Exercise Exceptional behavior
S – Simple Scenarios, Simple Solutions
It's strangely satisfying when the "this will probably never happen" test case finds a problem during development.
I had tests for deleting that were like
create item a
create item b
delete item a via the code under test
assert item a is gone
assert item b is still there
I thought maybe the whole bit with item b was excessive, but sure enough one day I accidentally fucked something up and deleted all the items, and the test pointed it out before the bad code left my local machine.