Varlıklar size programın iç durumunu anlatmak için kullanışlıdır . Örneğin, veri yapılarınızın geçerli bir durumu olduğu, örneğin bir Time
veri yapısının değerini tutamayacağı 25:61:61
. Varlıklar tarafından kontrol edilen koşullar:
Arayanın kontratını korumasını sağlayan ön şartlar,
Callee'nin sözleşmesini koruduğunu garanti eden post Koşullar, ve
Veri yapısının, fonksiyon döndürüldükten sonra daima bir özellik tutmasını sağlayan değişmezler. Bir değişmez, önkoşul ve sonkoşul olan bir durumdur.
Birim testleri , modülün dış davranışını anlatmak için kullanışlıdır . Sizin Stack
sonrasında tutarlı bir devlet olabilir push()
yöntemi denir, ancak üç kez çağrıldıktan sonra yığının boyutu üçe artmaz eğer, o zaman bu bir hatadır. (Örneğin, yanlış push()
uygulamanın yalnızca iddiaları ve çıkışları kontrol ettiği önemsiz durum .)
Açıkça söylemek gerekirse, varsayımlar ve ünite testleri arasındaki en büyük fark, ünite testlerinin test verisine sahip olması (programın çalışmasını sağlayacak değerler) olmasıdır. Yani, ünite testlerinizi otomatik olarak yapabilir, iddialar için de aynı şeyi söyleyemezsiniz. Bu tartışma uğruna, programı üst düzey işlev testleri bağlamında yürütmekten bahsettiğinizi varsaydım (tüm programı yürüten ve birim sınamaları gibi modüller kullanma). "Gerçek girdileri görmek" için otomatik işlev testlerinden bahsetmiyorsanız, değer açıkça otomasyondadır ve böylelikle ünite testleri kazanacaktır. Bu konuda (otomatik) fonksiyon testleri bağlamında konuşuyorsanız, aşağıya bakın.
Test edilmekte olan bazı örtüşme olabilir. Örneğin, bir Stack
'' şart koşulu aslında yığın boyutunun bir kat arttığını iddia edebilir. Ancak bu iddiada neler yapılabileceğine dair sınırlamalar var: Ayrıca en üstteki öğenin yeni eklenenler olup olmadığını da kontrol etmeli mi?
Her ikisi için de amaç kaliteyi arttırmaktır. Ünite testi için amaç hataları bulmaktır. İddialar için amaç, geçersiz program durumlarını en kısa sürede gözlemleyerek hata ayıklamayı kolaylaştırmaktır.
Her iki tekniğin de doğruluğunu onaylamadığını unutmayın. Aslında, programın doğru olduğunu doğrulamak amacıyla birim testini gerçekleştirirseniz, işe yarayacağını bildiğiniz ilginç olmayan bir testle karşılaşacaksınız. Bu psikolojik bir etki: hedefinize ulaşmak için ne gerekiyorsa yapacaksınız. Amacınız böcek bulmaksa, faaliyetleriniz bunu yansıtacaktır.
Her ikisi de önemlidir ve kendi amaçları vardır.
[İddialarla ilgili son not: En fazla değeri elde etmek için, bunları birkaç temel işlev yerine, programınızdaki tüm kritik noktalarda kullanmanız gerekir. Aksi halde, sorunun orijinal kaynağı maskelenmiş olabilir ve saatlerce hata ayıklama yapmadan algılaması zor olabilir.]
:-)