5

My application has 3 shipping methods, the cheapest of which is free. The free shipping option is only available for orders totaling over $100.

As soon as I built it, I thought of a way a user could easily circumvent this. Add items to the cart totaling over $100, then select your free shipping, then edit your cart to be less then $100 and maintain the free shipping.

I fixed my application to not allow this. I started wondering though, what do you call this sort of design flaw? I know you can call it a bug, but is there a better description that I can use so that someone will understand what I am talking about?

2
  • Refresh bug? Failure to update dynamic status?
    – rwong
    May 6, 2011 at 6:14
  • From my time as a QA guy I'll tell you this is called "Works as designed" and is worth +100 snarky points and a strong glare. May 6, 2011 at 11:37

6 Answers 6

18

From Wikipedia->Software bugs, it sounds like a conceptual error:

"[The] code is syntactically correct, but the programmer or designer intended it to do something else."

8

"Design Flaw" would also cover this.

You implemented the system to the design but the design was wrong.

Note - this doesn't have any bearing on the quality of the code. It can be "perfect" in that it works exactly as designed.

5

It's a conceptual error in general.

I tend to think of these sort of things as "conceptual race conditions": instead of checking a final stable state, checks are made at interim points where the state is not final.

In this case, the error is that the shipping check is done only once (when the user selects), and not repeated at the end (when the order has a final validation and review).

Most commercial systems do a final check.

4
  • 2
    "Most"? Please let me know which ones don't so I can get free shipping ;) May 5, 2011 at 19:26
  • 1
    Yes--If you have to classify it, it's a sort of very slow race condition.
    – Dan Ray
    May 5, 2011 at 20:41
  • 1
    +1 A conceptual race condition -- that makes a lot of sense. May 6, 2011 at 13:53
  • @Rein: If you follow the various deals sites (like SlickDeals/Fatwallet), you will regularly see users reporting on (and exploiting) these sort of errors (e.g., double application of coupons). Unfortunately, most companies have learned to cancel orders when these sort of things happen.
    – Uri
    May 6, 2011 at 20:48
2

Internally, we call it a Z-Axis error or temporal error -- basically forgetting to account that states change over time or another dimension so you need to revalidate certain things and otherwise guard against it.

We are crazy, so I'm just sharing here.

1

It's a sequencing or timing bug. As originally written, you checked the total at one of the time-points you needed to check (when first summarizing the order) but not all of them (after every edit or just before the final confirmation.) In addition to the bug you imagined, there could also be one where I order $99 of stuff, realize how much I have to pay for shipping, and then add something to my cart to get over the $100 mark, but the shipping doesn't become free, making me unhappy and possibly abandoning the order.

If you wanted to show off you could tell someone you "misidentified the invariants" for the problem.

0

I would consider this not properly handling user input. Don't know if there a specific name for that, but it's the cause of a whole lot of bugs.

Not the answer you're looking for? Browse other questions tagged or ask your own question.