MC/DC Test Seti Üretici
Bir karar ifadesindeki her koşulun sonucu tek başına etkilediğini gösteren değiştirilmiş koşul/karar kapsama (modified condition/decision coverage, MC/DC) test setini bulur. C sözdiziminde kararı yazın; araç bağımsızlık çiftlerini, en az testten oluşan seti ve kendi seçtiğiniz testlerin MC/DC'yi sağlayıp sağlamadığını gösterir.
(basinc_dusukA && motor_calisiyorB) || bakim_kipiC
Üç koşul için dört test yeter (n+1). Karar kapsama iki testle sağlanır ama bakim_kipi koşulunun etkisini göstermez.
İşleçler: && || ! (kısa devreli), & | (kısa devresiz), and or not. hiz > 250 gibi karşılaştırmalar ve işlev çağrıları tek koşuldur.
- A
basinc_dusuk - B
motor_calisiyor - C
bakim_kipi
Koşul bazında bağımsız etki
- A
basinc_dusuk✓ T1 ↔ T4 (satır 3 ↔ 7)
- B
motor_calisiyor✓ T3 ↔ T4 (satır 5 ↔ 7)
- C
bakim_kipi✓ T1 ↔ T2 (satır 3 ↔ 4)
Karar kapsama: ✓ doğru ve yanlış sonuç alındı · Koşul kapsama: ✓ her koşul iki değeri de aldı
Test seti
| Test | Satır | A | B | C | Karar | Gösterdiği | Çıkar |
|---|---|---|---|---|---|---|---|
| T1 | 3 | 0 | 1 | 0 | 0 | A C | |
| T2 | 4 | 0 | 1 | 1 | 1 | C | |
| T3 | 5 | 1 | 0 | 0 | 0 | B | |
| T4 | 7 | 1 | 1 | 0 | 1 | A B |
Doğruluk tablosu
Satıra tıklayarak test setine ekleyin ya da çıkarın. Sağdaki sütunlar, satırla yalnızca o koşulda ayrılıp kararı değiştiren eş satırı gösterir; numaraya tıklayınca çift vurgulanır.
| Seç | # | Koşul değerleri | Karar | Bağımsızlık eşi | ||||
|---|---|---|---|---|---|---|---|---|
| A | B | C | A | B | C | |||
| 1 | 0 | 0 | 0 | 0 | ||||
| 2 | 0 | 0 | 1 | 1 | ||||
| 3T1 | 0 | 1 | 0 | 0 | ||||
| 4T2 | 0 | 1 | 1 | 1 | ||||
| 5T3 | 1 | 0 | 0 | 0 | ||||
| 6 | 1 | 0 | 1 | 1 | ||||
| 7T4 | 1 | 1 | 0 | 1 | ||||
| 8 | 1 | 1 | 1 | 1 | ||||
Nasıl kullanılır?
- Kararı yazın ya da bir örnek seçin.
&&,||ve!işleçleri, parantezler,hiz > 250gibi karşılaştırmalar vesensor_gecerli(2)gibi çağrılar kullanılabilir; her karşılaştırma ve çağrı tek bir koşuldur. - Ölçütü seçin: benzersiz neden (unique-cause) ya da maskeleme (masking).
- Önerilen seti inceleyin. "Test seti" tablosu en küçük seti, "Gösterdiği" sütunu her testin hangi koşulun bağımsız etkisini gösteren çiftte yer aldığını verir. Koşul listesindeki "tabloda göster" çifti doğruluk tablosunda vurgular.
- Kendi testlerinizi denetleyin. Doğruluk tablosunda satırlara tıklayarak test ekleyip çıkarın; eksik kalan koşul için araç hangi satırın eklenmesi gerektiğini söyler.
- Paylaşın ya da dışa aktarın: CSV, test vektörlerini gereksinim tabanlı test prosedürüne aktarmak içindir; bağlantı, ifadeyi ve seçimi taşır.
MC/DC neyi ister?
DO-178C'de Seviye A yazılım için yapısal kapsam ölçütü MC/DC'dir. Testler koşturulduğunda şunların görülmesi beklenir:
- her giriş ve çıkış noktası en az bir kez çalışmıştır,
- her karar hem doğru hem yanlış sonuçlanmıştır (karar kapsama),
- her koşul iki değeri de almıştır (koşul kapsama),
- her koşulun, kararın sonucunu tek başına değiştirebildiği gösterilmiştir.
Son madde MC/DC'yi karar kapsamadan ayırır. Kitaptaki
(basinc_dusuk && motor_calisiyor) || bakim_kipi örneğinde karar kapsama iki
testle sağlanır, ama bu iki test bakim_kipi koşulunun kararı hiç etkilemediği bir
hatayı gizleyebilir. MC/DC her koşul için bir test çifti ister: koşul değişir,
karar da değişir. Ayrıntı için kitabın
yapısal kapsam analizi
bölümüne ve yapısal kapsam türleri yazısına
bakabilirsiniz.
Benzersiz neden ve maskeleme
- Benzersiz neden (unique-cause) MC/DC: Çiftteki iki test yalnızca incelenen koşulda ayrılır; diğer bütün koşullar aynı kalır. Her koşulu bir kez geçen bir kararda n koşul için en az n+1 test gerekir ve bu sayıya her zaman ulaşılabilir.
- Maskeleme (masking) MC/DC: Diğer koşullar da değişebilir, yeter ki iki testte de kararı etkilemesinler. VE işlecinde yanlış olan bir koşul, VEYA işlecinde doğru olan bir koşul diğerlerini maskeler: karar artık onlara bakmaz. Bir koşulun kararı tek başına belirlediği satırlardan birinde koşul 1, diğerinde 0 ise bağımsızlık gösterilmiştir. Maskeleme daha esnektir: aynı değişkeni birden çok yerde kullanan kararlarda tek yol odur ve bazı kararlarda n+1'den az testle yetinir. Sertifikasyon otoritelerinin ortak bildirisi CAST-6, maskeleme MC/DC'nin kabul edilebileceğini gerekçelendirir; hangi biçimin kullanılacağı yazılım doğrulama planında belirtilir.
Kısa devre değerlendirmesi
C'de && ve || soldan sağa değerlendirilir ve sonuç belli olunca durur:
A && B ifadesinde A yanlışsa B hiç okunmaz. Araç, bu yüzden hiç
değerlendirilmeyen değerleri tablolarda soluk gösterir; bu değerler test
sırasında ne verilirse verilsin sonucu değiştirmez. & ve | ise iki tarafı da
her zaman hesaplar. Maskeleme ölçütü kısa devre mantığıyla doğal olarak uyumludur:
okunmayan koşul zaten maskelenmiştir.
Bağlı koşullar ve gereksiz mantık
Aynı koşul kararda birden çok kez geçerse bu geçişler bağlıdır (coupled):
(A && B) || (A && C) ifadesinde A'nın bir geçişi değiştirilirken diğeri sabit
tutulamaz, bu yüzden benzersiz neden ölçütü bu geçişler için gösterilemez;
maskeleme gösterir. Hiçbir girdide kararı tek başına belirlemeyen bir koşul ise
gereksiz mantık işaretidir: A && (A || B) yalnızca A'ya eşittir ve B'nin
etkisi hiçbir testle gösterilemez. MC/DC'nin değerli yanlarından biri bu tür
fazlalıkları kod gözden geçirmesinde gözden kaçsa bile ortaya çıkarmasıdır.
En küçük set nasıl bulunur?
Her koşulun bir kez geçtiği kararlarda benzersiz neden seti doğrudan kurulur: VE düğümünde bir alt ifadenin testleri, diğerinin kararı doğru yapan bir testiyle, VEYA düğümünde yanlış yapan bir testiyle birleştirilir. Ortak test bir kez sayıldığı için sonuç n+1 testtir. Maskeleme ve bağlı koşullu kararlarda araç, her koşulun gereksinimini karşılayan en az satırı arar; çok büyük kararlarda arama bir sınırda durursa bulunan set gösterilir ve daha küçüğünün olabileceği belirtilir.
Sınırlamalar
- Karşılaştırmalar birbirinden bağımsız koşul sayılır:
hiz > 100vehiz > 200gerçekte aynı anda her değeri alamaz (zayıf bağlı koşullar). Araç bu kombinasyonları ayıklamaz; tablodan seçerken gerçekleşebilir olmalarına dikkat edin. - Desteklenen işleçler
&&,||,!,&ve|'dir;^(özel veya) ve?:desteklenmez. En çok 12 farklı koşul ve 15 koşul geçişi çözümlenir; doğruluk tablosu 8 koşula kadar gösterilir. - Araç test vektörlerini tasarlar; kapsam ölçmez. DO-178C'de kapsam verisi gereksinim tabanlı testlerin koşusundan toplanır: önerilen vektörler, gereksinimlerden türetilen test vakalarının hangi girdileri kapsaması gerektiğini görmeye yardım eder.