Forum: D Programlama Dili RSS
Programın ne kadarının test edildiğini görmek için -cov
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Programın ne kadarının test edildiğini görmek için -cov
Birim testlerin önemini artık duymayan kalmadı. :D D'de nasıl kullanıldıkları şurada var:

  http://ddili.org/ders/d/birim_testler.html

Bunun bir üstü, testleri de test etmek... Çünkü testler, programın bütün satırlarını kapsayacak kadar geniş olmayabilirler. Bu, kod kapsamına (code coverage) bakarak anlaşılıyor.

Program -cov ile derleniyor:

dmd -cov -unittest -w deneme.d

Ondan sonra çalıştırılıyor:

./deneme

Sonunda deneme.lst diye bir dosya oluşuyor. O dosya, hangi satırın kaç kere işletildiğini gösteriyor.

Örnek:

import std.stdio;
 
int birHesap(int sayı)
{
    int sonuç = 2 * sayı;
 
    // Tek sayılarda 7 daha eklenmeli
    if (sayı % 2) {
        sonuç += 7;
    }
 
    return sonuç;
}
 
unittest
{
    assert(birHesap(42) == 84);
}
 
void main()
{}

Programı çalıştırdıktan sonra oluşan deneme.lst dosyası şöyle:

       |import std.stdio;
       |
       |int birHesap(int sayı)
       |{
      1|    int sonuç = 2 * sayı;
       |
       |    // Tek sayılarda 7 daha eklenmeli
      1|    if (sayı % 2) {
0000000|        sonuç += 7;
       |    }
       |
      1|    return sonuç;
       |}
       |
       |unittest
       |{
      1|    assert(birHesap(42) == 84);
       |}
       |
       |void main()
       |{}
deneme.d is 80% covered

Başında 0000000 olan satırlar hiç çalışmamış (yani denenememiş) olan satırları gösteriyorlar. O yüzden de bu programın yalnızca %80'inin kapsandığı bildiriliyor. (Diğer sayılar her satırın kaç kere işletildiğini gösteriyor.)

Test kapsamını arttırmak için bu durumda şu da eklenebilir:

    assert(birHesap(3) == 13);

Artık %100...

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 15:22:03 (UTC -08:00)