Pengujian unit

Pengujian perangkat lunak adalah masalah kombinatorial. Misalnya, setiap pernyataan keputusan boolean membutuhkan setidaknya dua uji: satu dengan hasil yang "benar" dan satu dengan hasil "salah". Akibatnya, untuk setiap baris kode yang ditulis, pemrogram sering membutuhkan 3 sampai 5 baris kode uji. hal Ini jelas membutuhkan waktu dan investasi yang mungkin tidak layak. Ada juga banyak masalah yang tidak dapat dengan mudah diuji sama sekali – misalnya masalah yang nondeterministik atau melibatkan beberapa utas ("thread"). Selain itu, kode untuk pengujian unit bisa jadi memiliki kekutu sama banyaknya dengan kode program yang diujinya. Fred Brooks dalam "The Mythical Man-Month" menyebutkan: "Jangan pernah pergi ke laut dengan dua kronometer; bawa satu atau tiga." Artinya, jika dua kronometer bertentangan, bagaimana Anda tahu mana yang benar?