Annisa Nurul Islami

Home/QA case studies/2 of 6

Livin' Next-G

Digital savings account for teenagers aged 12–17, connected to a parent's Livin' account. Features dual-persona flows requiring rigorous testing of parent-child account interactions and parental control mechanisms.

4 sample test cases2 pass2 fail3 bugs found

Note: all test cases and bug reports in this portfolio are illustrative samples reconstructed from memory after leaving Bank Mandiri. Original documents were stored in Jira, accessible only via the internal Bank Mandiri network. Feature names, flows, and defect types reflect actual work performed; sensitive internal data has been anonymized.

Sample test cases

Four cases across the parent and the teen account.

Scroll the table sideways to see every column.

TC IDStatusTest scenarioTest stepsExpected resultActual resultPriority
TC-NXG-01PASSParent creates Next-G account for teen
  1. Login as parent
  2. Navigate to Livin' Next-G
  3. Enter teen data (name, DOB, NIK)
  4. Confirm account creation
Teen account created and linked to parent account; record saved in DBTeen account created and linked successfullyHigh
TC-NXG-02FAILParent sets spending limit for teen account
  1. Open Livin' Next-G dashboard
  2. Select teen account
  3. Set spending limit Rp 500.000/day
  4. Save settings
Spending limit saved and enforced; teen cannot transact above limitSpending limit displayed on UI but not saved to database; limit not enforcedHigh
TC-NXG-03FAILResult screen when teen account is restricted
  1. Set teen account status to Restricted
  2. Attempt to initiate transfer from teen account
  3. Observe result screen
Screen shows restricted account message with guidance to contact parentScreen shows generic error page with no relevant informationMedium
TC-NXG-04PASSParent monitors teen transaction history
  1. Login as parent
  2. Open Next-G dashboard
  3. Select View Transactions for teen account
Full teen transaction history displayed with date, amount, merchantTransaction history displayed correctlyMedium

Bugs found

Three sample bug reports, as written for the development team.

BUG-NXG-01Severity high

Spending limit not saved to database after parent sets it

Steps to reproduce

  1. Set spending limit Rp 500.000
  2. Save
  3. Query spending_limit table in DB

ExpectedRecord inserted/updated in DB with new limit.

ActualDB record unchanged; limit only visible on UI until page refresh.

Priority: High

BUG-NXG-02Severity medium

Generic error page shown for restricted teen account instead of proper message

Steps to reproduce

  1. Set account status = RESTRICTED via backend
  2. Attempt transaction from teen account

ExpectedScreen displays 'Akun dibatasi, hubungi orang tua'.

ActualGeneric error page with no account-specific messaging.

Priority: Medium

BUG-NXG-03Severity medium

Wrong page opened when tapping notification for Next-G account activity

Steps to reproduce

  1. Trigger Next-G transaction notification
  2. Tap notification banner

ExpectedNavigate to Next-G transaction detail page.

ActualRedirected to main Tabungan page instead of Next-G detail.

Priority: Medium

SQL and JQL

One query to validate the data, one to track the defects.

SQL · data validation (SQLite)
SELECT teen_account_id, daily_limit, updated_at
FROM spending_limit
WHERE teen_account_id = 'TEEN-000456';

Expected: daily_limit = 500000 after being set by the parent. Actual (defect, ref: BUG-NXG-01): the record remained unchanged in the database, confirming the spending limit was not persisted despite appearing saved on the UI.

JQL · bug tracking
project = "LIVIN"
AND component = "Next-G"
AND issuetype = Bug
AND status IN ("Open", "In Progress", "Reopened")
ORDER BY priority DESC, created ASC

Retrieves open defects under the Next-G component, including high-priority issues such as BUG-NXG-01 affecting parental control enforcement.

About the SQL. The query is an illustrative example reconstructed to show the type of database validation performed during testing. Table and column names have been generalized and anonymized and do not reflect the actual production schema. It uses SQLite syntax as a lightweight, portable reference; the same logic applies on MySQL or PostgreSQL with minor syntax adjustments.

About the JQL. It uses Jira's real query language and reflects the kind of filter commonly used for defect tracking. The project key ("LIVIN") and component name are illustrative. JQL filters and sorts issues; for counts by status or component, the filter is combined with Jira's "Group By" option or a dashboard gadget.