Whether a product owner/business analyst develops requirements, a developer implements them, a QA engineer tests them, or a technical writer describes functionality, we all want detailed, clear descriptions of expected results.
In this article I will propose an approach to working with the requirement to consider all possible scenarios for the functionality. We will start with a practical use case and then generalize the method into an algorithm with some useful tips.
Imagine you are working on a mobile game. In a new version of the game, we are adding a temporary 14-day event during which
Usersdivided into groups of 100, compete in real time (an Internet connection is therefore necessary).
Competition involves completing game levels and earning points for them. After 14 days, the top three users who earned the most points in each group see a reward pop-up with their medals, and the remaining 97 users receive a reassuring pop-up message: “Good luck next time.”
It is mandatory for users to see either the reward pop-up or the pop-up message only if they open the app within two days (48 hours) after the event ends. If they open the app more than 48 hours after the tournament ends, we suspect they don’t remember participating in the event, and the scenario looks like this:
- if the user earns a winning place (1-3), the medal is “silently” added to the user’s award collection and is available in a separate section of the app interface (no pop-ups). ‘is displayed to the user)
- if the user did not take one of the first three places, no popup is shown to the user and no reward is added to the collection
The key functionality of this event is to handle the case where a user loses Internet connection (offline mode). They can’t see other users’ progress on the leaderboard, but they can still complete levels and get points (because the app allows playing in offline mode). In the application we want to have a parameter
trackTournamentProgressWhenOffline with the following possible values: