Apa itu Software Testing?
Software Testing atau Pengujian Perangkat Lunak adalah sebuah aktivitas investigasi untuk mengumpulkan informasi kulitas dari sebuah produk, yang nanti akan berguna untuk produk itu sendiri dan para skateholder (pemangku kepentingan). Teknik pengujian sendiri mencakup proses menggunakan produk secara teliti dengan maksud untuk menemukan kekurangan dan hal-hal yang bisa ditingkatkan pada produk tersebut.
Pengujian perangkat lunak atau produk memberikan pandangan yang objektif dan independen dari produk untuk memungkinkan bisnis menghargai dan memahami kualitas dan risiko pemakaian produk.
Pada dasarnya, Software testing dapat dilakukan sesegera mungkin ketika sebuah software sudah bisa dijalankan. tapi hal itu juga tergantung pada pendekatan Model Pengembangan Perangkat Lunak (Software Development Life Cycle) apa yang digunakan oleh team. Misalnya dalam pendekatan model Waterfall, aktivitas pengujian perangkat lunak akan dilakukan secara bertahap setelah tahap persyaratan sistem yang ditentukan telah diimplementasikan kepada produk yang dapat diuji. Sedangkan pada model Agile, tahap requirements, programming, and testing sering dilakukan dalam waktu yang bersamaan.
Berikut adalah daftar acuan dimana suatu produk dapat lolos dalam Software Testing.
- Memenuhi persyaratan design dan development
- Mencapai tujuan umum yang diinginkan oleh skateholder.
- Dapat digunakan secara efisien.
- Dapat di-install dan dijalankan di lingkungan yang dituju.
- Dapat berjalan dengan waktu efisien (acceptable time).
- merespon hasil yang benar dari semua jenis input
Macam-macam Software Testing (Pengujian Perangkat Lunak)
Terdapat banyak macam-macam tahapan untuk melakukan Pengujian Perangkat Lunak, Banyak pengembang produk yang mencoba untuk menggunakan semua jenis tahapan untuk mencapai kualitas produk yang sempurna, tapi pada umumnya tidak semuanya di adaptasi oleh pengembang produk, semua itu tergantung pada waktu dan sumberdaya yang dimiliki oleh pengembang produk tersebut. Berikut adalah tahapan yang dilakukan untuk mengukur kualitas produk yang dimulai dari yang paling atas ke bawah:
1. User Acceptance Test (UAT)
User Acceptance Test atau Tes Penerimaan Pengguna adalah sebuah tahapan final yang dilakukan dalam semua jenis Model Pengembangan Perangkat Lunak, testing ini bertujuan untuk menentukan apakah produk yang dikembangkan telah memenuhi kebutuhan pengguna, kebutuhan tersebut befokus kepada pengguna, produk itu sendiri harus telah memenuhi fungsionalitas dan detail produk yang dapat diterima oleh pengguna.
2. Usability Testing
Usability Testing atau pengujian kegunaan adalah evaluasi yang dilakukan pada produk yang memfokuskan pada mengidentifikasi masalah kegunaan, mengumpulkan data kualitatif dan kuantitatif, dan menentukan kepuasan pengguna produk, dalam tahap ini, testing dilakukan oleh perwakilan pengguna, mereka akan menggunakan produk kita untuk menentukan apakah mereka puas dengan fungsionalitas, interface dan detail lainnya pada produk tersebut.
4. Performance testing
Performance testing atau Pengujian kinerja adalah suatu evaluasi terhadap produk untuk menentukan apakah sebuah produk tersebut memenuhi harapan dalam kecepatan waktu, skalabilitas, dan stabilitas dibawah beban kerja yang diharapkan. Biasanya, produk harus memenuhi kriteria seperti Response Time dan Throughput.
- Response time, menentukan waktu maksimum yang diijinkan dari respon suatu produk.
- Throughput, menentukan jumlah minimum query dan transaksi yang harus diproses dalam suatu durasi waktu.
5. Stress Testing
Stress Testing atau biasa disebut sebagai Torture Testing, adalah evaluasi produk dengan metode pengujian dengan memberi tekanan kepada produk secara intensif, hal ini untuk menentukan stabilitas produk atau sistem terlebih lagi saat menerima tekanan besar.
6. Smoke testing
Smoke Testing juga biasa disebut sebagai Build Verification Testing atau Confidence Testing, adalah salah satu tahap pengujian untuk mengungkapkan kegagalan sederhana tapi yang cukup parah untuk ketidakberhasilan suatu fungsi atau fitur pada produk. Pengujian ini akan menentukan kelayakan rilis pada suatu build di produk. Smoke testing terdiri dari sebuah kumpulan dari test dasar (seperti: apakah program ini berjalan? apakah tombol ini berjalan?) yang akan dijalankan pada setiap build dari produk untuk menguji fungsionalitas dari produk, informasi tersebut akan digunakan untuk sebuah konfirmasi kepada Team QA apakah dibutuhkan Software Testing lebih khusus ke bagian yang bermasalah.
7. Sanity Testing
Sanity Testing, sedikit mirip seperti Smoke Testing dimana dilakukan setiap tedapat build baru pada produk, tapi testing ini adalah kumpulan dari Regression Testing, Testing yang berfokus kepada perubahan seperti fitur baru dan perbaikan bug.
8. Regression Testing
Regression Testing adalah tahap pengujian untuk menkonfirmasi apakah perubahan code tidak mempengaruhi atau merusak fitur-fitur yang sudah ada, yang akan memastikan bahwa kode lama atau fitur yang lama masih bekerja dengan baik dan tidak mendapatkan efek setelah ada penambahan atau perubahan kode.
9. System Testing
System Testing adalah tahap pengujian yang dilakukan setelah Integration Testing untuk menguji sistem secara keseluruhan, semua modul/komponen yang telah terintegrasi, yang menentukan apakah kesuluhan komponen yang telah terintegrasi pada sistem telah memenuhi harapan.
10. Integration Testing
Integration Testing (biasanya juga disebut sebagai Integration and Testing/I & T, String Testing, dan Thread Testing) adalah tahap testing yang dilakukan setelah Unit testing, yang melakukan pengujian terhadap suatu module yang secara logika telah terintegrasi. Tujuan dari pengujian ini adalah untuk menemukan kecacatan dalam interaksi antara modul perangkat lunak ketika mereka terintegrasi.
11. Unit testing
Unit testing adalah pengujian yang befokus pada pungujian unit yang terkecil pada desain produk. Unit kecil di sini dapat berupa sebuah Class atau Function pada suatu program.