# 1. AI Adaptive Exams — Test Cases

User Type: **Student**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: ai_adaptive_exams.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 |
|---------|--------------------|----------|
| 1.1 Adaptive Exam Delivery | Exam starts at a baseline difficulty | TC-ST-04-01-001 |
| 1.1 Adaptive Exam Delivery | Next question selected based on previous answers (adaptive algorithm) | TC-ST-04-01-002 |
| 1.1 Adaptive Exam Delivery | Difficulty adjusts up on correct answers, down on incorrect | TC-ST-04-01-003 |
| 1.1 Adaptive Exam Delivery | Question pool drawn from the relevant subject and topic | TC-ST-04-01-004 |
| 1.1 Adaptive Exam Delivery | Exam length in questions (fixed) or time (fixed) | TC-ST-04-01-005 |
| 1.1 Adaptive Exam Delivery | Real-time ability estimate updated after each answer | TC-ST-04-01-006 |
| 1.1 Adaptive Exam Delivery | Exam ends when the question or time limit is reached | TC-ST-04-01-007 |
| 1.1 Adaptive Exam Delivery | Adaptive behavior invisible to the Student (no difficulty labels) | TC-ST-04-01-008 |
| 1.1 Adaptive Exam Delivery | Exam session event logging (start, each answer, end) | TC-ST-04-01-009 |
| 1.1 Adaptive Exam Delivery | Audit logging of the adaptive exam delivery | TC-ST-04-01-010 |
| 1.1 Adaptive Exam Delivery | Rule: The adaptive algorithm selects the next question from the relevant subject/topic pool. | TC-ST-04-01-001 |
| 1.1 Adaptive Exam Delivery | Rule: Difficulty adjusts based on correctness; the Student never sees a difficulty label. | TC-ST-04-01-002 |
| 1.1 Adaptive Exam Delivery | Rule: The exam ends at the question or time limit, whichever is configured. | TC-ST-04-01-003 |
| 1.1 Adaptive Exam Delivery | Rule: The ability estimate is updated after each answer but not shown during the exam. | TC-ST-04-01-004 |
| 1.1 Adaptive Exam Delivery | Rule: Exam session events (start, each answer, end) are logged with the exam and the timestamp. | TC-ST-04-01-005 |
| 1.1 Adaptive Exam Delivery | Rule: The adaptive exam delivery is audit-logged with the account, the exam, and the timestamp. | TC-ST-04-01-006 |
| 1.2 Exam Question Types | Multiple choice (single correct answer) | TC-ST-04-01-011 |
| 1.2 Exam Question Types | Multiple select (more than one correct answer) | TC-ST-04-01-012 |
| 1.2 Exam Question Types | True/False | TC-ST-04-01-013 |
| 1.2 Exam Question Types | Fill in the blank (text match with tolerance) | TC-ST-04-01-014 |
| 1.2 Exam Question Types | Numeric answer (numeric match with tolerance) | TC-ST-04-01-015 |
| 1.2 Exam Question Types | Short answer (free text, rubric-based) | TC-ST-04-01-016 |
| 1.2 Exam Question Types | Question navigation (next, previous, jump) | TC-ST-04-01-017 |
| 1.2 Exam Question Types | Flag a question for review | TC-ST-04-01-018 |
| 1.2 Exam Question Types | Answer state tracking (answered, flagged, unanswered) | TC-ST-04-01-019 |
| 1.2 Exam Question Types | Question type event logging | TC-ST-04-01-020 |
| 1.2 Exam Question Types | Audit logging of the exam question types | TC-ST-04-01-021 |
| 1.2 Exam Question Types | Rule: Each question type has its own input and marking behavior. | TC-ST-04-01-011 |
| 1.2 Exam Question Types | Rule: Multiple select requires all correct options and no incorrect ones for full marks. | TC-ST-04-01-012 |
| 1.2 Exam Question Types | Rule: Fill in the blank and numeric answers allow a configured tolerance. | TC-ST-04-01-013 |
| 1.2 Exam Question Types | Rule: A flagged question is marked for review but can still be answered. | TC-ST-04-01-014 |
| 1.2 Exam Question Types | Rule: The question palette shows the state of every question (answered, flagged, unanswered). | TC-ST-04-01-015 |
| 1.2 Exam Question Types | Rule: Question interactions are logged with the question, the type, and the timestamp. | TC-ST-04-01-016 |
| 1.2 Exam Question Types | Rule: The exam question types is audit-logged with the account, the question, and the timestamp. | TC-ST-04-01-017 |
| 1.3 Exam Timer and Submission | Countdown timer shown during the exam | TC-ST-04-01-022 |
| 1.3 Exam Timer and Submission | Auto-submit at time expiry | TC-ST-04-01-023 |
| 1.3 Exam Timer and Submission | Manual "Submit exam" action (early submission) | TC-ST-04-01-024 |
| 1.3 Exam Timer and Submission | Confirmation before manual submission showing unanswered count | TC-ST-04-01-025 |
| 1.3 Exam Timer and Submission | Unanswered questions recorded as unanswered | TC-ST-04-01-026 |
| 1.3 Exam Timer and Submission | Submission timestamp recorded | TC-ST-04-01-027 |
| 1.3 Exam Timer and Submission | Post-submission redirect to results | TC-ST-04-01-028 |
| 1.3 Exam Timer and Submission | Timer and submission event logging | TC-ST-04-01-029 |
| 1.3 Exam Timer and Submission | Audit logging of the exam timer and submission | TC-ST-04-01-030 |
| 1.3 Exam Timer and Submission | Rule: The timer counts down from the configured exam duration. | TC-ST-04-01-022 |
| 1.3 Exam Timer and Submission | Rule: The exam auto-submits at time expiry; no further answers are accepted. | TC-ST-04-01-023 |
| 1.3 Exam Timer and Submission | Rule: Manual submission requires confirmation when there are unanswered questions. | TC-ST-04-01-024 |
| 1.3 Exam Timer and Submission | Rule: Unanswered questions are recorded as unanswered (not zero-marked as answered). | TC-ST-04-01-025 |
| 1.3 Exam Timer and Submission | Rule: The submission timestamp is recorded. | TC-ST-04-01-026 |
| 1.3 Exam Timer and Submission | Rule: Timer and submission events are logged with the exam and the timestamp. | TC-ST-04-01-027 |
| 1.3 Exam Timer and Submission | Rule: The exam timer and submission is audit-logged with the account, the exam, and the timestamp. | TC-ST-04-01-028 |

## 1.1 Adaptive Exam Delivery

### TC-ST-04-01-001 — Exam starts at a baseline difficulty
**Type:** Positive
**Covers:** 1.1 → Exam starts at a baseline difficulty; Rule: The adaptive algorithm selects the next question from the relevant subject/topic pool.
**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: Exam starts at a baseline difficulty.
2. Observe the result and verify the full behavior: Exam starts at a baseline difficulty.
**Expected Result:** Exam starts at a baseline difficulty — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-01-002 — Next question selected based on previous answers (adaptive algorithm)
**Type:** Positive
**Covers:** 1.1 → Next question selected based on previous answers (adaptive algorithm); Rule: Difficulty adjusts based on correctness; the Student never sees a difficulty label.
**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: Next question selected based on previous answers (adaptive algorithm).
2. Observe the result and verify the full behavior: Next question selected based on previous answers (adaptive algorithm).
**Expected Result:** Next question selected based on previous answers (adaptive algorithm) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-003 — Difficulty adjusts up on correct answers, down on incorrect
**Type:** Positive
**Covers:** 1.1 → Difficulty adjusts up on correct answers, down on incorrect; Rule: The exam ends at the question or time limit, whichever is configured.
**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: Difficulty adjusts up on correct answers.
2. Observe the result and verify the full behavior: Difficulty adjusts up on correct answers, down on incorrect.
**Expected Result:** Difficulty adjusts up on correct answers, down on incorrect — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-004 — Question pool drawn from the relevant subject and topic
**Type:** Positive
**Covers:** 1.1 → Question pool drawn from the relevant subject and topic; Rule: The ability estimate is updated after each answer but not shown during the exam.
**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: Question pool drawn from the relevant subject and topic.
2. Observe the result and verify the full behavior: Question pool drawn from the relevant subject and topic.
**Expected Result:** Question pool drawn from the relevant subject and topic — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-005 — Exam length in questions (fixed) or time (fixed)
**Type:** Positive
**Covers:** 1.1 → Exam length in questions (fixed) or time (fixed); Rule: Exam session events (start, each answer, end) are logged with the exam 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: Exam length in questions (fixed) or time (fixed).
2. Observe the result and verify the full behavior: Exam length in questions (fixed) or time (fixed).
**Expected Result:** Exam length in questions (fixed) or time (fixed) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-006 — Real-time ability estimate updated after each answer
**Type:** Positive
**Covers:** 1.1 → Real-time ability estimate updated after each answer; Rule: The adaptive exam delivery is audit-logged with the account, the exam, 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: Real-time ability estimate updated after each answer.
2. Observe the result and verify the full behavior: Real-time ability estimate updated after each answer.
**Expected Result:** Real-time ability estimate updated after each answer — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-007 — Exam ends when the question or time limit is reached
**Type:** Edge
**Covers:** 1.1 → Exam ends when the question or time limit is reached
**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: Exam ends when the question or time limit is reached.
2. Observe the result and verify the full behavior: Exam ends when the question or time limit is reached.
**Expected Result:** Exam ends when the question or time limit is reached — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-008 — Adaptive behavior invisible to the Student (no difficulty labels)
**Type:** Positive
**Covers:** 1.1 → Adaptive behavior invisible to the Student (no difficulty labels)
**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: Adaptive behavior invisible to the Student (no difficulty labels).
2. Observe the result and verify the full behavior: Adaptive behavior invisible to the Student (no difficulty labels).
**Expected Result:** Adaptive behavior invisible to the Student (no difficulty labels) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-009 — Exam session event logging (start, each answer, end)
**Type:** Positive
**Covers:** 1.1 → Exam session event logging (start, each 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: Exam session event logging (start.
2. Observe the result and verify the full behavior: Exam session event logging (start, each answer, end).
**Expected Result:** Exam session event logging (start, each answer, end) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-010 — Audit logging of the adaptive exam delivery
**Type:** Positive
**Covers:** 1.1 → Audit logging of the adaptive exam 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 adaptive exam 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

## 1.2 Exam Question Types

### TC-ST-04-01-011 — Multiple choice (single correct answer)
**Type:** Positive
**Covers:** 1.2 → Multiple choice (single correct answer); Rule: Each question type has its own input and marking behavior.
**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: Multiple choice (single correct answer).
2. Observe the result and verify the full behavior: Multiple choice (single correct answer).
**Expected Result:** Multiple choice (single correct answer) — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-01-012 — Multiple select (more than one correct answer)
**Type:** Positive
**Covers:** 1.2 → Multiple select (more than one correct answer); Rule: Multiple select requires all correct options and no incorrect ones for full marks.
**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: Multiple select (more than one correct answer).
2. Observe the result and verify the full behavior: Multiple select (more than one correct answer).
**Expected Result:** Multiple select (more than one correct answer) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-013 — True/False
**Type:** Positive
**Covers:** 1.2 → True/False; Rule: Fill in the blank and numeric answers allow a configured tolerance.
**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: True/False.
2. Observe the result and verify the full behavior: True/False.
**Expected Result:** True/False — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-014 — Fill in the blank (text match with tolerance)
**Type:** Positive
**Covers:** 1.2 → Fill in the blank (text match with tolerance); Rule: A flagged question is marked for review but can still be answered.
**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: Fill in the blank (text match with tolerance).
2. Observe the result and verify the full behavior: Fill in the blank (text match with tolerance).
**Expected Result:** Fill in the blank (text match with tolerance) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-015 — Numeric answer (numeric match with tolerance)
**Type:** Positive
**Covers:** 1.2 → Numeric answer (numeric match with tolerance); Rule: The question palette shows the state of every question (answered, flagged, unanswered).
**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: Numeric answer (numeric match with tolerance).
2. Observe the result and verify the full behavior: Numeric answer (numeric match with tolerance).
**Expected Result:** Numeric answer (numeric match with tolerance) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-016 — Short answer (free text, rubric-based)
**Type:** Positive
**Covers:** 1.2 → Short answer (free text, rubric-based); Rule: Question interactions are logged with the question, the type, 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: Short answer (free text.
2. Observe the result and verify the full behavior: Short answer (free text, rubric-based).
**Expected Result:** Short answer (free text, rubric-based) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-017 — Question navigation (next, previous, jump)
**Type:** Positive
**Covers:** 1.2 → Question navigation (next, previous, jump); Rule: The exam question types is audit-logged with the account, the question, 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: Question navigation (next.
2. Observe the result and verify the full behavior: Question navigation (next, previous, jump).
**Expected Result:** Question navigation (next, previous, jump) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-018 — Flag a question for review
**Type:** Positive
**Covers:** 1.2 → Flag a question for review
**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: Flag a question for review.
2. Observe the result and verify the full behavior: Flag a question for review.
**Expected Result:** Flag a question for review — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-019 — Answer state tracking (answered, flagged, unanswered)
**Type:** Positive
**Covers:** 1.2 → Answer state tracking (answered, flagged, unanswered)
**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: Answer state tracking (answered.
2. Observe the result and verify the full behavior: Answer state tracking (answered, flagged, unanswered).
**Expected Result:** Answer state tracking (answered, flagged, unanswered) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-020 — Question type event logging
**Type:** Positive
**Covers:** 1.2 → Question type 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: Question type event logging.
2. Observe the result and verify the full behavior: Question type event logging.
**Expected Result:** Question type event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-021 — Audit logging of the exam question types
**Type:** Positive
**Covers:** 1.2 → Audit logging of the exam question types
**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 exam question types.
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

## 1.3 Exam Timer and Submission

### TC-ST-04-01-022 — Countdown timer shown during the exam
**Type:** Positive
**Covers:** 1.3 → Countdown timer shown during the exam; Rule: The timer counts down from the configured exam duration.
**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: Countdown timer shown during the exam.
2. Observe the result and verify the full behavior: Countdown timer shown during the exam.
**Expected Result:** Countdown timer shown during the exam — delivered exactly as documented.
**Priority:** Critical

### TC-ST-04-01-023 — Auto-submit at time expiry
**Type:** Edge
**Covers:** 1.3 → Auto-submit at time expiry; Rule: The exam auto-submits at time expiry; no further answers are accepted.
**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: Auto-submit at time expiry.
2. Observe the result and verify the full behavior: Auto-submit at time expiry.
**Expected Result:** Auto-submit at time expiry — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-024 — Manual "Submit exam" action (early submission)
**Type:** Positive
**Covers:** 1.3 → Manual "Submit exam" action (early submission); Rule: Manual submission requires confirmation when there are unanswered questions.
**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: Manual "Submit exam" action (early submission).
2. Observe the result and verify the full behavior: Manual "Submit exam" action (early submission).
**Expected Result:** Manual "Submit exam" action (early submission) — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-025 — Confirmation before manual submission showing unanswered count
**Type:** Positive
**Covers:** 1.3 → Confirmation before manual submission showing unanswered count; Rule: Unanswered questions are recorded as unanswered (not zero-marked as answered).
**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: Confirmation before manual submission showing unanswered count.
2. Observe the result and verify the full behavior: Confirmation before manual submission showing unanswered count.
**Expected Result:** Confirmation before manual submission showing unanswered count — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-026 — Unanswered questions recorded as unanswered
**Type:** Positive
**Covers:** 1.3 → Unanswered questions recorded as unanswered; Rule: The submission timestamp is recorded.
**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: Unanswered questions recorded as unanswered.
2. Observe the result and verify the full behavior: Unanswered questions recorded as unanswered.
**Expected Result:** Unanswered questions recorded as unanswered — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-027 — Submission timestamp recorded
**Type:** Positive
**Covers:** 1.3 → Submission timestamp recorded; Rule: Timer and submission events are logged with the exam 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: Submission timestamp recorded.
2. Observe the result and verify the full behavior: Submission timestamp recorded.
**Expected Result:** Submission timestamp recorded — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-028 — Post-submission redirect to results
**Type:** Positive
**Covers:** 1.3 → Post-submission redirect to results; Rule: The exam timer and submission is audit-logged with the account, the exam, 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: Post-submission redirect to results.
2. Observe the result and verify the full behavior: Post-submission redirect to results.
**Expected Result:** Post-submission redirect to results — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-029 — Timer and submission event logging
**Type:** Positive
**Covers:** 1.3 → Timer and submission 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: Timer and submission event logging.
2. Observe the result and verify the full behavior: Timer and submission event logging.
**Expected Result:** Timer and submission event logging — delivered exactly as documented.
**Priority:** High

### TC-ST-04-01-030 — Audit logging of the exam timer and submission
**Type:** Positive
**Covers:** 1.3 → Audit logging of the exam timer and submission
**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 exam timer and submission.
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
