Test aracınızdan bahsetmiyorsunuz. Birçoğu, birden fazla çalışma veya paketin sonuçlarını birleştirmenizi sağlayan "birleştirme" işlevlerine sahiptir. Toplu kapsama metriği istiyorsanız, kapsama aracınızdaki birleştirme özelliğini inceleyin.
Şimdi odadaki fil hakkında konuşabilir miyiz?
Hiç kaşık yok. Ve "toplam kapsama yüzdesi" yoktur. En azından basit biri yok.
Kapsama yüzdesi, test paketlerinin kapsamını, derinliğini ve aralığını anlamaya yardımcı olmak için sunulan kolay anlaşılır bir metriktir. Ancak herhangi bir basit kıyaslama gibi , "tam test" in bir tür büyülü tılsımı olarak bu değere sabitlenmiş hedef olmak çok kolaydır .
Diyelim ki "% 100 test kapsamı" yüceliğini elde ettiniz. Yaşasın! Peki bu ne anlama geliyor? Kod satırlarının% 100'ü test edildi, değil mi? Peki bu çizgi ne olacak?
launch_missile = launch_authorized and launch_cmd_given else previous_launch_status
Bu çizgiyi "örtmek" bir şey anlamına gelir - ama bir sürü değil, çünkü bazı olasılıklar olan True
veya False
olasılıkla çeşitli koşullar vardır , ancak bu koşulların tüm kombinasyonlarını test etmeniz olası değildir. Bu çizgi bir düzine kez kaplansa bile, koşullardan biri nispeten nadirse, pratikte ortaya çıkabilecek tüm gerçek sonuçları test etmeye yaklaşmadınız. Bunu daha açık hale getirmek için daha sentetik bir örnek:
engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003
Gerçekten kapsamlı bir şekilde test etmek için bu çizgiyi kaç kez örtmeniz gerekir? Bunu, programdaki diğer tüm değişkenlerle (kendi, muhtemelen benzer şekilde nadiren) olasılıklarla birlikte test etmek için kaç kez kapatmanız gerekir?
Kapsam metriklerinin işe yaramaz olduğunu söylemiyorum. Aslında harikalar . Temel konulardan birine odaklanıyorlar: Yazılım sistemim ne kadar kapsamlı bir şekilde test ediliyor? "Bazı testlerimiz var" dan "kapsamlı testlerimiz" e geçmeye yardımcı oluyorlar.
Ancak "birleşik puanlar" üzerinde çalışırken, gerçekte puanınız genellikle "koşul", "yüklem" veya "yol" kapsamı yerine "ifade kapsamı" için olacaktır . Toplam puanlarınız ne kadar olursa olsun, size program potansiyel durumlarınızın ve durum kombinasyonlarınızın ne kadarının test edildiğinin gerçek bir resmini vermesi pek olası değildir. Kapsama yüzdesini artırmaya çalışırken aynı zamanda yüklem kapsamınızı da ölçmeyi düşünün. Size testin genişletilebilirliğine dair daha gerçekçi - ve neredeyse her zaman daha ayık bir bakış - verir.