Quality Assurance Fundamental
Apa itu testing?
Testing adalah proses penting dalam pengembangan perangkat lunak yang bertujuan untuk mengidentifikasi kesalahan, cacat, atau kekurangan dalam sebuah sistem. Melalui pengujian, tim pengembang dapat memastikan bahwa perangkat lunak berfungsi sesuai dengan kebutuhan, menjaga kualitas, serta meningkatkan keandalan sistem secara keseluruhan. Dengan beragam metode dan pendekatan yang tersedia, pengujian memainkan peran kunci dalam memastikan bahwa produk akhir dapat memberikan nilai tambah kepada pengguna dan pemangku kepentingan lainnya.
Perbedaan QA & QC
Quality Control (QC)
QC adalah teknik yang Product Oriented. yaitu lebih berfokus pada apakah aplikasi sesuai dengan requirement, bebas dari bug, tidak memiliki cacat, serta sesuai dengan spesifikasi yang ditentukan.
Quality Assurance (QA)
QA adalah teknik yang Process Oriented. yaitu lebih berfokus pada bagaimana software itu bisa digunakan. apakah dalam proses pengembangannya telah menerapkan plan yang sesuai.
Test Objectives
- Prevent Defects
Mencegah terjadinya defect yang mungkin akan terjadi
- Find failure and defects
Menemukan dan mengidentifikasi defect atau failure seawal mungkin
- Share information to stakeholders
Menyediakan informasi yang cukup untuk membantu stackholder menentukan pilihan
- Evaluate Work
Bahan evaluasi apakah produk sesuai requirement, user stories, atau hal-hal lainnya
- Verify requirement
Memastikan produk sesuai dengan requirement yang telah ditentukan
- Validate test object
Memastikan test yang akan dilakukan sudah sesuai dengan requirement
- Build confidence
Memastikan aplikasi yang telah dibuat itu meyakinkan untuk di release atau tidak
- Reduce risk
Menganalisis resiko sehingga dapat menanggulangi kemungkinan resiko yang besar
Perbedaan Debugging VS Testing
| Testing | Debugging | |
|---|---|---|
| Objective | menemukan bug atau error | memperbaiki error selama proses testing |
| Performed By | Tester atau Developer | Developer |
| Automation | Manual/Otomatis | Manual |
| Programming Knowledge | kebanyakan tidak memerlukan kemampuan programming | Membutuhkan kemampuan programming yang sesuai |
7 Testing Principles
- Testing show presence of defect
testing dapat menunjukan adanya cacat, tidak dapat membuktikan tidak adanya cacat. testing membantu dalam menemukan cacat yang belum ditemukan
- early testing
mulai testing sesegera mungkin. menemukan kerusakan sejak dini dapat menghemat banyak uang daripada menemukan nanti
- testing - context dependent
testing bergantung
- Exhautive testing is impossible
Mustahil menguji semua kemungkinan kombinasi input data dan skenario. cara pengujian yang lebih cerdas harus diadopsi
- Defect Clustering
Distribusi bug yang sama di seluruh modul tidak memungkinkan. cacat dapat dikelompokkan dalam potongan kecil kode/modul
- Pesticide paradox
Mengeksekusi kasus pengujian yang sama berulang kali tidak akan membantu mengidentifikasi lebih banyak bug. tinjau secara teratur dan modifikasi jika diperlukan perubahan
- absence-of-error fallacy
menemukan dan memperbaiki banyak bug tidak akan membantu apalabila gagal memenuhi kebutuhan pengguna, itu sama saja tidak berguna
