DX Application Performance Management

 View Only

When Software Goes Bad Part 2: Edge and Corner Cases

By Hallett German posted Apr 10, 2016 07:51 AM

  

When Software Goes Bad Part 1: Occam's Razor  -- Part 1

 

Each day, the decommissioned USS Yorktown (CG-48) sits in some Navy Yard in Philadelphia awaiting the order to be dismantled. Once this happens, then there will be no trace of the mistake caused by a simple edge case. In the Yorktown's situation, it was part of the leading edge "Smart Ship" program that used computers to control ship's systems. But human intervention outsmarted the application. Someone entered in a zero as a value. This caused a division by zero error. After this simple entry, the ship's propulsion system became non-operable. (For how long the ship was out and whether or not they were towed back to port remains a topic of hot debate.) In the long term, this made little difference. The Yorktown has a stellar record in keeping the United States and her allies safe overseas.

 

300px-USS_Yorktown_(CG-48)%3B04014806.jpg

 

Per Wikipedia, edge case is "a problem or situation that occurs only at an extreme (maximum or minimum) operating parameter."  A corner case is one outside of typical parameters. This may involve multiple factors

 

Capturing and resolving edge and corner cases may be one of toughest things to determine or track.

This can include

 

- Minimum or maximum values

- Invalid or random values

- Non-compliant conditions for a protocol.

- Any unexpected condition or combination of conditions.

 

So what can be done about edge cases?

- Allow time to test extreme values and unanticipated conditions.

- Have users do "random entry" testing the system's interface.

- Use software that is fully compliant with a protocol rather than compliant-like.

- Perform rigorous testing of various expected and unexpected conditions.

- Use something like Fuzz testing to test for "invalid, unexpected and random data."

 

In the end, you may not get all of the weird and offbeat conditions that may cause crashes under the control. Still, you do the best that you can to minimize the "surprise factor" when an application gets put to good use.

 

As always, your comments on this topic are welcomed.

2 comments
0 views