A Good Day for a Bug header background image

Agile testing

A Good Day for a Bug: Feb. 29, 2016

Software errors often spring from the smallest of details. A misplaced line of code. An incorrect date calculation. Faulty algorithms.
But that isn’t news to you – after all, this was the very fear that sparked the Y2K madness in the late 1990s. Could the software applications across the world handle setting their clocks to “2000”? If not, what would happen to the world when all the software simultaneously crashed at the stroke of midnight?
Though ultimately unnecessary, the Y2K hysteria did serve to draw widespread public awareness to software and its significance in our daily lives. Never had it been so clear that the presence or absence of a single line of code could unravel vast stretches of software capability.
What many of those same people do not realize however, is that the Y2K meltdown has the potential to repeat itself on a small scale multiple times a year.

Daylight Savings. Leap Years. December 31st of a Leap Year (the 366th day). Year 2038. Each of these and more, present times when software can malfunction. If the Leap Year algorithm is incorrect, or the dates and times of global Daylight Saving transitions are off by just one number, we find ourselves scrambling to work around broken software and I begin to compile another list of software fails. (You can read the other lists here).
February 29th, 2016 was Leap Day, and sure enough we had our share of Leap Year related bugs:

Dusseldorf International Airport: The baggage handling system failed to recognize February 29th, effectively placing the luggage conveyer belt on strike. Baggage was processed and transported manually by a team of airport employees, but a total of 1200 pieces of luggage still missed their flights. Service resumed as usual after a software update around noon, leaving the airport to deal with the after effects of 1200 stranded suitcases.More here

Jeep Vehicles: There were several reports from Jeep owners of their clocks setting back to 12:00. Each of the owners stated that they reset their clocks, only to have it revert back to 12:00 each time they turned on their car. As of March 1st no remaining issues were reported. More here

Ace Payroll (New Zealand): The company posted an alert regarding a Leap Year bug that blocked users from being able to log in to the program. An update and workaround were promptly issued. More here
Matt Johnson, of the excellent codeofmatt.com, cataloged all the Leap Year 2016 related bugs he could find here (34 and counting). For more information, I highly recommend reading this and his other postings on how developers can code against Leap Year and Daylight Savings bugs.

In the grand scheme of things, a Leap Year bug is minor. At most, systems will go down for a day. As with any bug however, the real concern is not the bug itself but the resulting chaos. How many people will be affected? How much money lost? How many lives endangered? As Matt Johnson so aptly points out in his Leap Year blog, “it is something we have to contend with on a regular basis. How much code did you write over the last four years?”