Model Tabanlı Test Nedir?

⚡ Akıllı Özet

Model tabanlı test, yazılımın çalışma zamanı davranışını bir model tarafından yapılan tahminlere göre kontrol eder.tracSistemin t modelini kullanarak, test senaryolarını elle yazmak yerine sonlu durum makinelerinden, durum diyagramlarından veya UML gösterimlerinden otomatik olarak oluşturur.

  • 🧭 Temel fikir: Bir model, beklenen davranışı tanımlar ve her test senaryosu ayrı ayrı yazılmak yerine bu modelden türetilir.
  • 🔀 İki çerçeve: Çevrimdışı üretim, yürütmeden önce test paketini oluştururken, çevrimiçi üretim ise çalıştırma sırasında adımları anında üretir.
  • 📐 Model gösterimleri: Sonlu durum makineleri, durum diyagramları, karar tabloları, veri akışı ve kontrol akışı grafikleri ve UML diyagramları.
  • ⚙️ Çalışma süreci: Modeli oluşturun, kapsama kriterlerini seçin, mutlak değerleri üretin.tract testlerini uygulayın, bunları komut dosyalarına dönüştürün, çalıştırın ve ardından sonuçları atayın.
  • takım: GraphWalker, fMBT, Conformiq, MaTeLo, MBTsuite ve Spec Explorer, yönlendirilmiş grafiklerden veya durum modellerinden yollar oluşturur.
  • 🇧🇷 Değiş tokuş: Bakım maliyetleri düşerken kapsama alanı artıyor, ancak bu teknik modelleme becerisi ve öğrenmeye yönelik ön yatırım gerektiriyor.

Model Tabanlı Test, sistemin davranışsal modelinden otomatik olarak test senaryoları türetir.

Model Tabanlı Test Nedir?

Model Tabanlı Test Yazılım testinde kullanılan bir teknik olan model testi, test edilen yazılımın çalışma zamanı davranışının bir model tarafından yapılan tahminlerle karşılaştırılmasını içerir. Model, bir sistemin davranışının girdi dizileri, eylemler, koşullar, çıktı ve girdiden çıktıya veri akışı açısından ifade edilen bir tanımıdır. Kullanılabilir bir model, pratik olarak anlaşılabilir, yeniden kullanılabilir ve paylaşılabilir olmalı ve test edilen sistemi kesin olarak tanımlamalıdır.

Çok sayıda model mevcuttur ve her biri sistem davranışının farklı bir yönünü tanımlar. Yaygın örnekler şunlardır:

Model Tabanlı Test, bir sistemin model tarafından belirlenen bir eyleme nasıl tepki verdiğini açıklar. Eylemi belirtin, ardından sistemin modelin öngördüğü gibi tepki verip vermediğini kontrol edin. İkisi arasındaki herhangi bir sapma, yazılımda bir kusur veya modelde bir hata anlamına gelir ve her ikisini de bulmak önemlidir.

Bu, bir sistemi doğrulamak için kullanılan hafif, biçimsel bir yöntemdir ve yazılım testine olduğu kadar donanım testine de kolaylıkla uygulanabilir. Testler koddan ziyade davranış spesifikasyonundan kaynaklandığı için, bu teknik oldukça kullanışlıdır. kara kutu testi ailesinin yazılım test teknikleri.

Model Tabanlı Test Örneği

Davranış modellerini okumanın en basit yolu, onları adım adım takip etmektir. Aşağıdaki diyagram, küçük bir metin düzenleme görevini modellemektedir; her kutu uygulamanın bulunabileceği bir durumu, her ok ise kullanıcının gerçekleştirebileceği bir eylemi temsil etmektedir.

Model Tabanlı Test örneği: Not Defteri'nde şiir yazmanın durumlarını ve eylemlerini modelleme.

Bu model, Not Defteri'nde şiir yazmaya yönelik basitleştirilmiş bir yaklaşımı ve her adımla ilgili olası eylemleri açıklamaktadır. Uygulamayı başlatmak, şiir girmek veya dosyayı kaydetmek gibi her eylem için, test durumu Üretilebilir ve çıktı doğrulanabilir. Aynı diyagramda farklı bir yol izlemek, örneğin kaydetmeden başlayıp kapatmak, ek tasarım maliyeti olmadan farklı bir test durumu üretir; bu da tüm tekniğin ekonomik gerekçesidir.

MBT Türleri

Model tabanlı test çerçevelerinin iki türü vardır ve aralarındaki fark, test adımlarının ne zaman üretildiğinde yatmaktadır:

  • Çevrimdışı / önceden: Test paketlerinin çalıştırılmadan önce oluşturulması. Bir test paketi, test senaryolarının bir koleksiyonudur ve bu modda paket, diğerleri gibi saklanır, incelenir ve yeniden çalıştırılır. otomasyon testi varlık.
  • Çevrimiçi / anlık: Test yürütme sırasında test paketlerinin oluşturulması; bir sonraki adım, sistemin bir önceki adıma nasıl yanıt verdiğine bağlı olarak seçilir.

Çevrimdışı üretim, gözden geçirilebilir ve tekrarlanabilir bir diziye ihtiyaç duyan düzenlenmiş ortamlara uygundur. Çevrimiçi üretim ise, üreticinin tahmin edilen yanıta değil, gerçek yanıta tepki verebilmesi nedeniyle, durum bilgisi içeren sistemlere karşı uzun süreli keşif oturumlarına uygundur.

Model Tabanlı Test Nasıl Çalışır?

Hangi çerçeve kullanılırsa kullanılsın, teknik aynı beş aşamayı izler. Her aşama, bir sonraki aşamanın tükettiği bir çıktı üretir; bu nedenle, test senaryosu değil, model ekibin sürdürdüğü şey haline gelir.

  • Adım 1: Modeli oluşturun. Gereksinimleri veya bir spesifikasyonu soyut bir metne dönüştürün.tracBeklenen davranış modeli; durumları, aralarındaki geçişleri ve her geçişi tetikleyen girdileri tanımlar.
  • Adım 2: Test seçim kriterlerini belirleyin. Kriterler, jeneratöre ne zaman duracağını söyler. Yaygın olanlar arasında her durumu en az bir kez ziyaret eden tüm durum kapsamı; her oku en az bir kez çalıştıran tüm geçiş kapsamı; ve daha derinlemesine keşif için yol veya veri akışı kapsamı bulunur.
  • Adım 3: Mutlak değerleri oluşturuntract test durumu. Bu araç modeli dolaşır ve abs dizileri üretir.tracSeçilen kriterleri karşılayan t adım ve her adımda beklenen sonuç.
  • Adım 4: Karın kaslarını somutlaştırıntract testleri. Bir adaptör katmanı, her bir abs'yi eşler.tracSisteme karşı gerçek bir eyleme geçmek, örneğin bir kullanıcı arayüzü etkileşimi, bir API Çağrı veya protokol mesajı. Bu haritaping Bir kez yazılır ve oluşturulan her test tarafından yeniden kullanılır.
  • Adım 5: Kararları uygulayın ve atayın. Sisteme karşı gerçekleştirilen somut testlerde, gözlemlenen her yanıt model tahminiyle karşılaştırılır ve geçme veya kalma sonucu kaydedilir. tracBu işlem, onu üreten model öğesine geri döndü.

MKS trac5. adımda yaratılan yetenek, pratik bir getiri sağlar. Bir gereksinim değiştiğinde, model değişir ve etkilenen testler yeniden yazılmak yerine yeniden oluşturulur; bu nedenle sık sık test yapan ekipler için bu durum geçerlidir. gerileme testi İstikrarlı bir spesifikasyona karşı en büyük faydayı sağlar.

Testlerde Farklı Modeller

MBT'yi anlamak için aşağıda açıklanan modellerin bazılarını anlamak gereklidir. Her biri ifade gücünü çabayla dengeler, bu nedenle seçim, test edilen davranışın ne kadar karmaşık olduğuna bağlıdır.

Sonlu Durum Makineleri

Bu model, test uzmanlarının seçilen girdiye bağlı olarak sonucu değerlendirmelerine yardımcı olur. Girdilerin çeşitli kombinasyonları, sistemin karşılık gelen bir durumuna yol açabilir.

Sistem, test edenler tarafından verilen bir dizi girdiye bağlı olarak, belirli bir duruma ve mevcut duruma sahip olacaktır.

Aşağıdaki örneği ele alalım. Bir sistem, çalışanların bir uygulamaya giriş yapmasına olanak tanır. Çalışanın mevcut durumu "Çıkışta"dır ve sisteme giriş yaptığında "Girişte" olur. "Girişte" durumunda, çalışan sistemdeki belgeleri görüntüleyebilir, yazdırabilir ve tarayabilir.

Bu örneğe ait durum makinesi burada gösterilmiştir; her ok, geçişe neden olan girdi ile etiketlenmiştir.

Çalışan giriş sisteminin Çıkış ve Giriş durumlarını gösteren sonlu durum makinesi modeli.

Durum Grafikleri

Durum diyagramı, sonlu durum makinesinin bir uzantısıdır ve karmaşık ve gerçek zamanlı sistemler için kullanılabilir. Durum diyagramları, sistemin çeşitli davranışlarını tanımlar, belirli sayıda duruma sahiptir ve sistemin davranışı her durum için olaylar şeklinde analiz edilir ve temsil edilir. Pratikte önemli olan uzantı hiyerarşidir: bir durum diyagramı iç içe ve paralel durumlara izin verir, bu nedenle düzinelerce düz durum gerektirecek bir makine kompakt bir şekilde çizilebilir.

Örneğin, hatalar hata yönetim aracında "Yeni" durumuyla kaydedilir. Bir hata geliştiriciler tarafından düzeltildiğinde, durum "Düzeltildi" olarak değiştirilmelidir. Bir hata düzeltilmezse, durum "Yeniden Açıldı" olarak değişir. Durum diyagramları, her durum için bir olayın çağrılacağı şekilde tasarlanmalıdır.

Aşağıda, her bir durumun bir evre olarak ve her bir iş akışı eyleminin de kusuru bu evreler arasında hareket ettiren olay olarak gösterildiği, kusur yaşam döngüsü şeması yer almaktadır.

Yeni, Düzeltildi ve Yeniden Açıldı durumlarından geçen bir hata yaşam döngüsünün durum diyagramı.

Birleşik Modelleme Dili (UML)

Birleşik Modelleme Dili (UML) UML, standartlaştırılmış, genel amaçlı bir modelleme dilidir. UML, çok karmaşık sistem davranışlarını tanımlayabilen görsel modeller oluşturmak için kullanılan bir dizi grafiksel gösterim tekniği içerir.

UML'de aşağıdaki gibi gösterimler vardır:

  • Aktiviteler
  • Aktörler
  • İş süreci
  • Bileşenler
  • Programlama dili

Aşağıdaki örnek UML modelinde de gösterildiği gibi, aktivite ve durum makinesi diyagramları, test oluşturucuların en sık okuduğu diyagramlardır.

Test senaryoları oluşturmak için kaynak model olarak kullanılan UML diyagram gösterimi.

Model Tabanlı Test Araçları

Kağıt üzerindeki bir model kendi başına hiçbir şey üretmez. Modeli gezmek ve test yolları oluşturmak için bir jeneratöre ihtiyaç vardır ve araç pazarı açık kaynaklı jeneratörler ve ticari test tasarım platformları olarak ikiye ayrılır.

  • GraphWalker — Yönlendirilmiş grafikler şeklinde oluşturulmuş modelleri okuyan ve seçilebilir üreteçler ve durdurma koşullarıyla bunlardan test yolları üreten açık kaynaklı bir araç.
  • fMBT — Intel'in açık kaynaklı, model tabanlı bir test araç seti olup, durum modellerine karşı test oluşturma ve yürütmeyi destekler.
  • Conformiq — Grafiksel davranış modellerinden test senaryoları ve komut dosyaları türeten, ticari bir otomatik test tasarımı ürünü.
  • MaTeLo ve MBTsuite — İstatistiksel kullanım modellerine ve mevcut otomasyon çerçevelerine testler entegre etmeye yönelik ticari platformlar.
  • Özel Kaşif - MicrosoftVisual Studio için geliştirilen ve protokol test literatüründe yaygın olarak atıfta bulunulan model tabanlı test eklentisi.

Seçim, özellik listelerinden ziyade iki soruya bağlıdır: ekip hangi gösterimi gerçekten çizebilir ve araç, halihazırda kullanılan otomasyon çerçevesine testler üretebilir mi? Kimsenin çalıştıramayacağı test paketleri üreten bir jeneratör, süreçten bir adımı kaldırmak yerine bir adım daha ekler.

Model Tabanlı Test ve Geleneksel Test Tasarımı Karşılaştırması

Elle yazılmış test tasarımıyla arasındaki farkı ortaya koymakta fayda var, çünkü iki yaklaşım da farklı noktalarda başarısız oluyor, yani biri diğerinden daha iyi değil.

Görünüş Model Tabanlı Test Geleneksel test tasarımı
Test senaryolarının kaynağı Davranışsal bir modelden otomatik olarak oluşturulmuştur. Gereksinimlere göre bir test uzmanı tarafından bireysel olarak yazılmıştır.
Gereksinim değişikliğinin etkisi Modeli güncelleyin, etkilenen testleri yeniden oluşturun. Etkilenen her test durumunu bulun ve elle düzenleyin.
Kapsam Tüm durumlar veya tüm geçişler gibi model kriterlerine göre ölçülür. Gereksinimlere göre ölçülür ve test uzmanının değerlendirmesine bağlıdır.
Peşin maliyet Yüksek Gereksinimler: Modelleme becerisi, araç kurulumu ve adaptör katmanı Düşük: Bir test uzmanı hemen yazmaya başlayabilir.
En uygun Durum bilgisi içeren, uzun ömürlü ve istikrarlı özelliklere sahip sistemler. Kısa projeler, tek seferlik işler ve deneysel çalışmalar
Ana arıza modu Yanlış veya güncelliğini yitirmiş bir model, sessizce yanlış testler üretir. Büyük bir veri paketinde boşluklar ve yinelenen kayıtlar birikir.

Aşağıdaki evrim, tekniği bağlamına oturtmaktadır: manuel test yürütme yerini otomatik yürütmeye bırakmış ve model tabanlı yaklaşımlar otomasyonu bir adım daha ileriye, test tasarımının kendisine taşımıştır.

Yazılım testinin manuel uygulamadan otomasyona ve model tabanlı teste doğru evrimi

Model Tabanlı Testin Zorlukları

Bir kuruluşta MBT'nin uygulanması önemli miktarda para ve çaba yatırımı gerektirir. MBT'nin dezavantajları şunlardır: yazılım Mühendisliği:

  • Test uzmanlarının, geleneksel test tasarımının gerektirmediği modelleme becerilerine ihtiyacı vardır.
  • Öğrenme süreci uzundur ve ilk proje genellikle sağladığı tasarruftan daha fazla maliyete neden olur.
  • Modelin kendisi, özellikle büyüdükten sonra, anlaşılması ve incelenmesi zor olabilir.
  • Belirtilen özelliklerden sapan bir model, güvenilir ancak yanlış testler üretir.
  • ABS'yi dönüştüren adaptör katmanıtracGerçek eylemlere dönüşecek adımlar ayrı olarak yazılmalı ve muhafaza edilmelidir.
  • Model boyutu hızla büyür, bu nedenle kısıtlamasız bir durum modeli, herhangi bir ekibin yürütebileceğinden daha fazla yol üretebilir.

Bunların hiçbiri bu tekniği kullanmaktan kaçınmak için bir neden değil, ancak birlikte ele alındığında MBT'nin neden genellikle tüm sisteme değil de önce tek bir kararlı alt sisteme uygulandığını açıklıyor. yazılım testi yaşam döngüsü bir kerede.

Model Tabanlı Testin Avantajları

Bu maliyetlere karşılık, MBT'nin faydaları şunlardır:

  • Modelin kendisi düzenlendiği için, bireysel testler yerine modelin tamamı düzenlendiğinden, test senaryosu ve test paketi bakımı kolaydır.
  • Uzun süreli bir projenin ömrü boyunca maliyetlerde azalma.
  • Gelişmiş test kapsamıÇünkü jeneratör, bir kişinin atlayacağı yolları araştırıyor.
  • Oluşturulan farklı test paketleri, herhangi bir sayıda makinede paralel olarak çalıştırılabilir.
  • Hata tespiti erken aşamada yapılır, çünkü belirsizlikler model oluşturulurken, herhangi bir kod çalıştırılmadan önce ortaya çıkar.
  • Aynı test çalışması için bulunan kusur sayısında artış.
  • Model ve adaptör hazır olduğunda test tasarımında zaman tasarrufu sağlanır.
  • Test uzmanlarının iş tatmini artar, çünkü çaba tekrarlayan kod yazımından modelleme ve analize kayar.

Test uzmanları zaten çalışırken zihinsel modeller oluştururlar ve MBT bu zihinsel modelleri kağıda dökerek gözden geçirilmesini, sürümlendirilmesini ve yeniden kullanılmasını sağlar. Tekniğin diğer yaklaşımlarla birlikte nasıl bir yere oturduğu aşağıda açıklanmıştır. yazılım testi türleri.

SSS

Kara kutu. Testler, kaynak koddan değil, belirtilen davranış modelinden türetilir. Bu teknik, ancak model dış gereksinimlerden ziyade iç tasarım belgelerinden oluşturulduğunda gri kutu haline gelir.

Yalnızca test oluşturmaya değer davranışları modelleyin. Ödeme işlemi veya hata yaşam döngüsü gibi durum bilgisi içeren bir iş akışını, gerçek sonuçları ayırt edebilecek en kaba düzeyde modelleyin. Her şeyi modellemek, kimsenin çalıştıramayacağı bir durum patlamasına yol açar.

Model, kodla birlikte sürüm kontrolünde yer almalı, belirlenmiş bir sahibi olmalı ve spesifikasyonla aynı değişiklik sürecinde bir inceleme adımı içermelidir. Sahibi olmayan bir model sapma gösterir ve sapma gösteren bir model güvenilir ancak yanlış testler üretir.

Hayır. Bir jeneratör yalnızca modelin tanımladığı şeyleri araştırır, bu nedenle modelin atladığı her şey test edilmemiş kalır. Keşif oturumları, ekiplerin kimsenin belirtmediği davranışları bulmasının yoludur ve genellikle modelin daha sonra absorbe ettiği boşlukları ortaya çıkarır.

Uzun ömürlü, yazılı spesifikasyona sahip durum bilgisi içeren sistemler: iletişim protokolleri, gömülü ve otomotiv kontrolörleri, tıbbi cihazlar, bankacılık iş akışları ve telekomünikasyon ekipmanları. Bu alanlar, istikrarlı bir spesifikasyonu, elle sayılamayacak kadar çok sayıda geçerli işlem dizisiyle birleştirir.

Spesifikasyonlar modelin takip edebileceğinden daha hızlı değiştiğinde, özellik küçük veya kısa ömürlü olduğunda veya ekipteki hiç kimse notasyonu sürdüremediğinde, elle yazılmış şablonlar proje boyunca daha az maliyetli olur.

Makine öğrenimi, üretim günlüklerinden ve kaydedilen oturumlardan taslak durum modelleri çıkarır, modelin asla kapsamadığı geçişleri işaretler ve oluşturulan yolları hata geçmişine göre sıralayarak en yüksek riskli dizilerin önce çalışmasını sağlar. Mühendisler yine de çıkarılan modeli doğrular.

Evet, özellikle adaptör katmanı için: adım yöntemleri, sayfa nesneleri ve mutlak değerleri bağlayan onaylamalar.tracModel, gerçek çağrılara yönelik eylemleri modelleyebilir. Modelin ne içermesi gerektiğine ve hangi kapsama kriterlerinin önemli olduğuna karar vermek, bir tasarım değerlendirmesi meselesidir.

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