Annisa Nurul Islami

Home/QA case studies/4 of 6

Autodebit Biller

Allows users to register automatic debit schedules for recurring biller payments. Testing focused on time-based transaction logic, scheduling accuracy, and correct deduction behavior across different account statuses.

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, from registering a schedule to running it without enough balance.

Scroll the table sideways to see every column.

TC IDStatusTest scenarioTest stepsExpected resultActual resultPriority
TC-ADB-01PASSRegister autodebit for PLN billing
  1. Navigate to Bayar/VA
  2. Select PLN
  3. Enter customer ID
  4. Enable autodebit
  5. Set date and confirm
Autodebit registered; record saved in autodebit_schedule table with status ACTIVEAutodebit registered and saved to DB correctlyHigh
TC-ADB-02FAILAutodebit execution on scheduled date
  1. Set autodebit schedule to today
  2. Wait for scheduled time
  3. Check Kibana logs and DB
Deduction executed at correct time; balance reduced; transaction logged in KibanaDeduction executed but at 30-minute delay from scheduled timeHigh
TC-ADB-03FAILCancel active autodebit registration
  1. Navigate to active autodebit list
  2. Select PLN autodebet
  3. Tap Cancel
  4. Confirm
Autodebit removed from UI; record in DB updated to status CANCELLEDAutodebit removed from UI but DB status remains ACTIVEMedium
TC-ADB-04PASSAutodebit execution with insufficient balance
  1. Set account balance below biller amount
  2. Wait for scheduled execution
Transaction fails; user receives insufficient balance notificationTransaction fails with correct notification sent to userHigh

Bugs found

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

BUG-ADB-01Severity high

Autodebit executes 30 minutes late from scheduled time

Steps to reproduce

  1. Register autodebet for specific time
  2. Monitor Kibana logs at scheduled time and T+30min

ExpectedExecution at exact scheduled time.

ActualExecution occurs 30 minutes after scheduled time based on Kibana event logs.

Priority: High

BUG-ADB-02Severity medium

Cancelled autodebit record remains ACTIVE in database

Steps to reproduce

  1. Cancel autodebet via UI
  2. Query autodebit_schedule table in DBeaver

ExpectedStatus = CANCELLED in DB.

ActualStatus remains ACTIVE; risk of unintended future deduction.

Priority: Medium

BUG-ADB-03Severity medium

Autodebit detail page navigates to wrong biller page on tap

Steps to reproduce

  1. Open autodebet list
  2. Tap on Telkom autodebet entry

ExpectedNavigate to Telkom autodebet detail page.

ActualNavigated to PLN detail page instead.

Priority: Medium

SQL and JQL

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

SQL · data validation (SQLite)
SELECT schedule_id, scheduled_time, executed_time,
  CAST((JULIANDAY(executed_time) - JULIANDAY(scheduled_time)) * 24 * 60 AS INTEGER)
    AS delay_minutes
FROM autodebit_execution_log
WHERE schedule_id = 'ADB-000123';

Used to quantify the execution delay reported in BUG-ADB-01, cross-checking the database timestamps against Kibana event logs and confirming a 30-minute delay from the scheduled deduction time.

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

Lists open Autodebit-related defects such as execution delays (BUG-ADB-01) and status sync issues (BUG-ADB-02), ordered by priority for sprint planning.

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.