# 2. User Analytics Reports — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: user_analytics_reports.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 |
|---------|--------------------|----------|
| 2.1 User Acquisition Analysis | Acquisition: the acquisition (the acquisition, the user, the source, the date) | TC-SA-19-02-001 |
| 2.1 User Acquisition Analysis | Acquisition source: the source (the source of the acquisition, e.g., the organic, the referral, the affiliate) | TC-SA-19-02-002 |
| 2.1 User Acquisition Analysis | Acquisition count: the count (the count of the acquisitions) | TC-SA-19-02-003 |
| 2.1 User Acquisition Analysis | Acquisition period: the period (the period of the acquisitions, e.g., the monthly, the quarterly, the annual) | TC-SA-19-02-004 |
| 2.1 User Acquisition Analysis | Acquisition trend: the trend (the trend of the acquisitions, the period, the change) | TC-SA-19-02-005 |
| 2.1 User Acquisition Analysis | Acquisition comparison: the comparison (the comparison of the acquisitions, the sources, the periods) | TC-SA-19-02-006 |
| 2.1 User Acquisition Analysis | Acquisition export: the export (the acquisitions, the format, the period) | TC-SA-19-02-007 |
| 2.1 User Acquisition Analysis | Audit logging of the acquisition analysis | TC-SA-19-02-008 |
| 2.1 User Acquisition Analysis | Rule: the acquisition is the entry (the acquisition, the user, the source, the date); the acquisition is the start | TC-SA-19-02-001 |
| 2.1 User Acquisition Analysis | Rule: the acquisition source is the channel (the source of the acquisition, e.g., the organic, the referral, the affiliate); the source is the origin | TC-SA-19-02-002 |
| 2.1 User Acquisition Analysis | Rule: the acquisition count is the measure (the count of the acquisitions); the count is the volume | TC-SA-19-02-003 |
| 2.1 User Acquisition Analysis | Rule: the acquisition trend is the direction (the trend of the acquisitions, the period, the change); the trend is the insight | TC-SA-19-02-005 |
| 2.1 User Acquisition Analysis | Rule: the acquisition is visible (the acquisition, the sources, the counts, the period); the analysis is managed | TC-SA-19-02-006 |
| 2.1 User Acquisition Analysis | Rule: acquisition analysis is audit-logged with the acquisition, period, and timestamp | TC-SA-19-02-008 |
| 2.2 Churn Analysis | Churn: the churn (the churn, the user, the date, the reason) | TC-SA-19-02-009 |
| 2.2 Churn Analysis | Churn count: the count (the count of the churned users) | TC-SA-19-02-010 |
| 2.2 Churn Analysis | Churn rate: the rate (the rate of the churn, the percentage) | TC-SA-19-02-011 |
| 2.2 Churn Analysis | Churn reason: the reason (the reason of the churn, e.g., the price, the content, the support) | TC-SA-19-02-012 |
| 2.2 Churn Analysis | Churn period: the period (the period of the churn, e.g., the monthly, the quarterly, the annual) | TC-SA-19-02-013 |
| 2.2 Churn Analysis | Churn trend: the trend (the trend of the churn, the period, the change) | TC-SA-19-02-014 |
| 2.2 Churn Analysis | Churn export: the export (the churn, the format, the period) | TC-SA-19-02-015 |
| 2.2 Churn Analysis | Audit logging of the churn analysis | TC-SA-19-02-016 |
| 2.2 Churn Analysis | Rule: the churn is the loss (the churn, the user, the date, the reason); the churn is the exit | TC-SA-19-02-009 |
| 2.2 Churn Analysis | Rule: the churn count is the measure (the count of the churned users); the count is the volume | TC-SA-19-02-010 |
| 2.2 Churn Analysis | Rule: the churn rate is the ratio (the rate of the churn, the percentage); the rate is the measure | TC-SA-19-02-011 |
| 2.2 Churn Analysis | Rule: the churn reason is the cause (the reason of the churn, e.g., the price, the content, the support); the reason is the insight | TC-SA-19-02-012 |
| 2.2 Churn Analysis | Rule: the churn is visible (the churn, the counts, the reasons, the period); the analysis is managed | TC-SA-19-02-013 |
| 2.2 Churn Analysis | Rule: churn analysis is audit-logged with the churn, period, and timestamp | TC-SA-19-02-016 |
| 2.3 User Growth by Type and Segment | Growth: the growth (the growth, the type, the segment, the count, the period) | TC-SA-19-02-017 |
| 2.3 User Growth by Type and Segment | User type: the type (the type of the user, e.g., the student, the parent, the affiliate, the institute) | TC-SA-19-02-018 |
| 2.3 User Growth by Type and Segment | User segment: the segment (the segment of the user, e.g., the grade, the course, the region) | TC-SA-19-02-019 |
| 2.3 User Growth by Type and Segment | Growth count: the count (the count of the growth) | TC-SA-19-02-020 |
| 2.3 User Growth by Type and Segment | Growth period: the period (the period of the growth, e.g., the monthly, the quarterly, the annual) | TC-SA-19-02-021 |
| 2.3 User Growth by Type and Segment | Growth trend: the trend (the trend of the growth, the period, the change) | TC-SA-19-02-022 |
| 2.3 User Growth by Type and Segment | Growth export: the export (the growth, the format, the period) | TC-SA-19-02-023 |
| 2.3 User Growth by Type and Segment | Audit logging of the growth reporting | TC-SA-19-02-024 |
| 2.3 User Growth by Type and Segment | Rule: the growth is the increase (the growth, the type, the segment, the count, the period); the growth is the movement | TC-SA-19-02-017 |
| 2.3 User Growth by Type and Segment | Rule: the user type is the segment (the type of the user, e.g., the student, the parent, the affiliate, the institute); the type is the category | TC-SA-19-02-018 |
| 2.3 User Growth by Type and Segment | Rule: the user segment is the group (the segment of the user, e.g., the grade, the course, the region); the segment is the slice | TC-SA-19-02-019 |
| 2.3 User Growth by Type and Segment | Rule: the growth count is the measure (the count of the growth); the count is the volume | TC-SA-19-02-020 |
| 2.3 User Growth by Type and Segment | Rule: the growth is visible (the growth, the types, the segments, the period); the report is managed | TC-SA-19-02-021 |
| 2.3 User Growth by Type and Segment | Rule: growth reporting is audit-logged with the growth, period, and timestamp | TC-SA-19-02-024 |

## 2.1 User Acquisition Analysis

### TC-SA-19-02-001 — Acquisition: the acquisition (the acquisition, the user, the source, the date); the acquisition is the start
**Type:** Positive
**Covers:** 2.1 → Acquisition: the acquisition (the acquisition, the user, the source, the date); Rule: the acquisition is the entry (the acquisition, the user, the source, the date); the acquisition is the start
**Preconditions:** Super Admin is logged in; user acquisition data exists.
**Steps:**
1. Open Custom Reporting → User Analytics Reports.
2. Analyze the user acquisition: the acquisition (the acquisition, the user, the source, the date) — verify the acquisition is the entry.
3. Verify each acquisition shows the user, the source, and the date.
4. A new user signs up — verify the acquisition appears in the analysis.
**Expected Result:** The acquisition is analyzed — the acquisition, the user, the source, and the date are the start.
**Priority:** Critical

### TC-SA-19-02-002 — Acquisition source: the source (the source of the acquisition, e.g., the organic, the referral, the affiliate); the source is the origin
**Type:** Positive
**Covers:** 2.1 → Acquisition source: the source (the source of the acquisition, e.g., the organic, the referral, the affiliate); Rule: the acquisition source is the channel (the source of the acquisition, e.g., the organic, the referral, the affiliate); the source is the origin
**Preconditions:** Acquisition data from multiple sources exists.
**Steps:**
1. View the acquisition source: the source (the source of the acquisition, e.g., the organic, the referral, the affiliate) — verify the source is the channel.
2. Verify acquisitions are segmented by source.
3. Verify each source's acquisition count is accurate.
**Expected Result:** The acquisition source is shown — the source of the acquisition (the organic, the referral, the affiliate) is the origin.
**Priority:** High

### TC-SA-19-02-003 — Acquisition count: the count (the count of the acquisitions); the count is the volume
**Type:** Positive
**Covers:** 2.1 → Acquisition count: the count (the count of the acquisitions); Rule: the acquisition count is the measure (the count of the acquisitions); the count is the volume
**Preconditions:** Acquisition data exists.
**Steps:**
1. View the acquisition count: the count (the count of the acquisitions) — verify the count is the measure.
2. Verify the count matches the actual number of acquisitions.
3. A new user signs up — verify the count increments by 1.
**Expected Result:** The acquisition count is shown — the count of the acquisitions is the volume.
**Priority:** High

### TC-SA-19-02-004 — Acquisition period: the period (the period of the acquisitions, e.g., the monthly, the quarterly, the annual); the period is the scope
**Type:** Positive
**Covers:** 2.1 → Acquisition period: the period (the period of the acquisitions, e.g., the monthly, the quarterly, the annual)
**Preconditions:** Acquisition data exists across monthly, quarterly, and annual periods.
**Steps:**
1. Set the acquisition period: the period (the period of the acquisitions, e.g., the monthly, the quarterly, the annual) — verify the period is the scope.
2. Switch between monthly, quarterly, and annual — verify the acquisitions update for each period.
3. Verify each period covers the correct date range.
**Expected Result:** The acquisition period is set — the period of the acquisitions (the monthly, the quarterly, the annual) is the scope.
**Priority:** High

### TC-SA-19-02-005 — Acquisition trend: the trend (the trend of the acquisitions, the period, the change); the trend is the insight
**Type:** Edge
**Covers:** 2.1 → Acquisition trend: the trend (the trend of the acquisitions, the period, the change); Rule: the acquisition trend is the direction (the trend of the acquisitions, the period, the change); the trend is the insight
**Preconditions:** Acquisition data exists with an increase in one period and a decrease in another; a period with zero acquisitions also exists.
**Steps:**
1. View the acquisition trend: the trend (the trend of the acquisitions, the period, the change) — verify the trend is the direction.
2. Verify the increase is shown for the growing period and the decrease for the declining period.
3. View a period with zero acquisitions — verify the trend shows 0 (no error).
**Expected Result:** The acquisition trend is shown — the trend of the acquisitions, the period, and the change are the insight; a zero-acquisition period is handled.
**Priority:** High

### TC-SA-19-02-006 — Acquisition comparison: the comparison (the comparison of the acquisitions, the sources, the periods); the analysis is managed
**Type:** Positive
**Covers:** 2.1 → Acquisition comparison: the comparison (the comparison of the acquisitions, the sources, the periods); Rule: the acquisition is visible (the acquisition, the sources, the counts, the period); the analysis is managed
**Preconditions:** Acquisition data exists across multiple sources and periods.
**Steps:**
1. Compare the acquisitions: the comparison (the comparison of the acquisitions, the sources, the periods) — verify the acquisition is visible.
2. Verify the comparison shows the acquisitions across the selected sources and periods.
3. Verify the comparison values are accurate.
**Expected Result:** The acquisition comparison works — the comparison of the acquisitions across the sources and periods is visible.
**Priority:** High

### TC-SA-19-02-007 — Acquisition export: the export (the acquisitions, the format, the period); the export is the record
**Type:** Positive
**Covers:** 2.1 → Acquisition export: the export (the acquisitions, the format, the period)
**Preconditions:** Acquisition data exists for a period.
**Steps:**
1. Export the acquisitions: the export (the acquisitions, the format, the period).
2. Verify the export is generated in the selected format.
3. Verify the exported data matches the acquisition analysis.
**Expected Result:** The acquisitions are exported — the acquisitions in the selected format for the period are generated.
**Priority:** Medium

### TC-SA-19-02-008 — Acquisition analysis is audit-logged with the acquisition, period, and timestamp
**Type:** Positive
**Covers:** 2.1 → Audit logging of the acquisition analysis; Rule: acquisition analysis is audit-logged with the acquisition, period, and timestamp
**Preconditions:** Super Admin has analyzed the user acquisition.
**Steps:**
1. Open the audit trail and filter by "acquisition".
2. Verify entries show the acquisition, the period, and the timestamp.
**Expected Result:** The acquisition analysis is audit-logged with the acquisition, period, and timestamp.
**Priority:** Critical

## 2.2 Churn Analysis

### TC-SA-19-02-009 — Churn: the churn (the churn, the user, the date, the reason); the churn is the exit
**Type:** Positive
**Covers:** 2.2 → Churn: the churn (the churn, the user, the date, the reason); Rule: the churn is the loss (the churn, the user, the date, the reason); the churn is the exit
**Preconditions:** Churn data exists.
**Steps:**
1. Analyze the churn: the churn (the churn, the user, the date, the reason) — verify the churn is the loss.
2. Verify each churn shows the user, the date, and the reason.
3. A user cancels their subscription — verify the churn appears in the analysis.
**Expected Result:** The churn is analyzed — the churn, the user, the date, and the reason are the exit.
**Priority:** Critical

### TC-SA-19-02-010 — Churn count: the count (the count of the churned users); the count is the volume
**Type:** Positive
**Covers:** 2.2 → Churn count: the count (the count of the churned users); Rule: the churn count is the measure (the count of the churned users); the count is the volume
**Preconditions:** Churn data exists.
**Steps:**
1. View the churn count: the count (the count of the churned users) — verify the count is the measure.
2. Verify the count matches the actual number of churned users.
3. A user cancels — verify the count increments by 1.
**Expected Result:** The churn count is shown — the count of the churned users is the volume.
**Priority:** High

### TC-SA-19-02-011 — Churn rate: the rate (the rate of the churn, the percentage); the rate is the measure
**Type:** Edge
**Covers:** 2.2 → Churn rate: the rate (the rate of the churn, the percentage); Rule: the churn rate is the ratio (the rate of the churn, the percentage); the rate is the measure
**Preconditions:** Churn data exists; a period with zero total users (division edge) also exists.
**Steps:**
1. View the churn rate: the rate (the rate of the churn, the percentage) — verify the rate is the ratio.
2. Verify the rate is calculated correctly (churned users / total users × 100).
3. View a period with zero total users — verify the rate shows 0% (no division error).
**Expected Result:** The churn rate is shown — the rate of the churn and the percentage are the measure; a zero-user period is handled.
**Priority:** High

### TC-SA-19-02-012 — Churn reason: the reason (the reason of the churn, e.g., the price, the content, the support); the reason is the insight
**Type:** Positive
**Covers:** 2.2 → Churn reason: the reason (the reason of the churn, e.g., the price, the content, the support); Rule: the churn reason is the cause (the reason of the churn, e.g., the price, the content, the support); the reason is the insight
**Preconditions:** Churn data with multiple reasons exists.
**Steps:**
1. View the churn reason: the reason (the reason of the churn, e.g., the price, the content, the support) — verify the reason is the cause.
2. Verify churns are segmented by reason.
3. Verify each reason's churn count is accurate.
**Expected Result:** The churn reason is shown — the reason of the churn (the price, the content, the support) is the insight.
**Priority:** High

### TC-SA-19-02-013 — Churn period: the period (the period of the churn, e.g., the monthly, the quarterly, the annual); the analysis is managed
**Type:** Positive
**Covers:** 2.2 → Churn period: the period (the period of the churn, e.g., the monthly, the quarterly, the annual); Rule: the churn is visible (the churn, the counts, the reasons, the period); the analysis is managed
**Preconditions:** Churn data exists across monthly, quarterly, and annual periods.
**Steps:**
1. Set the churn period: the period (the period of the churn, e.g., the monthly, the quarterly, the annual) — verify the period is the scope.
2. Switch between monthly, quarterly, and annual — verify the churn updates for each period.
3. Verify the churn is visible for the period.
**Expected Result:** The churn period is set — the period of the churn (the monthly, the quarterly, the annual) is the scope; the analysis is managed.
**Priority:** High

### TC-SA-19-02-014 — Churn trend: the trend (the trend of the churn, the period, the change); the trend is the direction
**Type:** Positive
**Covers:** 2.2 → Churn trend: the trend (the trend of the churn, the period, the change)
**Preconditions:** Churn data exists across multiple periods.
**Steps:**
1. View the churn trend: the trend (the trend of the churn, the period, the change) — verify the trend is the direction.
2. Verify the trend shows the churn over time with the period and the change.
3. Verify the trend values are accurate.
**Expected Result:** The churn trend is shown — the trend of the churn, the period, and the change are the direction.
**Priority:** High

### TC-SA-19-02-015 — Churn export: the export (the churn, the format, the period); the export is the record
**Type:** Positive
**Covers:** 2.2 → Churn export: the export (the churn, the format, the period)
**Preconditions:** Churn data exists for a period.
**Steps:**
1. Export the churn: the export (the churn, the format, the period).
2. Verify the export is generated in the selected format.
3. Verify the exported data matches the churn analysis.
**Expected Result:** The churn is exported — the churn in the selected format for the period is generated.
**Priority:** Medium

### TC-SA-19-02-016 — Churn analysis is audit-logged with the churn, period, and timestamp
**Type:** Positive
**Covers:** 2.2 → Audit logging of the churn analysis; Rule: churn analysis is audit-logged with the churn, period, and timestamp
**Preconditions:** Super Admin has analyzed the churn.
**Steps:**
1. Open the audit trail and filter by "churn".
2. Verify entries show the churn, the period, and the timestamp.
**Expected Result:** The churn analysis is audit-logged with the churn, period, and timestamp.
**Priority:** Critical

## 2.3 User Growth by Type and Segment

### TC-SA-19-02-017 — Growth: the growth (the growth, the type, the segment, the count, the period); the growth is the movement
**Type:** Positive
**Covers:** 2.3 → Growth: the growth (the growth, the type, the segment, the count, the period); Rule: the growth is the increase (the growth, the type, the segment, the count, the period); the growth is the movement
**Preconditions:** User growth data exists across types and segments.
**Steps:**
1. Report the user growth by type and segment: the growth (the growth, the type, the segment, the count, the period) — verify the growth is the increase.
2. Verify each growth entry shows the type, the segment, the count, and the period.
3. New users join — verify the growth updates.
**Expected Result:** The growth is reported — the growth, the type, the segment, the count, and the period are the movement.
**Priority:** Critical

### TC-SA-19-02-018 — User type: the type (the type of the user, e.g., the student, the parent, the affiliate, the institute); the type is the category
**Type:** Positive
**Covers:** 2.3 → User type: the type (the type of the user, e.g., the student, the parent, the affiliate, the institute); Rule: the user type is the segment (the type of the user, e.g., the student, the parent, the affiliate, the institute); the type is the category
**Preconditions:** Growth data exists for multiple user types.
**Steps:**
1. Select the user types: the type (the type of the user, e.g., the student, the parent, the affiliate, the institute) — verify the type is the segment.
2. Verify growth is segmented by user type.
3. Verify each type's growth count is accurate.
**Expected Result:** The user type is shown — the type of the user (the student, the parent, the affiliate, the institute) is the category.
**Priority:** High

### TC-SA-19-02-019 — User segment: the segment (the segment of the user, e.g., the grade, the course, the region); the segment is the slice
**Type:** Positive
**Covers:** 2.3 → User segment: the segment (the segment of the user, e.g., the grade, the course, the region); Rule: the user segment is the group (the segment of the user, e.g., the grade, the course, the region); the segment is the slice
**Preconditions:** Growth data exists for multiple user segments.
**Steps:**
1. Select the user segments: the segment (the segment of the user, e.g., the grade, the course, the region) — verify the segment is the group.
2. Verify growth is segmented by user segment.
3. Verify each segment's growth count is accurate.
**Expected Result:** The user segment is shown — the segment of the user (the grade, the course, the region) is the slice.
**Priority:** High

### TC-SA-19-02-020 — Growth count: the count (the count of the growth); the count is the volume
**Type:** Positive
**Covers:** 2.3 → Growth count: the count (the count of the growth); Rule: the growth count is the measure (the count of the growth); the count is the volume
**Preconditions:** Growth data exists.
**Steps:**
1. View the growth count: the count (the count of the growth) — verify the count is the measure.
2. Verify the count matches the actual number of new users in the period.
**Expected Result:** The growth count is shown — the count of the growth is the volume.
**Priority:** High

### TC-SA-19-02-021 — Growth period: the period (the period of the growth, e.g., the monthly, the quarterly, the annual); the report is managed
**Type:** Positive
**Covers:** 2.3 → Growth period: the period (the period of the growth, e.g., the monthly, the quarterly, the annual); Rule: the growth is visible (the growth, the types, the segments, the period); the report is managed
**Preconditions:** Growth data exists across monthly, quarterly, and annual periods.
**Steps:**
1. Set the growth period: the period (the period of the growth, e.g., the monthly, the quarterly, the annual) — verify the period is the scope.
2. Switch between monthly, quarterly, and annual — verify the growth updates for each period.
3. Verify the growth is visible for the period.
**Expected Result:** The growth period is set — the period of the growth (the monthly, the quarterly, the annual) is the scope; the report is managed.
**Priority:** High

### TC-SA-19-02-022 — Growth trend: the trend (the trend of the growth, the period, the change); the trend is the direction
**Type:** Positive
**Covers:** 2.3 → Growth trend: the trend (the trend of the growth, the period, the change)
**Preconditions:** Growth data exists across multiple periods.
**Steps:**
1. View the growth trend: the trend (the trend of the growth, the period, the change) — verify the trend is the direction.
2. Verify the trend shows the growth over time with the period and the change.
3. Verify the trend values are accurate.
**Expected Result:** The growth trend is shown — the trend of the growth, the period, and the change are the direction.
**Priority:** High

### TC-SA-19-02-023 — Growth export: the export (the growth, the format, the period); the export is the record
**Type:** Positive
**Covers:** 2.3 → Growth export: the export (the growth, the format, the period)
**Preconditions:** Growth data exists for a period.
**Steps:**
1. Export the growth: the export (the growth, the format, the period).
2. Verify the export is generated in the selected format.
3. Verify the exported data matches the growth report.
**Expected Result:** The growth is exported — the growth in the selected format for the period is generated.
**Priority:** Medium

### TC-SA-19-02-024 — Growth reporting is audit-logged with the growth, period, and timestamp
**Type:** Positive
**Covers:** 2.3 → Audit logging of the growth reporting; Rule: growth reporting is audit-logged with the growth, period, and timestamp
**Preconditions:** Super Admin has reported the user growth.
**Steps:**
1. Open the audit trail and filter by "growth".
2. Verify entries show the growth, the period, and the timestamp.
**Expected Result:** The growth reporting is audit-logged with the growth, period, and timestamp.
**Priority:** Critical
