Döngü Testi Nedir? Metodoloji, Örnek

⚡ Akıllı Özet

Döngü testi, bir program içindeki döngü yapılarını doğrular; bir döngünün atlanması, bir kez girilmesi, sınırında yürütülmesi ve izin verilen maksimum geçiş sayısının bir adım ötesine itilmesi durumunda ne olduğunu kontrol eder.

  • 🔘 Tanım: Ekranlama yönteminden ziyade döngü geçerliliğini hedefleyen beyaz kutu kontrol yapısı tekniği.
  • 🔁 Dört sınıf: Basit, iç içe geçmiş, birleştirilmiş ve yapılandırılmamış döngülerin her biri kendi stratejisine ihtiyaç duyar.
  • 📍 Üç kontrol noktası: Döngüye giriş, yürütme sırasındaki davranış ve çıkış koşulu.
  • 🧪 Sınır geçişleri: Sıfır, bir, iki, tipik bir sayım, ardından b-1, b ve b+1 yineleme.
  • 🪜 İç içe sıralı: En içteki ilmekten başlayın, dıştakileri en kısa mesafede tutun, sonra dışa doğru ilerleyin.
  • ???? Tespit edilen kusurlar: Bir eksik limitler, başlatılmamış sayaçlar, sonsuz döngüler ve kapasite darboğazları.
  • ⚠️ Sınırlama: Döngü hataları düşük seviyeli kodda bulunur ve ulaşıldığında nadiren göze batar.

Döngü Testi Metodolojisi, Döngü Türleri ve Örnek Test Senaryoları

Döngü Testi Nedir?

Döngü Testi Programdaki döngü yapılarının geçerliliğine tamamen odaklanan bir yazılım test türüdür. Kontrol yapısı testinin bir parçasıdır ve diğer test türleriyle birlikte ele alınır. yol testiVeri doğrulama testleri ve koşul testleri.

Döngü testi bir beyaz kutu testi Bu teknik, kaynak kodunu okuyabilen ve döngü koşulunu, sayacı ve çıkış yolunu görebilen biri tarafından uygulanır. Test eden kişi, kullanıcı arayüzünden davranış hakkında tahminde bulunmaz; test edilen nesne döngünün kendisidir.

Aşağıdaki diyagram, döngü testinin kontrol yapısı test ailesi içindeki yerini göstermektedir.

Döngü testi, kontrol yapısı testinin bir dalı olarak gösterilmiştir.

Test edilen döngü türleri

Bir strateji seçmeden önce, hangi dört döngü sınıfından birini incelediğinizi belirleyin. Test edilen döngü türlerine örnekler şunlardır:

  • Basit döngü — tek girişli ve tek çıkışlı tek bir döngü, örneğin düz bir döngü için, süre or yaparken yapı.
  • iç içe döngü — Bir döngü diğerinin içine yerleştirilir, böylece içteki döngü dıştaki döngünün her geçişinde tamamlanır.
  • Birleştirilmiş döngü — art arda çalışan iki veya daha fazla döngü.
  • Yapılandırılmamış döngü — Genellikle bir döngü gövdesine girme veya çıkma sonucunda oluşan, iç içe geçmiş ve birleştirilmiş döngülerin planlanmamış bir kombinasyonu.

Sınıf, gereken çabayı belirler. Basit bir döngü birkaç yineleme sayısına ihtiyaç duyar; yapılandırılmamış bir döngü ise genellikle test edilebilmesi için kodun yeniden tasarlanmasını gerektirir.

Döngü Testi neden yapılır?

Döngü Testi aşağıdaki nedenlerle yapılır

  • Test, döngü tekrarı sorunlarını çözebilir
  • Döngü testleri, performans ve kapasite darboğazlarını ortaya çıkarabilir.
  • Döngüleri test ederek, döngü içindeki başlatılmamış değişkenler belirlenebilir.
  • Döngü başlatma sorunlarını belirlemeye yardımcı olur.

Bunun ticari bir nedeni de var. Bir döngünün bir yinelemeyi fazla çalıştırması toplamı bozar; hiç sonlanmayan bir döngü ise işlemi kilitler. Her iki hata da kod geliştirici makinesindeyken kolayca bulunur, ancak üretim ortamında bulunması pahalıdır.

Döngü Testi Nasıl Yapılır: Tam Metodoloji

Bir döngüyü test ederken, üç farklı seviyede kontrol edilmesi gerekir:

  • Döngüye girildiğinde
  • İnfazı sırasında ve
  • Döngü bırakıldığında

Bu döngülerin tümü için test stratejisi aşağıdaki gibidir.

Basit döngü

Aşağıda gösterildiği gibi, basit bir döngünün tek bir girişi ve tek bir çıkışı vardır.

Tek giriş noktası ve tek çıkış koşuluna sahip basit döngü akış diyagramı

Basit bir döngü aşağıdaki şekilde test edilir:

  1. Döngünün tamamını atla
  2. Döngüden 1 kez geçin.
  3. Döngüden 2 geçiş yapın
  4. Yapmak a döngüden geçer a < bBu, tipik bir orta seviye yineleme sayısıdır.
  5. Yapmak b, b-1 ve b+1 döngüden geçer b Döngüden geçiş için izin verilen maksimum sayıdır.

Son iki durum en büyük değeri taşıyor. Atlaping Döngü, çıkış koşulunun gövde çalışmadan önce değerlendirildiğini kanıtlıyor ve b+1 durumu, döngünün diziyi aşmak yerine, belirtilen sınırın ötesinde çalışmayı reddettiğini kanıtlıyor.

İç içe Döngü

İç içe döngüler, olası yineleme kombinasyonlarının sayısını artırır; bu nedenle, tüm işlemler aynı anda değil, içten dışa doğru test edilir.

İç içe döngülü akış diyagramı; iç içe döngü, dış döngü ile çevrelenmiştir.

İç içe döngüler için aşağıdaki adımları izlemeniz gerekir.

  1. Diğer tüm döngüleri minimum değerlerine ayarlayın ve en içteki döngüden başlayın.
  2. En içteki döngü için basit bir döngü testi gerçekleştirin ve dış döngüleri minimum yineleme parametre değerinde tutun
  3. Bir sonraki döngü için testi gerçekleştirin ve dışa doğru ilerleyin.
  4. En dıştaki döngü test edilene kadar devam edin.

Birleştirilmiş Döngüler

Şemada gösterildiği gibi, birleştirilmiş döngüler aynı yürütme yolunda art arda yer alır.

Birbirine bağlı döngülerin akış şeması, ardışık olarak çalışan iki döngüyü göstermektedir.

Birbirine bağlı döngülerde, iki döngü birbirinden bağımsız ise basit döngü yaklaşımıyla test edilirler, aksi takdirde iç içe döngüler olarak test edilirler.

Ancak, bir döngünün sayacı diğer döngünün başlangıç ​​değeri olarak kullanılırsa, iki döngü bağımsız olarak kabul edilmez.

Yapılandırılmamış Döngüler

Yapılandırılmamış döngüler en zor durumdur, çünkü kontrol rastgele noktalardan döngü gövdesine girip çıkar.

Kontrol atlamalı yapılandırılmamış döngü akış diyagramıping döngü gövdesinin içine ve dışına

Yapılandırılmamış döngüler için, tasarımın yapılandırılmış programlama yapılarını yansıtacak şekilde yeniden yapılandırılması gerekir. Kod basit, iç içe veya birleştirilmiş biçimlere indirgendikten sonra, yukarıdaki eşleştirme stratejisi uygulanır.

Test Senaryolarıyla Döngü Testi Örneği

Bir örnek uygulama, yineleme sayılarını somutlaştırır. Çalışan bir sonucu 1'den başlayarak her tam sayıyla çarpan bir rutini ele alalım. nFaktöriyel hesaplaması. Döngü sayacı 1'den başlar, çıkış koşulu şudur: karşı > nDöngü, sonuç tanımlanan tamsayı türünü aşmadan önce en fazla 12 geçişi kabul edecek şekilde tanımlanmıştır.

Bunu basit bir döngü olarak ele alırsak, yukarıda önerilen yineleme sayıları aşağıdaki sonuçlara dönüşür. test senaryoları.

Test durumu n'nin değeri Geçişler gerçekleştirildi Bu neyi kanıtlıyor?
TC01 0 0 (döngü atlandı) Çıkış koşulu, program çalıştırılmadan önce değerlendirilir ve sonuç başlangıçtaki 1 değerinde kalır.
TC02 1 1 Tek bir geçişte doğru sonuç elde edilir ve sayaç bir kez artar.
TC03 2 2 Akümülatör, iki ardışık geçiş arasında bir değeri ileriye taşır.
TC04 5 5 Tipik bir orta aralık sayımının beklenen 120 değerini döndürmesi, olağan davranışı doğrulamaktadır.
TC05 11 11 Maksimumun bir altındaki geçiş yine de normal şekilde tamamlanır (b-1).
TC06 12 12 Belirtilen maksimum değer kabul edilir ve döngü sona erer (b).
TC07 13 reddetti Maksimum sınırın ötesindeki bir geçiş, sessizce taşma yerine reddedilir (b+ 1).

Dikkat ederseniz, geliştiricilerin en sık göz ardı ettiği iki durum TC01 ve TC07'dir ve bunlar atlanan başlatma ve taşma hatalarını ortaya çıkaran iki durumdur. Negatif bir değer n Belirtilen şartlar sağlanmasına izin veriyorsa aynı kümeye aittir ve bu da döngü testini şuna bağlar: negatif test.

Döngü Testi ile Tespit Edilen Yaygın Hatalar

Döngü testleri sürekli olarak aynı küçük hata ailesini buluyor; bu da sabit yineleme sayılarının her seferinde çalıştırılmaya değer olmasını sağlıyor.

  • Tek farkla sınır — şu şekilde yazılan bir durum < nerede <= Bu amaçlanmıştı, bu nedenle döngü bir geçiş eksik veya bir geçiş fazla çalışıyor.
  • Başlatılmamış sayaçlar veya akümülatörler — önceki bir çağrıdan kalan değeri içeren toplam.
  • Sonsuz döngüler — Döngü gövdesinin asla karşılayamayacağı bir çıkış koşulu, çünkü sayaç yalnızca bazı dallarda güncelleniyor.
  • Atlanmış döngü varsayımları — Döngü gövdesinin ayarlaması beklenen bir değişkeni okuyan, döngüden sonraki kod parçası; döngü sıfır kez çalıştığında bu kod hata veriyor.
  • Kapasite ve performans arızaları — Doğru çalışan ancak her geçişte veritabanını yeniden okuyan bir döngü; bu nedenle maliyet, yineleme sayısı arttıkça artar.
  • İç içe döngülü girişim — Dış döngü sayacını yeniden kullanan ve dış yineleme sayısını sessizce değiştiren bir iç döngü.

Her hata belirli bir yineleme sayısına karşılık geldiğinden, burada ortaya çıkan hataların yeniden üretilmesi ve düzeltilmesi, daha yüksek yineleme sayılarında bulunan hatalara kıyasla daha kolaydır ve daha hızlıdır. test seviyeleri.

Döngü Testi ile Diğer Kontrol Yapısı Test Teknikleri Arasındaki Farklar

Döngü testi, kontrol yapısı ailesinin bir üyesidir ve komşu tekniklerle karıştırılması kolaydır. Aşağıdaki tabloda bunlar birbirinden ayrılmıştır.

Teknik Hedeflediği şey Tipik kapsama hedefi
Döngü testi Döngü yapıları: giriş, yineleme sayıları ve çıkış Her döngü için sıfır, bir, tipik ve sınır yineleme sayıları.
Durum testi Kararlar içindeki Boolean ifadeler Değerlendirilen her koşulun hem doğru hem de yanlış yönleri değerlendirildi.
Veri akışı testi Her bir değişkenin tanımı ve kullanımı Her tanım-kullanım çifti en az bir kez alıştırma olarak kullanılmıştır.
Temel yol testi Kontrol akış grafiği üzerinden bağımsız yollar Siklomatik karmaşıklığa eşit sayıda yol

Pratikte bu teknikler birbirleriyle rekabet etmekten ziyade birbirlerini tamamlayıcı niteliktedir. Siklomatik karmaşıklık Bağımsız yolların sayısını gösterir, temel yol testi bunları kapsar ve döngü testi daha sonra yol kapsamının tek başına sağlayamayacağı yineleme sayılarını ekler. Hepsi de böyledir. dinamik test Etkinlikler, çünkü sonuçların gözlemlenebilmesi için kodun çalıştırılması gerekir.

Döngü testinde sınırlama

Bu tekniğin gerçek sınırları vardır ve bunları bilmek aşırı yatırımı önler.

  • Döngü hataları çoğunlukla düşük seviyeli yazılımlarda ortaya çıkıyor
  • Döngü testi sırasında tespit edilen hatalar çok ince değildir
  • Bu hataların çoğu, bellek sınır ihlallerine, tespit edilebilir işaretçi hatalarına ve benzeri arızalara neden oldukları için işletim sistemi tarafından tespit edilebilir.
  • Her döngünün sınıfını belirlemek ve buna göre test etmek zaman alır; bu da düşük risk taşıyan kod yollarında haklı çıkarılması zor bir durumdur.

SSS

Genellikle kaynak koduna erişimi olan geliştiriciler ve teknik test uzmanları, birim testi veya kod incelemesi. İş test uzmanları bunu uygulayamaz çünkü döngü koşulu kullanıcı arayüzünden görünmez.

Model, döngü koşulunu okur ve taşma durumu da dahil olmak üzere sıfır, bir, tipik ve sınır yineleme sayılarını otomatik olarak önerir. Bir gözden geçiren kişi, her beklenen sonucun spesifikasyona uygun olduğunu doğrular.

Tekrarlama modeli formüle dayalı olduğundan, taslakları hızlıca oluşturur. Otomatik yardımcılar da test paketini çalıştırabilir ve hangi sayımların başarısız olduğunu rapor edebilir, ancak izin verilen maksimum geçme sayısına karar vermek yine de bir insanın sahip olduğu bir tasarım kararıdır.

Test paketinin donup kalması yerine, testin hızlı bir şekilde başarısız olması için, testi bir zaman aşımı veya yineleme koruması altında çalıştırın. Yalnızca nihai çıktı değerine değil, kaydedilen geçme sayısına da göre doğrulama yapın.

Her kombinasyondan çok daha az sayıda. İçten dışa test etmek, dış döngüler minimum değerlerinde sabitlenirken iç döngü çalıştırıldığı için, sayıyı seviyeler arasında çarpımsal değil, kabaca toplamsal tutar.

Bunun için özel bir araç bulunmamaktadır. Ekipler, aşağıdaki gibi bir birim test çerçevesini bir araya getirir: JUnit Ya da dallanma kapsamını raporlayan bir kapsama aracıyla pytest'i çalıştırın, ardından sıfır yineleme yoluna ulaşıldığını doğrulamak için raporu okuyun.

Hayır. Bir döngüye bir kez girilip çıkıldığında dal kapsamı sağlanmış olur. Döngü testi ayrıca atlanan geçişleri ve sınır sayımlarını da gerektirir; dal kapsamı tek başına bunları asla zorunlu kılmaz.

Yapılandırılmamış olduğu her durumda — kontrol atlamaping Vücuda giriş veya çıkış. Basit, iç içe geçmiş veya birleştirilmiş formlara yeniden yapılandırma, her düzensiz giriş noktası için test tasarlamaktan daha az maliyetlidir.

Bu yazıyı şu şekilde özetleyin: