Перейти к содержимому

Testing dan Code Quality Aplikasi Web: Unit, Integration, End-to-End Test, Quality Gate CI

Alfa Yohannis

0:00 / 0:00

Testing dan Code Quality Aplikasi Web: Unit, Integration, End-to-End Test, Quality Gate CI

46 просмотров · 3 недели назад
Alfa Yohannis
186 подписчиков
46 просмотров · 3 недели назад
overage 100% tidak menjamin kode benar, dan cacat N+1 bisa lolos dari semua pengujian fungsional. Pelajari cara membuktikan kode tetap benar sesudah diubah. Pertemuan mata kuliah Pengembangan Aplikasi Web ini membahas Testing, Reliability, dan Code Quality. Pertanyaan intinya sederhana: apakah kode masih benar sesudah diubah? Jawabannya tidak boleh bergantung pada perasaan atau ingatan pengembang. Yang menjawabnya adalah pengujian otomatis yang dapat diulang pada setiap perubahan. Semua angka diukur dari satu aplikasi pesanan berbasis Python dan PostgreSQL, jadi tiap klaim dapat diperiksa ulang. Sembilan belas unit test selesai dalam 0,99 detik, lima belas pengujian integrasi dan kontrak dalam 1,27 detik, dan lima pengujian end-to-end lewat Chrome dalam 2,90 detik. Dihitung per pengujian, end-to-end sekitar sebelas kali lebih mahal daripada unit test. Bagian pertama menyusun perkakas pengujian lapis demi lapis, lalu merangkainya menjadi quality gate di Continuous Integration. Bagian kedua berisi persiapan lingkungan dan lima latihan yang membuktikan tiap klaim dengan angka hasil pengukuran sendiri. Yang dibahas dalam video ini: Tiga lapisan pengujian, yaitu unit test, integration test, dan end-to-end test, beserta biaya waktu dan jenis cacat yang tertangkap oleh masing-masing Testing pyramid dan testing trophy, serta alasan bentuk yang tepat ditentukan oleh harga tiap lapisan di proyek sendiri Test double (dummy, stub, fake, mock) untuk mengganti layanan biaya kirim milik pihak lain Mock untuk membuktikan bahwa pesanan bebas ongkir tidak memanggil layanan luar sama sekali Aturan praktis: bagian milik sendiri diuji apa adanya, bagian milik orang lain diganti Integration test dengan PostgreSQL sungguhan di container, ditambah fixture pytest yang me-rollback transaksi agar data uji tetap bersih Contract testing dengan JSON Schema untuk menjaga bentuk response API, termasuk bentuk kegagalannya Property-based testing dengan Hypothesis: menulis sifat yang harus selalu benar, lalu membiarkan pustaka mencari contoh yang membantahnya Code coverage yang menipu dan mutation testing: dua suite sama-sama 100%, tetapi hanya satu yang menangkap mutasi pada batas diskon grosir Analisis statis dengan ruff sebagai alas testing trophy Quality gate di Continuous Integration: batas mutu di berkas JSON terpisah, status keluar 0 atau 1, dan merge yang diblokir Cacat N+1 query: response identik, tetapi memakai 5 query alih-alih 2, dan tertangkap lewat header X-Query-Count Persiapan lingkungan dengan Docker Compose, virtual environment Python, pytest, Hypothesis, jsonschema, coverage, ruff, dan Playwright Latihan 1: mengukur harga dan hasil tangkapan ketiga lapisan pengujian Latihan 2: membuktikan coverage dapat menipu lewat mutasi operator pembanding Latihan 3: membaca jumlah query dengan curl dan diff untuk menangkap pola N+1 Latihan 4: menjalankan quality gate dan melihat akibatnya bila batas mutu dilonggarkan Latihan 5: membedah pengujian end-to-end Playwright, mulai dari goyangan waktu, opsi repeat-each, sampai rekaman trace Pesan utamanya: kebenaran kode sesudah diubah tidak dijawab dengan perasaan. Jawabannya adalah lapisan pengujian yang tepat dan gerbang mutu yang menegakkannya pada setiap perubahan. #SoftwareTesting #UnitTesting #IntegrationTesting #EndToEndTesting #CodeQuality #QualityGate #Pytest #Playwright #ContinuousIntegration #PengembanganAplikasiWeb