← Back to portfolio QA Documentation

ZummaX

Personal Finance Management — Testing Report

Full-stack web application for tracking income, expenses, budgets and financial reports. Manual and functional testing performed across all core user flows, REST API endpoints, and authentication mechanisms.

Role: QA Tester & Developer
Type: Academic project
Testing: Manual · Functional · API · Regression
Tools: Postman · Chrome DevTools · Jira
HTML · CSS · JavaScript Node.js · Express MySQL JWT Auth Postman Chrome DevTools Jira
Testing Summary
32
Test cases
12
API endpoints
8
Bugs reported
15
Use cases covered
Test Cases
IDModuleTest casePreconditionExpected resultPriorityStatus
TC-01RegisterRegister with valid dataUser not registeredAccount created, redirected to loginHighPASS
TC-02RegisterRegister with existing emailEmail already in DBError: "Email already registered"HighPASS
TC-03RegisterRegister with empty fieldsForm loadedValidation errors shown per fieldMediumPASS
TC-04LoginLogin with valid credentialsUser registeredJWT generated, redirect to dashboardHighPASS
TC-05LoginLogin with wrong passwordUser registeredError message shown, no redirectHighPASS
TC-06AuthAccess protected route without tokenUser not logged inRedirect to login (401)HighFAIL
TC-07MovementsRegister income with valid dataUser authenticatedMovement saved, balance updatedHighPASS
TC-08MovementsRegister expense with valid dataUser authenticatedMovement saved, balance updatedHighPASS
TC-09MovementsRegister movement with missing fieldsUser authenticatedValidation error shown, no DB insertMediumFAIL
TC-10MovementsEdit an existing movementMovement existsUpdated data saved, balance recalculatedHighPASS
TC-11MovementsDelete a movementMovement existsMovement removed, balance updatedHighPASS
TC-12BalanceView balance with movements registeredAt least 1 movementCorrect totals for income, expenses, balanceHighPASS
TC-13BalanceView balance with no movementsNo movementsInformative empty state message shownMediumFAIL
TC-14ChartsView charts with date range filterMovements in rangeChart renders data for selected periodMediumPASS
TC-15ExportExport movements as PDFMovements existPDF downloaded with correct dataMediumPASS
TC-16ExportExport with no data in selected rangeNo movements in rangeInformative message, no file generatedLowFAIL
TC-17BudgetSet monthly budget for a categoryUser authenticatedBudget saved and visible in dashboardMediumPASS
TC-18BudgetTrigger budget exceeded alertBudget set, expenses exceed limitAlert shown with category and amountHighPASS
TC-19ProfileEdit usernameUser authenticatedNew name saved and displayedLowPASS
TC-20SessionLogout clears session and tokenUser logged inToken cleared, redirect to loginHighPASS
Bug Reports
BUG-001 Protected route accessible without authentication token Critical

Authentication / Route protection

TC-06

  1. Open the app without logging in
  2. Manually navigate to /dashboard in the browser
  3. Observe that the page loads with no authentication check

User is redirected to login with a 401 response

Dashboard renders fully without any authentication

BUG-002 No validation error when submitting movement with empty amount High

Movements / Form validation

TC-09

  1. Log in and navigate to "Register movement"
  2. Fill all fields except the amount
  3. Click "Save"

Validation error on amount field, form does not submit

Form submits with empty amount, inserting an invalid record in the DB

BUG-003 Balance page shows no empty state when user has no movements Medium

Balance / Empty state

TC-13

  1. Create a new account with no movements
  2. Navigate to the Balance section
  3. Observe the page content

"No movements registered yet" message guides the user

Page renders with blank charts and zeroed values, no guidance provided

BUG-004 Export generates empty PDF instead of showing informative message Low

Export / Edge case

TC-16

  1. Navigate to "Export data"
  2. Select a date range with no registered movements
  3. Click "Export PDF"

"No data available for the selected range" message shown

An empty PDF is generated and downloaded with no content

API Testing — Postman
POST
/api/auth/register
Register new user with name, email, password
201 Created409 Conflict
POST
/api/auth/login
Authenticate and receive JWT token
200 OK401 Unauthorized
GET
/api/movements
Retrieve all movements for authenticated user
200 OK401 Unauthorized
POST
/api/movements
Create new income or expense movement
201 Created400 Bad Request
PUT
/api/movements/:id
Update an existing movement by ID
200 OK404 Not Found
DELETE
/api/movements/:id
Delete a movement and recalculate balance
200 OK404 Not Found
GET
/api/balance
Get total income, expenses and current balance
200 OK401 Unauthorized
GET
/api/categories
List all available movement categories
200 OK
GET
/api/budgets
Get configured budgets per category
200 OK401 Unauthorized
POST
/api/budgets
Create or update monthly budget for a category
201 Created400 Bad Request
GET
/api/export/pdf
Export movements as PDF with optional date filter
200 OK204 No Content
GET
/api/user/profile
Get current user profile data
200 OK401 Unauthorized