Ana içeriğe geç

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.

MC/DC test seti

(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.

  • Abasinc_dusuk
  • Bmotor_calisiyor
  • Cbakim_kipi
Koşul33 değişken · 8 kombinasyon
En küçük set4 testalt sınır n+1 = 4
Seçili set (4 test)MC/DC ✓3/3 koşulun bağımsız etkisi gösterildi

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

TestSatırABCKararGösterdiğiÇıkar
T130100A C
T240111C
T351000B
T471101A 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ğerleriKararBağımsızlık eşi
ABCABC
10000
20011
3T10100
4T20111
5T31000
61011
7T41101
81111

Nasıl kullanılır?​

  1. Kararı yazın ya da bir örnek seçin. &&, || ve ! işleçleri, parantezler, hiz > 250 gibi karşılaştırmalar ve sensor_gecerli(2) gibi çağrılar kullanılabilir; her karşılaştırma ve çağrı tek bir koşuldur.
  2. Ölçütü seçin: benzersiz neden (unique-cause) ya da maskeleme (masking).
  3. Ö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.
  4. 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.
  5. 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 > 100 ve hiz > 200 gerç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.