Post

Test Scenario, Test Case, dan Bug Report

Test Scenario, Test Case, dan Bug Report

Pengenalan

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

Tujuan Test Scenario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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.

Karakteristik Test Case:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
✅ 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

Tujuan Test Case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1. ✅ Verification & Validation
   ├─ Verify bahwa fitur bekerja sesuai spec
   ├─ Validate bahwa output benar
   └─ Ensure quality standards

2. 🔄 Repeatability
   ├─ Dapat dieksekusi berkali-kali
   ├─ Consistent results
   └─ Any tester dapat menjalankan

3. 📝 Documentation
   ├─ Record testing done
   ├─ Historical evidence
   ├─ Audit trail
   └─ Regulatory compliance

4. 🤖 Automation
   ├─ Dapat diotomasi
   ├─ Continuous testing
   ├─ Regression testing
   └─ CI/CD integration

5. 👥 Team Collaboration
   ├─ Clear communication
   ├─ Shared understanding
   ├─ Easy handoff
   └─ Knowledge transfer

6. 📊 Metrics & Reporting
   ├─ Count test cases
   ├─ Track pass/fail
   ├─ Coverage calculation
   └─ Quality metrics

Elemen-Elemen Test Case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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

ASPEKTEST SCENARIOTEST CASE
DEFINISINarasi/deskripsi tingkat tinggiDetail langkah-langkah eksekusi
TUJUANApa yang ditest?Bagaimana cara test?
LEVEL DETAILHigh-levelLow-level / Detailed
JUMLAH DOKUMENFewer (5-10)Many (50-100+)
ORIENTASIBusiness-orientedTechnical-oriented
FOKUSUser journeyStep-by-step execution
INPUTUmum (tidak spesifik)Spesifik (nilai detail)
EXPECTED RESULTUmum (hasil akhir)Detail (setiap step)
REPEATABLEFleksibelKonsisten
TRACEABLEKe use casesKe requirements
AUTOMATIONSulit diotomasiMudah diotomasi
EFFORT LEVELLow effortHigh effort
SKILL REQUIREDBusiness analyst levelTester/QA level
USAGEPlanning & documentationExecution & 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

Visual Comparison

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

Template Test Scenario

Format Sederhana Test Scenario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 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]

Template Test Case

Format Lengkap Test Case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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]

Actual Result

[Filled during execution]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
## Status
[PASS / FAIL / BLOCKED / SKIPPED]

## Severity (if FAIL)
[CRITICAL / HIGH / MEDIUM / LOW]

## Defect ID (if FAIL)
[Reference to bug report]
[e.g., BR-001]

## Comments / Notes
[Additional observations]

## Screenshots / Evidence
[Attach screenshots if needed]

## Executed By
[Tester name]

## Execution Date & Time
[YYYY-MM-DD HH:MM]

## Environment
[Testing environment details]
- Platform: iOS / Android
- Device: iPhone 12 / Samsung Galaxy S21
- OS Version: iOS 15.0 / Android 12
- Build Version: v1.0.0

## Dependency
[Any other test cases this depends on]
- TC-001 (must run first)

## Approval
[Sign-off by QA Lead]
- Approved by: [Name]
- Date: [Date]

Format Sederhana Test Case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## TEST CASE - [TC-ID] [Title]

**Feature:** [Module]
**Scenario:** [TS-ID]
**Priority:** HIGH

### Input Data:
- Weight: 55 kg
- Height: 150 cm

### Test Steps:
1. Open app
2. Enter weight: 55
3. Enter height: 150
4. Click Calculate

### Expected Result:
- BMI: 24.44
- Classification: Normal

### Status: ☐ PASS ☐ FAIL

Contoh Test Scenario & Case untuk BMI Calculator

Skenario 1: Pengguna Menghitung BMI Mereka

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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 Flow
1. 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 data
1. 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 empty
1. 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 Cases untuk Scenario TS-001

Test Case 1: Valid BMI Calculation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
## 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

1
2
### Actual Result

[To be filled during execution]

Execution Date: ______ Executed By: ______

1
2
3
4
5
6
7
8
9
10
11
12
13
### Supporting Evidence
- [ ] Screenshot attached showing result
- [ ] Device/Browser: iPhone 12, iOS 15.0

### Severity (if FAIL)
CRITICAL (Calculation is core functionality)

### Notes
Formula verification: 55 / (150/100)² = 55 / 2.25 = 24.44 ✓

### Approval
Approved by QA Lead: _____________ Date: _________

Test Case 2: Invalid Data Handling

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
## 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 3: Empty Field Validation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
## 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 Case 4: Boundary Value - BMI Classification

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
## TEST CASE: TC-004

**ID:** TC-BMI-CLASS-004
**Title:** Verify BMI classification boundaries
**Module:** BMI Calculator - Classification
**Scenario:** TS-001
**Type:** FUNCTIONAL / BOUNDARY VALUE
**Priority:** CRITICAL
**Status:** ☐ PASS ☐ FAIL ☐ BLOCKED

### Objective
Verify that BMI classification is accurate at boundary values 
between categories.

### Pre-conditions
✓ App launched on Calculator tab
✓ Input fields empty

### Test Data - Multiple Boundary Cases

**Case A: Boundary between Underweight and Normal (BMI = 18.5)**
| Parameter | Value |
|-----------|-------|
| Weight | 56.1 kg |
| Height | 175 cm |
| Calculation | 56.1 / (1.75)² = 18.33 |
| Expected | Normal (>18.5) OR Underweight (≤18.5) |

**Case B: Boundary between Normal and Overweight (BMI = 25.0)**
| Parameter | Value |
|-----------|-------|
| Weight | 75.5 kg |
| Height | 175 cm |
| Calculation | 75.5 / (1.75)² = 24.61 |
| Expected | Normal |

**Case C: Boundary between Overweight and Obese (BMI = 30.0)**
| Parameter | Value |
|-----------|-------|
| Weight | 90.3 kg |
| Height | 175 cm |
| Calculation | 90.3 / (1.75)² = 29.43 |
| Expected | Overweight |

### Test Steps

| # | Step | Expected Result |
|---|------|-----------------|
| 1 | Open app | Calculator ready |
| 2-12 | [Repeat for each case A, B, C] | |
| 2 | Enter Case A: Weight 56.1 | Field shows 56.1 |
| 3 | Enter Case A: Height 175 | Field shows 175 |
| 4 | Click Calculate | Calculation executed |
| 5 | Verify BMI ≈18.33 | BMI displayed correctly |
| 6 | Verify classification | Should be "Normal" or correct boundary |
| 7-12 | Repeat for Cases B and C | |

### Expected Result

✓ Case A: BMI 18.33 = “Normal” ✓ Case B: BMI 24.61 = “Normal”
✓ Case C: BMI 29.43 = “Overweight” ✓ All calculations within ±0.01 precision ✓ Correct classification applied

1
2
### Actual Result

[To be filled during execution]

Case A Result: _______ Case B Result: _______ Case C Result: _________

Execution Date: ______ Executed By: ______

1
2
3
4
5
6
### Severity (if FAIL)
CRITICAL (Misclassification is functional failure)

### Approval
Approved by QA Lead: _____________ Date: _________

Skenario 2: Melihat dan Mengelola History

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 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 Flow
1. 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 Entry
1. 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 History
1. 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.

Karakteristik Bug Report yang Baik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
✅ 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

Tujuan Bug Report

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1. 🎯 Issue Documentation
   ├─ Merekam masalah secara formal
   ├─ Historical record
   ├─ Audit trail
   └─ Compliance documentation

2. 🐛 Bug Tracking
   ├─ Monitor bug status
   ├─ Track fixes
   ├─ Prevent duplicates
   └─ Prioritization

3. 💡 Communication
   ├─ Inform stakeholder
   ├─ Clear understanding between QA & Dev
   ├─ Attach evidence (screenshots)
   └─ Discussion medium

4. 📊 Quality Metrics
   ├─ Count bugs by severity
   ├─ Identify patterns
   ├─ Root cause analysis
   ├─ Trend analysis
   └─ Process improvement

5. ✅ Verification
   ├─ Provide exact steps to reproduce
   ├─ Allow developer to verify fix
   ├─ Enable QA to confirm resolution
   └─ Prevent regression

6. 📈 Project Visibility
   ├─ Show project health
   ├─ Risk assessment
   ├─ Release readiness
   └─ Stakeholder reporting

Bug Lifecycle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Bug Lifecycle:
═════════════════════════════════════════════════════════════

        ┌─────────────────────────────┐
        │  1. REPORTED / OPEN         │
        │  (Bug ditemukan & dilaporkan)│
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  2. NEW / UNCONFIRMED       │
        │  (Menunggu konfirmasi)       │
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  3. CONFIRMED / ASSIGNED    │
        │  (Diassign ke developer)    │
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  4. IN PROGRESS             │
        │  (Developer sedang fix)      │
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  5. RESOLVED / FIXED        │
        │  (Developer claim fixed)     │
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  6. VERIFICATION PENDING    │
        │  (QA verify fix)             │
        └────────────┬────────────────┘
                     │
          ┌──────────┴──────────┐
          │                     │
    ┌─────▼──────┐      ┌──────▼──────┐
    │ 7a. CLOSED │      │ 7b. REOPENED│
    │ (Fix OK)   │      │ (Still bug) │
    │            │      │             │
    └────────────┘      └──────┬──────┘
                               │
                        (Back to #4)
                        
    OR
    
    ┌────────────────────────────────┐
    │ DUPLICATE / WONT FIX / INVALID │
    │ (Tidak jadi difix)              │
    └────────────────────────────────┘

Severity Levels (Standar Industry)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
🔴 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

Template Bug Report

Format Lengkap Bug Report (Standar IEEE / ISTQB)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# BUG REPORT TEMPLATE

## BUG IDENTIFICATION

### Bug ID
[Auto-generated, e.g., BR-001, BUG-2025-001]

### Title
[Concise, descriptive title - max 100 characters]

### Status
[ ] NEW
[ ] OPEN
[ ] ASSIGNED
[ ] IN PROGRESS
[ ] FIXED
[ ] VERIFIED
[ ] CLOSED
[ ] DUPLICATE
[ ] WONT FIX
[ ] DEFERRED

### Created Date
[YYYY-MM-DD HH:MM]

### Reported By
[Tester name]

### Assigned To
[Developer name] / [Unassigned]

---

## SEVERITY & PRIORITY

### Severity Level
[ ] CRITICAL (P0) - Blocks all usage
[ ] HIGH (P1) - Major feature broken
[ ] MEDIUM (P2) - Feature partially working
[ ] LOW (P3) - Cosmetic issue

### Priority
[ ] CRITICAL - Fix immediately
[ ] HIGH - Fix ASAP
[ ] MEDIUM - Fix in current sprint
[ ] LOW - Fix when possible

### Release Impact
[ ] MUST FIX - Cannot release with this
[ ] SHOULD FIX - Preferred to fix
[ ] CAN DEFER - Can release & fix later

---

## COMPONENT INFORMATION

### Module / Component
[Which module/feature affected]

### Test Case Reference
[Reference to test case that found bug]
[e.g., TC-001, TC-BMI-CAL-001]

### Feature
[Feature name]

---

## ENVIRONMENT DETAILS

### Platform
[ ] iOS
[ ] Android
[ ] Web
[ ] Other: _______

### Device / Browser
[Specific device model]
[e.g., iPhone 12, Samsung Galaxy S21]

### OS Version
[e.g., iOS 15.0, Android 12]

### App Version
[e.g., v1.0.0, Build 2025.1]

### Environment
[ ] Development
[ ] Staging
[ ] Production
[ ] Other: _______

### Network Condition
[ ] WiFi
[ ] 4G LTE
[ ] Offline
[ ] Other: _______

---

## BUG DESCRIPTION

### Summary
[1-2 sentences explaining the bug]

### Detailed Description
[Comprehensive explanation of what's wrong]

### Expected Behavior
[What should happen]

### Actual Behavior
[What actually happens]

### How Often
[ ] Always (100% reproducible)
[ ] Intermittent (50-99% reproducible)
[ ] Rare (< 50% reproducible)

---

## REPRODUCTION STEPS

### Pre-conditions
[Setup needed before reproducing]
1. Condition 1
2. Condition 2

### Step-by-Step Reproduction

| Step # | Action | Expected | Actual |
|--------|--------|----------|--------|
| 1 | [Action 1] | [Expected] | [Actual] |
| 2 | [Action 2] | [Expected] | [Actual] |
| 3 | [Action 3] | [Expected] | [Actual] |

### Post-conditions
[State after bug reproduction]

---

## SUPPORTING EVIDENCE

### Screenshots
[Attach screenshot showing the bug]
[Annotation/highlighting the issue]

### Logs / Error Messages

[Paste any error messages, stack traces, logs]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
### 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

[Chronological discussion between QA and Dev]

[Date/Time] [Tester]: Initial observation… [Date/Time] [Dev]: Question about… [Date/Time] [Tester]: Additional info…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
### Attachments
- [ ] Screenshot_001.png
- [ ] ErrorLog.txt
- [ ] Video_reproduction.mp4

### References
[Links to related documentation, issues, etc.]

---

## SIGN-OFF

### QA Sign-Off
Reported by: _____________ Date: _______
Signature: _________________________

### Development Sign-Off
Fixed by: _____________ Date: _______
Signature: _________________________

### Verification Sign-Off
Verified by: _____________ Date: _______
Signature: _________________________

---

## CHANGELOG

| Date | Status | Updated By | Comments |
|------|--------|-----------|----------|
| 2025-10-29 | NEW | Tester A | Initial report |
| 2025-10-30 | ASSIGNED | QA Lead | Assigned to Dev B |
| 2025-11-01 | IN PROGRESS | Dev B | Started investigation |
| 2025-11-02 | FIXED | Dev B | Fix committed |
| 2025-11-03 | VERIFIED | Tester A | Fix confirmed |

Format Ringkas Bug Report (Simplified)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## BUG REPORT - [BR-ID]

**Title:** [Brief description]
**Severity:** [ ] P0 [ ] P1 [ ] P2 [ ] P3
**Status:** [ ] NEW [ ] ASSIGNED [ ] FIXED [ ] CLOSED

**Platform:** iOS / Android
**Device:** iPhone 12 / Galaxy S21
**App Version:** v1.0.0

### Steps to Reproduce:
1. [Step 1]
2. [Step 2]
3. [Step 3]

### Expected:
[What should happen]

### Actual:
[What actually happens]

### Screenshot:
[Attach screenshot]

**Reported by:** [Name] | **Date:** [Date]

Contoh Bug Report untuk BMI Calculator

Bug Report 1: Calculation Error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# BUG REPORT

## BUG IDENTIFICATION

**Bug ID:** BR-BMI-CAL-001
**Title:** BMI Calculation returns incorrect value for weight 85kg and height 180cm
**Status:** OPEN
**Created:** 2025-10-29 14:30 UTC
**Reported by:** Ahmed Hassan (QA Tester)
**Assigned to:** Unassigned

---

## SEVERITY & PRIORITY

**Severity Level:** 🔴 CRITICAL (P0)
**Priority:** CRITICAL - Fix immediately
**Release Impact:** MUST FIX - Cannot release with this bug

**Justification:** Core calculation functionality is broken, rendering 
the app unusable for its primary purpose.

---

## COMPONENT INFORMATION

**Module:** BMI Calculator - Calculation Engine
**Feature:** BMI Calculation
**Test Case Reference:** TC-BMI-CAL-005

---

## ENVIRONMENT DETAILS

**Platform:** iOS
**Device:** iPhone 12 Pro
**OS Version:** iOS 15.4
**App Version:** v1.0.0, Build 2025.10.29
**Testing Environment:** Staging
**Network:** WiFi

---

## BUG DESCRIPTION

### Summary
When user enters weight=85kg and height=180cm, the app calculates 
BMI as 28.13 instead of the correct value 26.23.

### Detailed Description
The BMI calculation formula appears to have an error. Using the 
correct formula: BMI = weight (kg) / height (m)²

For weight=85kg and height=180cm:
Correct BMI = 85 / (1.80)² = 85 / 3.24 = 26.23

However, the app displays 28.13, which is incorrect.

### Expected Behavior
App should display BMI = 26.23
App should classify as "Overweight"
Calculation should be accurate to 2 decimal places

### Actual Behavior
App displays BMI = 28.13 (incorrect)
Classification shown as "Obese" (incorrect for correct BMI)
Calculation appears to use wrong formula or wrong height conversion

### How Often
**Always** - 100% reproducible with these values
(Tested 5 times, always shows 28.13)

---

## REPRODUCTION STEPS

### Pre-conditions
✓ App installed: v1.0.0
✓ App launched successfully
✓ On Calculator tab
✓ Input fields empty

### Step-by-Step Reproduction

| Step | Action | Expected | Actual |
|------|--------|----------|--------|
| 1 | Open BMI Calculator app | Calculator tab displays | ✓ Displays correctly |
| 2 | Tap Weight input field | Field focused, keyboard shows | ✓ Works |
| 3 | Enter "85" in Weight | Field shows "85" | ✓ Shows "85" |
| 4 | Tap Height input field | Field focused | ✓ Works |
| 5 | Enter "180" in Height | Field shows "180" | ✓ Shows "180" |
| 6 | Tap Calculate button | Calculation executes | ✓ Button responds |
| 7 | Observe BMI result | Should show "26.23" | ✗ Shows "28.13" (WRONG) |
| 8 | Observe classification | Should show "Overweight" | ✗ Shows "Obese" (WRONG) |

### Post-conditions
- App shows incorrect BMI value
- User receives wrong classification
- Incorrect data saved to history (if saved)

---

## SUPPORTING EVIDENCE

### Screenshots

**Screenshot 1: Input Values**

┌─────────────────────────────┐ │ Body Mass Index │ │ Calculator History │ │ │ │ Weight (kg) │ │ ═════════════════ 85 │ │ │ │ Height (cm) │ │ ═════════════════ 180 │ │ │ │ Your Body Mass Index │ │ 28.13 ✗ WRONG │ │ Obese ✗ WRONG CLASS │ │ │ │ [Save to history] │ └─────────────────────────────┘

1
2
3
4
5
6
**Screenshot 2: Detailed View**
[Screenshot showing input fields with values 85 and 180, result 28.13]

### Calculation Verification

Manual Calculation: Weight: 85 kg Height: 180 cm = 1.80 m

Formula: BMI = Weight / (Height)² BMI = 85 / (1.80)² BMI = 85 / 3.24 BMI = 26.23 ✓ CORRECT

App shows: 28.13 ✗ INCORRECT Difference: 28.13 - 26.23 = 1.90 (about 7.3% error)

1
2
### Test Data Used

Input Values:

  • Weight: 85 kg
  • Height: 180 cm

Expected Output:

  • BMI: 26.23
  • Classification: Overweight

Actual Output:

  • BMI: 28.13
  • Classification: Obese

Status: FAILURE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
---

## 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.

[Expected Fix Timeline: 2025-10-30]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
### Attachments
- BugReport_BR-BMI-CAL-001_Screenshot1.png
- BugReport_BR-BMI-CAL-001_Screenshot2.png
- BugReport_BR-BMI-CAL-001_CalculationVerification.txt
- BugReport_BR-BMI-CAL-001_TestLog.txt

---

## CHANGELOG

| Date | Time | Status | Updated By | Action |
|------|------|--------|-----------|--------|
| 2025-10-29 | 14:30 | NEW | Ahmed Hassan | Initial report |
| 2025-10-29 | 14:45 | OPEN | QA Lead | Severity confirmed as CRITICAL |
| 2025-10-29 | 15:00 | ASSIGNED | QA Lead | Assigned to Dev Team |
| 2025-10-30 | 09:00 | IN PROGRESS | Dev | Started fix |
| [Pending] | [Pending] | FIXED | Dev | Fix committed |
| [Pending] | [Pending] | VERIFIED | QA | Fix verified |
| [Pending] | [Pending] | CLOSED | QA Lead | Bug closed |

---

## SIGN-OFF

**Reported by:** Ahmed Hassan (QA Tester)
**Date:** 2025-10-29
**Signature:** A.H. ________________

**Assigned to:** [Developer Name]
**Acknowledged Date:** [To be filled]
**Signature:** ________________

**Fixed by:** [To be filled]
**Fixed Date:** [To be filled]
**Signature:** ________________

**Verified by:** [To be filled]
**Verification Date:** [To be filled]
**Signature:** ________________

Bug Report 2: UI Issue (Input Validation Missing)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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 │ │ └─────────────────────────────┘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
---

## 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

---

Bug Report 3: UI/UX Issue (Minor)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# BUG REPORT

## BUG IDENTIFICATION

**Bug ID:** BR-BMI-UI-003
**Title:** BMI classification badge color inconsistent - Underweight shows wrong color
**Status:** OPEN
**Created:** 2025-10-29 16:20 UTC
**Reported by:** Karim Mohamed (QA Tester)
**Assigned to:** Unassigned

---

## SEVERITY & PRIORITY

**Severity Level:** 🟢 LOW (P3)
**Priority:** LOW
**Release Impact:** CAN DEFER

**Justification:** Cosmetic issue, does not affect functionality. 
Can defer to next version if needed.

---

## COMPONENT INFORMATION

**Module:** BMI Calculator - UI Display
**Feature:** BMI Classification Badge Color
**Test Case Reference:** TC-BMI-UI-007

---

## ENVIRONMENT DETAILS

**Platform:** iOS
**Device:** iPhone SE 2nd Gen
**OS Version:** iOS 14.8
**App Version:** v1.0.0

---

## BUG DESCRIPTION

### Summary
The BMI classification badge for "Underweight" category displays 
in Blue color instead of the designed Purple color.

### Expected Behavior
- Underweight: Purple badge (#9C27B0)
- Normal: Green badge (#4CAF50)
- Overweight: Orange badge (#FF9800)
- Obese: Red badge (#F44336)

### Actual Behavior
- Underweight: Blue badge (#2196F3) ✗ WRONG
- Normal: Green badge ✓ CORRECT
- Overweight: Orange badge ✓ CORRECT
- Obese: Red badge ✓ CORRECT

### How Often
**Always** - 100% reproducible for Underweight category

---

## REPRODUCTION STEPS

### Step-by-Step

| Step | Action | Expected | Actual |
|------|--------|----------|--------|
| 1 | Enter Weight: 50 kg | Accepts input | ✓ OK |
| 2 | Enter Height: 180 cm | Accepts input | ✓ OK |
| 3 | Click Calculate | Calculates BMI | ✓ OK |
| 4 | Observe badge color | Should be Purple | ✗ Blue |
| 5 | Verify BMI value | Should be ~15.4 | ✓ 15.4 (Underweight) |

---

## SUPPORTING EVIDENCE

### Screenshot

**Current (WRONG): Blue badge**

BMI: 15.4 [Blue Badge] Underweight ✗ Should be Purple

1
2
**Expected: Purple badge**

BMI: 15.4 [Purple Badge] Underweight ✓ Correct color ```


References

This post is licensed under CC BY 4.0 by the author.