Quality Assurance dalam Pengembangan Perangkat Lunak yang Andal
Quality Assurance (QA) membantu menjaga kualitas perangkat lunak sejak penyusunan kebutuhan hingga rilis. Melalui pengendalian proses, pengujian sejak awal, pemeriksaan
Quality Assurance dalam Pengembangan Perangkat Lunak yang Andal
Kualitas perangkat lunak terlihat ketika pengguna mengandalkannya untuk menyelesaikan pekerjaan. Aplikasi belanja, misalnya, perlu mencatat pembayaran dengan benar, melindungi data pelanggan, dan menampilkan status pesanan yang konsisten. Quality Assurance (QA) membantu tim memenuhi kebutuhan tersebut melalui proses pengembangan yang terencana, dapat diperiksa, dan terus diperbaiki.
QA merupakan bagian dari manajemen kualitas yang berfokus pada pemberian keyakinan bahwa persyaratan kualitas akan terpenuhi. American Society for Quality (ASQ) menjelaskan QA sebagai kegiatan terencana dan sistematis dalam sistem kualitas. Penerapannya mencakup penetapan prosedur, pemeriksaan pelaksanaan proses, serta evaluasi hasil pekerjaan untuk menemukan peluang perbaikan.
QA berkaitan dengan quality control (QC) dan testing. QC berfokus pada pemenuhan persyaratan kualitas melalui pemeriksaan hasil. Testing menjadi salah satu bentuk utama QC untuk mengevaluasi perilaku perangkat lunak dan menemukan cacat. Sementara itu, QA memperbaiki proses pengembangan serta pengujian agar penyebab masalah dapat dicegah atau dikurangi. Hasil pengujian menjadi masukan bagi perbaikan tersebut.
Kualitas perlu ditetapkan sejak penyusunan kebutuhan. Pernyataan seperti “aplikasi harus cepat” perlu diperjelas menjadi kriteria penerimaan yang dapat diuji, termasuk waktu respons dan kondisi beban pengguna. ISO/IEC 25010:2023 menyediakan model kualitas produk yang dapat menjadi acuan untuk menentukan, mengukur, dan mengevaluasi kualitas sepanjang siklus hidup perangkat lunak.
Sebagai ilustrasi, sistem pembayaran perlu memiliki aturan ketika transaksi berhasil, gagal, atau menunggu konfirmasi. Pengulangan permintaan pembayaran yang sama seharusnya tidak menghasilkan tagihan ganda. Peninjauan kebutuhan dan perancangan pengujian sejak awal mendukung pendekatan shift left, yaitu membawa aktivitas pengujian lebih awal tanpa mengabaikan pengujian pada tahap berikutnya.
Prioritas pemeriksaan perlu mempertimbangkan kemungkinan kegagalan dan dampaknya. Pada aplikasi belanja, pembayaran serta hak akses pelanggan layak mendapat perhatian lebih besar karena berkaitan dengan uang dan kerahasiaan data. Pengujian perlu mencakup kondisi berhasil maupun gagal, seperti konfirmasi terlambat atau transaksi kedaluwarsa. Setelah perubahan, pengujian regresi membantu memeriksa kembali fungsi yang sebelumnya sudah berjalan.
Otomatisasi dapat mempercepat pemeriksaan berulang dan menyediakan umpan balik ketika kode berubah. Pengujian eksploratif tetap membantu menemukan perilaku yang belum tercakup dalam skenario tetap. Tim perlu memilih skenario otomatis berdasarkan manfaat dan biaya pemeliharaannya agar hasil pemeriksaan tetap berguna.
Keamanan juga perlu diperhatikan selama pengembangan. NIST melalui Secure Software Development Framework merekomendasikan praktik pengembangan aman untuk membantu mengurangi kerentanan, membatasi dampak eksploitasi, dan menangani akar penyebab masalah. Pada sistem pembayaran, pemeriksaan dapat mencakup pembatasan akses terhadap pesanan pengguna lain serta validasi konfirmasi transaksi.
Keberhasilan QA perlu dinilai melalui bukti yang relevan, seperti masalah serius yang lolos ke pengguna dan kelengkapan pemeriksaan proses bisnis penting. Code coverage membantu menemukan bagian kode yang belum dijalankan oleh pengujian otomatis. Namun, persentase tinggi tidak membuktikan ketepatan pemeriksaan hasil. Google Testing Blog menekankan perlunya menggunakan coverage bersama teknik penilaian lain.
Setiap kegagalan perlu menjadi bahan pembelajaran. Tim dapat menelusuri penyebabnya, memperbaiki proses terkait, dan memeriksa apakah tindakan tersebut mencegah pengulangan masalah. Dengan perbaikan berkelanjutan, QA membantu menghasilkan perangkat lunak yang lebih andal dan sesuai kebutuhan pengguna.