Quality Requirements
Quality Requirements
Table of contents
Priority matrix
Business Importance → Technical risk ↓ | L | M | H —|—|—|— L | 003 | 001|006 M | |005 |002 H | | |007, 004
L - low, M - medium, H - high
Quality Attribute Scenario Priority Rationale
High Business Priority Scenarios
- Core product value (QAS002, QAS004)
- Critical for self-hosted reliability (QAS007)
- Foundation of user trust(QAS6)
High Technical Priority Scenarios
- External calendar API integration(QAS004)
- Complex system health recovery(QAS007)
Medium Business Priority Scenarios
- Additional customization features (QAS005)
- Enhanced user satisfaction through faster responses(QAS001)
Medium Technical Priority Scenarios
- Performance optimization(QAS001)
- Typical preference storage mechanisms (QAS005)
Low Business Priority Scenarios
- Minimal impact on core functionality (QAS003)
Low Technical Priority Scenarios
- Minimal technical complexity(QAS001, QAS003, QAS006)
Quality attribute Scenarios
QAS001: Command Response Time
Source of Stimulus: User Stimulus: User sends a bot command Environment: Normal system operation Artifact: Telegram bot processing pipeline. Response: System processes the command and replies to the user with the result Response Measure:
- 90% of commands respond within 5 seconds
QAST001-1: Fast Response for Typical Command
Steps:
- Send the command to the Telegram bot.
- Measure the time between sending the command and receiving the response.
Expected Result:
- The bot replies within 5 seconds.
Success Criteria:
-
At least 9 out of 10 attempts respond in 5 seconds or less.
QAS002: Reliable Reminder Scheduling
Source of Stimulus: User Stimulus: create events with reminders Environment: Normal system operation Artifact: Reminder Scheduler Response: System schedules and delivers reminders accurately Response Measure:
- Maximum reminder delay does not exceed 1 minute
- Zero reminder loss or duplication
QAST002-1: Reminder Delivered on Time
Steps:
- Create an event with a reminder set for 1 minute before the event.
- Wait for the reminder to be delivered.
Expected Result:
- Reminder is delivered no more than 1 minute after their scheduled time
Success Criteria:
- 5/5 test reminders delivered within 1 minute of scheduled time
QAST002-2: No Loss or Duplication
Steps:
- Create 5 events with reminders.
- Check that each reminder is delivered exactly once.
Expected Result:
- Each reminder appears only once; none are missed.
Success Criteria:
- 0 missed reminders, 0 duplicates in a set of 5.
QAS003: User Data Confidentiality
Source of Stimulus: User Stimulus: Attempt to access the calendar bot from a Telegram account other than the primary Environment: Normal system operation Response: The bot allows full calendar access and interaction only to the Telegram account of the first user who ever contacted it. Any further access attempts from other Telegram accounts will be ignored. Response Measure:
- 100% of attempts by any Telegram account other than the primary user will be ignored.
- The ID of the primary user is persistently stored
QAST003-1: Only First User Access
Preconditions
- User already interact with bot
Steps:
- Send a command to the bot from 5 different Telegram accounts.
Expected Result:
- Users does not receive any response or access to data.
Success Criteria:
- 100% of commands from non-primary users are ignored
QAS004: Import calendar
Source of Stimulus: User Stimulus: Importing a calendar events via ics link Environment: Normal system operation Response: The system parses, saves events and generates reminders Response Measure:
- Import time does not exceed 3 minutes.
**QAST004-1: Import calendar with 50 Events **
Precondition:
- Prepare a ics links with 50 events.
Steps:
- Send ics links to the bot.
Expected Result:
- Import completes within 3 minutes.
Success Criteria:
- All 50 events imported with no duplicates or errors.
QAS005: Persistent User Preferences
Source of Stimulus: User Stimulus: The user sets their preferences (timezone, language, quiet hours) Environment: Normal system operation Response: Preferences are saved instantly and reliably; changes are applied to new reminders Response Measure:
- 100% of preference changes persist
- Changes are applied to all new reminders within 1 minute
QAST005-1: Preference Affects Reminders
Steps:
- Set quiet hours to start in 3 minutes, duration = 5 minutes.
- Create an event in 5 minutes with 1-minute reminder
Expected Result:
- The reminder is not sent.
Success Criteria:
- All reminders match the new preferences.
QAST005-2: Event During Quiet Hours - Reminder Before
Steps:
- Set quiet hours: NOW+3 minutes to NOW + 25 minutes
- Create event at NOW+10 minutes (during quiet hours) with 5-minutes reminder
Expected Result:
- No reminder is sent after 5 minutes (original reminder time during quiet hours)
- Reminder is sent at 3 minutes (immediately before quiet hours start)
Success Criteria:
- Zero notifications sent during active quiet hours period
QAST005-3: Event After Quiet Hours - Reminder During
Steps:
- Set quiet hours: NOW + 2 minutes to NOW + 20 minutes
- Create event at NOW + 25 minutes (after quiet hours) with 10-minute reminder
Expected Result:
- Reminder is sent at NOW + 20 minutes (after quiet hours)
- No reminder at NOW + 15 minutes (original reminder time during quiet hours)
Success Criteria:
- 100% of reminders that fall during quiet hours are rescheduled to end quiet hours
QAS006: Event Update Consistency
Source of Stimulus: User Stimulus: Updating an event that has reminders Environment: Normal system operation Response: All related reminders are rescheduled or removed consistently with event changes Response Measure:
- All related reminders are rescheduled according to event changes
QAST006-1: Reminders Updated After Event Change
Steps:
- Create an event in 5 minutes with 3-minute reminder
- Сhange the time of the event in 7 minutes
Expected Result:
- Reminder is delivered in 4 minutes (3 minutes before new event time)
- No reminder is delivered in 2 minutes (original reminder time)
Success Criteria:
- 0/5 reminders are delivered depending on the previous time of the event.
- 5/5 reminders are delivered depending on the new time of the event.
QAST006-2: No Lost Notifications After Deletion
Steps:
- Create 5 events with reminders
- Delete 3 random events
Expected Result:
- 0/3 reminders delivered for deleted events
- 2/2 reminders delivered for remaining events
Success Criteria:
- 0% false positives in reminder cancellation
QAS007: Fault Tolerance and Recovery
Source of Stimulus: System failure, process crash, or server reboot Stimulus: Unexpected bot or persistence layer failure during operation Environment: Production deployment Response: The system automatically restores scheduled reminders, calendar events, user preferences, and authorization state after restart. Users do not experience data loss. Response Measure:
- Zero loss of reminders, events, or user settings after recovery
- System resumes normal operation within 5 minutes of failure
QAST007-1: Recovery After Crash
Steps:
- Create an event and schedule a reminder.
- Simulate a crash (kill the bot process).
- Restart the bot.
Expected Result:
- All data and reminders are restored; reminders are delivered as scheduled.
Success Criteria:
- 100% data recovery (zero loss of events, reminders, or settings)
-
Normal operation resumes within 5 minutes.