Mitä on mallipohjainen testaus?

⚡ Älykäs yhteenveto

Mallipohjainen testaus tarkistaa ohjelmiston ajonaikaista käyttäytymistä abs-funktion tekemiä ennusteita vasten.tracjärjestelmän malli, jossa testitapaukset luodaan automaattisesti äärellisistä tilakoneista, tilakaavioista tai UML-merkinnöistä manuaalisen tekemisen sijaan.

  • 🧭 Ydinajatus: Malli kuvaa odotettua käyttäytymistä, ja jokainen testitapaus johdetaan tästä mallista sen sijaan, että se kirjoitettaisiin erikseen.
  • 🔀 Kaksi viitekehystä: Offline-generointi rakentaa sarjan ennen suoritusta, kun taas online-generointi tuottaa vaiheita lennossa suorituksen aikana.
  • 📐 Mallimerkinnät: Äärelliset tilakoneet, tilakaaviot, päätöstaulukot, tietovuo- ja ohjausvuokaaviot sekä UML-kaaviot.
  • ⚙️ Työskentelyprosessi: Rakenna malli, valitse kattavuuskriteerit, luo abstract-testit, konkretisoi ne skripteiksi, suorita ne ja anna sitten tuomiot.
  • 🛠️ työkalut: GraphWalker, fMBT, Conformiq, MaTeLo, MBTsuite ja Spec Explorer luovat polkuja suunnatuista graafeista tai tilamalleista.
  • 🇧🇷 Kompromissi: Ylläpito vähenee ja kattavuus kasvaa, mutta tekniikka vaatii mallinnustaitoja ja etukäteisinvestointeja oppimiseen.

Mallipohjainen testaus, jossa testitapaukset johdetaan automaattisesti järjestelmän käyttäytymismallista

Mitä on mallipohjainen testaus?

Mallipohjainen testaus on ohjelmistotestaustekniikka, jossa testattavan ohjelmiston suorituksenaikaista käyttäytymistä verrataan mallin tekemiin ennusteisiin. Malli on kuvaus järjestelmän käyttäytymisestä, joka ilmaistaan ​​syötesekvenssien, toimintojen, ehtojen, tulosteen ja datan kulun avulla syötteestä tulosteeseen. Käyttökelpoisen mallin on oltava käytännössä ymmärrettävä, uudelleenkäytettävä ja jaettava, ja sen on kuvattava testattavaa järjestelmää tarkasti.

Saatavilla on useita malleja, ja jokainen niistä kuvaa järjestelmän käyttäytymisen eri näkökohtaa. Yleisiä esimerkkejä ovat:

Mallipohjainen testaus kuvaa, miten järjestelmä käyttäytyy vastauksena mallin määrittämään toimintoon. Syötä toiminto ja tarkista sitten, reagoiko järjestelmä mallin ennustamalla tavalla. Kaikki näiden kahden väliset eroavaisuudet ovat joko ohjelmiston vika tai mallin virhe, ja molemmat ovat etsimisen arvoisia.

Se on kevyt formaali menetelmä järjestelmän validointiin, ja sitä voidaan soveltaa yhtä helposti sekä laitteistotestaukseen että ohjelmistotestaukseen. Koska testit perustuvat käyttäytymisen määrittelyyn koodin sijaan, tekniikka sopii yhteen musta ruutu testaus perheen ohjelmistotestaustekniikat.

Esimerkki mallipohjaisesta testauksesta

Yksinkertaisin tapa lukea käyttäytymismalli on seurata sitä läpi. Alla oleva kaavio mallintaa pientä tekstinmuokkaustehtävää, jossa jokainen ruutu edustaa sovelluksen mahdollista tilaa ja jokainen nuoli edustaa käyttäjän suorittamaa toimintoa.

Mallipohjaisen testauksen esimerkki runon kirjoittamisen tilojen ja toimintojen mallintamisesta Muistiossa

Malli selittää yksinkertaistetun lähestymistavan runojen kirjoittamiseen Muistiossa ja kuhunkin vaiheeseen liittyvät mahdolliset toimenpiteet. Jokaista toimintoa, kuten sovelluksen käynnistämistä, runon syöttämistä tai tiedoston tallentamista, varten testitapaus voidaan luoda ja tulos varmentaa. Eri polun kulkeminen saman kaavion läpi, esimerkiksi aloittaminen ja lopettaminen tallentamatta, tuottaa erilaisen testitapauksen ilman lisäsuunnittelukustannuksia, mikä on koko tekniikan taloudellinen perustelu.

MBT:n tyypit

Mallipohjaisia ​​testauskehyksiä on kahdenlaisia, ja niiden välinen ero on yksinkertaisesti siinä, miten testivaiheet tuotetaan:

  • Offline / a priori: Testipakettien luominen ennen niiden suorittamista. Testipaketti on kokoelma testitapauksia, ja tässä tilassa se tallennetaan, tarkistetaan ja suoritetaan uudelleen kuten mikä tahansa muu testipaketti. automaatiotestaus voimavara.
  • Verkossa / lennossa: Testisarjojen luominen testien suorituksen aikana, jossa seuraava vaihe valitaan sen perusteella, miten järjestelmä todellisuudessa reagoi edelliseen.

Offline-generointi sopii säänneltyihin ympäristöihin, jotka tarvitsevat tarkistettavan ja toistettavan ratkaisun. Online-generointi sopii pitkiin tutkimusistuntoihin tilallisia järjestelmiä vastaan, koska generaattori voi reagoida todelliseen vasteeseen ennustetun sijaan.

Miten mallipohjainen testaus toimii

Käytettiinpä kumpaa tahansa viitekehystä, tekniikka noudattaa samoja viittä vaihetta. Jokainen vaihe tuottaa artefaktin, jonka seuraava vaihe käsittelee, minkä vuoksi tiimi ylläpitää mallia, ei testiskriptiä.

  • Vaihe 1: Rakenna malli. Käännä vaatimukset tai eritelmät taulukoksitracodotetun käyttäytymisen malli, joka määrittelee tilat, niiden väliset siirtymät ja kunkin siirtymän laukaisevat syötteet.
  • Vaihe 2: Valitse testin valintakriteerit. Kriteerit kertovat generaattorille, milloin se pysähtyy. Yleisiä kriteerejä ovat kaikkien tilojen kattavuus, jossa jokainen tila käydään läpi ainakin kerran; kaikkien siirtymien kattavuus, jossa jokainen nuoli suoritetaan ainakin kerran; ja polku- tai tietovuokattavuus syvällisempää tutkimusta varten.
  • Vaihe 3: Vatsalihasten luominentract-testitapaukset. Työkalu kävelee mallin päällä ja tuottaa vatsalihasliikkeitätract vaiheet, jotka täyttävät valitut kriteerit, sekä odotettu tulos kullakin vaiheella.
  • Vaihe 4: Konkretisoi vatsalihaksettract-testit. Sovitinkerros kuvaa jokaisen vatsalihaksentract astu todelliseen toimintoon järjestelmää vastaan, kuten käyttöliittymän vuorovaikutukseen, API puhelu tai protokollaviesti. Tämä karttaping kirjoitetaan kerran ja sitä käytetään uudelleen jokaisessa luodussa testissä.
  • Vaihe 5: Toteuta ja anna tuomiot. Betonitestit suoritetaan testattavaa järjestelmää vasten, kutakin havaittua vastetta verrataan malliennusteeseen ja kirjataan hyväksymis- tai hylkäystulos. tracpalasi takaisin mallielementtiin, joka sen tuotti.

tracVaiheessa 5 luotu toimivuus on käytännön hyöty. Kun vaatimus muuttuu, malli muuttuu ja kyseiset testit luodaan uudelleen sen sijaan, että ne kirjoitettaisiin uudelleen, minkä vuoksi tiimit, jotka tekevät usein regressiotestaus vakaata spesifikaatiota vastaan ​​hyödyttävät eniten.

Eri mallit testauksessa

MBT:n ymmärtämiseksi on välttämätöntä ymmärtää joitakin alla selitetyistä malleista. Jokainen malli vaihtaa ilmaisuvoimaa vaivaa vastaan, joten valinta riippuu siitä, kuinka monimutkaista testattava käyttäytyminen todella on.

Äärelliset tilakoneet

Tämä malli auttaa testaajia arvioimaan tulosta valitun syötteen perusteella. Syötteiden erilaiset yhdistelmät voivat johtaa järjestelmän vastaavaan tilaan.

Järjestelmällä on tietty tila ja nykyinen tila, joita säätelevät testaajien antamat syötteet.

Tarkastellaan alla olevaa esimerkkiä. Järjestelmä sallii työntekijöiden kirjautua sovellukseen. Työntekijän nykyinen tila on "Ulos", ja siitä tulee "Sisään", kun työntekijä kirjautuu järjestelmään. "Sisään"-tilassa työntekijä voi tarkastella, tulostaa ja skannata järjestelmässä olevia asiakirjoja.

Esimerkin tilakone on esitetty tässä, ja jokainen nuoli on merkitty siirtymän aiheuttavalla syötteellä.

Äärellisen tilan konemalli, joka näyttää työntekijän kirjautumisjärjestelmän ulos- ja sisään-tilat

Osavaltiokaaviot

Tilakaavio on äärellisen tilakoneen laajennus, ja sitä voidaan käyttää monimutkaisissa ja reaaliaikaisissa järjestelmissä. Tilakaaviot kuvaavat järjestelmän erilaisia ​​käyttäytymismalleja, niillä on tietty määrä tiloja, ja järjestelmän käyttäytymistä analysoidaan ja esitetään tapahtumien muodossa kullekin tilalle. Käytännössä tärkeä laajennus on hierarkia: tilakaavio sallii sisäkkäiset ja rinnakkaiset tilat, joten kone, joka tarvitsisi kymmeniä yksitasoisia tiloja, voidaan piirtää kompaktisti.

Esimerkiksi viat näytetään vianhallintatyökalussa tilassa Uusi. Kun kehittäjät ovat korjanneet vian, tila on muutettava tilaan Korjattu. Jos vikaa ei ole korjattu, tila muuttuu tilaan Avattu uudelleen. Tilakaaviot tulisi suunnitella siten, että jokaista tilaa kohden kutsutaan tapahtuma.

Vian elinkaari on piirretty alla, jossa kukin tila näkyy tilana ja kukin työnkulun toiminto tapahtumana, joka siirtää vian niiden välillä.

Vian elinkaaren tilakaavio, jossa se etenee tilojen Uusi, Korjattu ja Uudelleenavattu välillä

Unified Modeling Language (UML)

Unified Modeling Language (UML) on standardoitu yleiskäyttöinen mallinnuskieli. UML sisältää joukon graafisia merkintätekniikoita, joita käytetään visuaalisten mallien luomiseen, jotka voivat kuvata erittäin monimutkaista järjestelmän käyttäytymistä.

UML:ssä on merkintöjä, kuten:

  • Toiminta
  • Näyttelijät
  • Liiketoimintaprosessi
  • komponentit
  • Ohjelmointikieli

Testigeneraattorit lukevat useimmin aktiviteetti- ja tilakonekaavioita, kuten alla oleva UML-esimerkkimalli havainnollistaa.

UML-kaaviomerkintätapa, jota käytetään lähdemallina testitapausten luomiseen

Mallipohjaiset testaustyökalut

Paperilla oleva malli ei itsessään tuota mitään. Tarvitaan generaattori mallin läpikäymiseen ja testipolkujen luomiseen, ja työkalumarkkinat jakautuvat avoimen lähdekoodin generaattoreihin ja kaupallisiin testisuunnittelualustoihin.

  • GraphWalker — avoimen lähdekoodin työkalu, joka lukee suunnattujen graafien muotoisia malleja ja luo niistä testipolkuja valittavilla generaattoreilla ja pysäytysehdoilla.
  • fMBT — Intelin avoimen lähdekoodin mallipohjainen testaustyökalusarja, joka tukee testien luomista ja suorittamista tilamalleja vasten.
  • Conformiq — kaupallinen automatisoitu testisuunnittelutuote, joka johtaa testitapauksia ja skriptejä graafisista käyttäytymismalleista.
  • MaTeLo ja MBTsuite — kaupalliset alustat, jotka on suunnattu tilastollisiin käyttömalleihin ja testien luomiseen olemassa oleviin automaatiokehyksiin.
  • Teknisten tietojen selaus - Microsoftn mallipohjainen testauslaajennus Visual Studiolle, johon on viitattu laajasti protokollatestauskirjallisuudessa.

Valinta riippuu vähemmän ominaisuuslistoista kuin kahdesta kysymyksestä: minkä notaatiomuodon tiimi voi itse asiassa piirtää ja voiko työkalu lähettää testejä jo käytössä olevaan automaatiokehykseen. Generaattori, joka tuottaa testejä, joita kukaan ei voi suorittaa, lisää prosessiin vaiheen sen sijaan, että poistaisi sen.

Mallipohjainen testaus vs. perinteinen testisuunnittelu

Käsin kirjoitetun testisuunnittelun ja niiden välisen eron tarkastelu on syytä tehdä, koska nämä kaksi lähestymistapaa epäonnistuvat eri paikoissa sen sijaan, että toinen olisi yksinkertaisesti parempi.

Aspect Mallipohjainen testaus Perinteinen testisuunnittelu
Testitapausten lähde Luodaan automaattisesti käyttäytymismallista Testaajan erikseen vaatimuksista kirjoittama
Vaatimuksen muutoksen vaikutus Päivitä malli ja luo uudelleen testit, jotka vaikuttavat asiaan Paikanna ja muokkaa kutakin testitapausta manuaalisesti
Kattavuus Mitattu mallikriteerien, kuten kaikkien tilojen tai kaikkien siirtymien, perusteella Mitattu vaatimuksia vasten ja riippuu testaajan arviosta
Ennakkomaksut Korkea: mallinnustaito, työkalujen asetukset ja sovitinkerros Matala: testaaja voi aloittaa kirjoittamisen välittömästi
Parhaiten sopiva Tilalliset, pitkäikäiset järjestelmät, joilla on vakaa spesifikaatio Lyhytaikaiset projektit, kertaluonteiset teokset ja tutkiva työ
Päävikatila Väärä tai vanhentunut malli tuottaa huomaamattomasti vääriä testejä Aukot ja kaksoiskappaleet kertyvät suureen ohjelmistokokonaisuuteen

Alla oleva kehitys asettaa tekniikan kontekstiin: manuaalinen testien suoritus antoi tietä automatisoidulle suoritukselle, ja mallipohjaiset lähestymistavat siirtävät automaation yhden tason aikaisemmaksi, itse testisuunnitteluun.

Ohjelmistotestauksen kehitys manuaalisesta suorituksesta automatisoinnin kautta mallipohjaiseen testaukseen

Mallipohjaisen testauksen haasteet

MBT:n käyttöönotto organisaatiossa vaatii huomattavia rahallisia ja vaivaisia ​​investointeja. Seuraavassa on MBT:n haittoja ohjelmistotuotanto:

  • Testaajat tarvitsevat mallinnustaitoja, joita perinteinen testisuunnittelu ei vaadi.
  • Oppimiskäyrä on pitkä, ja ensimmäinen projekti maksaa yleensä enemmän kuin sillä säästetään.
  • Mallia itsessään voi olla vaikea ymmärtää ja tarkastella, varsinkin kun se kasvaa.
  • Malli, joka ajautuu pois spesifikaatioiden tahdista, tuottaa luotettavia, vääriä testejä.
  • Adapterikerros, joka kääntää vatsalihaksettracTodellisiin toimiin johtavat askeleet on kirjoitettava ja ylläpidettävä erikseen.
  • Mallin koko kasvaa nopeasti, joten rajoittamaton tilamalli voi tuottaa enemmän polkuja kuin mikään tiimi voi toteuttaa.

Mikään näistä ei ole syy välttää tekniikkaa, mutta yhdessä ne selittävät, miksi MBT otetaan yleensä käyttöön ensin yhdessä vakaassa alijärjestelmässä eikä koko järjestelmässä. ohjelmistotestauksen elinkaari heti.

Mallipohjaisen testauksen edut

Näihin kustannuksiin verrattuna MBT:n edut ovat:

  • Helppo testitapausten ja testisarjojen ylläpito, koska muokataan mallia yksittäisten testien sijaan.
  • Kustannusten aleneminen pitkäaikaisen projektin elinkaaren aikana.
  • Parantunut testin kattavuus, koska generaattori tutkii polkuja, jotka henkilö ohittaisi.
  • Erilaisia ​​luotuja paketteja voidaan ajaa rinnakkain useilla koneilla.
  • Varhainen virheiden havaitseminen, koska epäselvyydet tulevat esiin mallin rakentamisen aikana, ennen kuin mitään koodia on suoritettu.
  • Samalla testaussuorituksella löydettyjen vikojen määrän kasvu.
  • Ajansäästö testisuunnittelussa, kun malli ja sovitin ovat valmiit.
  • Parempi testaajien työtyytyväisyys, kun työmäärä siirtyy toistuvasta skriptaamisesta mallintamiseen ja analysointiin.

Testaajat rakentavat mentaalimalleja joka tapauksessa työskennellessään, ja MBT yksinkertaisesti siirtää nämä mentaalimallit paperille, jossa niitä voidaan tarkastella, versioida ja käyttää uudelleen. Tekniikan sopivuus muihin käytettävissä oleviin lähestymistapoihin on esitetty kohdassa ohjelmistotestauksen tyypit.

UKK

Musta laatikko. Testit johdetaan määritellyn käyttäytymisen mallista, eivät lähdekoodista. Tekniikasta tulee harmaa laatikko vain silloin, kun malli rakennetaan sisäisten suunnitteludokumenttien eikä ulkoisten vaatimusten perusteella.

Vain käyttäytyminen, jota kannattaa testata. Mallinna yhtä tilallista työnkulkua, kuten kassalle menemistä tai vian elinkaarta, karkeimmalla mahdollisella tasolla, joka vielä erottaa todelliset tulokset. Kaiken mallintaminen tuottaa tilaräjähdyksen, jota kukaan ei voi toteuttaa.

Malli kuuluu versionhallintaan koodin rinnalle, ja sillä on nimetty omistaja ja tarkistusvaihe samassa muutosprosessissa kuin spesifikaatiolla. Malli, jolla ei ole omistajaa, ajautuu eteenpäin, ja ajautunut malli tuottaa luotettavia, mutta vääriä testejä.

Ei. Generaattori tutkii vain sitä, mitä malli kuvaa, joten kaikki, mitä malli jättää pois, jää testaamatta. Tutkivat sessiot ovat edelleen tapa, jolla tiimit löytävät määrittelemätöntä käyttäytymistä, ja ne usein paljastavat aukot, jotka malli sitten omaksuu.

Pitkäikäiset tilalliset järjestelmät, joilla on kirjallinen spesifikaatio: tietoliikenneprotokollat, sulautetut ja autoteollisuuden ohjaimet, lääkinnälliset laitteet, pankkityönkulut ja telelaitteet. Näillä aloilla yhdistyvät vakaa spesifikaatio liian moniin laillisiin sekvensseihin, jotta niitä voitaisiin luetella käsin.

Kun spesifikaatio muuttuu nopeammin kuin malli pystyy seuraamaan, kun ominaisuus on pieni tai lyhytikäinen tai kun kukaan tiimissä ei pysty ylläpitämään merkintätapaa, käsin kirjoitetut tapaukset maksavat vähemmän projektin aikana.

Koneoppiminen päättelee luonnostilamalleja tuotantolokeista ja tallennetuista istunnoista, merkitsee siirtymät, joita malli ei koskaan kata, ja luokittelee luodut polut vikahistorian perusteella siten, että korkeimman riskin sekvenssit suoritetaan ensin. Insinöörit validoivat edelleen päätellyn mallin.

Kyllä, pääasiassa sovitinkerrokselle: step-metodit, sivuobjektit ja abs-arvoa sitovat väitteettracmallinna toimintoja todellisiin puheluihin. Mallin sisällön ja sen kattavuuskriteerien päättäminen on edelleen suunnitteluarviointia.

Tiivistä tämä viesti seuraavasti: