Şimdiye kadar verilen cevaplar arasında hiç kimse, denklem bölünmesi ve sınır değer analizi , eldeki sorunun cevabında hayati hususlara değinmedi. Diğer cevapların tümü yararlı olsa da niteldir ancak burada nicel olmak mümkündür. @ fishtoaster, sadece test kantitatif örtüsü altında gözetleme yaparak bazı somut kılavuzlar sağlar, ancak denklik ayrıştırma ve sınır değer analizi daha iyi yapmamızı sağlar.
In denklik bölümleme , bekleneni sonuçlara göre gruplara olası tüm girdilerin dizi bölün. Bir gruptan herhangi bir giriş eşdeğer sonuçlar verecektir, bu nedenle bu tür gruplara denklik sınıfları denir . (Eşdeğer sonuçların aynı sonuç anlamına gelmediğini unutmayın .)
Basit bir örnek olarak, küçük harf ASCII karakterlerini büyük harf karakterlerine dönüştürmesi gereken bir program düşünün. Diğer karakterler kimlik dönüşümünden geçmelidir, yani değişmeden kalmalıdır. İşte denklik sınıflarına olası bir dağılımı:
| # | Equivalence class | Input | Output | # test cases |
+------------------------------------------------------------------------+
| 1 | Lowercase letter | a - z | A - Z | 26 |
| 2 | Uppercase letter | A - Z | A - Z | 26 |
| 3 | Non-alphabetic chars | 0-9!@#,/"... | 0-9!@#,/"... | 42 |
| 4 | Non-printable chars | ^C,^S,TAB... | ^C,^S,TAB... | 34 |
Son sütun, hepsini numaralandırırsanız, test senaryolarının sayısını bildirir. Teknik olarak, @ fishtoaster kuralı 1'e göre 52 test vakası içerirsiniz - yukarıda verilen ilk iki sıra için olanların tümü "ortak dava" altındadır. @ fishtoaster kuralı 2, yukarıdaki 3. ve 4. sıralardan bazılarını veya tümünü ekler. Ancak denklik bölümleme testi ile her bir denklik sınıfındaki herhangi bir test durumu yeterlidir. "A" veya "g" veya "w" seçerseniz aynı kod yolunu denersiniz. Bu nedenle, 52+ yerine toplam 4 test durumunuz var.
Sınır değer analizi hafif bir ayrıntılandırma önerir: temel olarak bir denklik sınıfının her üyesinin eşdeğer olmadığını gösterir. Yani, sınırlardaki değerler de kendi başlarına bir test vakasına layık görülmelidir. (Bunun basit bir gerekçesi, rezil teker teker hatadır !) Böylece, her bir denklik sınıfı için 3 test girişi olabilir. Yukarıdaki giriş alanına bakıldığında - ve bazı ASCII değerleri bilgisine sahipken - bu test senaryosu girişlerini bulabilirim:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(Asıl denklik sınıfı tanımlamaları yeniden düşünmek isteyebileceğinizi öne süren 3 sınır değerden fazlasını alır almaz, ancak bu onları tekrar gözden geçirmek için geri dönmeme yetecek kadar basitti.) Bu nedenle, sınır değer analizi bize sadece Kapsamlı bir güvence ile 17 test vakası - kapsamlı test yapmak için 128 test vakasına kıyasla. (Kombinatoriklerin ayrıntılı testlerin gerçek dünyadaki herhangi bir uygulama için kolayca olanaksız olduğunu belirttiğinden bahsetmeyin!