Skip to main content

QA Requirements and Test Basis

This document is the starting reference for functional QA of KITA Future LMS. Use requirement IDs in bug titles, test cases, and evidenceβ€”for example, [QUIZ-004] Timer does not auto-submit.

AttributeValue
ProductKITA Future / Codeverta LMS
Code baselinelms.codeverta.com@782ecb8377da
Baseline date14 August 2026
Document levelImplemented requirement / test basis
PriorityP0 critical, P1 primary flow, P2 supporting
Moving baseline

If the tested build is newer than the baseline above, record its commit/build number in the test run and perform impact analysis for changes after this baseline.

1. Purpose and scope​

Included​

  • landing and course discovery;
  • registration, activation, password login, passkeys, password reset, and logout;
  • role access for roles 10, 20, 30, 40, 99, and 100;
  • learning, assignments, quizzes, progress, schedules, and certificates;
  • parent and child-account relationships;
  • course authoring, grading, analytics, and mentor finance;
  • AI/mentor chat, community, notifications, and profiles;
  • subscriptions, promos, checkout, payment status, and course purchases;
  • user, content, community, readiness, wallet, and audit administration.

Excluded from this functional baseline​

  • pedagogical accuracy of course content;
  • live bank/payment-gateway settlement in production;
  • factual correctness of generative-AI answers;
  • full penetration testing, production-scale load testing, and email deliverability across providers.

2. Roles, authorization, and test accounts​

PersonaRoleMinimum accountsMandatory variants
Visitorβ€”1 anonymous sessionmobile and desktop
Parent102internal; external/creator parent
Student203no plan; active plan; expired plan
Internal teacher301owns draft and published courses
External mentor402selling locked; selling unlocked
Admin991active tenant
Superadmin1001root/system operations
Negative accounteach relevant role2disabled; wrong password/expired credential

Use the same tenant for every test run except tenant-isolation cases. Never use production data or real children's identities.

3. Minimum test data​

  1. Two tenants with different data for isolation testing.
  2. A free course, a subscription course, and a one-time-purchase course.
  3. At least one draft and one published course; the published course has two sequential units.
  4. Text, video/YouTube, document, assignment, and prerequisite-locked lessons.
  5. An untimed quiz and a timed quiz with passing score, attempt limit, randomization, and at least two question types.
  6. An active certificate template and a course without certificates.
  7. Valid, not-yet-valid, expired, quota-exhausted, and incompatible promo codes.
  8. Payments in pending, paid/completed, expired, failed, and approval states where available.
  9. A schedule template with a standard and an all-day item.
  10. Community posts with media, polls, comments, reports, bookmarks, locked, and pinned states.
  11. Mentor balances that are sufficient/insufficient, a complete payout account, and pending/approved/rejected withdrawals.
  12. An eligible student free-trial plan, parent and parent-external plans, and a plan requiring approval.
  13. Trial accounts with seven days remaining, expiring today, and already expired.

4. Functional requirements and acceptance criteria​

4.1 Authentication and sessions​

IDPRequirement and acceptance criteria
AUTH-001P0Registration/guest checkout rejects an existing email or username and creates no duplicate account.
AUTH-002P0A valid activation token activates the account after a valid password confirmation; missing, invalid, expired, or used tokens are rejected.
AUTH-003P0Password login succeeds only for active credentials and the correct role type; failures create no session.
AUTH-004P1Password-reset requests return a neutral response, validate CAPTCHA, and accept only the latest reset token. The new password must meet the displayed rules.
AUTH-005P1A registered passkey can log in; invalid/expired challenges or device cancellation create no session.
AUTH-006P0Logout removes local/server session state; invalid refresh tokens or disabled accounts cannot use protected endpoints.
AUTH-007P0An admin using impersonation sees a clear indicator and can return to the original account; the target must not have equal or higher privilege.

4.2 Landing page and readiness assessments​

IDPRequirement and acceptance criteria
LAND-001P1The landing page opens without login and renders navigation, product proposition, CTAs, learning paths, and footer without rendering errors on mobile and desktop.
LAND-002P1The Free Trial CTA opens student trial checkout; readiness CTAs open the child or parent assessment selector; package/course CTAs retain the chosen plan/level.
LAND-003P1Desktop and mobile navigation reach the same routes, active state is correct, and browser back/forward retains important state.
LAND-004P2Switching Indonesian/English changes copy without changing active assessment answers, selected plan, or session ID.
LAND-005P1Failed plan/course loading shows a fallback or retry and never selects a stale plan from an earlier URL/session.
CHILD-001P1The child readiness assessment asks whether the respondent is a KITA student or external participant before profile and questions start.
CHILD-002P0The KITA student path requires a student-role login; another role is rejected and, after student login, the journey returns to the correct assessment.
CHILD-003P1The external path starts without login and validates required profile/grade information before the assessment.
CHILD-004P1Continue is enabled only for a valid answer type; a most/least answer cannot use the same option twice.
CHILD-005P1Draft answers, question position, evidence, language, audience, and session ID are restored after reload in the same browser.
CHILD-006P0Completion saves one idempotent completed response per session and renders skills, strengths, growth areas, and recommendations without absolute child comparison.
CHILD-007P1Recommended plans are student checkout plans matching the child's grade; the CTA transfers the selected plan to checkout.
CHILD-008P1Restart removes the active assessment snapshot, creates a new session, and does not overwrite an earlier completed result.
PREAD-001P1The parent readiness assessment asks whether the family is KITA or non-KITA and routes to the matching audience path.
PREAD-002P0The KITA parent path requires the matching session, resumes after login, and does not accept an unauthorized role.
PREAD-003P1The internal profile is prefilled from the account while respecting editable fields; the external profile validates name, caregiver, and other required data.
PREAD-004P1All 23 statements and applicable profile questions are required before submission; moving backward/forward does not remove answers.
PREAD-005P1A draft resumes with the same session ID after reload; a completed response opens the result rather than the last question.
PREAD-006P1Results show tier/dimensions, summary identity, respondent category, recommendations, and a result ID consistent with the backend record.
PREAD-007P1Internal results offer only parent plans; external results offer only parent-external plans; checkout CTAs retain the selected plan.
PREAD-008P1Restart creates a new session and does not alter an existing completed result.

4.3 Navigation, profile, and notifications​

IDPRequirement and acceptance criteria
CORE-001P0The sidebar displays only menus permitted by role and entitlement in LMS Features and Access. Direct URLs must still be rejected by the backend when unauthorized.
CORE-002P1Users can update permitted profile fields; read-only email/identifier fields cannot change through payload manipulation.
CORE-003P1Avatar upload accepts valid files up to 5 MB, rejects invalid files/sizes, and displays the new avatar after refresh.
CORE-004P1Notifications can be read individually, read all, and deleted; the badge reflects the latest unread count.
CORE-005P2Saved app preferences return after login/refresh for the correct account and never leak to another user.

4.4 Discovery, courses, and learning access​

IDPRequirement and acceptance criteria
COURSE-001P1The public catalogue exposes only discoverable courses in the active tenant; search/filter/pagination produce consistent results.
COURSE-002P0My Courses contains only courses owned, assigned, purchased, or granted by an active subscription.
COURSE-003P0An unowned premium course shows a locked state and does not disclose lessons through direct URL/API access.
COURSE-004P1Course structure retains unit, lesson, and quiz order after refresh. Draft content is not visible to students.
LEARN-001P1An accessible lesson renders valid content and media; failed links/files provide an understandable error state.
LEARN-002P0Completing a lesson is idempotent and recalculates course progress without exceeding 100%.
LEARN-003P0Prerequisite lessons/quizzes remain locked until the earlier requirement is completed/passed, including through direct URL/API access.
LEARN-004P1Continue learning opens the next valid item and preserves course context.

4.5 Assignments and grading​

IDPRequirement and acceptance criteria
ASSIGN-001P1Students can submit an attachment and note for an assignment lesson; invalid/failed uploads do not create a false-success submission.
ASSIGN-002P1Students and authorized mentors can read the latest submission; other students and out-of-scope mentors cannot.
ASSIGN-003P0Mentors can submit a score and feedback; negative/invalid scores are rejected and a score above the maximum is never stored above that maximum.
ASSIGN-004P1A score below the minimum retains an unmet state and permits resubmission as configured; passing scores update the course summary.
ASSIGN-005P1Parents can view assignments only for children still linked to them.

4.6 Quizzes​

IDPRequirement and acceptance criteria
QUIZ-001P1Only published and accessible quizzes can start; maximum attempts are enforced in UI and API.
QUIZ-002P0Starting creates one active attempt; retries do not create parallel attempts beyond configured rules.
QUIZ-003P0Answers persist on the attempt after reload; another user cannot read or write them.
QUIZ-004P0The timer is derived from server/attempt time; after expiry the attempt accepts no new answer and is auto-submitted or closed according to contract.
QUIZ-005P0Submit calculates score/pass state consistently from the passing score and is idempotent.
QUIZ-006P1Correct answers/explanations appear only when quiz configuration permits them. Randomization does not change correctness.
QUIZ-007P1Authors can create, update, reorder, duplicate, and delete questions; an invalid or over-5-MB Excel import is rejected without hidden partial import.
QUIZ-008P1Analytics and result export include only attempts for the selected quiz/course and never disclose another tenant.

4.7 Schedules and certificates​

IDPRequirement and acceptance criteria
SCHED-001P1Students can create, edit, and delete their own schedule items, including all-day and timed items.
SCHED-002P1Mentors can create templates/items and assign them to students in their access scope.
SCHED-003P1Assignment copies a template into personal schedules; student edits do not alter the source template or another student's schedule.
CERT-001P0Certificates are unavailable before every course requirement is met and whenever certificates are disabled.
CERT-002P1A valid certificate shows student identity, course, date/ID, and can print/download without data changes.
CERT-003P1Template changes follow issuance policy; users without authoring access cannot modify templates.

4.8 Parents and child accounts​

IDPRequirement and acceptance criteria
PARENT-001P0A parent can create a child account with unique data and a valid password; it receives the student role and is linked to the creating parent.
PARENT-002P0A valid linking code links the intended student; invalid/expired/disallowed-reuse codes are rejected with no partial relationship.
PARENT-003P0Dashboard, progress, assignments, and subscriptions show only children linked to that parent.
PARENT-004P1Child editing changes only permitted fields. Unlink revokes parent monitoring without deleting the child's account, progress, or transactions.
PARENT-005P0A package purchased for child A grants no entitlement to child B or the parent unless the package explicitly defines it.

4.9 Chat, AI, community, and readiness​

IDPRequirement and acceptance criteria
CHAT-001P1Users see only conversations they participate in; unread/read-all is consistent across list and messages.
CHAT-002P1Lesson AI chat preserves correct lesson context; App Guide AI never mixes history between users or tenants.
CHAT-003P1AI quota/rate-limit errors are explicit and the same request does not consume quota twice.
COMM-001P1Permitted roles can create draft/published posts, edit/delete their own posts, and use comments, replies, reactions, bookmarks, follows, and polls.
COMM-002P0Media is limited to 25 MB and role/category restrictions are enforced server-side. A locked post rejects prohibited interactions.
COMM-003P1Admins can review reports; pin/lock/moderation is unavailable to ordinary users.
READY-001P1A readiness response can save as draft and resume by session ID; completion is idempotent and does not duplicate responses.
READY-002P1Admins can filter/analyze readiness data in their tenant; child/other-tenant data is never aggregated.

4.10 Subscriptions, checkout, and payment​

IDPRequirement and acceptance criteria
PAY-001P0Checkout calculates price, discount, tax/fees where applicable, and total consistently across summary, order, and payment gateway.
PAY-002P0Promo eligibility respects date, package, tenant, user, and quota; failed validation does not change the total.
PAY-003P0Payment creation is safe against double-click/retry and does not grant two entitlements for one order.
PAY-004P0Status transitions follow valid paths: pending/approval to paid/completed, expired, or failed. Refresh never downgrades a final state.
PAY-005P0Entitlement is granted only after verified success, not a browser redirect. Pending/failed/expired payments grant no access.
PAY-006P1History and invoice show recipient, package/course, method, total, ID, time, and status matching the payment record.
PAY-007P0A one-time course purchase grants only the purchased course to the correct buyer/recipient.
TRIAL-001P0The Free Trial CTA loads an eligible student plan and automatically selects free-trial payment; teacher and approval-required plans reject automated trials.
TRIAL-002P0Trial checkout validates parent name, unique 3–30-character username, Indonesian WhatsApp 10–13 digits beginning 08, and student name; parent email is optional for a trial.
TRIAL-003P0Trial submission creates exactly one enabled parent, enabled student, active membership, seven-day trialing subscription, and zero-value paid internal payment as one logical transaction.
TRIAL-004P0A student trial targets the child rather than the parent's personal subscription; a parent-plan trial targets only the parent.
TRIAL-005P0The auto-login auth handoff can be exchanged once and logs in the new parent. Retry/double-click must not create duplicate families or trials.
TRIAL-006P0Trial students are marked to create a usable password; their internal trial identity must not be treated as a user recovery email.
TRIAL-007P0Before expiry, a trial grants its plan bundle. After current_period_end, premium access stops even if the row has not been cleaned up.
TRIAL-008P1A trial account selecting a paid package must save a valid email and an at-least-eight-character password before checkout continues.
RENEW-001P0Selecting the same plan ID displays Renew Package and creates paid checkout, not a second free trial.
RENEW-002P0A successful renewal changes the subscription to active and extends from the end of an active period; remaining trial/paid time is preserved.
RENEW-003P0Renewal after trial/subscription expiry starts a new period at successful payment time.
RENEW-004P0The same pending renewal is reused on retry; paid/failed/expired states never create duplicate entitlement or extension.
RENEW-005P1Switching plans during trial follows switch/upgrade rules, displays the correct charge, and applies the new plan only after successful payment.

4.11 Authoring, creator access, and finance​

IDPRequirement and acceptance criteria
AUTHOR-001P0Only mentors/adminsβ€”or entitled parents/external mentorsβ€”can create or edit courses in UI and API.
AUTHOR-002P1A course persists metadata, target role, category, price/visibility, and publication state; required validation prevents publication of a broken draft.
AUTHOR-003P1Authors can create/reorder units and lessons and add media. Image upload is limited to 25 MB and media to 1 GB.
AUTHOR-004P0Authors outside ownership/scope cannot update/delete another course's content, assignments, attempts, or students.
SELLER-001P0A selling-locked parent/external mentor sees the reason and cannot use locked finance/selling endpoints.
FIN-001P0Withdrawal requires a valid payout account, valid amount, and sufficient available balance; concurrent requests cannot withdraw the same balance twice.
FIN-002P0Only authorized roles approve/reject withdrawals, resulting in a consistent ledger/status and audit trail.
FIN-003P1Balance export uses the system-provided format and reconciles opening balance, transactions, and closing balance.

4.12 Administration and tenant isolation​

IDPRequirement and acceptance criteria
ADMIN-001P0Admins can search/manage users in their tenant but cannot read/change users from another tenant. Role/status changes apply to the next request.
ADMIN-002P1Admins manage categories, packages, bundles, promos, library, payment records, and moderation within permission; required fields and relationships validate.
ADMIN-003P1Only authorized admins manage readiness, community categories/reports, and AI course covers. AI-cover quota and approval apply.
ADMIN-004P0Only Superadmin/root accesses tenant management, system logs, login attempts, wallet lock/unlock, and other root operations.
ADMIN-005P0Every tenant-scoped query returns only active-tenant data; valid IDs from another tenant produce denial/not found.
ADMIN-006P1Sensitive operations and important status changes generate audit records with actor, target, action, outcome, tenant, and time.

5. Minimum non-functional requirements​

IDPRequirement and acceptance criteria
NFR-001P0Responses/logs/client storage expose no unneeded token, password, hidden correct answer, child data, or other-tenant data.
NFR-002P1Forms work with keyboard, have accessible labels/names, visible focus, and errors not conveyed by color alone.
NFR-003P1Primary flows are usable at 360 px mobile and 1280 px desktop without clipping a primary action.
NFR-004P1Mutating requests show loading/disabled state; retry after network failure creates no duplicate data.
NFR-005P1Dates/times are consistently displayed in configured timezone and persisted with unambiguous time.
NFR-006P1Errors 400/401/403/404/409/422/429/500 render safe actionable states with no stack trace or secret.

6. Smoke test before regression​

Stop a release candidate when any P0 smoke test fails.

No.ScenarioExpected result
1Login once for each roleDashboard and role-appropriate menus load.
2Wrong login, disabled user, and direct URL for another roleRejected without session/data leakage.
3Student opens active course, completes lesson, refreshesProgress persists and course context is correct.
4Student completes and submits quizScore/status is consistent and final attempt cannot change.
5Student submits assignment, mentor grades, student refreshesStatus, score, and feedback synchronize.
6Parent opens two different childrenCourse/progress/subscription data never cross.
7Checkout a package through successful-payment simulationOne order and entitlement for the correct recipient.
8Mentor creates draft then publishes courseDraft remains hidden; published course appears for the target role.
9User creates post/comment and admin moderatesChange is visible and permission applies.
10Mentor requests withdrawal and admin processes itBalance, ledger, and status are consistent.
11Access another tenant's ID in a primary endpointDenied/not found with no metadata leak.
12Logout then back/refresh with old tokenProtected page/data is unusable.
13Landing β†’ external child readiness β†’ result β†’ choose planDraft/resume works, result saves, and student checkout retains the correct plan.
14Landing β†’ internal and external parent readinessLogin gate, 23 answers, result, and audience-correct plans work.
15Free Trial β†’ auto-login β†’ choose same plan β†’ paySeven-day trial targets the child, then paid time is added without losing remaining trial.

7. Execution strategy and evidence​

For every test case, record:

  • build/commit, environment, tenant, browser/device, and time;
  • requirement ID and precondition/fixture;
  • steps, expected result, actual result, and status;
  • relevant request/response with token and PII redacted;
  • screenshot/video for UI defects;
  • traceable record IDs in the QA environment.

Recommended defect severity:

SeverityCriteria
BlockerAll-role login fails, cross-tenant data leaks, payment/ledger corruption, or the environment cannot be tested.
CriticalAuthorization bypass, premium access without payment, primary-data loss, or duplicate transaction.
MajorA primary persona flow fails without a practical workaround.
MinorSupporting flow, copy, layout, or feedback-state issue with a clear workaround.

8. Baseline exit criteria​

Regression can be recommended as passed when:

  1. every smoke test passes;
  2. 100% of affected P0 requirements have been executed and passed;
  3. at least 95% of affected P1 tests pass;
  4. no Blocker/Critical defect remains open;
  5. Major defects have a documented release decision and workaround;
  6. permission and tenant-isolation evidence is attached;
  7. payment, entitlement, withdrawal, and ledger reconciliation passes for changed features.

9. Traceability to guides​

Requirement areaPrimary guide
AUTH, CORERegistration, Activation, and Login, Dashboard, Profile, and Notifications
COURSE, LEARNMy Courses, Learning Process
ASSIGN, QUIZ, CERTAssignments and Scores, Quizzes, Certificates
PARENTChild Management, Parent Dashboard
AUTHOR, SELLER, FINContent Editor, Mentor Finance
CHAT, COMMAI and Mentor Chat, Community
PAYSubscriptions and Payments
LAND, CHILD, PREAD, TRIAL, RENEWLanding, Readiness, Trial, and Renewal Journey Coverage

When a requirement and implementation differ, QA must record a requirement clarification before changing the expected result.