After a week of non-stop work and home-cooked meals, all I wanted was a simple pleasure: a McDonald’s breakfast burrito and a cup of coffee. A desire so straightforward should have required minimal effort to fulfill, but my 5:58 AM visit to McDonald’s website served up something unexpected — a lesson in the critical need for accurate software testing. McDonald’s, which boasts a staggering 57.3 million monthly desktop website visits according to SEMrush data, has a level of digital responsibility that cannot be overstated.
In an effort to satisfy my hunger, I turned to a Google search and clicked on a McDonald’s location page. It read, “Sorry, we’re closed — we will be open at 5:00 AM.”
I checked my phone. It was 5:58 AM CST. Then, right at 6:00 AM, the message changed to “We are open.”
This wasn’t just a hiccup; it was symptomatic of something more complex. A simple timing error could extend into a range of issues that jeopardize user trust and overall experience.
My curiosity was piqued, and I delved into Chrome’s Developer Tools.
Chrome Developer Tools — Debugging mcdonalds.com, understanding where label is coming from
Backend returns HTML Back that contains the label “Open / Close”
Since I had navigated from a Google search, metrics are undoubtedly gathered for analytics. This tracking data offers a plethora of localization options that could be far more accurate than whatever method was currently failing at McDonald’s.
My experience brings to mind the words of Glenford J. Myers, Corey Sandler, and Tom Badgett:
One of the primary causes of poor application testing is the fact that most programmers begin with a false definition of the term. They might say:
“Testing is the process of demonstrating that errors are not present.”
“The purpose of testing is to show that a program performs its intended functions correctly.”
“Testing is the process of establishing confidence that a program does what it is supposed to do”
Thus, a more appropriate definition is this:
“Testing is the process of executing a program with the intent of finding errors.
[The Art of Software Testing, 3rd ed., Wiley, 2011]
Now, imagine the magnitude of this issue when scaled to 58 million monthly users. What might appear to be a trivial timing error to a developer could translate into widespread confusion or even distrust among customers.
The first and most straightforward solution is to simply remove the feature if it cannot be trusted for accuracy. A feature that cannot reliably serve its function has the potential to do more harm than good. Inaccuracy not only sows seeds of doubt but also tarnishes the brand image.
The fact that such an error went live suggests inadequate testing.
It’s not enough to check if the software does what it’s supposed to do; you must also ensure it doesn’t do what it’s not supposed to. Test cases should be designed to capture a wide variety of scenarios, including time zones, devices, and browsers, to rigorously vet the system for errors.
Intl.DateTimeFormat that can fetch time zone data right from the user’s device. It’s a reliable, efficient method to eliminate the types of errors that complicated my search for a breakfast burrito.
As we come to the end of this tale, from a seemingly simple desire for a breakfast burrito to an intricate analysis of software testing, I’d like to express my gratitude for your time and engagement. It’s an honor to share this journey with you. Being in a circle focused on high-caliber coding techniques can significantly minimize bugs and inefficiencies. It can, in a lighthearted way, speed up our ‘TTB - Time to Breakfast.’ Small glitches can reveal big vulnerabilities, but collectively, we have the potential to fashion a world where both our breakfast burritos and user experiences are unmatched.
Wishing you all a splendid weekend!
Myers, G. J., Sandler, C., & Badgett, T. (2011). The Art of Software Testing (3rd ed.). Wiley.