Tentang Pengujian Perangkat Lunak
Kita pernah membahas sedikit soal pengujian perangkat lunak (software testing) pada pembahasan Agile Software Development Life Cycle, nah sekarang kita kenalan nih sama si Software Testing ini.
PENGENALAN
Pengujian Perangkat Lunak adalah proses mengevaluasi fungsionalitas aplikasi perangkat lunak untuk menemukan bug perangkat lunak. Ini memeriksa apakah perangkat lunak yang dikembangkan memenuhi persyaratan yang ditentukan dan mengidentifikasi cacat apa pun dalam perangkat lunak untuk menghasilkan produk yang berkualitas.
Itu juga dinyatakan sebagai proses memverifikasi dan memvalidasi produk perangkat lunak. Memeriksa apakah produk perangkat lunak:
- Memenuhi kebutuhan bisnis dan teknis yang memandu desain dan pengembangannya
- Bekerja sesuai persyaratan
- Dapat diimplementasikan dengan karakteristik yang sama
Mengapa Pengujian Perangkat Lunak Diperlukan?
Pentingnya pengujian perangkat lunak adalah suatu keharusan. Melewatkan proses ini jelas bukan ide yang baik dan dapat memengaruhi produk serta bisnis. Untuk memahami pentingnya pengujian, mari kita lihat beberapa poin penting yang menjelaskan mengapa produk kalian harus menjalaninya:
Hemat Biaya
Menguji proyek kalian tepat waktu dapat menghemat uang dalam jangka panjang. Pengembangan perangkat lunak terdiri dari banyak tahap dan jika bug ditemukan pada tahap awal, biayanya jauh lebih murah untuk memperbaikinya.
Keamanan
Ini adalah bagian pengujian perangkat lunak yang paling sensitif dan rentan. Pengguna selalu mencari produk tepercaya yang dapat mereka andalkan. Ini membantu dalam menghilangkan masalah dan risiko terlebih dahulu.
Kualitas Produk
Untuk membuat visi produk kalian menjadi nyata, visi tersebut harus berjalan sesuai rencana. Penting untuk mengikuti persyaratan produk karena ini membantu kalian mendapatkan hasil akhir yang diperlukan.
Kepuasan Pelanggan
Tujuan akhir bagi seorang product owner adalah memberikan kepuasan pelanggan yang terbaik. Perangkat lunak harus diuji untuk menghadirkan pengalaman pengguna sebaik mungkin.
SOFTWARE TESTING LIFE CYCLE (STLC)
Software Testing Life Cycle adalah urutan berbagai aktivitas yang dilakukan oleh tim pengujian untuk memastikan kualitas perangkat lunak atau produk. Ini mendefinisikan serangkaian kegiatan yang dilakukan untuk melakukan Pengujian Perangkat Lunak.
Berbagai fase siklus hidup pengujian perangkat lunak tersebut adalah:
Analisis Kebutuhan/Persyaratan (Requirement Analysis)
Analisis Kebutuhan adalah langkah pertama yang terlibat dalam siklus hidup pengujian Perangkat Lunak. Pada langkah ini, tim Quality Assurance (QA) memahami persyaratan dalam hal apa yang akan kalian uji & mencari tahu persyaratan yang dapat diuji.
Perencanaan Test (Test Planning)
Perencanaan Pengujian adalah fase paling penting dari siklus hidup pengujian Perangkat Lunak di mana semua strategi pengujian ditentukan. Fase ini juga disebut sebagai fase Strategi Uji. Pada fase ini, Test Manager dilibatkan untuk menentukan perkiraan usaha dan biaya untuk keseluruhan proyek. Ini mendefinisikan tujuan & ruang lingkup proyek.
Pengembangan Kasus Uji (Test Case Development)
Pengembangan kasus uji dimulai setelah tahap perencanaan pengujian selesai. Ini adalah fase STLC di mana tim penguji mencatat kasus uji terperinci. Bersamaan dengan kasus uji, tim penguji juga menyiapkan data uji untuk pengujian. Setelah kasus uji siap, kasus uji ini ditinjau oleh anggota rekan atau pimpinan QA.
Penyiapan Lingkungan Uji (Test Environment Setup)
Menyiapkan lingkungan pengujian adalah bagian penting dari Siklus Hidup Pengujian Perangkat Lunak. Lingkungan pengujian adalah pengaturan perangkat lunak dan perangkat keras untuk tim pengujian untuk mengeksekusi kasus uji. Ini mendukung eksekusi pengujian dengan perangkat keras, perangkat lunak, dan jaringan yang dikonfigurasi.
Eksekusi Pengujian (Test Execution)
Fase selanjutnya dalam Siklus Hidup Pengujian Perangkat Lunak adalah Eksekusi Pengujian. Eksekusi pengujian adalah proses mengeksekusi kode dan membandingkan hasil yang diharapkan dan aktual. Saat eksekusi pengujian dimulai, analis pengujian mulai mengeksekusi skrip pengujian berdasarkan strategi pengujian yang diizinkan dalam proyek.
Penutupan Siklus Uji (Test Cycle Closure)
Fase terakhir dari Siklus Hidup Pengujian Perangkat Lunak adalah Penutupan Siklus Uji. Ini melibatkan memanggil pertemuan anggota tim pengujian & mengevaluasi kriteria penyelesaian siklus berdasarkan cakupan Tes, Kualitas, Biaya, Waktu, Tujuan Bisnis Penting, dan Perangkat Lunak.
JENIS-JENIS PENGUJIAN PERANGKAT LUNAK
Pengujian adalah bagian integral dari setiap proyek perangkat lunak yang sukses. Jenis pengujian perangkat lunak bergantung pada berbagai faktor, termasuk persyaratan proyek, anggaran, waktu, keahlian, dan kesesuaian. Berbagai Jenis pengujian perangkat lunak adalah peran kunci di mana penguji menentukan pengujian yang tepat untuk aplikasi. Pengujian fungsional dan pengujian non-fungsional adalah dua jenis pengujian yang dilakukan oleh QA atau Software Tester.
Ada 2 jenis pengujian perangkat lunak, yaitu:
- Functional Testing
- Non-functional Testing
Functional Testing
Pengujian Fungsional didefinisikan sebagai jenis pengujian yang memverifikasi bahwa setiap fungsi aplikasi perangkat lunak beroperasi sesuai dengan spesifikasi kebutuhan. Pengujian fungsional berfokus pada pengujian manual dan otomatisasi.
Ada beberapa tipe dalam functional testing:
1. Unit Testing
Ini adalah tingkat pengujian perangkat lunak di mana masing-masing unit / komponen perangkat lunak diuji. Tujuannya adalah untuk memvalidasi bahwa setiap unit perangkat lunak berfungsi seperti yang dirancang. Unit adalah bagian terkecil yang dapat diuji dari perangkat lunak apa pun. Biasanya memiliki satu atau beberapa input dan biasanya satu output.
Manfaat unit testing, yaitu:
- Pengujian unit meningkatkan kepercayaan diri dalam mengubah atau memelihara kode. Jika tes unit yang baik ditulis dan jika dijalankan setiap kali ada kode yang diubah.
- Kode lebih dapat digunakan kembali. Untuk memungkinkan pengujian unit, kode harus modular.
- Pembangunan lebih cepat. Upaya yang diperlukan untuk menemukan dan memperbaiki cacat yang ditemukan selama pengujian unit sangat sedikit dibandingkan dengan upaya yang diperlukan untuk memperbaiki cacat yang ditemukan selama pengujian sistem atau pengujian penerimaan.
- Biaya perbaikan cacat yang terdeteksi selama pengujian unit lebih rendah dibandingkan dengan cacat yang terdeteksi pada tingkat yang lebih tinggi.
- Men-debug itu mudah. Saat pengujian gagal, hanya perubahan terbaru yang perlu di-debug.
2. Integration Testing
Ini adalah tingkat pengujian perangkat lunak di mana unit individu digabungkan dan diuji sebagai sebuah kelompok. Tujuan dari tingkat pengujian ini adalah untuk mengungkap kesalahan dalam interaksi antar unit terintegrasi.
Pendekatan integration testing, yaitu:
- Big Bang adalah pendekatan Pengujian Integrasi di mana semua atau sebagian besar unit digabungkan bersama dan diuji sekaligus. Pendekatan ini diambil saat tim pengujian menerima seluruh perangkat lunak dalam satu bundel.
- Top Down adalah pendekatan Pengujian Integrasi di mana unit level atas diuji terlebih dahulu dan unit level bawah diuji langkah demi langkah setelahnya. Pendekatan ini diambil ketika mengikuti pendekatan pembangunan top-down.
- Bottom Up adalah pendekatan Pengujian Integrasi di mana unit level bawah diuji terlebih dahulu dan unit level atas selangkah demi selangkah setelahnya. Pendekatan ini diambil ketika pendekatan pembangunan bottom-up diikuti.
- Sandwich/Hybrid adalah pendekatan Integration Testing yang merupakan gabungan dari pendekatan Top Down dan Bottom Up.
3. System Testing
Ini adalah tingkat pengujian perangkat lunak di mana perangkat lunak yang lengkap dan terintegrasi diuji. Tujuan dari pengujian ini adalah untuk mengevaluasi kesesuaian sistem dengan persyaratan yang ditentukan.
Tugas yang dilakukan oleh System Testing, yaitu:
- System test plan: Prepare, Review, Rework, Baseline
- System test cases: Prepare, Review, Rework, Baseline
- System test
4. Interface Testing
Ketika sebuah aplikasi atau perangkat lunak atau situs web dikembangkan, maka ada beberapa komponen di dalamnya. Komponen tersebut dapat berupa server, database, dll. Koneksi yang mengintegrasikan dan memfasilitasi komunikasi antar komponen ini disebut sebagai Antarmuka. Ini memverifikasi bahwa komunikasi antara sistem dilakukan dengan benar.
3 fase dari interface testing, yaitu:
- Konfigurasi & pengembangan: Ketika antarmuka dikonfigurasi, dan setelah pengembangan dimulai, konfigurasi perlu diverifikasi sesuai kebutuhan.
- Validasi: Ketika pengembangan selesai, antarmuka perlu divalidasi dan diverifikasi, ini juga dapat dilakukan sebagai bagian dari pengujian unit.
- Pemeliharaan: Saat kalian mulai mengembangkan antarmuka, kalian perlu memastikan bahwa kalian tidak memperkenalkan cacat apa pun pada kode kalian dan karenanya pengujian perlu dijalankan pada antarmuka.
5. Regression Testing
Pengujian regresi adalah tahap penting untuk produk & sangat berguna bagi pengembang untuk mengidentifikasi stabilitas produk dengan kebutuhan yang terus berubah. Pengujian regresi adalah pengujian yang dilakukan untuk memverifikasi bahwa perubahan kode pada perangkat lunak tidak memengaruhi fungsionalitas produk yang ada.
Beberapa teknik dari regression testing, yaitu:
- Uji ulang semua: Seluruh kasus uji dalam rangkaian uji dieksekusi ulang untuk memastikan bahwa tidak ada bug yang terjadi karena perubahan kode.
- Pemilihan Uji Regresi: Dalam metode ini, kasus uji dipilih dari rangkaian uji untuk dieksekusi ulang. Tidak seluruh suite dieksekusi ulang. Pemilihan test case dilakukan berdasarkan perubahan kode pada modul.
- Prioritas Kasus Uji: Kasus uji dengan Prioritas tinggi dijalankan lebih dulu daripada kasus dengan prioritas sedang dan rendah. Prioritas kasus uji tergantung pada kekritisannya dan dampaknya terhadap produk
- Hibrid: Teknik hibrid adalah kombinasi dari pemilihan uji Regresi dan Prioritas Kasus Uji. Di sini kalian hanya memilih kasus uji yang dieksekusi ulang tergantung pada prioritasnya.
6. User Acceptance Testing
Pengujian Penerimaan adalah tingkat pengujian perangkat lunak di mana suatu sistem diuji untuk penerimaan. Tujuan dari pengujian ini adalah untuk mengevaluasi kesesuaian sistem dengan persyaratan bisnis dan menilai apakah dapat diterima untuk pengiriman.
Berikut ini adalah tipe-tipe dari user acceptance testing.
- Pengujian Penerimaan Bisnis/Business Acceptance Testing (BAT): Ini untuk menilai apakah Produk memenuhi sasaran dan tujuan bisnis atau tidak. Ini terutama berfokus pada keuntungan bisnis yang cukup menantang karena kondisi pasar yang berubah.
- Pengujian Penerimaan Kontrak/Contract Acceptance Testing (CAT): Ini adalah kontrak yang menetapkan bahwa setelah Produk ditayangkan, dalam jangka waktu yang telah ditentukan, pengujian penerimaan harus dilakukan dan harus lulus semua kasus penggunaan penerimaan.
- Pengujian Penerimaan Operasional/Operational Acceptance Testing (OAT): Ini untuk menilai kesiapan operasional Produk dan merupakan pengujian non-fungsional. Ini terutama mencakup pengujian pemulihan, kompatibilitas, pemeliharaan, ketersediaan dukungan teknis, keandalan, fail-over, lokalisasi, dll.
- Pengujian Alfa/Alpha Testing: Ini untuk menilai Produk dalam lingkungan pengembangan/pengujian oleh tim penguji khusus yang biasanya disebut penguji alfa.
- Pengujian Beta/Beta Testing: Ini untuk menilai Produk dengan memaparkannya kepada pengguna akhir sebenarnya, biasanya disebut penguji beta/pengguna beta, di lingkungan mereka. Umpan balik berkelanjutan dari pengguna dikumpulkan dan masalahnya diperbaiki.
Non-Functional Testing
Ada banyak jenis pengujian perangkat lunak yang membedakan pekerjaan untuk QA saat menguji aplikasi. Ini adalah pengujian untuk menentukan kinerja sistem untuk mengukur, memvalidasi atau memverifikasi atribut kualitas sistem.
Ada beberapa tipe dalam non-functional testing:
1. Documentation Testing
Pengujian dokumentasi membantu memperkirakan upaya pengujian yang diperlukan dan cakupan pengujian. Dokumentasi perangkat lunak mencakup rencana pengujian, kasus pengujian, dan bagian persyaratan.
Documentation testing berfokus pada:
- Instruksi: Jika instruksi khusus diberikan untuk aktivitas tertentu, kemungkinan besar kalian akan menetapkan skenario pengujian untuk aktivitas yang sama tersebut
- Contoh: contoh langkah demi langkah dapat diberikan untuk menjelaskan input layar GUI, mengklarifikasi sintaks untuk perintah atau antarmuka lain, menampilkan output yang diharapkan, atau mengilustrasikan poin penting lainnya.
- Pesan: saat kalian menemui masalah, misalnya, pesan kesalahan, kalian harus memverifikasi bahwa dokumentasi untuk pesan tersebut benar.
- Sampel: sampel terkadang didokumentasikan untuk hal-hal seperti inisialisasi atau penyetelan file masukan parameter.
2. Installation Testing
Pengujian penginstalan adalah jenis pekerjaan jaminan kualitas dalam industri perangkat lunak yang menyatu dengan apa yang perlu dilakukan pelanggan untuk menginstal dan menyiapkan perangkat lunak baru dengan sukses. Proses pengujian mungkin melibatkan proses instal/uninstall penuh, sebagian, atau pemutakhiran.
- Instal Aplikasi Full Version
- Mengotomatiskan upaya pengujian
- Diperlukan instalasi check-in Ruang Disk
- Penggunaan Lingkungan Pengujian Terdistribusi
- Otomatiskan pemeriksaan file yang diinstal setelah instalasi
- Konfirmasi untuk perubahan registri setelah instalasi
- Pengujian negatif dalam Pengujian Instalasi
- Pengujian penghapusan instalasi
3. Performance Testing
Pengujian Kinerja didefinisikan sebagai jenis pengujian perangkat lunak untuk memastikan aplikasi perangkat lunak akan bekerja dengan baik di bawah beban kerja yang diharapkan.
Beberapa tipe performance testing, yaitu:
- Load Testing adalah jenis pengujian kinerja yang dilakukan untuk mengevaluasi perilaku sistem pada beban kerja yang meningkat.
- Stress Testing adalah jenis pengujian kinerja yang dilakukan untuk mengevaluasi perilaku sistem pada atau di luar batas beban kerja yang diantisipasi.
- Endurance Testing adalah jenis pengujian kinerja yang dilakukan untuk mengevaluasi perilaku suatu sistem ketika beban kerja yang signifikan diberikan secara terus menerus.
- Spike Testing adalah jenis pengujian kinerja yang dilakukan untuk mengevaluasi perilaku sistem ketika beban tiba-tiba meningkat secara substansial.
4. Reliability Testing
Pengujian keandalan memastikan bahwa produk bebas dari kesalahan dan dapat diandalkan untuk tujuan yang dimaksudkan. Ini tentang menjalankan aplikasi sehingga kegagalan ditemukan sebelum sistem diterapkan.
Beberapa tipe dari realiabity testing, yaitu:
- Feature test: Setiap fungsi dalam perangkat lunak harus dijalankan setidaknya satu kali. Juga, interaksi antara dua atau lebih fungsi harus dikurangi
- Regression test: Setiap kali fungsionalitas baru ditambahkan atau fungsionalitas lama dihapus dalam aplikasi, ia menjalani uji regresi untuk memastikan tidak ada bug baru yang diperkenalkan.
- Load test: Load test dilakukan untuk menguji apakah aplikasi mendukung beban yang dibutuhkan tanpa mengalami Breakdown. Untuk menemukan break point dari sebuah aplikasi, beban secara bertahap dinaikkan sampai aplikasi macet, rusak, tidak tersedia, dll.
- Objectives of Reliability Testing: Pembatasan seperti perilaku perangkat lunak dalam kondisi tertentu, tujuan yang layak, dan batasan waktu dapat diterapkan sebelum menentukan tujuan pengujian reliabilitas.
5. Security Testing
Pengujian keamanan adalah varian pengujian perangkat lunak yang memastikan bahwa sistem dan aplikasi dalam suatu organisasi bebas dari celah. Pengujian keamanan akan menemukan semua kemungkinan kelemahan sistem yang mungkin mengakibatkan hilangnya informasi di tangan karyawan.
Security testing akan berfokus pada:
- Keamanan jaringan: Ini melibatkan pencarian kerentanan dalam infrastruktur jaringan.
- Keamanan sistem perangkat lunak: Ini melibatkan penilaian kelemahan dalam berbagai perangkat lunak tempat aplikasi bergantung.
- Keamanan aplikasi sisi klien: Ini berkaitan dengan memastikan bahwa klien tidak dapat dimanipulasi.
- Keamanan aplikasi sisi server: Ini melibatkan memastikan bahwa kode server dan teknologinya cukup kuat untuk menangkis gangguan apa pun.
Komentar
Posting Komentar