Annisa Nurul Islami

Home/QA case studies/6 of 6

Card Request via Livin' & Branch Card Pickup

Two-phase feature: the customer submits a debit/ATM card request digitally via Livin', then collects the physical card at a designated branch. Integrates mobile banking with Bank Mandiri's branch card issuance system.

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 submitting the request to tracking its status.

Scroll the table sideways to see every column.

TC IDStatusTest scenarioTest stepsExpected resultActual resultPriority
TC-CRD-01PASSSubmit card request for physical card pickup at branch
  1. Navigate to Kartu menu
  2. Select Buat dan Ambil Kartu di Cabang
  3. Choose nearest branch
  4. Confirm request
Request submitted; record created in DB with status PENDING; confirmation screen displayedRequest submitted and record created correctly in databaseHigh
TC-CRD-02FAILCard request submission with restricted account
  1. Set account status to Restricted
  2. Navigate to card request flow
  3. Attempt submission
Error displayed: account restricted, card request cannot be submittedSystem shows generic error page with no specific restricted account messagingMedium
TC-CRD-03PASSAPI response for card request submission
  1. Submit card request
  2. Inspect API response via Postman
POST /card-request returns 201 Created with request_id in response bodyAPI returns 201 Created with correct request_idHigh
TC-CRD-04FAILCard request status tracking after submission
  1. Submit card request
  2. Navigate to card request status page
  3. Check status display
Status shows PENDING with estimated pickup date displayedStatus page shows PENDING but estimated pickup date field is blankMedium

Bugs found

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

BUG-CRD-01Severity medium

Generic error page shown for restricted account on card request — no specific message

Steps to reproduce

  1. Set account status = RESTRICTED
  2. Attempt card request submission

ExpectedMessage 'Akun Anda dibatasi, tidak dapat mengajukan kartu'.

ActualGeneric error page with no account-specific guidance.

Priority: Medium

BUG-CRD-02Severity medium

Estimated pickup date not displayed on card request status page

Steps to reproduce

  1. Submit card request
  2. Open status tracking page

ExpectedEstimated pickup date visible (e.g., '3-5 hari kerja').

ActualDate field blank; feature does not meet PO acceptance criteria.

Priority: Medium

BUG-CRD-03Severity low

Card request confirmation page UI misaligned on Android 12 devices

Steps to reproduce

  1. Submit card request on Android 12 device
  2. Observe confirmation screen layout

ExpectedAll UI elements aligned correctly.

ActualBranch address text overlaps with map widget on confirmation screen.

Priority: Low

SQL and JQL

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

SQL · data validation (SQLite)
SELECT request_id, account_id, status, estimated_pickup_date, submitted_at
FROM card_requests
WHERE request_id = 'CRD-000789';

Confirms BUG-CRD-02: the estimated_pickup_date field returned NULL instead of a valid date, meaning the status tracking page could not meet the PO's acceptance criteria.

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

Retrieves open defects for the Card Request & Branch Pickup feature, helping track UI and status-tracking issues before release.

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.