Š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.

Š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:
- Protok podataka
- Kontrola protoka
- Grafovi ovisnosti
- Tablice odluka
- Strojevi za prijelaz stanja
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.
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.
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.
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.
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.
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.





