Testing merupakan suatu aktivitas yang dilakukan untuk mengevaluasi kualitas produk dengan mengidentifikasi kerusakan dan permasalahan.Testing software terdiri dari pembuktian dinamis (dynamic) dari jalannya program pada sekumpulan tes yang terbatas(finite), yang sesuai dan biasanya dipilih(selected) dari domain eksekusi yang tak terbatas, yang bertentangan dengan tingkah laku yang diharapkan(expected).Dynamic ini berarti bahwa testing termasuk eksekusi program pada input yang bernilai. Finite : walaupun pada program sederhana, banyak kasus test yang secara teoretis memungkinkan bahwa testing yang mendalam bisa membutuhkan waktu berbulan-bulan atau bertahun-tahun untuk dieksekusi.Selected : Banyaknya teknik testing yang diusulkan pada dasarnya berbeda dalam hal memilih sekumpulan testing, dan software engineers harus sadar bahwa kriteria pemilihan yang berbeda mungkin akan menghasilkan derajat keefektifan yang sangat besar. Expected : hal yang tidak mudah untuk dilakukan adalah memutuskan apakah hasil yang diamati dari suatu eksekusi program bisa diterima atau tidak, jika tidak usaha testing akan sia-sia
