Çoğu optimizasyon algoritması (sezgisel tarama dahil) bazı yapılandırmalarda (örneğin bir rotada) üzerlerine işlemler uygulayarak çalışır. Operasyonların kendisi sadece geçerli konfigürasyonlar sunduklarını garanti etmelidir, bu yüzden önce her biri için birim testleri yapılmalıdır. Optimizasyon algoritmasının yalnızca bu işlemleri kullandığından emin olduğunuzda, algoritma sonucunun geçerlilik testine gerek yoktur.
Her türlü daha karmaşık algoritma için iyi birim testleri oluşturmak için, algoritmanın kendisini ayrıntılı olarak bilmek gerekir . "Tepeye tırmanma" gibi basit buluşsal yöntemler için genellikle küçük girdilerin sonucunu tahmin edebilirsiniz. Örneğin, 3 ila 5 puanlık ilk rotalar için, belirli bir sırayla verildiğinde, ne olacağını tahmin edebilirsiniz. Bu, bildiğim çoğu deterministik sezgisel algoritma için geçerli olacak, bu yüzden muhtemelen başlamak için iyi bir yer.
Daha karmaşık algoritmalar ve girdinin daha büyük boyutu için, girdiyi algoritmaya beslediğinizde ve çıktıyı kontrol etmeye çalıştığınızda, artık bir birim testi yapmıyorsunuz, kabul veya entegrasyon testi yapıyorsunuz. Böyle bir algo için "birim testi" yapmakta sorun yaşamanızın nedeni, tipik olarak bir avuç daha küçük parçadan (münferit birimler) oluşmasıdır. Yani böyle bir algoritmayı gerçekten birim test etmek için, bu parçaları tanımlamanız ve ayrı ayrı test etmeniz gerekecektir. Ayrıca, yeterli test vakasına sahip olduğunuzdan emin olmak için kod kapsamı veya şube kapsamı tekniklerini kullanabilirsiniz.
Birim testleri değil, otomatik kabul veya entegrasyon testleri arıyorsanız, @Phillip'in (2) veya (3) altında önerdiğini deneyebilirsiniz .