Birim ve entegrasyon testleri için ayrı kod kapsamı raporları veya her ikisi için bir rapor mu?


10

Birim ve entegrasyon testleri için ayrı bir kod kapsam raporu mu yoksa her ikisi için de bir kod kapsam raporu mu olmalı?

Bunun arkasındaki düşünce, kod kapsamının, kodumuzun mümkün olduğunca testlerle kapsandığından emin olmamızı sağlamasıdır (bir makine zaten mümkün olduğu kadarıyla).

Ayrı bir rapora sahip olmak, birim testlerin kapsamına girmeyenleri ve entegrasyon testlerinin kapsamına girmeyenleri bilmek bizim için daha uygundur. Ancak bu şekilde toplam kapsama yüzdesini göremiyoruz.


1
Ayrılmak için dolgunlaşacağım. Nasıl test edildi bilmeden "bu kod test edildi" demek yeterli olduğunu sanmıyorum. Birim testi ve Entegrasyon testi aynı kodu kullanır, ancak farklı şekillerde, örneğin birim testi kenar durumu değerlerini kullanırken entegrasyon yolun ortasında ("gerçekçi") değerleri kullanabilir. Aynı kod, çok farklı testler.
Mawg, Monica

Ünite testlerini ve entegrasyon testlerini tam da bu nedenle ayrı kütüphanelerde tutuyoruz.
Robbie Dee

Müşterinin ihtiyaçlarına bağlıdır.
mouviciel

Yanıtlar:


12

Her şeyden önce, birleşik (toplam) kapsama sahip olmanız ve analiz etmeniz gerekir. Bunu düşünüyorsanız, risklerinizi doğru şekilde önceliklendirmenin ve test geliştirme çabanıza odaklanmanın en doğal yolu budur.

Testler kapsamında değildir neyi kodu Kombine kapsama gösterileri hiç , yani ilk araştırılması gereken en riskli ve ihtiyacıdır. Ayrı kapsama raporları burada yardımcı olmaz, çünkü bunlar kodun bir şekilde test edilip edilmediğini veya hiç test edilmediğini öğrenmenize izin vermez.


Ayrı kapsama analizi de yararlı olabilir, ancak birleşik analizle işiniz bittikten sonra daha iyi yapılır ve tercihen birleşik kapsama alanı analizinin sonuçlarını da içerir.

Ayrı kapsam analizinin amacı kombine olandan farklıdır. Ayrı kapsam analizi, ne olursa olsun geliştirilecek testlere karar vermeyi amaçlayan birleşik kapsam analizinin aksine, test takımınızın tasarımını iyileştirmeye yardımcı olur.

"Ah bu boşluk, sadece bu basit birim (entegrasyon) testini birim (entegrasyon) paketimize eklemeyi unuttuğumuz için kapsamaz, ekleyelim" - ayrı kapsam ve analiz burada en kullanışlıdır, çünkü birleşik boşlukları gizleyebilir Belirli bir süitte örtmek istediğiniz

Yukarıdaki perspektiften bakıldığında, daha karmaşık vakaları analiz etmek için birleşik kapsama analizi sonuçlarına sahip olmak da istenmektedir. Düşünün, bu sonuçlarla, test ortağı kararlarınız hakkında "ortak" test paketleri hakkında bilgi sahibi olmanız nedeniyle daha verimli olabilir.

"Burada bir boşluk var, ama bunu kapsayacak bir birim (entegrasyon) testi geliştirmek gerçekten zahmetli olurdu , seçeneklerimiz neler? t kritik öneme sahip. "



5

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 Trueveya Falseolası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.


Kullanılan kapsam metriklerinin türü soruya tamamen dik gibi görünmektedir, herhangi bir metrik birim testi veya entegrasyon testi veya her ikisi için hesaplanabilir
jk.

Elbette. Aynı şekilde, kullanılan araç türünden bağımsız ve ortogonal olan "galon başına mil" i (tüketilen yakıttan) hesaplayabilirsiniz. Ağır yük yükseltici roketlerden, uzun mesafeli kamyonlardan ve ekonomik araçlardan elde edilen sonuçları birleştirmenin yanıltıcı bir kombo-metrik verdiğini iddia ediyorum. Hala bir filo için "filo genelinde" bir rakam kullanabileceğinizi düşünüyorum.
Jonathan Eunice

İlginç, ama biraz konu dışı cevap .... yine de upvoted!
HDave
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.