CodeBlanks Logo Icon CodeBlanks

Coverage

  • C kursu
  • İleri seviye
  • Ders 70/83
  • 5 dk

Kod kapsamı ölçümünü öğrenirsin.

Coverage

Kod kapsamı (coverage), testlerin kaynak kodun ne kadarını çalıştırdığını ölçer. gcov ve lcov araçları GCC ile birlikte gelir; her satır ve dal için çalıştırılma sayısını verir.

Bu derste bir coverage_counter ile dalları elle sayıyoruz; bu, gcov'un arka planda yaptığını basitleştirilmiş olarak gösterir. sign(int n) işlevi üç dal içerir: pozitif, negatif ve sıfır. Test yalnızca bir dalı çalıştırıyorsa kapsam 1/3 olur.

Dalları saymak

Bir coverage_counter global değişkeni tanımlarsın. sign işlevi her dalda sayacı artırır; hangi dalların çalıştığını görürsün. Bir testin kapsamı, çalıştırılan dalların toplam dallara oranıdır.

Örnek: int sign(int n) { if (n > 0) { coverage_counter++; return 1; } if (n < 0) { coverage_counter++; return -1; } coverage_counter++; return 0; }. sign(5) çağrısı yalnızca ilk dalı çalıştırır; sayaç 1 olur. Tam kapsam için her üç dalı da sınamalısın.

Uygulama Coverage sayaçlı sign

Global int coverage_counter = 0; tanımla. int sign(int n) yaz: n > 0 ise { coverage_counter++; return 1; }, n < 0 ise { coverage_counter++; return -1; }, yoksa coverage_counter++; return 0;. main'de int r = sign(5); ve printf("kapsam: %d\n", coverage_counter); ve printf("sign: %d\n", r);.

Başlangıç kodu

main.c
#include <stdio.h>

// Global coverage sayacı tanımla (başlangıç 0)
// sign işlevini yaz: her dalda sayacı artır
// main: sign(5) çağır ve kapsam ile sign değerini yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int coverage_counter = 0;

int sign(int n) {
    if (n > 0) { coverage_counter++; return 1; }
    if (n < 0) { coverage_counter++; return -1; }
    coverage_counter++;
    return 0;
}

int main(void) {
    int r = sign(5);
    printf("kapsam: %d\n", coverage_counter);
    printf("sign: %d\n", r);
    return 0;
}

Beklenen çıktı

kapsam: 1
sign: 1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 gcov ne ölçer?

  • Bellek kullanımı
  • Kod kapsamı Doğru cevap
  • Dosya boyutu
  • CPU hızı

Açıklama: gcov her satır ve dalın çalışma sayısını verir.

2 Coverage araçlarını eşle

Kavram Anlamı
gcov Satır sayacı
lcov HTML rapor
sign Üç dallı işlev
coverage_counter El ile sayaç

3 sign pozitif dalı

Soru
if (n > 0) { coverage_counter++; return ____; }
Cevap
if (n > 0) { coverage_counter++; return 1; }

Açıklama: Pozitif sayı için sign 1 döndürür.

İleri seviye bölümündeki tüm dersler