Şu anda test edilmeyen büyük miktarda eski kodla uğraşıyorsanız, gelecekte varsayımsal büyük bir yeniden yazma beklemek yerine şimdi test kapsamı almak doğru harekettir. Ünite testleri yazarak başlamak değil.
Otomatik testler olmadan, kodda herhangi bir değişiklik yaptıktan sonra, uygulamanın çalıştığından emin olmak için uygulamanın testini sonlandırmak için el ile bir şeyler yapmanız gerekir. Bunun yerine yüksek seviye entegrasyon testleri yazarak başlayın. Uygulamanız dosyaları okursa, doğrularsa, verileri bir şekilde işler ve hepsini yakalayan testleri istediğiniz sonuçları görüntüler.
İdeal olarak, manuel bir test planından elde edeceğiniz veriler olacaktır veya kullanılacak gerçek üretim verilerinden bir örnek alabileceksiniz. Değilse, uygulama üretimde olduğundan, çoğu durumda olması gerekeni yapıyor, bu yüzden tüm yüksek noktalara vuracak ve çıktının şu an için doğru olduğunu varsayacak veriyi hazırla. Küçük bir işlev almaktan daha kötü bir şey değildir, adının ne yaptığını veya herhangi bir yorum yapması gerektiğini önerdiğini varsayarak ve doğru çalıştığını varsayarak sınamalar yazmak varsaymak değildir.
IntegrationTestCase1()
{
var input = ReadDataFile("path\to\test\data\case1in.ext");
bool validInput = ValidateData(input);
Assert.IsTrue(validInput);
var processedData = ProcessData(input);
Assert.AreEqual(0, processedData.Errors.Count);
bool writeError = WriteFile(processedData, "temp\file.ext");
Assert.IsFalse(writeError);
bool filesAreEqual = CompareFiles("temp\file.ext", "path\to\test\data\case1out.ext");
Assert.IsTrue(filesAreEqual);
}
Uygulamaların normal çalışmasını yakalamak için yazılan bu yüksek seviye testlerden yeterince geçtikten sonra ve en sık karşılaşılan hata durumları, koddaki hataları yapmaktan başka bir şey yapmadan hataları yakalamak için klavyeye vurmak için harcayacağınız süredir. Yapmanız gerekeceğini, gelecekteki refactoring (veya büyük bir yeniden yazma) sürecini çok daha kolay hale getirecek şekilde önemli ölçüde azaltacağını düşündünüz.
Birim test kapsamını genişletebildiğiniz için, entegrasyon testlerinin çoğunu azaltabilir veya hatta emekli olabilirsiniz. Uygulamanızın dosyaları okuyor / yazıyorsa veya bir DB'ye erişiyorsa, bu bölümleri yalıtımlı olarak sınama ve bunları alay etme veya sınamalarınızın dosyadan / veritabanından okunan veri yapıları oluşturarak başlatılması başlangıç için açık bir yerdir. Aslında bu test altyapısının oluşturulması, bir dizi hızlı ve kirli test yazmaktan çok daha uzun sürer; ve 30 dakika harcamak yerine 2 dakikalık bir entegrasyon testi seti çalıştırdığınızda, entegrasyon testlerinin kapsadığı şeyin bir kısmını manuel olarak test ederek zaten büyük bir kazanç elde edersiniz.