Menguasai test data management termasuk data preparation, masking, fixtures, dan best practices untuk mengelola test data secara efektif

Setelah di episode 12 kita mempelajari Agile QA & Scrum, pada episode ini kita mempelajari test data management — bagaimana menyiapkan, mengelola, dan memanage test data secara efektif. Test data yang baik adalah kunci testing yang efektif: tanpa data yang tepat, test case tidak bisa dijalankan dengan benar.
Mengapa test data management penting? Karena test data yang buruk bisa menyebabkan test false positive/negative, data inconsistency, dan bahkan security risk. Dengan test data management yang baik, testing menjadi lebih reliable dan efisien.
Test Data Sources:
├── Production Data (masked):
│ ├── Realistic
│ ├──-cover edge cases
│ └── Risk: Privacy, security
├── Synthetic Data:
│ ├── Generated by tools
│ ├── Controlled
│ └── Risk: May not be realistic
├── Manual Created:
│ ├── Specific scenarios
│ ├── Full control
│ └── Risk: Time consuming
└── Fixtures:
├── Pre-defined data sets
├── Reusable
└── Risk: Maintenance burden| Jenis | Fungsi | Contoh |
|---|---|---|
| Valid data | Test happy path | Email valid, password kuat |
| Invalid data | Test error handling | Email salah, password lemah |
| Boundary data | Test edge cases | Usia 0, 1, 120, 121 |
| Edge case data | Test skenario unik | Karakter spesial, unicode |
| Negative data | Test rejection | Data yang harus ditolak |
Data Masking Techniques:
├── Substitution: Ganti dengan data fake
│ ├── john@test.com → jane@test.com
│ └── 08123456789 → 08987654321
├── Shuffling: Acak data dari record lain
│ └── Ambil email dari user A, nama dari user B
├── Masking: Sembunyikan data sensitif
│ ├── 0812345678 → 0812****78
│ └── john@test.com → j***@test.com
└── Encryption: Enkripsi data
└── john@test.com → encrypted_valueData Masking Tools:
├── Faker (JavaScript/Python)
│ ├── name: faker.person.fullName()
│ ├── email: faker.internet.email()
│ └── phone: faker.phone.number()
├── Mockaroo (Web)
│ ├── Generate realistic data
│ ├── Custom formulas
│ └── Export ke CSV/JSON
└── Database tools
├── pg_dump + custom script
└── Data masking extensionsNote
Jangan pernah gunakan production data tanpa masking di environment testing. Data sensitif seperti email, nomor telepon, dan alamat harus di-masking untuk melindungi privacy pengguna.
{
"users": [
{
"id": 1,
"name": "John Doe",
"email": "john@test.com",
"role": "admin"
},
{
"id": 2,
"name": "Jane Smith",
"email": "jane@test.com",
"role": "user"
}
],
"products": [
{
"id": 1,
"name": "Laptop",
"price": 15000000,
"stock": 10
}
]
}Fixture Management Best Practices:
├── 1. Organize by feature
│ ├── users.fixture.json
│ ├── products.fixture.json
│ └── orders.fixture.json
├── 2. Use descriptive names
│ ├── user-admin.json
│ ├── user-unverified.json
│ └── product-out-of-stock.json
├── 3. Version control
│ └── Commit fixtures ke repository
├── 4. Cleanup after test
│ ├── Delete test data
│ └── Restore to initial state
└── 5. Documentation
└── Document data structure & relationshipstest_data:
valid_user:
name: "Test User"
email: "test@example.com"
password: "StrongPass123!"
invalid_email:
name: "Test User"
email: "invalid-email"
password: "StrongPass123!"
duplicate_user:
name: "Existing User"
email: "existing@test.com"
password: "StrongPass123!"
boundary_name:
name: "A" * 255
email: "boundary@test.com"
password: "StrongPass123!"products:
valid_product:
name: "Test Product"
description: "A test product"
price: 100000
stock: 10
out_of_stock:
name: "Out of Stock Product"
price: 50000
stock: 0
negative_price:
name: "Invalid Price"
price: -1000
stock: 10Tip
Buat test data generator yang bisa digunakan oleh seluruh tim. Ini memastikan konsistensi test data dan mengurangi waktu yang dihabiskan untuk membuat data manual.
Pada episode 13 ini, kalian telah mempelajari test data management.
Inti yang harus dibawa pulang:
Di episode 14 selanjutnya, kita akan membahas testing in CI/CD — bagaimana mengintegrasikan testing ke dalam pipeline continuous integration & deployment. Sampai jumpa di episode 14!