Perangkat lunak diuji untuk mengonfirmasi bahwa semua input yang valid ditafsirkan dan dijalankan dengan benar, sedangkan input yang salah dibuang. Pengujian juga memverifikasi bahwa hasil dihasilkan secara efisien, dan volume data yang besar dapat ditangani tanpa hambatan. Pengujian dapat dilakukan secara manual atau elektronik. Pengujian perangkat lunak otomatis melibatkan penggunaan perangkat lunak khusus untuk menguji kode yang sedang dikembangkan. Pengujian tersebut menguntungkan proses pengembangan perangkat lunak, bila diterapkan dengan bijaksana.
Tes manual tergantung pada ketelitian orang yang melakukan pengujian. Pengujian perangkat lunak manual memakan waktu, dan membutuhkan rasio penguji yang signifikan terhadap pengembang untuk sebagian besar aplikasi. Hal ini meningkatkan biaya pembangunan. Selain itu, pengujian manual memiliki batasan bahwa sejumlah besar data, atau sejumlah besar pengguna atau input secara bersamaan, tidak dapat diuji dengan mudah.
Pengujian perangkat lunak otomatis secara terprogram mengontrol pelaksanaan pengujian, dan evaluasi output. Perangkat lunak pengujian memberikan masukan, yang sesuai dengan kondisi yang berbeda, ke perangkat lunak yang sedang dievaluasi. Untuk setiap rangkaian kondisi, perangkat lunak pengujian membandingkan hasil aktual dengan hasil yang diinginkan, dan memelihara statistik perilaku agregat perangkat lunak target. Setelah “berjalan”, perangkat lunak pengujian biasanya memberikan hasil ringkasan sehingga orang dapat dengan cepat menentukan apa yang harus diperbaiki.
Dalam pengujian perangkat lunak otomatis, tugas-tugas membosankan yang terlibat dalam pengujian seperti masuk, atau memasukkan data seperti alamat pos akan dimekanisasi. Kombinasi kondisi yang luas dapat diuji di setiap putaran. Karena pengujian otomatis melibatkan penggunaan komputer dan perangkat lunak, pengujian ini juga memungkinkan simulasi beban besar data masukan atau masukan yang sangat cepat. Setiap menjalankan sejumlah kondisi pengujian dapat diselesaikan dalam hitungan jam. Oleh karena itu, pengujian otomatis sangat berguna untuk pengujian regresi, yang memastikan bahwa fitur baru atau perbaikan bug tidak secara tidak sengaja merusak kode yang berfungsi sebelumnya.
Beberapa metodologi pengembangan terbaru seperti Extreme Programming menekankan bahwa tes tersedia sebelum coding. Metodologi pengembangan menekankan bahwa pengujian regresi dilakukan beberapa kali setiap hari untuk memastikan kebenaran perangkat lunak saat berkembang. Jika tim perangkat lunak harus mematuhi metodologi ini untuk perangkat lunak yang signifikan, pengujian perangkat lunak otomatis wajib digunakan.
Perangkat lunak pengujian otomatisasi harus diberi masukan dan keluaran yang diinginkan. Salah satu cara untuk melakukannya adalah dengan menyimpan kondisi pengujian manual ke dalam perangkat lunak. Cara lain adalah dengan menulis kode untuk menghasilkan berbagai kondisi, dalam batas yang dapat diterima dari perangkat lunak yang akan diuji. Dengan demikian, dasar pengujian perangkat lunak otomatis jelas merupakan upaya manusia. Perangkat lunak pengujian otomatis tidak dapat melampaui ini sendiri.
Pengujian perangkat lunak otomatis memiliki biaya yang signifikan dalam hal perangkat lunak yang akan diperoleh serta dalam penggunaannya. Jadi, apakah akan mengotomatisasi, dan bagian mana dari pengujian yang akan diotomatisasi, adalah keputusan penting. Pengujian otomatis tidak sesuai untuk fitur dan lingkungan yang diperkirakan akan berubah secara signifikan. Di sebagian besar aplikasi, campuran pengujian manual dan otomatis cocok.