Dalam proses Software Testing & Quality Assurance, tiga dokumen penting adalah Test Scenario, Test Case, dan Bug Report. Ketiganya bekerja bersama-sama untuk memastikan kualitas software yang optimal.
Test Scenario: Deskripsi tingkat tinggi dari skenario penggunaan aplikasi
Test Case: Deskripsi detail langkah-langkah untuk melakukan testing
Bug Report: Dokumentasi masalah yang ditemukan selama testing
Test Scenario
Apa itu Test Scenario?
Test Scenario adalah narasi atau deskripsi tingkat tinggi dari situasi penggunaan aplikasi yang mendeskripsikan “apa yang ingin diuji” tanpa memberikan detail langkah-langkah spesifik.
Karakteristik Test Scenario:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
✅ High-Level Description
└─ Gambaran umum dari use case atau user flow
✅ Business-Oriented
└─ Fokus pada apa yang user ingin capai
✅ User Journey
└─ Menggambarkan perjalanan pengguna
✅ Scope Overview
└─ Menunjukkan area yang akan ditest
✅ Multiple Test Cases
└─ Satu scenario dapat memiliki banyak test cases
1. 📋 Dokumentasi
├─ Merekam kebutuhan testing
├─ Referensi untuk team
└─ Historical record
2. 🎯 Planning
├─ Merencanakan testing strategy
├─ Mengidentifikasi test areas
├─ Estimasi effort
└─ Resource allocation
3. 💡 Communication
├─ Menjelaskan kepada stakeholder
├─ Alignment dengan business
├─ Clear scope definition
└─ Approval & sign-off
4. 📊 Coverage
├─ Ensure comprehensive testing
├─ Identify gaps
├─ Risk-based testing
└─ Priority assessment
5. 🚀 Efficiency
├─ Organize testing efforts
├─ Group related test cases
├─ Reusability
└─ Maintainability
Contoh Test Scenario (Konsep)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Aplikasi: BMI Calculator
Scenario 1: "Pengguna ingin menghitung BMI mereka"
Deskripsi: Pengguna baru membuka aplikasi, ingin
mengetahui BMI mereka, memasukkan data,
dan melihat hasil
Scenario 2: "Pengguna ingin melihat riwayat kalkulasi mereka"
Deskripsi: Pengguna ingin mengakses tab history dan
melihat semua perhitungan sebelumnya
Scenario 3: "Pengguna ingin membersihkan history mereka"
Deskripsi: Pengguna ingin menghapus semua entry history
sekaligus
Test Case
Apa itu Test Case?
Test Case adalah dokumen detail yang mendeskripsikan “bagaimana kita akan melakukan testing” dengan langkah-langkah spesifik, input, dan expected output.
✅ Detailed Steps
└─ Langkah-langkah yang jelas dan terukur
✅ Specific Input Values
└─ Data input yang konkret dan terukur
✅ Expected Output
└─ Hasil yang diharapkan spesifik
✅ Repeatable
└─ Dapat dilakukan berulang kali dengan hasil sama
✅ Independent
└─ Dapat dijalankan standalone
✅ Traceable
└─ Dapat dilacak ke requirements
✅ Measurable
└─ Pass/Fail dapat ditentukan dengan jelas
Test Case Structure:
═════════════════════════════════════════════════════════════
1. TEST CASE ID
└─ Unique identifier (e.g., TC-001, TC-BMI-CAL-001)
2. TEST CASE TITLE
└─ Brief description (e.g., "Verify BMI Calculation")
3. OBJECTIVE / PURPOSE
└─ What are we testing
4. TEST SCENARIO / MODULE
└─ Which scenario/feature
5. PRECONDITIONS
└─ Setup required before executing test case
6. TEST STEPS
└─ Detailed steps to execute
7. TEST DATA / INPUT
└─ Specific data used in test
8. EXPECTED RESULT
└─ What should happen
9. ACTUAL RESULT
└─ What actually happened (filled during execution)
10. STATUS
└─ PASS / FAIL / BLOCKED / SKIPPED
11. NOTES / COMMENTS
└─ Additional information
12. EXECUTED BY
└─ Tester name who executed
13. DATE OF EXECUTION
└─ When test was executed
14. SEVERITY (if FAIL)
└─ CRITICAL / HIGH / MEDIUM / LOW
Perbedaan Test Scenario vs Test Case
Perbandingan Lengkap
ASPEK
TEST SCENARIO
TEST CASE
DEFINISI
Narasi/deskripsi tingkat tinggi
Detail langkah-langkah eksekusi
TUJUAN
Apa yang ditest?
Bagaimana cara test?
LEVEL DETAIL
High-level
Low-level / Detailed
JUMLAH DOKUMEN
Fewer (5-10)
Many (50-100+)
ORIENTASI
Business-oriented
Technical-oriented
FOKUS
User journey
Step-by-step execution
INPUT
Umum (tidak spesifik)
Spesifik (nilai detail)
EXPECTED RESULT
Umum (hasil akhir)
Detail (setiap step)
REPEATABLE
Fleksibel
Konsisten
TRACEABLE
Ke use cases
Ke requirements
AUTOMATION
Sulit diotomasi
Mudah diotomasi
EFFORT LEVEL
Low effort
High effort
SKILL REQUIRED
Business analyst level
Tester/QA level
USAGE
Planning & documentation
Execution & validation
1
2
3
4
5
6
7
8
9
10
11
12
HUBUNGAN:
═════════════════════════════════════════════════════════════
Test Scenario (1) ────────────────────────► Test Cases (Multiple)
Contoh:
Scenario: "Calculate BMI"
├─ Test Case 1: Calculate with valid values
├─ Test Case 2: Calculate with decimal values
├─ Test Case 3: Handle empty fields
├─ Test Case 4: Handle invalid input
└─ Test Case 5: Verify classification accuracy
TEST SCENARIO:
═════════════════════════════════════════════════════════════
"User wants to calculate their BMI"
Timeline:
1. User opens app
2. Enters weight and height
3. Sees calculated BMI
4. Sees classification
5. Clicks "Save to history"
6. Verifies save success
TEST CASES (dari scenario di atas):
═════════════════════════════════════════════════════════════
TC-001: Calculate BMI with normal weight values
Steps:
1. Open app
2. Enter Weight: 55 kg
3. Enter Height: 150 cm
4. Click Calculate
Expected: BMI = 24.44, Classification = Normal
TC-002: Calculate BMI with invalid data
Steps:
1. Open app
2. Enter Weight: "abc"
3. Enter Height: 150 cm
4. Click Calculate
Expected: Error message displayed, calculation not executed
... dan seterusnya
# TEST SCENARIO TEMPLATE## Scenario ID
[Unique identifier, e.g., TS-001]
## Scenario Title
[Brief, descriptive title]
## Feature / Module
[Which feature/module this scenario covers]
## Description
[Detailed description of the scenario in business terms]
## User Type / Role
[Who is performing this scenario - e.g., "New User", "Admin"]
## Pre-conditions
[What needs to be in place before starting]
- Condition 1
- Condition 2
## Main Flow
[User journey - step by step at high level]
1. User does X
2. System responds with Y
3. User does Z
4. System confirms
## Alternative Flows (if any)
[Other ways the scenario might flow]
- Alternative Flow 1: When user chooses option B
- Alternative Flow 2: When system error occurs
## Post-conditions
[Expected state after scenario completion]
- Condition 1
- Condition 2
## Related Test Cases
[List of test cases derived from this scenario]
- TC-001
- TC-002
- TC-003
## Acceptance Criteria
[How do we know scenario succeeded?]
- Criteria 1
- Criteria 2
- Criteria 3
## Priority
[HIGH / MEDIUM / LOW]
## Effort Estimate
[Estimated test cases needed]
[Estimated hours to implement]
Template Condensed (Simplified)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## TEST SCENARIO - [TS-ID] [Title]**Feature:** [Module Name]
**User Type:** [User Role]
**Objective:** [What user wants to achieve]
### Main Flow:1. [Step 1]
2. [Step 2]
3. [Step 3]
...
### Expected Outcome:- [Outcome 1]
- [Outcome 2]
### Related Test Cases:- [TC-ID]
- [TC-ID]
# TEST CASE TEMPLATE (DETAILED)## Test Case ID
[Unique identifier, e.g., TC-001, TC-BMI-001]
## Test Case Title
[Clear, concise title describing what is being tested]
## Module / Feature
[Which module/feature this test case covers]
## Test Scenario
[Reference to parent scenario]
[e.g., TS-001: Calculate BMI]
## Objective / Purpose
[What are we verifying?]
[e.g., "Verify that BMI calculation is accurate for normal weight values"]
## Test Type
[FUNCTIONAL / PERFORMANCE / SECURITY / USABILITY / etc.]
## Priority
[CRITICAL / HIGH / MEDIUM / LOW]
## Pre-conditions
[Setup required before executing test case]
1. Condition 1
2. Condition 2
3. Condition 3
## Test Data / Input
[Specific data used in this test]
| Field | Value |
|-------|-------|
| Weight | 55 kg |
| Height | 150 cm |
| Expected BMI | 24.44 |
## Test Steps
[Detailed step-by-step instructions]
| Step # | Action | Expected Result |
|--------|--------|-----------------|
| 1 | Launch BMI Calculator app | App opens successfully |
| 2 | Navigate to Calculator tab | Calculator screen displayed |
| 3 | Enter 55 in Weight field | Weight field shows 55 |
| 4 | Enter 150 in Height field | Height field shows 150 |
| 5 | Click Calculate button | Calculation executed |
| 6 | Observe result | BMI = 24.44 displayed |
| 7 | Verify classification | "Normal" classification shown |
## Expected Result
[Detailed expected outcome after all steps]
- BMI value is calculated correctly as 24.44
- Classification displayed as "Normal"
- Result persists on screen
- No error messages shown
## Test Data / Actual Input Used
[Filled during execution]
# TEST SCENARIO: TS-001## Scenario Title
User Calculates Their Body Mass Index
## Feature / Module
BMI Calculator - Calculator Tab
## User Type
New User / Any User
## Objective
User wants to know their BMI by entering weight and height
## Description
A user opens the BMI Calculator application for the first time.
They navigate to the Calculator tab, enter their weight in
kilograms and height in centimeters. The app calculates their
BMI and displays the result along with the BMI classification
(Underweight, Normal, Overweight, Obese).
## Pre-conditions- App is installed on device
- App has not been used yet (first time user)
- Device has sufficient storage
- App has launch permission
## Main Flow1. User opens BMI Calculator app
2. App displays Calculator tab (default tab)
3. User sees Weight input field and Height input field
4. User enters weight value (e.g., 55 kg)
5. User enters height value (e.g., 150 cm)
6. User clicks "Calculate" button
7. App displays calculated BMI value
8. App displays classification (e.g., "Normal")
9. User sees "Save to History" button
10. User reviews results
## Alternative Flows### Flow A: User enters invalid data1. User enters non-numeric value in Weight field
2. App shows error message "Invalid input"
3. Calculation does not execute
4. User can try again
### Flow B: User leaves field empty1. User leaves Weight or Height field empty
2. App shows validation error
3. "Calculate" button is disabled or shows error
4. User must enter all values
## Post-conditions- BMI calculation displayed correctly
- Classification shown in result
- User can proceed to save or clear
- No error states remaining
## Related Test Cases- TC-001: Valid BMI calculation
- TC-002: Decimal value handling
- TC-003: Empty field validation
- TC-004: Invalid data input handling
- TC-005: BMI classification accuracy
- TC-006: Boundary values testing
## Acceptance Criteria
✓ BMI calculated correctly (formula: weight / height²)
✓ Result displayed with 2 decimal places
✓ Classification matches BMI ranges
✓ No calculation errors or crashes
✓ UI is responsive and intuitive
✓ Result persists on screen
## Priority
HIGH
## Estimated Test Cases
6-8 test cases
## Estimated Effort
4-6 hours
## TEST CASE: TC-001**ID:** TC-BMI-CAL-001
**Title:** Verify accurate BMI calculation with normal weight values
**Module:** BMI Calculator - Calculator Tab
**Scenario:** TS-001
**Type:** FUNCTIONAL
**Priority:** CRITICAL
**Status:** ☐ PASS ☐ FAIL ☐ BLOCKED
### Objective
Verify that the application calculates BMI correctly using the
formula: BMI = weight (kg) / height (m)² for normal weight values.
### Pre-conditions
✓ App installed and launched successfully
✓ User is on Calculator tab
✓ Input fields are empty
✓ "Calculate" button is enabled
### Test Data
| Parameter | Value |
|-----------|-------|
| Weight | 55 kg |
| Height | 150 cm |
| Expected BMI | 24.44 |
| Expected Classification | Normal |
| Calculation | 55 / (1.50)² = 24.44 |
### Test Steps
| # | Step | Expected Result |
|---|------|-----------------|
| 1 | Tap BMI Calculator app to open | App launches to Calculator tab |
| 2 | Verify Weight input field visible | Field labeled "Weight (kg)" displayed |
| 3 | Tap Weight input field | Field is focused, keyboard appears |
| 4 | Enter "55" in Weight field | Field shows "55" |
| 5 | Tap Height input field | Field is focused, keyboard appears |
| 6 | Enter "150" in Height field | Field shows "150" |
| 7 | Tap "Calculate" button | Button responds to tap |
| 8 | Wait for calculation to complete | Calculation completes in <200ms |
| 9 | Verify BMI value displayed | Shows "24.44" |
| 10 | Verify classification badge | Shows "Normal" with green color |
| 11 | Verify Save button available | "Save to History" button visible |
| 12 | Take screenshot of result | Screenshot captured |
### Expected Result
✓ Weight field displays: 55 ✓ Height field displays: 150 ✓ BMI result displays: 24.44 (with 2 decimal places) ✓ Classification label shows: “Normal” ✓ Classification color: Green ✓ No error messages displayed ✓ UI responsive and no lag ✓ Result properly formatted and centered
## TEST CASE: TC-002**ID:** TC-BMI-VAL-002
**Title:** Verify error handling for non-numeric input in Weight field
**Module:** BMI Calculator - Input Validation
**Scenario:** TS-001 (Alternative Flow A)
**Type:** FUNCTIONAL / ERROR HANDLING
**Priority:** HIGH
**Status:** ☐ PASS ☐ FAIL ☐ BLOCKED
### Objective
Verify that the application properly validates input and displays
error message when non-numeric characters are entered in Weight field.
### Pre-conditions
✓ App launched and on Calculator tab
✓ Input fields are empty
✓ Focus ready for input
### Test Data
| Field | Value | Reason |
|-------|-------|--------|
| Weight Input | "abc" | Non-numeric characters |
| Height Input | 170 | Valid height |
| Expected Result | Error message | Validation should fail |
### Test Steps
| # | Step | Expected Result |
|---|------|-----------------|
| 1 | Open BMI Calculator app | Calculator tab displayed |
| 2 | Tap Weight input field | Field is focused |
| 3 | Enter "abc" | Field shows "abc" |
| 4 | Tap Height input field | Height field focused |
| 5 | Enter "170" | Height field shows "170" |
| 6 | Tap Calculate button | Button responds |
| 7 | Observe validation result | Error message appears |
| 8 | Read error message | Message is clear and helpful |
### Expected Result
✓ Weight field contains: “abc” ✓ Error message displayed (e.g., “Please enter a valid number”) ✓ Error message color: Red ✓ BMI calculation NOT performed ✓ Result area remains empty or shows previous result ✓ “Calculate” button may be disabled until valid input ✓ Focus remains on invalid field
1
2
### Actual Result
[To be filled during execution]
Execution Date: ______ Executed By: ______
1
2
3
4
5
6
7
8
9
10
### Severity (if FAIL)
HIGH (Invalid input should be caught, not cause crash)
### Notes
- This tests defensive programming
- Prevents app crash from invalid data
### Approval
Approved by QA Lead: _____________ Date: _________
## TEST CASE: TC-003**ID:** TC-BMI-VAL-003
**Title:** Verify validation when Weight field is empty
**Module:** BMI Calculator - Input Validation
**Scenario:** TS-001 (Alternative Flow B)
**Type:** FUNCTIONAL / ERROR HANDLING
**Priority:** HIGH
**Status:** ☐ PASS ☐ FAIL ☐ BLOCKED
### Objective
Verify that application prevents calculation and shows validation
error when Weight field is left empty.
### Pre-conditions
✓ App launched and on Calculator tab
✓ Both input fields empty or reset
✓ Calculate button enabled
### Test Data
| Field | Value |
|-------|-------|
| Weight | [EMPTY] |
| Height | 170 cm |
| Expected Action | Show validation error |
### Test Steps
| # | Step | Expected Result |
|---|------|-----------------|
| 1 | Open app | Calculator tab ready |
| 2 | Leave Weight field empty | Weight field remains empty |
| 3 | Enter "170" in Height field | Height shows "170" |
| 4 | Attempt to tap Calculate | Button responds or disabled |
| 5 | Observe validation | Error handling executed |
### Expected Result
✓ Weight field is empty ✓ Error message OR disabled Calculate button ✓ Message: “Please enter weight” or similar ✓ No calculation performed ✓ User cannot proceed until all fields filled
1
2
### Actual Result
[To be filled during execution]
Execution Date: ______ Executed By: ______
1
2
3
4
5
6
### Severity (if FAIL)
HIGH (Required field validation is essential)
### Approval
Approved by QA Lead: _____________ Date: _________
# TEST SCENARIO: TS-002## Scenario Title
User Views and Manages Calculation History
## Feature / Module
BMI Calculator - History Tab
## User Type
Returning User (with saved history)
## Objective
User wants to view previous BMI calculations and manage their
history (delete entries, clear all).
## Description
A user who has previously calculated BMI multiple times now wants
to access the History tab to see all their past calculations with
dates and times. They can view details, delete individual entries,
or clear the entire history.
## Pre-conditions- App is installed
- User has at least 3 prior BMI calculations saved
- History entries have different timestamps
- History tab is accessible
## Main Flow1. User opens app
2. User navigates to History tab
3. App displays list of all saved calculations
4. Each entry shows: BMI value, classification, date/time
5. User scrolls through history (if more than 5 entries)
6. User can tap on entry to view details
7. User can delete individual entry
8. User can clear all history (with confirmation)
## Alternative Flows### Flow A: Delete Single Entry1. User swipes left on entry (iOS) or long-press (Android)
2. Delete button appears
3. User confirms deletion
4. Entry removed from list
5. History count decreases
### Flow B: Clear All History1. User taps "Clear All" button
2. Confirmation dialog appears
3. User confirms action
4. All entries deleted
5. History shows "No entries" message
## Post-conditions- History list updated
- Deleted entries no longer visible
- History tab shows current accurate state
- No data loss for remaining entries
## Related Test Cases- TC-010: Display history list
- TC-011: Delete single entry
- TC-012: Clear all history
- TC-013: History sorting
- TC-014: Empty history state
## Acceptance Criteria
✓ All previous calculations displayed
✓ Timestamp format correct and readable
✓ Delete functionality works without data loss
✓ Confirmation dialogs prevent accidental deletion
✓ UI responsive with 50+ history entries
✓ History persists after app restart
## Priority
HIGH
## Estimated Test Cases
5-7 test cases
Bug Report
Apa itu Bug Report?
Bug Report (Laporan Bug/Defect) adalah dokumen formal yang merekam dan melaporkan masalah (bug/defect) yang ditemukan selama testing, berisi informasi detail tentang bagaimana bug terjadi, dampaknya, dan langkah-langkah untuk mereproduksinya.
✅ Clear & Concise Title
└─ Judul menjelaskan masalah dengan singkat
✅ Detailed Reproduction Steps
└─ Langkah-langkah yang dapat direproduksi kembali
✅ Evidence / Screenshots
└─ Bukti visual atau log output
✅ Impact Assessment
└─ Analisis dampak bug terhadap pengguna
✅ Severity Classification
└─ Level keparahan bug diklasifikasikan dengan jelas
✅ Environment Information
└─ Detail lengkap device, OS, app version
✅ Actionable Information
└─ Informasi yang dapat digunakan developer untuk fix
✅ Reproducible
└─ Developer dapat mereproduksi bug mengikuti langkah-langkah
🔴 SEVERITY LEVELS
═════════════════════════════════════════════════════════════
🔴 P0 / CRITICAL / BLOCKER
Definition: App tidak bisa digunakan
Examples:
├─ App crashes completely
├─ Core functionality completely broken
├─ Data loss
├─ Security vulnerability
├─ Cannot proceed past major feature
Impact: Blocks all testing/usage
Fix Timeline: Immediate (same day)
Release: Cannot release with this bug
🟠 P1 / HIGH / URGENT
Definition: Major feature tidak berfungsi
Examples:
├─ Wrong calculation result
├─ History feature not working
├─ Cannot save data
├─ Significant UI issue
├─ Performance degradation
Impact: Major feature unusable
Fix Timeline: High priority (within 24h)
Release: High risk, should fix before release
🟡 P2 / MEDIUM
Definition: Feature partially working atau minor issue
Examples:
├─ Typo in label
├─ Minor UI misalignment
├─ Non-critical feature not working
├─ Workaround available
Impact: Can work around it
Fix Timeline: Normal priority (within sprint)
Release: Can release with planned fix
🟢 P3 / LOW
Definition: Cosmetic atau nice-to-have
Examples:
├─ Color/spacing issue
├─ Minor wording suggestion
├─ Enhancement request
├─ Future improvement
Impact: Minimal to none
Fix Timeline: When time allows
Release: Can defer to next version
### Video Recording
[Attach video if complex to describe]
### Test Data Used
[Specific data that triggers the bug]
---
## IMPACT ANALYSIS
### Impact on Users
[How does this affect end users?]
### Business Impact
[What's the business consequence?]
### Workaround Available
[ ] Yes - Describe: _______
[ ] No
### Related Bugs
[Reference to similar bugs]
[e.g., BR-005, BR-012]
---
## TECHNICAL DETAILS
### Root Cause (if known)
[Suspected root cause]
### Code References
[File name, line number if applicable]
### Database Impact
[Any database implications]
### Performance Impact
[Any performance implications]
---
## RESOLUTION
### Fix Description
[How was bug fixed]
### Fixed By
[Developer name]
### Fixed Date
[YYYY-MM-DD]
### Fixed Version
[Version/Build number where fixed]
### Verification Steps
[How QA verified the fix]
### Verification Status
[ ] PASS - Fix verified working
[ ] FAIL - Issue still exists
[ ] PARTIAL - Partially fixed
---
## ADDITIONAL INFORMATION
### Comments / Discussion Thread
---
## IMPACT ANALYSIS
### Impact on Users
**HIGH IMPACT**
- Users receive incorrect BMI values
- Users get wrong classification (critical for health advice)
- Users may make health decisions based on wrong BMI
- Loss of user trust in app accuracy
- Potential health misinformation
### Business Impact
- **App unusable** for primary purpose (calculate BMI)
- **Cannot release** to app store with this bug
- **Potential liability** if users rely on wrong health info
- **Reputation damage** if bug publicized
- **Testing blocked** - cannot proceed until fixed
### Workaround Available
**NO** - There is no workaround for calculation engine bug.
User cannot manually correct the calculation.
### Related Bugs
- Possibly related to BR-BMI-CLASS-003 (wrong classifications)
- Check other boundary value calculations
---
## TECHNICAL DETAILS
### Suspected Root Cause
Possible issues:
1. Height conversion error: Height might not be converted to meters
- Code might be using cm directly instead of meters
- Example: 85 / (180)² = 85 / 32400 = 0.0026... (wrong!)
2. Wrong formula implementation:
- Maybe formula is: weight * height / 100000 (legacy formula?)
- Or calculation order issue (operator precedence)
3. Height unit mismatch:
- Input reads cm but calculation treats as m
### Suspected Code Location
Likely in: `BMICalculator.swift` or `CalculationEngine.java`
Function: `calculateBMI(weight, height)` or similar
### Database Impact
None (calculation only, not data persistence issue)
### Performance Impact
None observed (calculation returns quickly, just wrong value)
---
## RESOLUTION TRACKING
### Current Status
**OPEN** - Awaiting developer action
### Fix Description
[To be filled when fixed]
### Fixed By
[To be filled by developer]
### Fixed Date
[To be filled when fixed]
### Fixed Version
[To be filled when fixed]
---
## ADDITIONAL INFORMATION
### Comments / Discussion Thread
[2025-10-29 14:35] Ahmed Hassan (QA): Initial bug report. Tested 5 times, consistently reproducible. Core calculation is broken. Blocks all testing.
[2025-10-29 15:10] QA Lead: Confirmed CRITICAL severity. Assigned to dev team. This is a blocker for release.
[2025-10-29 16:00] Dev Lead: Received and acknowledged. Investigating height conversion issue. Will check formula in BMI calculation module.
# BUG REPORT## BUG IDENTIFICATION**Bug ID:** BR-BMI-VAL-002
**Title:** No validation error when non-numeric characters entered in Weight field
**Status:** OPEN
**Created:** 2025-10-29 15:45 UTC
**Reported by:** Fatima Ali (QA Tester)
**Assigned to:** Unassigned
---
## SEVERITY & PRIORITY**Severity Level:** 🟠 HIGH (P1)
**Priority:** HIGH
**Release Impact:** SHOULD FIX
**Justification:** Input validation is important security &
reliability feature. Invalid inputs should be caught gracefully.
---
## COMPONENT INFORMATION**Module:** BMI Calculator - Input Validation
**Feature:** Weight Input Field Validation
**Test Case Reference:** TC-BMI-VAL-002
---
## ENVIRONMENT DETAILS**Platform:** Android
**Device:** Samsung Galaxy S21
**OS Version:** Android 12
**App Version:** v1.0.0, Build 2025.10.29
**Testing Environment:** Staging
**Network:** WiFi
---
## BUG DESCRIPTION### Summary
When user enters non-numeric characters (e.g., "abc") in Weight
field, the app does not show error message. Calculation proceeds
with invalid data.
### Expected Behavior
✓ User types "abc" in Weight field
✓ Error message displays: "Please enter a valid number"
✓ Calculate button is disabled or shows error
✓ Calculation does NOT execute
✓ User can correct input and retry
### Actual Behavior
✗ User types "abc" in Weight field
✗ No error message shown
✗ Calculate button still enabled
✗ User can click Calculate
✗ App may crash or show unexpected behavior
### How Often**Always** - 100% reproducible
---
## REPRODUCTION STEPS### Pre-conditions
✓ App installed and running
✓ On Calculator tab
✓ Input fields empty
### Step-by-Step Reproduction
| Step | Action | Expected | Actual |
|------|--------|----------|--------|
| 1 | Open BMI Calculator | Calculator tab shows | ✓ OK |
| 2 | Tap Weight field | Field focused | ✓ OK |
| 3 | Type "abc" | Shows "abc" | ✓ Shows "abc" |
| 4 | Observe input field | Should show error | ✗ No error shown |
| 5 | Tap Height field | Field focused | ✓ OK |
| 6 | Type "170" | Shows "170" | ✓ OK |
| 7 | Tap Calculate | Should show error or disable | ✗ Allows click |
| 8 | Observe result | Should show error | ✗ Unexpected result |
---
## SUPPORTING EVIDENCE### Screenshots**Screenshot: Invalid Input Accepted**
┌─────────────────────────────┐ │ Body Mass Index │ │ │ │ Weight (kg) │ │ ─────────────────── abc │ ✗ No error │ [No error message shown] │ │ │ │ Height (cm) │ │ ─────────────────── 170 │ │ │ │ [Calculate] ← Still enabled│ ✗ Should be disabled │ │ └─────────────────────────────┘
---
## IMPACT ANALYSIS
### Impact on Users
- Users may not realize they entered invalid data
- App may crash if calculation attempts with invalid input
- Poor user experience
- Data integrity concerns
### Business Impact
- Reliability issues
- Poor user feedback
- Security concerns (what if they enter malicious input?)
### Workaround Available
**PARTIAL** - User can be careful to only enter numbers, but
no app-level protection.
---
## TECHNICAL DETAILS
### Suspected Root Cause
Input validation not implemented or not triggered on Weight field.
Check if:
- Input field type is not set to `numeric`
- No `onChange` or `onInput` event listener
- No validation method called
### Suspected Code Location
- Weight input field definition
- InputValidation module
- OnClickCalculate() method
---
## ADDITIONAL INFORMATION
### Comments / Discussion
[2025-10-29 15:45] Fatima Ali: Found issue with input validation missing on Weight field.
[2025-10-29 16:00] QA Lead: Confirmed. Input validation is important. Assign to dev team.
1
2
3
4
5
6
7
8
9
---
## SIGN-OFF
**Reported by:** Fatima Ali
**Date:** 2025-10-29
---