Sesi 04 dari 16

Proses & Strategi Quality Assurance

QA bukan hanya soal testing di akhir — ini tentang membangun budaya kualitas sejak baris kode pertama hingga software berjalan di tangan pengguna.

🛡️ ISO 25000 · CMMI
⚖️ Risk-Based Testing
🔄 Agile & DevOps QA
⏱️ 3 × 50 menit
🛡️ Bagian 1 — QA: Prevention vs Detection

QA Bukan Hanya Cari Bug di Akhir

💡 ANALOGI — Pabrik Roti

Detection (reaktif): Mencicipi roti di akhir proses dan membuang yang gosong. Boros, mahal, sudah terlambat.

Prevention (proaktif): Memastikan oven diatur suhunya dengan benar SEBELUM memanggang. Mengecek bahan baku SEBELUM digunakan. Melatih koki SEBELUM mulai bekerja. Hasilnya: hampir tidak ada roti yang gagal!

QA yang baik menggabungkan keduanya — tapi prioritas utama adalah prevention.

🔭 Quality Prevention

Mencegah defect sejak awal. Meliputi: review requirements, desain standar coding, pelatihan developer, audit proses, checklist kualitas di setiap fase. Biaya rendah, efek besar.

🔍 Quality Detection

Menemukan defect yang sudah ada melalui testing, code review, dan inspeksi. Tetap diperlukan, tapi jangan jadikan satu-satunya strategi QA.

💸 "Rule of Ten" — Biaya Bug Makin Mahal Makin Terlambat Ditemukan

Ini adalah fakta paling penting dalam QA: menemukan bug di fase requirements 10x lebih murah dibanding di testing, 100x lebih murah dibanding di production.

📍 Titik QA ditempatkan di setiap fase:

Requirements
Design
Development
Testing
Production

💰 Biaya relatif memperbaiki bug:

20×
100×
1000×
Semakin ke kanan = semakin mahal dan semakin sulit diperbaiki
📜 Bagian 2 — Standar & Framework QA

Tiga Pilar Standar QA Internasional

Standar QA memberikan panduan yang sudah teruji oleh industri global. Anda tidak perlu "menemukan kembali roda" — ikuti standar yang sudah ada.

🏛️
ISO/IEC 25000 (SQuaRE)
Software Quality Requirements and Evaluation. Standar internasional yang mendefinisikan model kualitas, metrik, dan proses evaluasi software. Lanjutan dari ISO 9126. Digunakan oleh perusahaan software global untuk memastikan produk memenuhi standar kualitas terukur.

Sub-standar utama: 2500n (Divisi kualitas model), 2501n (Divisi kualitas manajemen), 2502n (Divisi pengukuran), 2503n (Divisi persyaratan)
📈
CMMI (v2.0)
Capability Maturity Model Integration. Framework untuk mengukur dan meningkatkan kematangan proses organisasi software. Bukan tentang produk — tapi tentang seberapa matang cara kerja tim.

5 Level Kematangan:
Level 1: Initial (kacau, tidak terdokumentasi)
Level 2: Managed (proyek dikelola dasar)
Level 3: Defined (proses standar seluruh org)
Level 4: Quantitatively Managed (data-driven)
Level 5: Optimizing (continuous improvement)
📋
IEEE 730
Standard for Software Quality Assurance Plans (SQAP). Mendefinisikan isi dan format dari dokumen rencana QA. Memastikan tim QA memiliki rencana yang terstruktur, terdokumentasi, dan dapat diaudit.

Isi SQAP: Tujuan, referensi, manajemen, dokumentasi, standar & konvensi, review & audit, manajemen konfigurasi, pelaporan masalah.
💡 ANALOGI — Restoran Bintang Michelin

ISO 25000 = Buku panduan resep standar internasional (produk akhir harus memenuhi standar tertentu). CMMI = Sistem manajemen dapur yang menentukan bagaimana staf bekerja (proses yang matang). IEEE 730 = SOP tertulis yang harus diikuti setiap karyawan dapur (rencana QA yang terdokumentasi).

🔬 Bagian 3 — Teknik QA: Statis vs Dinamis

Dua Pendekatan Menemukan Defect

📄 Teknik QA Statis

Menganalisis produk (kode, dokumen, desain) tanpa menjalankannya. Seperti proof-reading naskah buku sebelum dicetak — Anda bisa menemukan kesalahan hanya dengan membacanya.

▶️ Teknik QA Dinamis

Menganalisis produk dengan menjalankannya dan mengamati perilakunya. Seperti mencicipi masakan untuk mengecek rasanya — Anda harus "menjalankan" masakan tersebut melalui indera.

📄 Teknik QA Statis — Detail

TeknikDeskripsiSiapa yang TerlibatContoh Temuan
Code Review Developer lain membaca kode untuk mencari bug, masalah desain, atau pelanggaran standar coding Developer (peer review) Variabel tidak diinisialisasi, logika if-else terbalik
Walkthrough Penulis kode/dokumen "membacakan" hasil kerjanya kepada tim, sambil tim mengajukan pertanyaan Tim kecil, informal Requirements ambigu, skenario yang terlewat
Inspection (Fagan) Review formal yang terstruktur dengan roles (moderator, author, reader, reviewer) dan proses yang terdefinisi Tim formal, ada moderator Defect serius, pelanggaran standar
Static Analysis Tool otomatis menganalisis kode tanpa menjalankannya — mencari pola berbahaya, kerentanan, dan masalah kompleksitas Otomatis + developer SQL injection, null pointer, dead code, complexity tinggi

Tools Static Analysis populer: SonarQube (multi-language), ESLint (JavaScript), Pylint (Python), FindBugs (Java), Checkmarx (security)

▶️ Teknik QA Dinamis — Level Testing

🧪 Unit Testing Level 1 — Paling Dasar

Menguji satu fungsi/method secara terisolasi. Seperti mengecek setiap baut mesin satu per satu sebelum merakit. Tools: pytest, JUnit, Jest.

🔗 Integration Testing Level 2 — Antarmuka

Menguji interaksi antar modul/komponen. Seperti mengecek apakah baut-baut yang sudah diuji cocok satu sama lain ketika dipasang. Fokus: interface, data flow, API calls.

🖥️ System Testing Level 3 — Sistem Utuh

Menguji sistem secara keseluruhan terhadap requirements. Seperti test drive mobil setelah sepenuhnya dirakit. Mencakup functional & non-functional testing.

👥 Acceptance Testing (UAT) Level 4 — Validasi Bisnis

Pengguna/klien memvalidasi bahwa sistem memenuhi kebutuhan bisnis mereka. Seperti pemilik mobil menyetujui bahwa mobil yang dipesan sesuai spesifikasi. Final gate sebelum rilis.

⚖️ Bagian 4 — Risk-Based Testing

Uji yang Paling Penting Duluan

Waktu dan sumber daya testing selalu terbatas. Tidak mungkin menguji semua hal dengan mendalam. Risk-Based Testing (RBT) menjawab: "Bagian mana yang paling penting untuk diuji terlebih dahulu?"

💡 ANALOGI — Pemeriksaan Kesehatan Berkala

Dokter tidak memeriksa semua bagian tubuh Anda setiap hari — itu tidak mungkin. Mereka fokus pada bagian yang paling berisiko berdasarkan riwayat Anda: jantung lebih diprioritaskan untuk pasien hipertensi, gula darah untuk pasien diabetes. Risk-Based Testing bekerja sama: prioritaskan pengujian pada area risiko bisnis tertinggi.

📊 Matriks Risiko Testing

Setiap fitur dinilai dari dua dimensi: Kemungkinan gagal (Likelihood) × Dampak jika gagal (Impact)

Impact: Low
Impact: Med
Impact: High
Impact: Critical
Likelihood: High
MEDIUM
HIGH
CRITICAL
CRITICAL
Likelihood: Med
LOW
MEDIUM
HIGH
CRITICAL
Likelihood: Low
LOW
LOW
MEDIUM
HIGH
Likelihood: Min
MINIMAL
MINIMAL
LOW
MEDIUM
🔴 CRITICAL = Uji paling lengkap & pertama 🟠 HIGH = Uji menyeluruh 🟡 MEDIUM = Uji standar 🟢 LOW = Uji minimal / skip

📝 Contoh RBT untuk Aplikasi E-Banking

FiturLikelihood GagalImpact BisnisRisk LevelPrioritas Testing
Transfer danaMediumCritical (uang hilang)CRITICAL🔴 Uji pertama, paling menyeluruh
Autentikasi loginHighHigh (akses tidak sah)CRITICAL🔴 Uji keamanan ekstensif
Riwayat transaksiLowMedium (ketidaknyamanan)MEDIUM🟡 Uji standar
Ubah foto profilLowLow (tidak kritis)LOW🟢 Uji minimal
Notifikasi pushMediumMedium (informasi penting)HIGH🟠 Uji menyeluruh
⬅️ Bagian 5 — Shift-Left Testing & Continuous Quality

Geser Testing ke Kiri = Lebih Awal

Shift-left testing berarti memulai aktivitas QA sedini mungkin dalam SDLC — bahkan sebelum ada kode yang ditulis. Artinya testing tidak lagi hanya tanggung jawab tim QA di akhir, tapi menjadi tanggung jawab semua orang sejak awal.

Prinsip Shift-Left: "Test early, test often" — Semakin awal defect ditemukan, semakin murah dan mudah diperbaiki. Requirements yang ambigu sudah bisa "diuji" melalui review sebelum satu baris kode pun ditulis.

🔧 TDD (Test-Driven Development)

Tulis test terlebih dahulu, baru tulis kode. Red → Green → Refactor. Memaksa developer berpikir seperti QA sejak awal menulis kode.

🤝 BDD (Behavior-Driven Development)

Tulis skenario dalam bahasa alami (Gherkin: Given-When-Then) yang dapat dipahami oleh developer, QA, dan bisnis. Menghilangkan gap komunikasi.

🔄 Bagian 6 — QA dalam Agile & DevOps

QA di Era Agile & CI/CD

Model waterfall tradisional: testing dilakukan di fase akhir, satu kali, oleh tim terpisah. Agile/DevOps merevolusi ini: testing adalah aktivitas berkelanjutan yang terintegrasi di setiap sprint dan pipeline CI/CD.

💡 ANALOGI — Assembly Line vs Artisan

Waterfall QA = Pengrajin yang membuat seluruh produk lalu mengeceknya di akhir. Jika ada masalah di awal, semua pekerjaan mungkin perlu diulang.

Agile/DevOps QA = Pabrik modern dengan quality checkpoint di setiap stasiun produksi. Masalah langsung ditangkap dan diperbaiki sebelum berlanjut ke stasiun berikutnya.

⚙️ CI/CD Pipeline dengan QA Terintegrasi

Setiap tahap pipeline memiliki quality gate — jika tidak lolos, proses berhenti dan developer harus memperbaiki sebelum melanjutkan:

📝
Code Review
QA Gate
🔨
Build
Compile Check
🧪
Unit Test
QA Gate
🔍
Static Analysis
QA Gate
🔗
Integration Test
QA Gate
🚀
Deploy Staging
E2E Test
📊
Production Monitor
Continuous QA

🏃 QA dalam Sprint Agile (2 Minggu)

📅 Hari 1-2: Sprint Planning

Review acceptance criteria setiap user story
Identifikasi risiko dan area kritis
Siapkan test scenario awal

📅 Hari 3-8: Development

Developer menulis unit test (TDD)
Code review setiap PR/MR
Automated test berjalan di CI/CD

📅 Hari 9-11: QA Testing

Integration & system testing
Exploratory testing
Bug reporting & triage

📅 Hari 12-14: Sprint Review

Regression testing
Demo ke stakeholder (UAT)
Retrospective: perbaiki proses QA
🏢 Bagian 7 — Studi Kasus: Strategi QA E-Commerce

QA untuk Aplikasi Toko Online

🛒 Kasus: Platform E-Commerce Lokal "TokoKita" (10 Juta Pengguna)

Tim engineering TokoKita menghadapi tantangan: setiap hari ada 3-5 release baru, 200+ developer, dan kesalahan kecil bisa berarti jutaan rupiah kerugian. Bagaimana strategi QA mereka?

1. Quality Gates yang Ketat di CI/CD

Setiap PR wajib: code coverage ≥80%, zero critical SonarQube issues, semua unit test hijau, code review oleh 2 developer. Jika satu syarat tidak terpenuhi → otomatis ditolak.

2. Risk-Based Testing untuk Fitur Baru

Fitur payment selalu mendapat CRITICAL priority. Tim QA dedicated 40% waktunya hanya untuk payment flow. Fitur UI/UX minor mendapat LOW priority dan sering diserahkan ke automated visual testing.

3. Shift-Left: QA Masuk dari Sprint Planning

QA engineer terlibat sejak story refinement untuk menulis acceptance criteria yang testable. Developer tidak bisa "done" tanpa test yang lulus.

4. Canary Deployment dengan Monitoring QA

Setiap rilis besar dilakukan bertahap: 1% traffic → 10% → 50% → 100%. Tim QA memantau error rate, latency, dan conversion rate di setiap tahap. Jika ada anomali → rollback otomatis.

Hasil: Escaped defect ratio turun dari 18% ke 3% dalam 6 bulan. Waktu deployment dari 2 minggu sekali menjadi 3× sehari. Customer complaints turun 60%.

✏️ Bagian 8 — Latihan Mandiri
📝 KUIS SESI 4

Uji Pemahaman Anda

Soal 1 — Konseptual

Jelaskan mengapa "prevention" lebih baik dari "detection" dalam QA. Berikan contoh konkret dari sudut pandang pengembangan aplikasi mobile banking.

Soal 2 — Standar

Apa perbedaan utama antara ISO 25000, CMMI, dan IEEE 730? Jika Anda memimpin startup software baru (5 developer), standar mana yang akan Anda terapkan pertama dan mengapa?

Soal 3 — Risk-Based Testing

Buat matriks risiko untuk aplikasi sistem informasi akademik (SIAKAD) kampus. Identifikasi minimal 6 fitur, nilai likelihood dan impact-nya, tentukan risk level, dan prioritas testing.

Soal 4 — Studi Kasus

Sebuah startup fintech baru saja mendapat pendanaan dan akan merilis aplikasi pinjaman online dalam 3 bulan. Rancang strategi QA komprehensif mereka — mencakup teknik statis, dinamis, risk-based testing, dan integrasi dalam pipeline CI/CD.

Soal 5 — Agile QA

Bandingkan peran QA dalam model waterfall vs Agile. Apa tantangan terbesar mengimplementasikan QA dalam sprint Agile 2 mingguan? Bagaimana mengatasinya?

💡 Rangkuman Kunci Sesi 4

Prevention > Detection — Mencegah bug 10-1000× lebih murah daripada memperbaiki setelah rilis

ISO 25000 (produk) + CMMI (proses) + IEEE 730 (dokumentasi) = tiga pilar standar QA

Statis (review, static analysis) dilakukan tanpa menjalankan kode — temukan bug lebih awal

Risk-Based Testing = fokus effort terbesar pada area dengan risiko bisnis tertinggi

Shift-left = mulai testing dari requirements, bukan tunggu sampai ada kode

CI/CD pipeline = QA terotomasi berjalan setiap ada perubahan kode — quality gate di setiap tahap