Sprint1 9. Quality scenarios - ISIS3510-Group-27/Documentation GitHub Wiki
Quality Scenarios
QS1
| Scenario name | Loss of connectivity while consulting a group profile |
| Quality attributes | Eventual connectivity, resilience |
| App status and context | The Group seeker is in a basement classroom in Bloque ML. The app is in foreground showing the profile of a recommended group, with the cover image and the event list already downloaded |
| Changes in the context | The student walks further into the building, the data connection degrades to a 'lie-fi' zone and is eventually lost while the app is requesting the group's upcoming events |
| System reaction | The app keeps showing the locally cached version of the group profile, marks the events section as possibly outdated with the timestamp of the last successful update, and moves the pending request to a local queue that is retried when connectivity returns. No error dialog blocks the screen |
QS2
| Scenario name | Joining a group without connection |
| Quality attributes | Eventual connectivity, resilience, data consistency |
| App status and context | The Group seeker is on the Ruta bus with no stable connection. The app has the group profile cached and the student is not yet a member of that group |
| Changes in the context | The student taps Join while the device has no data connection, closes the app, and regains connectivity twenty minutes later on campus |
| System reaction | The app registers the join locally, shows the group as pending confirmation rather than as joined, and sends the request when connectivity returns. If the group reached its capacity in the meantime, the app notifies the student that the join could not be completed and restores the group to its previous state instead of silently failing |
QS3
| Scenario name | Location permission denied for event surfacing |
| Quality attributes | Usability, privacy, resilience |
| App status and context | The Group seeker has their class schedule imported and is opening the Today view, which orders nearby events using the current position on campus. Location permission has never been granted |
| Changes in the context | The student rejects the location permission request and continues using the app |
| System reaction | The app does not crash and does not block the feature. It explains in one line which part of the ranking needs location, and falls back to ordering events only by free block and interest match, keeping the permission request available from the event feed for later |
QS4
| Scenario name | Low battery during context-aware event surfacing |
| Quality attributes | Energy efficiency, performance, availability |
| App status and context | The app is in background on a normal weekday, sampling coarse location periodically so it can push nearby events during the student's free blocks. The device battery is at 12% and the operating system has entered power saving mode |
| Changes in the context | The student walks across campus between two classes with the app still in background |
| System reaction | The app reduces the frequency of location sampling and stops requesting fine-grained position, keeping only the push notifications for events the student already confirmed. The behaviour is restored to normal sampling once the device is charging or leaves power saving mode |
QS5
| Scenario name | Memory pressure with the Explore screen loaded |
| Quality attributes | Performance, resilience |
| App status and context | The Explore screen is showing a long list of group cards with cover images. The student has around twenty other applications open on a mid-range Android device |
| Changes in the context | The student puts SENECApp in background to answer a message, and the operating system starts reclaiming memory from background applications |
| System reaction | Before going to background the app saves its state locally: scroll position, applied filters and the group being consulted. Cover images are released from memory first, and when the student returns the app restores the same screen and reloads only the visible images instead of starting from the home screen |
QS6
| Scenario name | Sudden spike of opt-ins on a single interest |
| Quality attributes | Scalability, availability |
| App status and context | The Club initiator published an interest two days ago and it has accumulated a few dozen opt-ins. The critical mass threshold has not been reached |
| Changes in the context | The interest is shared in a large WhatsApp group and several hundred students open it and tap I'm interested within a few minutes |
| System reaction | The backend absorbs the burst without degrading the rest of the application, the opt-in counter converges to the correct value, and the critical mass notification is delivered to the initiator exactly once even though the threshold was crossed by many concurrent requests |
QS7
| Scenario name | Event feed opened at the midday peak |
| Quality attributes | Performance, GUI responsiveness, scalability |
| App status and context | It is 12:00 on a Wednesday, the free block shared by most of the campus. Thousands of students open the Today view within the same few minutes over the campus WiFi |
| Changes in the context | The Group seeker opens the app while walking, expecting to decide what to do before the block ends |
| System reaction | The app renders the cached feed immediately so the screen is never empty, requests the fresh list in the background, and updates the cards in place when the response arrives. Scrolling stays responsive while the request is in flight |
QS8
| Scenario name | Using the app outdoors under direct sunlight |
| Quality attributes | Accessibility, usability |
| App status and context | The Group seeker is crossing campus at noon and opens the event feed on a phone whose screen brightness is already at maximum. The device is set to light theme |
| Changes in the context | Glare makes low-contrast text and light grey elements unreadable while the student walks |
| System reaction | The interface keeps a contrast ratio sufficient for outdoor reading in its light theme, never relies on colour alone to distinguish an official group from a student-created one, and keeps the primary actions of each event card large enough to be tapped while in motion |
QS9
| Scenario name | Blind student joining a group with a screen reader |
| Quality attributes | Accessibility |
| App status and context | A Group seeker with a visual disability uses the app with TalkBack enabled and the system font size set to the largest option. The recommendation list is loaded on the home screen |
| Changes in the context | The student navigates the recommendation list and opens a group profile to decide whether to join |
| System reaction | Every control and image has a text alternative, the reading order follows the visual order of the cards, the level and commitment of the group are announced as text and not only as icons, and the layout reflows at the largest font size without truncating the Join action |
QS10
| Scenario name | Exchange student with the device in another language |
| Quality attributes | Internationalization, usability |
| App status and context | An exchange student installs SENECApp with the device configured in English and a non-Colombian regional format. The groups published on campus are described mostly in Spanish |
| Changes in the context | The student completes onboarding and opens an event published for next Tuesday at 6:00 p.m. |
| System reaction | The interface strings are shown in English, dates, times and the first day of the week follow the device locale, and the content authored by the groups is displayed in its original language without a broken layout when the translated labels are longer than the Spanish ones |
QS11
| Scenario name | Broadcast attempted outside the consenting audience |
| Quality attributes | Security, privacy |
| App status and context | The Group leader is in the management view of a group that came from a promoted interest. The subscriber list contains only students who explicitly opted in, and one of them revoked their subscription yesterday |
| Changes in the context | The leader composes an announcement and tries to send it to the whole list, including the student who revoked, and to a set of students who only viewed the group profile |
| System reaction | The app delivers the announcement only to the students whose opt-in is currently active, excludes the revoked subscriber and the students who never opted in, and shows the leader the real size of the audience reached, without ever exposing the identity or contact data of the non-subscribers |
QS12
| Scenario name | Session expiry while publishing an event |
| Quality attributes | Security, availability, usability |
| App status and context | The Group leader has spent several minutes filling in a new event: title, place, date, time and capacity. The authentication token issued at sign-in is about to expire |
| Changes in the context | The token expires at the moment the leader taps Publish |
| System reaction | The app keeps the draft locally, requests re-authentication instead of discarding the form or publishing with an invalid token, and completes the publication with the fields already entered once the session is renewed. The event is created once, not twice, if the leader taps Publish again |
Contributors: Daniel Vergara, Camilo Castilla, Nicolas Salazar, Jose Manuel Fonseca, Daniel Vargas, Luciana Bacci.