Bug in Google Calendar: How I Found It and Was I Rewarded
ℹ️ DISCLAIMER ℹ️
This article was written for educational purposes. I do not work at Google and it is meant to be an example of how a feature might be tested.
A little backstory. As an exercise for my brain, I decided to test Google Calendar Task functionality on an Android smartphone by applying test design techniques. The topic turned out too big for one article so I decided to split the functionalities that a Google Calendar Task has and put them into different articles. This article is about how I managed to find a bug in Google Calendar Task and what test design techniques I used.
I found a bug in Google Calendar app version 2022.28.0–460073692 (July 2022) and it’s still reproducible on version 2022.48.2–494681027-release (Jan 2023). So the bug is sitting there for a while.
Step 1
Let’s say, we create a Task and we want to repeat it with custom repeating settings. I’m sure you all know there is a way to do that in the calendar.
Step 2
Tap “Custom…” in Repeat pop-up.
Step 3
Analyze the form and extract the parameters.
I extracted parameters and their values.
This time let’s focus on TimePeriod with “day” and “year” from the drop-down list. Options ‘’week” and “month” will be covered in a different article.
🚨 Spoiler alert! I found a bug there too.
Step 5
Create a model with parameters and values.
Parameters and values
Frequency: 1, 2, 98, 99
TimePeriod: day, year
Date: [31.12.2100], [Today]
Repeating Ends: Never, Date input, After 1 ocurrence, After 2 ocurrences, After 730 ocurrences
Step 6
Generate test cases and execute them.
As you can see, all parameters went through the Boundary Value Analysis (BVA). Values in green cells are allowed and values in red cells are not. I used only values in green cells and generated pairs for my future test cases via this Pairwise Pict Online tool. Notice, 8 negative tests (values in red cells) I added manually to the output table. The right way to do it is to add only one (not allowed) value per test.
Here is the set of pairs I’ve got in 28 tests
Tests optimization
- test cases DY_21–27 have invalid values that cannot be selected;
- test case DY_28 has a value that can be selected but if you try to save such a task the message will be shown “Start repeating task cannot be in the past” and the task would not be created;
- test cases wrapped with yellow frames are those that didn’t pass verification. The bug I was able to catch showed itself in the intersection of a “year” value and occurrences amount.
Let’s see what is the actual result at Google Calendar when you are trying to create a task with certain custom parameters.
Steps to reproduce the bug
The bug occurs when the user selects “year” in the drop-down list and decides to choose either “never”, “date_input” or “After # occurrences” in the repeating “Ends” parameter (1st screenshot).
Once the user saves that configuration then they see selected repeating options on details (left: 2nd screenshot). However, when the user switches to the task’s view mode the “Frequency” (“Repeats yearly”) is the only value displayed in task details (right: 3rd screenshot).
When the user edits the task in the calendar (3rd screenshot) the repeating “Ends” value ‘for 2 times’ is missing (4th screenshot).
This means the task will repeat over and over again. And never ends. That’s the bug!
Actual result
To end the yearly task I selected the “after 2 occurrences” value. However, it remains on the calendar for more than two occurrences. Just to demonstrate the presence of this bug I’m showing you the task that is displayed yearly in 2024–2027 years. We could go further but it doesn’t change the fact that this task will never end. As I mentioned earlier, same issue can be reproduced with “Never” value or Ends “After 1 occurrence”.
Google Rewards
Sure thing, this is not a security issue where you can get some compensation from Google. So, I won’t be rewarded for that particular bug I found.
But if this bug will be fixed after my report to Google, that would mean I brought some value and improved the quality of the product that millions of people are using around the world.
Although it would be nice to get some sort of badge for the effort.