# 3. Practice Quizzes — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: practice_quizzes.md — every feature, sub-feature, and rule covered

---

## Test Execution Policy
- Zero tolerance: any deviation from documented behavior = FAILED = bug
- Every bug is immediately logged/reported (Bug ID, feature, sub-feature, expected vs actual, severity) and fixed 100% before the group passes
- Feature group passes only at 100% test pass rate

## Coverage Matrix
| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 3.1 Quiz Delivery and Practice Modes | Start a practice quiz on a chosen topic | TC-ST-04-03-001 |
| 3.1 Quiz Delivery and Practice Modes | Practice modes: timed, untimed, focus (weak topics) | TC-ST-04-03-002 |
| 3.1 Quiz Delivery and Practice Modes | Focus mode auto-selects the Student's weak topics | TC-ST-04-03-003 |
| 3.1 Quiz Delivery and Practice Modes | Quiz length (number of questions) | TC-ST-04-03-004 |
| 3.1 Quiz Delivery and Practice Modes | Immediate feedback option (see result after each question) | TC-ST-04-03-005 |
| 3.1 Quiz Delivery and Practice Modes | Unlimited retakes for practice | TC-ST-04-03-006 |
| 3.1 Quiz Delivery and Practice Modes | Quiz available from a course, topic, or the practice hub | TC-ST-04-03-007 |
| 3.1 Quiz Delivery and Practice Modes | Quiz session event logging (start, answer, end) | TC-ST-04-03-008 |
| 3.1 Quiz Delivery and Practice Modes | Audit logging of the quiz delivery | TC-ST-04-03-009 |
| 3.1 Quiz Delivery and Practice Modes | Rule: Practice quizzes allow unlimited retakes; they do not count toward a single exam attempt. | TC-ST-04-03-001 |
| 3.1 Quiz Delivery and Practice Modes | Rule: Focus mode selects questions from the Student's identified weak topics. | TC-ST-04-03-002 |
| 3.1 Quiz Delivery and Practice Modes | Rule: Immediate feedback, when on, shows correctness after each question. | TC-ST-04-03-003 |
| 3.1 Quiz Delivery and Practice Modes | Rule: Timed mode enforces a per-quiz time limit; untimed mode does not. | TC-ST-04-03-004 |
| 3.1 Quiz Delivery and Practice Modes | Rule: Quiz sessions are logged with the topic, the mode, and the timestamp. | TC-ST-04-03-005 |
| 3.1 Quiz Delivery and Practice Modes | Rule: The quiz delivery is audit-logged with the account, the quiz, and the timestamp. | TC-ST-04-03-006 |
| 3.2 Quiz Results and Instant Feedback | Quiz score and percentage | TC-ST-04-03-010 |
| 3.2 Quiz Results and Instant Feedback | Per-question correct/incorrect with the correct answer | TC-ST-04-03-011 |
| 3.2 Quiz Results and Instant Feedback | Brief explanation per question | TC-ST-04-03-012 |
| 3.2 Quiz Results and Instant Feedback | Topic practice statistics (attempts, average score) | TC-ST-04-03-013 |
| 3.2 Quiz Results and Instant Feedback | Result feeds weak-topic identification | TC-ST-04-03-014 |
| 3.2 Quiz Results and Instant Feedback | "Practice again" action | TC-ST-04-03-015 |
| 3.2 Quiz Results and Instant Feedback | Results history for practice quizzes | TC-ST-04-03-016 |
| 3.2 Quiz Results and Instant Feedback | Results event logging | TC-ST-04-03-017 |
| 3.2 Quiz Results and Instant Feedback | Audit logging of the quiz results | TC-ST-04-03-018 |
| 3.2 Quiz Results and Instant Feedback | Rule: The quiz score is the percentage of correct answers. | TC-ST-04-03-010 |
| 3.2 Quiz Results and Instant Feedback | Rule: Practice quiz results feed the topic practice statistics and weak-topic identification. | TC-ST-04-03-011 |
| 3.2 Quiz Results and Instant Feedback | Rule: "Practice again" starts a fresh attempt; it does not overwrite the previous result. | TC-ST-04-03-012 |
| 3.2 Quiz Results and Instant Feedback | Rule: The results history retains all practice quiz attempts. | TC-ST-04-03-013 |
| 3.2 Quiz Results and Instant Feedback | Rule: Results events are logged with the quiz, the score, and the timestamp. | TC-ST-04-03-014 |
| 3.2 Quiz Results and Instant Feedback | Rule: The quiz results is audit-logged with the account, the quiz, and the timestamp. | TC-ST-04-03-015 |
| 3.3 Daily Practice and Streaks | Daily practice set generated for the Student | TC-ST-04-03-019 |
| 3.3 Daily Practice and Streaks | Complete the daily set to increment the streak | TC-ST-04-03-020 |
| 3.3 Daily Practice and Streaks | Streak counter shown on the dashboard | TC-ST-04-03-021 |
| 3.3 Daily Practice and Streaks | Streak resets on a missed day (with a grace rule) | TC-ST-04-03-022 |
| 3.3 Daily Practice and Streaks | Streak feeds gamification (points, badges) | TC-ST-04-03-023 |
| 3.3 Daily Practice and Streaks | Daily set adapts to weak topics | TC-ST-04-03-024 |
| 3.3 Daily Practice and Streaks | Streak history view | TC-ST-04-03-025 |
| 3.3 Daily Practice and Streaks | Streak event logging (increment, reset) | TC-ST-04-03-026 |
| 3.3 Daily Practice and Streaks | Audit logging of the daily practice and streaks | TC-ST-04-03-027 |
| 3.3 Daily Practice and Streaks | Rule: The daily set is generated once per day; completing it increments the streak. | TC-ST-04-03-019 |
| 3.3 Daily Practice and Streaks | Rule: The streak resets on a missed day, subject to a configured grace rule. | TC-ST-04-03-020 |
| 3.3 Daily Practice and Streaks | Rule: The streak feeds gamification (points, badges) per the platform's rules. | TC-ST-04-03-021 |
| 3.3 Daily Practice and Streaks | Rule: The daily set adapts to the Student's weak topics. | TC-ST-04-03-022 |
| 3.3 Daily Practice and Streaks | Rule: Streak events (increment, reset) are logged with the date and the timestamp. | TC-ST-04-03-023 |
| 3.3 Daily Practice and Streaks | Rule: The daily practice and streaks is audit-logged with the account, the date, and the timestamp. | TC-ST-04-03-024 |

## 3.1 Quiz Delivery and Practice Modes

### TC-ST-04-03-001 — Start a practice quiz on a chosen topic
**Type:** Positive
**Covers:** 3.1 → Start a practice quiz on a chosen topic; Rule: Practice quizzes allow unlimited retakes; they do not count toward a single exam attempt.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Start a practice quiz on a chosen topic.
2. Observe the result and verify the full behavior: Start a practice quiz on a chosen topic.
**Expected Result:** Start a practice quiz on a chosen topic — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-03-002 — Practice modes: timed, untimed, focus (weak topics)
**Type:** Edge
**Covers:** 3.1 → Practice modes: timed, untimed, focus (weak topics); Rule: Focus mode selects questions from the Student's identified weak topics.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Practice modes: timed.
2. Observe the result and verify the full behavior: Practice modes: timed, untimed, focus (weak topics).
**Expected Result:** Practice modes: timed, untimed, focus (weak topics) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-003 — Focus mode auto-selects the Student's weak topics
**Type:** Edge
**Covers:** 3.1 → Focus mode auto-selects the Student's weak topics; Rule: Immediate feedback, when on, shows correctness after each question.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Focus mode auto-selects the Student's weak topics.
2. Observe the result and verify the full behavior: Focus mode auto-selects the Student's weak topics.
**Expected Result:** Focus mode auto-selects the Student's weak topics — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-004 — Quiz length (number of questions)
**Type:** Positive
**Covers:** 3.1 → Quiz length (number of questions); Rule: Timed mode enforces a per-quiz time limit; untimed mode does not.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Quiz length (number of questions).
2. Observe the result and verify the full behavior: Quiz length (number of questions).
**Expected Result:** Quiz length (number of questions) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-005 — Immediate feedback option (see result after each question)
**Type:** Positive
**Covers:** 3.1 → Immediate feedback option (see result after each question); Rule: Quiz sessions are logged with the topic, the mode, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Immediate feedback option (see result after each question).
2. Observe the result and verify the full behavior: Immediate feedback option (see result after each question).
**Expected Result:** Immediate feedback option (see result after each question) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-006 — Unlimited retakes for practice
**Type:** Edge
**Covers:** 3.1 → Unlimited retakes for practice; Rule: The quiz delivery is audit-logged with the account, the quiz, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Unlimited retakes for practice.
2. Observe the result and verify the full behavior: Unlimited retakes for practice.
**Expected Result:** Unlimited retakes for practice — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-007 — Quiz available from a course, topic, or the practice hub
**Type:** Positive
**Covers:** 3.1 → Quiz available from a course, topic, or the practice hub
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Quiz available from a course.
2. Observe the result and verify the full behavior: Quiz available from a course, topic, or the practice hub.
**Expected Result:** Quiz available from a course, topic, or the practice hub — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-008 — Quiz session event logging (start, answer, end)
**Type:** Positive
**Covers:** 3.1 → Quiz session event logging (start, answer, end)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Quiz session event logging (start.
2. Observe the result and verify the full behavior: Quiz session event logging (start, answer, end).
**Expected Result:** Quiz session event logging (start, answer, end) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-009 — Audit logging of the quiz delivery
**Type:** Positive
**Covers:** 3.1 → Audit logging of the quiz delivery
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the quiz delivery.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 3.2 Quiz Results and Instant Feedback

### TC-ST-04-03-010 — Quiz score and percentage
**Type:** Positive
**Covers:** 3.2 → Quiz score and percentage; Rule: The quiz score is the percentage of correct answers.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Quiz score and percentage.
2. Observe the result and verify the full behavior: Quiz score and percentage.
**Expected Result:** Quiz score and percentage — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-03-011 — Per-question correct/incorrect with the correct answer
**Type:** Positive
**Covers:** 3.2 → Per-question correct/incorrect with the correct answer; Rule: Practice quiz results feed the topic practice statistics and weak-topic identification.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Per-question correct/incorrect with the correct answer.
2. Observe the result and verify the full behavior: Per-question correct/incorrect with the correct answer.
**Expected Result:** Per-question correct/incorrect with the correct answer — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-012 — Brief explanation per question
**Type:** Positive
**Covers:** 3.2 → Brief explanation per question; Rule: "Practice again" starts a fresh attempt; it does not overwrite the previous result.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Brief explanation per question.
2. Observe the result and verify the full behavior: Brief explanation per question.
**Expected Result:** Brief explanation per question — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-013 — Topic practice statistics (attempts, average score)
**Type:** Positive
**Covers:** 3.2 → Topic practice statistics (attempts, average score); Rule: The results history retains all practice quiz attempts.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Topic practice statistics (attempts.
2. Observe the result and verify the full behavior: Topic practice statistics (attempts, average score).
**Expected Result:** Topic practice statistics (attempts, average score) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-014 — Result feeds weak-topic identification
**Type:** Edge
**Covers:** 3.2 → Result feeds weak-topic identification; Rule: Results events are logged with the quiz, the score, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Result feeds weak-topic identification.
2. Observe the result and verify the full behavior: Result feeds weak-topic identification.
**Expected Result:** Result feeds weak-topic identification — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-015 — "Practice again" action
**Type:** Positive
**Covers:** 3.2 → "Practice again" action; Rule: The quiz results is audit-logged with the account, the quiz, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: "Practice again" action.
2. Observe the result and verify the full behavior: "Practice again" action.
**Expected Result:** "Practice again" action — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-016 — Results history for practice quizzes
**Type:** Positive
**Covers:** 3.2 → Results history for practice quizzes
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Results history for practice quizzes.
2. Observe the result and verify the full behavior: Results history for practice quizzes.
**Expected Result:** Results history for practice quizzes — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-017 — Results event logging
**Type:** Positive
**Covers:** 3.2 → Results event logging
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Results event logging.
2. Observe the result and verify the full behavior: Results event logging.
**Expected Result:** Results event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-018 — Audit logging of the quiz results
**Type:** Positive
**Covers:** 3.2 → Audit logging of the quiz results
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the quiz results.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical

## 3.3 Daily Practice and Streaks

### TC-ST-04-03-019 — Daily practice set generated for the Student
**Type:** Positive
**Covers:** 3.3 → Daily practice set generated for the Student; Rule: The daily set is generated once per day; completing it increments the streak.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Daily practice set generated for the Student.
2. Observe the result and verify the full behavior: Daily practice set generated for the Student.
**Expected Result:** Daily practice set generated for the Student — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-03-020 — Complete the daily set to increment the streak
**Type:** Positive
**Covers:** 3.3 → Complete the daily set to increment the streak; Rule: The streak resets on a missed day, subject to a configured grace rule.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Complete the daily set to increment the streak.
2. Observe the result and verify the full behavior: Complete the daily set to increment the streak.
**Expected Result:** Complete the daily set to increment the streak — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-021 — Streak counter shown on the dashboard
**Type:** Positive
**Covers:** 3.3 → Streak counter shown on the dashboard; Rule: The streak feeds gamification (points, badges) per the platform's rules.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Streak counter shown on the dashboard.
2. Observe the result and verify the full behavior: Streak counter shown on the dashboard.
**Expected Result:** Streak counter shown on the dashboard — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-022 — Streak resets on a missed day (with a grace rule)
**Type:** Positive
**Covers:** 3.3 → Streak resets on a missed day (with a grace rule); Rule: The daily set adapts to the Student's weak topics.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Streak resets on a missed day (with a grace rule).
2. Observe the result and verify the full behavior: Streak resets on a missed day (with a grace rule).
**Expected Result:** Streak resets on a missed day (with a grace rule) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-023 — Streak feeds gamification (points, badges)
**Type:** Positive
**Covers:** 3.3 → Streak feeds gamification (points, badges); Rule: Streak events (increment, reset) are logged with the date and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Streak feeds gamification (points.
2. Observe the result and verify the full behavior: Streak feeds gamification (points, badges).
**Expected Result:** Streak feeds gamification (points, badges) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-024 — Daily set adapts to weak topics
**Type:** Edge
**Covers:** 3.3 → Daily set adapts to weak topics; Rule: The daily practice and streaks is audit-logged with the account, the date, and the timestamp.
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Daily set adapts to weak topics.
2. Observe the result and verify the full behavior: Daily set adapts to weak topics.
**Expected Result:** Daily set adapts to weak topics — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-025 — Streak history view
**Type:** Positive
**Covers:** 3.3 → Streak history view
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Streak history view.
2. Observe the result and verify the full behavior: Streak history view.
**Expected Result:** Streak history view — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-026 — Streak event logging (increment, reset)
**Type:** Positive
**Covers:** 3.3 → Streak event logging (increment, reset)
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, set up the precondition and perform: Streak event logging (increment.
2. Observe the result and verify the full behavior: Streak event logging (increment, reset).
**Expected Result:** Streak event logging (increment, reset) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-03-027 — Audit logging of the daily practice and streaks
**Type:** Positive
**Covers:** 3.3 → Audit logging of the daily practice and streaks
**Preconditions:** A Student account is active and the Student is in the state required for this behavior.
**Steps:**
1. As a Student, perform the action associated with: Audit logging of the daily practice and streaks.
2. Open the relevant activity / audit log and verify the event is recorded with the account, the action, and the timestamp.
**Expected Result:** The action is audit-logged — the account, the action, and the timestamp are recorded.
**Priority:** Critical
