Što je testiranje temeljeno na modelu?

⚡ Pametni sažetak

Testiranje temeljeno na modelu provjerava ponašanje softvera tijekom izvođenja u odnosu na predviđanja koje je napravio ABS.tract model sustava, generirajući testne slučajeve automatski iz konačnih automata stanja, dijagrama stanja ili UML notacija umjesto ručno.

  • 🧭 Osnovna ideja: Model opisuje očekivano ponašanje, a svaki testni slučaj je izveden iz tog modela umjesto da se piše pojedinačno.
  • 🔀 Dva okvira: Offline generiranje gradi paket prije izvršavanja, dok online generiranje proizvodi korake u hodu tijekom rada.
  • 📐 Oznake modela: Konačni automati, dijagrami stanja, tablice odlučivanja, grafovi toka podataka i toka upravljanja te UML dijagrami.
  • Proces rada: Izgradite model, odaberite kriterije pokrivenosti, generirajte abstract-testove, konkretizirati ih u skripte, izvršiti, a zatim dodijeliti presude.
  • 🛠️ alat: GraphWalker, fMBT, Conformiq, MaTeLo, MBTsuite i Spec Explorer generiraju putanje iz usmjerenih grafova ili modela stanja.
  • ⚖️ Kompromis: Održavanje se smanjuje, a pokrivenost raste, ali tehnika zahtijeva vještinu modeliranja i početno ulaganje u učenje.

Testiranje temeljeno na modelu automatsko izvođenje testnih slučajeva iz modela ponašanja sustava

Što je testiranje temeljeno na modelu?

Testiranje temeljeno na modelu je tehnika testiranja softvera u kojoj se ponašanje testiranog softvera tijekom izvođenja provjerava u odnosu na predviđanja modela. Model je opis ponašanja sustava, izražen u smislu ulaznih sekvenci, radnji, uvjeta, izlaza i toka podataka od ulaza do izlaza. Upotrebljiv model mora biti praktično razumljiv, ponovno upotrebljiv i djeljiv te mora precizno opisivati ​​testirani sustav.

Dostupni su brojni modeli, a svaki od njih opisuje drugačiji aspekt ponašanja sustava. Uobičajeni primjeri su:

Testiranje temeljeno na modelu opisuje kako se sustav ponaša kao odgovor na radnju koju određuje model. Zadajte radnju, a zatim provjerite reagira li sustav kako model predviđa. Bilo kakva razlika između ta dva pojma je ili nedostatak u softveru ili pogreška u modelu, a oboje vrijedi pronaći.

To je lagana formalna metoda za validaciju sustava i primjenjuje se na testiranje hardvera jednako lako kao i na testiranje softvera. Budući da testovi proizlaze iz specifikacije ponašanja, a ne iz koda, tehnika je u skladu s testiranje crne kutije obitelj od tehnike testiranja softvera.

Primjer testiranja temeljen na modelu

Najjednostavniji način za čitanje modela ponašanja jest slijediti ga do kraja. Dijagram u nastavku modelira mali zadatak uređivanja teksta, pri čemu svaki okvir predstavlja stanje u kojem se aplikacija može nalaziti, a svaka strelica predstavlja radnju koju korisnik može poduzeti.

Primjer testiranja temeljenog na modelu koji modelira stanja i radnje pisanja pjesme u Notepadu

Model objašnjava pojednostavljeni pristup pisanju poezije u Notepadu i moguće radnje povezane sa svakim korakom. Za svaku radnju, poput pokretanja aplikacije, unosa pjesme ili spremanja datoteke, testni slučaj može se generirati i provjeriti izlaz. Hodanje različitim putem kroz isti dijagram, na primjer pokretanje i zatvaranje bez spremanja, stvara drugačiji testni slučaj bez dodatnih troškova dizajna, što je ekonomski argument za cijelu tehniku.

Vrste MBT

Postoje dvije vrste okvira za testiranje temeljeno na modelu, a razlika među njima je jednostavno u tome kada se izvode koraci testiranja:

  • Izvan mreže / a priori: Generiranje testnih paketa prije njihovog izvršavanja. Testni paket je skup testnih slučajeva, a u ovom načinu rada paket se pohranjuje, pregledava i ponovno pokreće kao i svaki drugi ispitivanje automatizacije imovina.
  • Online / u hodu: Generiranje testnih paketa tijekom izvođenja testa, gdje se sljedeći korak odabire na temelju toga kako je sustav zapravo reagirao na prethodni.

Izvanmrežno generiranje odgovara reguliranim okruženjima kojima je potreban pregledan i ponovljiv paket. Online generiranje odgovara dugotrajnim istraživačkim sesijama u odnosu na sustave koji održavaju stanje, jer generator može reagirati na stvarni odgovor, a ne na predviđeni.

Kako funkcionira testiranje temeljeno na modelu

Bez obzira koji se okvir koristi, tehnika slijedi istih pet faza. Svaka faza proizvodi artefakt koji sljedeća faza koristi, zbog čega tim održava model, a ne testni skript.

  • Korak 1: Izgradite model. Prevedite zahtjeve ili specifikaciju u ABStract model očekivanog ponašanja, koji definira stanja, prijelaze između njih i ulaze koji pokreću svaki prijelaz.
  • Korak 2: Odaberite kriterije odabira testa. Kriteriji govore generatoru kada se zaustaviti. Uobičajeni su pokrivenost svih stanja, koja posjećuje svako stanje barem jednom; pokrivenost svih prijelaza, koja svaku strelicu koristi barem jednom; i pokrivenost puta ili toka podataka za dublje istraživanje.
  • Korak 3: Generiranje trbušnih mišićatract testnih slučajeva. Alat hoda po modelu i emitira sekvence trbušnih mišićatract koraka koji zadovoljavaju odabrane kriterije, zajedno s očekivanim rezultatom u svakom koraku.
  • Korak 4: Konkretizirajte trbušne mišićetract-testovi. Adapterski sloj mapira svaki abstracne stupiti na stvarnu akciju protiv sustava, kao što je interakcija korisničkog sučelja, API poziv ili protokolarna poruka. Ova kartaping piše se jednom i ponovno se koristi u svakom generiranom testu.
  • Korak 5: Izvršiti i dodijeliti presude. Konkretni testovi se provode na testiranom sustavu, svaki opaženi odgovor uspoređuje se s predviđanjem modela i bilježi se presuda o prolazu ili padu. tracnatrag do elementa modela koji ga je proizveo.

The tracJednostavnost stvorena u koraku 5 je praktična isplativost. Kada se zahtjev promijeni, model se mijenja, a pogođeni testovi se regeneriraju umjesto da se prepisuju, zbog čega timovi često rade regresijsko testiranje protiv stabilne specifikacije imaju najviše koristi.

Različiti modeli u testiranju

Kako bismo razumjeli MBT, potrebno je razumjeti neke od dolje objašnjenih modela. Svaki od njih mijenja ekspresivnu moć za trud, tako da izbor ovisi o tome koliko je ponašanje koje se testira zapravo složeno.

Konačni državni strojevi

Ovaj model pomaže testerima da procijene rezultat ovisno o odabranom ulazu. Različite kombinacije ulaza mogu rezultirati odgovarajućim stanjem sustava.

Sustav će imati specifično stanje i trenutno stanje, koje je određeno skupom ulaznih podataka koje daju testeri.

Razmotrimo primjer u nastavku. Sustav omogućuje zaposlenicima prijavu u aplikaciju. Trenutni status zaposlenika je "Odsutan", a postaje "Unutar" nakon što se zaposlenik prijavi u sustav. U stanju "Unutar" zaposlenik može pregledavati, ispisivati ​​i skenirati dokumente u sustavu.

Ovdje je prikazan automat stanja za taj primjer, pri čemu je svaka strelica označena ulazom koji uzrokuje prijelaz.

Model konačnog automata koji prikazuje izlazna i ulazna stanja sustava za prijavu zaposlenika

Državne karte

Dijagram stanja je proširenje konačnog automata stanja i može se koristiti za složene sustave u stvarnom vremenu. Dijagrami stanja opisuju različita ponašanja sustava, imaju određeni broj stanja, a ponašanje sustava se analizira i predstavlja u obliku događaja za svako stanje. Proširenje koje je važno u praksi je hijerarhija: dijagram stanja omogućuje ugniježđena i paralelna stanja, tako da se stroj kojem bi bili potrebni deseci ravnih stanja može nacrtati kompaktno.

Na primjer, nedostaci se u alatu za upravljanje nedostacima prijavljuju sa statusom Novo. Nakon što programeri isprave nedostatak, status se mora promijeniti u Ispravljeno. Ako nedostatak nije ispravljen, status se mijenja u Ponovno otvoreno. Dijagrami stanja trebaju biti dizajnirani tako da se za svako stanje poziva događaj.

Taj životni ciklus defekta prikazan je u nastavku, pri čemu je svaki status prikazan kao stanje, a svaka radnja tijeka rada kao događaj koji premješta defekt između njih.

Dijagram stanja životnog ciklusa defekta koji se kreće kroz statuse Novo, Ispravljeno i Ponovno otvoreno

Unificirani modelni jezik (UML)

Unificirani modelni jezik (UML) je standardizirani jezik za modeliranje opće namjene. UML uključuje skup tehnika grafičke notacije koje se koriste za stvaranje vizualnih modela koji mogu opisati vrlo složeno ponašanje sustava.

UML ima oznake kao što su:

  • Aktivnosti
  • Glumci
  • Poslovni proces
  • Komponente
  • Programski jezik

Dijagrami aktivnosti i automata stanja su oni koje generatori testova najčešće čitaju, kao što ilustrira primjer UML modela u nastavku.

UML notacija dijagrama korištena kao izvorni model za generiranje testnih slučajeva

Alati za testiranje temeljeni na modelu

Model na papiru ne generira ništa sam po sebi. Generator je potreban za prolazak kroz model i generiranje testnih putanja, a tržište alata dijeli se na generatore otvorenog koda i komercijalne platforme za dizajn testova.

  • GraphWalker — alat otvorenog koda koji čita modele oblikovane kao usmjereni grafovi i iz njih generira testne putanje, s odabirljivim generatorima i uvjetima zaustavljanja.
  • fMBT — Intelov skup alata za testiranje otvorenog koda temeljen na modelima koji podržava generiranje i izvršavanje testova na modelima stanja.
  • Conformiq — komercijalni automatizirani proizvod za dizajn testova koji izvodi testne slučajeve i skripte iz grafičkih modela ponašanja.
  • MaTeLo i MBTsuite — komercijalne platforme usmjerene na statističke modele korištenja i generiranje testova u postojeće okvire za automatizaciju.
  • Istraživač specifikacija - Microsoftproširenje za testiranje temeljeno na modelu za Visual Studio, široko citirano u literaturi o testiranju protokola.

Odabir manje ovisi o popisima značajki, a više o dva pitanja: koju notaciju tim zapravo može nacrtati i može li alat emitirati testove u već korišteni okvir za automatizaciju. Generator koji proizvodi pakete koje nitko ne može izvršiti dodaje korak procesu umjesto da ga uklanja.

Testiranje temeljeno na modelu u odnosu na tradicionalni dizajn testova

Vrijedi istaknuti kontrast s ručno pisanim dizajnom testova, jer dva pristupa ne uspijevaju na različitim mjestima, umjesto da je jedan jednostavno bolji.

Aspekt Testiranje temeljeno na modelu Tradicionalni dizajn testa
Izvor testnih slučajeva Automatski generirano iz modela ponašanja Napisano pojedinačno od strane testera prema zahtjevima
Učinak promjene zahtjeva Ažurirajte model, regenerirajte pogođene testove Ručno pronađite i uredite svaki pogođeni testni slučaj
Pokrivenost Mjereno prema kriterijima modela kao što su sva stanja ili svi prijelazi Mjereno prema zahtjevima i ovisno o procjeni testera
Unaprijed trošak Visoka: vještina modeliranja, postavljanje alata i sloj adaptera Nisko: tester može odmah početi pisati
Najbolje odgovara Dugovječni sustavi s pouzdanim stanjem i stabilnom specifikacijom Kratki projekti, jednokratni radovi i istraživački radovi
Glavni način kvara Pogrešan ili zastarjeli model tiho generira pogrešne testove Praznine i duplikati se gomilaju u velikom paketu

Sljedeća evolucija stavlja tehniku ​​u kontekst: ručno izvršavanje testova ustupilo je mjesto automatiziranom izvršavanju, a pristupi temeljeni na modelu pomiču automatizaciju jednu razinu ranije, u sam dizajn testova.

Evolucija testiranja softvera od ručnog izvršavanja preko automatizacije do testiranja temeljenog na modelu

Izazovi testiranja temeljenog na modelu

Primjena MBT-a u organizaciji zahtijeva znatna ulaganja novca i truda. Slijede nedostaci MBT-a u programsko inženjerstvo:

  • Testerima su potrebne vještine modeliranja koje tradicionalni dizajn testova ne zahtijeva.
  • Krivulja učenja je duga, a prvi projekt obično košta više nego što uštedi.
  • Sam model može biti teško razumjeti i pregledati, posebno kada naraste.
  • Model koji odstupa od specifikacije generira samouvjerene, pogrešne testove.
  • Adapterski sloj koji pretvara trbušne mišićetracKoraci koji se pretvaraju u stvarne akcije moraju se pisati i održavati odvojeno.
  • Veličina modela brzo raste, tako da model neograničenog stanja može generirati više puteva nego što bilo koji tim može izvršiti.

Ništa od ovoga nije razlog za izbjegavanje tehnike, ali zajedno objašnjavaju zašto se MBT obično prvo uvodi na jednom stabilnom podsustavu, a ne na cijelom životni ciklus testiranja softvera odjednom.

Prednosti testiranja temeljenog na modelu

U usporedbi s tim troškovima, prednosti MBT-a su:

  • Jednostavno održavanje testnih slučajeva i testnih paketa, jer se uređuje model, a ne pojedinačni testovi.
  • Smanjenje troškova tijekom životnog vijeka dugotrajnog projekta.
  • Poboljšan pokrivenost testom, budući da generator istražuje putove koje bi osoba preskočila.
  • Različiti generirani paketi mogu se paralelno pokretati na neograničenom broju računala.
  • Rano otkrivanje nedostataka, jer se dvosmislenosti pojavljuju tijekom izgradnje modela, prije nego što se izvrši bilo koji kod.
  • Povećanje broja pronađenih nedostataka za isti napor testiranja.
  • Ušteda vremena na dizajnu testa nakon što model i adapter postoje.
  • Povećano zadovoljstvo poslom testera, jer se napor prebacuje s repetitivnog skriptiranja na modeliranje i analizu.

Testeri ionako konstruiraju mentalne modele dok rade, a MBT jednostavno premješta te mentalne modele na papir gdje se mogu pregledati, verzionirati i ponovno koristiti. Gdje se tehnika uklapa uz ostale dostupne pristupe navedeno je u vrste testiranja softvera.

Pitanja i odgovori

Crna kutija. Testovi se izvode iz modela određenog ponašanja, a ne iz izvornog koda. Tehnika postaje siva kutija samo kada je model izgrađen iz interne dokumentacije dizajna, a ne iz vanjskih zahtjeva.

Samo ponašanje za koje vrijedi generirati testove. Modelirajte jedan tijek rada sa stanjem, kao što je naplata ili životni ciklus defekta, na najgrubljoj razini koja još uvijek razlikuje stvarne ishode. Modeliranje svega proizvodi eksploziju stanja koju nitko ne može izvršiti.

Model pripada kontroli verzija uz kod, s imenovanim vlasnikom i korakom pregleda u istom procesu promjene kao i specifikacija. Model bez vlasnika se pomiče, a model s pomicanjem generira pouzdane, ali pogrešne testove.

Ne. Generator istražuje samo ono što model opisuje, tako da sve što model izostavi ostaje netestirano. Istraživačke sesije ostaju način na koji timovi pronalaze ponašanje koje nitko nije specificirao i često otkrivaju praznine koje model zatim apsorbira.

Dugotrajni sustavi sa stanjem i pisanom specifikacijom: komunikacijski protokoli, ugrađeni i automobilski kontroleri, medicinski uređaji, bankarski tijekovi rada i telekomunikacijska oprema. Te domene kombiniraju stabilnu specifikaciju s previše pravnih nizova da bi se nabrojali ručno.

Kada se specifikacija mijenja brže nego što model može pratiti, kada je značajka mala ili kratkotrajna ili kada nitko u timu ne može održavati notaciju, u tim situacijama rukom pisani slučajevi koštaju manje od projekta.

Strojno učenje zaključuje modele stanja nacrta iz produkcijskih zapisnika i snimljenih sesija, označava prijelaze koje model nikada ne pokriva i rangira generirane putove prema povijesti nedostataka tako da se sekvence s najvećim rizikom izvršavaju prve. Inženjeri i dalje validiraju izvedeni model.

Da, uglavnom za adapterski sloj: metode koraka, objekte stranica i tvrdnje koje povezuju abstract modelne akcije u stvarne pozive. Odluka o tome što model treba sadržavati i koji su kriteriji pokrivenosti važni ostaje stvar procjene dizajna.

Sažmite ovu objavu uz: