Pengujian Perangkat Lunak
Pengujian perangkat lunak adalah eksekusi dinamis suatu program dengan masukan terpilih untuk mendeteksi cacat dan memperoleh keyakinan bahwa perangkat lunak berperilaku sesuai yang diharapkan.
Definition
Pengujian perangkat lunak adalah aktivitas merancang dan melaksanakan kasus uji — masukan yang dipasangkan dengan hasil yang diharapkan — untuk mengungkapkan perbedaan antara perilaku aktual dan yang disyaratkan serta untuk memperkirakan keandalan perangkat lunak.
Scope
Topik ini mencakup tingkat pengujian (unit, integrasi, sistem, penerimaan); teknik kotak hitam seperti partisi ekuivalensi, analisis nilai batas, dan pengujian kombinatorial; teknik kotak putih yang didorong oleh kriteria cakupan kode; pengujian regresi, kinerja, dan eksplorasi; otomatisasi pengujian; serta teori kecukupan dan cakupan pengujian.
Core questions
- Bagaimana kasus uji yang efektif dipilih dari ruang masukan yang sangat besar dan tidak dapat dikelola?
- Kriteria cakupan apa yang mengukur kecukupan rangkaian uji?
- Bagaimana tingkat pengujian dari unit hingga penerimaan saling melengkapi?
- Bagaimana pengujian dapat diotomatisasi dan diintegrasikan ke dalam alur pengiriman?
Key theories
- Desain pengujian kotak hitam dan kotak putih
- Teknik kotak hitam memperoleh pengujian dari spesifikasi melalui partisi dan analisis batas, sementara teknik kotak putih memperoleh pengujian dari struktur kode yang dipandu oleh kriteria cakupan; keduanya saling melengkapi.
- Kriteria cakupan dan kecukupan pengujian
- Kriteria kecukupan seperti cakupan pernyataan, cabang, dan kondisi, serta kriteria berbasis model atas grafik aliran kontrol dan data, memberikan tujuan yang terukur tentang seberapa menyeluruh rangkaian uji menjalankan suatu program.
Clinical relevance
Pengujian adalah cara yang paling banyak dipraktikkan untuk memastikan perangkat lunak berperilaku benar sebelum dirilis; pengujian otomatis yang dirancang dengan baik dapat mendeteksi regresi sejak dini, mendukung refactoring dan pengiriman berkelanjutan, serta merupakan inti dari perangkat lunak yang dapat diandalkan.
Evidence & guidelines
ISO/IEC/IEEE 29119 menyediakan standar internasional untuk proses, dokumentasi, dan teknik pengujian perangkat lunak, dan area pengetahuan Pengujian Perangkat Lunak SWEBOK memberikan gambaran umum konsensus.
History
Pengujian berkembang dari debugging ad hoc menjadi disiplin ilmu dengan perlakuan sistematis oleh Myers pada tahun 1979; teori cakupan, pengujian berbasis model, dan otomatisasi pengujian berkembang selama dekade-dekade berikutnya, dan pengembangan berbasis pengujian (test-driven development) serta integrasi berkelanjutan menjadikan pengujian otomatis sebagai praktik tangkas (agile) inti.
Debates
- Seberapa banyak pengujian otomatis yang bermanfaat
- Keseimbangan yang tepat antara pengujian otomatis unit, integrasi, dan end-to-end masih diperdebatkan; piramida pengujian lebih menyukai banyak pengujian unit yang cepat daripada pengujian end-to-end yang lambat, tetapi para kritikus mencatat bahwa keseimbangan ini bergantung pada jenis dan risiko sistem.
Key figures
- Glenford Myers
- Paul Ammann
- Jeff Offutt
- Boris Beizer
Related topics
Seminal works
- myers2011
- ammann2016
- swebok2014
Frequently asked questions
- Mengapa kita tidak bisa menguji setiap masukan yang mungkin?
- Ruang masukan yang mungkin dan jalur eksekusi sangat besar atau tak terbatas untuk sebagian besar program, sehingga pengujian menyeluruh tidak dapat dilakukan; pengujian sebaliknya memilih kasus representatif dan batas menggunakan teknik sistematis untuk memaksimalkan deteksi cacat per pengujian.
- Apa perbedaan antara tingkat pengujian?
- Pengujian unit menguji komponen individual secara terpisah, pengujian integrasi memeriksa interaksinya, pengujian sistem mengevaluasi seluruh sistem terhadap persyaratannya, dan pengujian penerimaan mengonfirmasi bahwa sistem memenuhi kebutuhan pengguna; setiap tingkat menargetkan jenis cacat yang berbeda.