Pengujian perangkat lunak adalah proses teknis yang digunakan untuk mengenali kebenaran, kelengkapan, keamanan, dan kualitas perangkat lunak komputer yang dikembangkan. Pengujian perangkat lunak dijalankan untuk menampilkan informasi terkait kualitas tentang produk yang diuji. Pengujian perangkat lunak adalah bagian penting dari jaminan kualitas perangkat lunak.
Beberapa atribut kualitas umum dari suatu produk yang dicari oleh penguji adalah kapabilitas, keandalan, efisiensi, portabilitas, pemeliharaan, kompatibilitas, dan kegunaan. Pengujian yang baik tidak hanya menampilkan kesalahan, tetapi juga menampilkan informasi menarik yang baru bagi komunitas proyek. Pengujian perangkat lunak memainkan peran strategis yang penting untuk mengangkut kualitas produk yang lebih tinggi dalam hierarki dalam proses pengembangan perangkat lunak. Ini juga menggarisbawahi persyaratan pelanggan sepanjang siklus produk.
Beberapa prosedur pengujian perangkat lunak penting yang terlibat dalam pengujian suatu produk adalah pengujian fungsional, pengujian negatif, pengujian skenario pelanggan, pengujian stres, pengujian kinerja, pengujian skalabilitas, pengujian internasional, dan banyak lagi. Satu-satunya tujuan pengujian perangkat lunak adalah untuk memastikan bahwa pelanggan menerima kualitas produk yang maksimal.
Beberapa jenis pengujian umum yang dipertimbangkan oleh insinyur pengujian saat menguji suatu produk adalah pengujian kotak hitam, pengujian kotak putih, pengujian integrasi tambahan, pengujian fungsional,
pengujian sistem, pengujian end-to-end, pengujian kewarasan atau pengujian asap, pengujian regresi,
pengujian penerimaan, pengujian penerimaan, pengujian kinerja, pengujian kegunaan, pengujian uninstall, pengujian pemulihan, pengujian failover, pengujian keamanan, pengujian eksplorasi, pengujian ad-hoc, pengujian mutasi dan banyak lagi.
Meskipun semua proyek diuntungkan dari pengujian, beberapa proyek umumnya tidak memerlukan staf penguji independen. Persyaratan barang uji tergantung pada ukuran dan konteks proyek, risiko, metodologi pengembangan, keterampilan dan pengalaman pengembang, dan banyak lagi. Proyek jangka pendek berisiko rendah yang ditangani oleh pemrogram berpengalaman yang menggunakan pengujian unit atau pengembangan pengujian pertama tidak memerlukan teknisi pengujian. Mempertimbangkan tujuan yang berbeda dalam pengujian perangkat lunak, peran yang berbeda ditetapkan untuk penguji perangkat lunak. Mereka adalah test lead/manager, tester, test designer, test automater/automation developer dan test administrator.