Mis on lõime testimine tarkvara testimises?

⚡ Nutikas kokkuvõte

Lõimetestimine kontrollib ühe äriülesande peamist funktsionaalset võimekust selle liikudes läbi integreeritud süsteemi ning seda tehakse integratsioonitestimise alguses, mitte pärast iga komponendi valmimist.

  • 🧵 Põhiidee: Lõim on üks otsast lõpuni toimuv äritehing ja test järgib seda rada integreeritud moodulite kaudu.
  • Kui see töötab: Integratsioonitestimise etapi alguses, järkjärgulise süsteemiintegratsiooni strateegiana.
  • 🔀 Kaks maitset: Ühelõimeline testimine teostab korraga ühte tehingut, mitmelõimeline testimine aga mitut tehingut samaaegselt.
  • 🐞 Mida see püüab: Võistlustingimused, ummikseisud, jagatud ressursside konfliktid ja andmete korruptsioon, mida ühesuunaline testimine ei avasta.
  • 🧰 Kuidas seda käivitada: Korduskäivitused erinevate rakenduste kombinatsioonide, mitme eksemplari, erineva riistvara ja koodi kontrollimisega.
  • 📉 Aus piir: Mitmekeermelise koodi reprodutseeritavate ühiktestide tegemine on endiselt keeruline, seega võivad ajastusvead olla vahelduvad.

Mis on niitide testimine tarkvara testimisel ühe- ja mitmelõimeliste tüüpidega?

Mis on lõime testimine?

Lõimede testimine on tarkvara testimise tüüp, mis kontrollib konkreetse ülesande, mida nimetatakse lõimeks, peamist funktsionaalset võimekust. Tavaliselt viiakse see läbi algstaadiumis. integratsiooni testimine etapp. Lõimepõhine testimine on üks süsteemiintegratsiooni testimisel kasutatavatest järkjärgulistest strateegiatest. Sel põhjusel on lõimepõhine testimine õigem kirjeldada kui lõime interaktsiooni test.

Lõim ei ole siin ainult operatsioonisüsteemi lõim. tarkvaraarendus terminites on lõim üks terviklik äritehing – näiteks „klient esitab tellimuse” – tracläbib iga moodulit, millega see kokku puutub. Lõimede testimine küsib, kas see üks tee toimib ikka õigesti, kui moodulid on omavahel ühendatud.

Allolev diagramm näitab, kuidas üksikud niidid integreeritakse ja harjutatakse alamsüsteemina enne kogu süsteemi kokkupanekut.

Lõimede testimise diagramm, mis näitab järk-järgult alamsüsteemi ja seejärel terviksüsteemi integreeritud lõime

Keerme testimise tüübid

Lõimepõhine testimine liigitatakse kahte kategooriasse ja see erinevus määrab nii testiandmed kui ka defektid, mida tõenäoliselt leiate.

  • Ühe lõime testimine: Ühe lõimega test hõlmab korraga ühte rakenduse tehingut. Teenindatakse ainult ühte päringut, seega on vastuse käitumine etteaimatav ning testi on lihtne skriptida ja korrata.
  • Mitmelõimeline testimine: Mitmelõimeline test hõlmab korraga mitut aktiivset tehingut. Sama teenuse jaoks valmistatakse ette eraldi lõimed, et samaaegse koormuse korral saaks jälgida reageerimisvõimet ja jagatud oleku käsitlemist.

Tehing, mis ühelõimelises testimises veatult läbib, võib mitmelõimelises testimises siiski nurjuda, sest teine ​​testimine lisab konkurentsi samade kirjete, ühenduste ja mälu pärast.

Kuidas teha lõime testimist

Lõimeprotsess keskendub pigem integratsioonitegevustele kui kogu arendustsüklile. Praktikas toimib lähenemisviis järgmiselt.

  • Lõimepõhine testimine on seansipõhise testimise üldistatud vorm, kuna seansid on lõime vorm, kuid lõim ei pruugi olla seanss.
  • Lõim või programm (väike funktsionaalsus) integreeritakse ja testitakse järk-järgult alamsüsteemina ning seejärel käivitatakse kogu süsteemi jaoks.
  • Madalaimal tasemel annab see integraatoritele paremad teadmised testitava ulatuse kohta.
  • Tarkvarakomponentide otsese testimise asemel peavad integraatorid keskenduma loogiliste teostusradade testimisele kogu süsteemi kontekstis.

Kuna tööüksus on pigem äritee kui komponent, paikneb lõimede testimine loomulikult nende vahel. moodulite testimine ja täis süsteemi testimine.

Näpunäiteid mitme lõime testimiseks

Mitmelõimelised defektid sõltuvad ajastusest, seega üks puhas käivitamine ei tõesta suurt midagi. Allolevad näpunäited suurendavad nende pinnaletuleku võimalust.

  • Testi oma mitmelõimelist programmi, käivitades seda korduvalt erinevate rakenduste kombinatsiooniga.
  • Testi oma mitmelõimelist programmi, käivitades korraga mitu programmi eksemplari.
  • Käivita oma mitmelõimelist programmi erinevatel riistvaramudelitel, millel on erinev koormus ja pinge.
  • Kasutage koodi kontrollimist, kuna mõningaid sünkroniseerimisvigu on lihtsam lugeda kui taasesitada.
  • Koguge ainult vigu ja tõrkeid, mis ilmnesid muudes lõimedes peale peamise.

Keermete testimisel leitud levinumad defektid

Samaaegsusvead annavad endast harva märku puhta pinu korral trace. Allolevad kategooriad kajastavad suurema osa sellest, mida mitmelõimeline käivitamine paljastab, ja igal neist on erinev sümptom, mida tasub ära tunda.

  • Võistlustingimused: Kaks lõime loevad ja kirjutavad sama väärtust järjestuseta, seega sõltub lõpptulemus sellest, kumb lõim esimesena lõpetas. Sümptom: mõnel käivitamisel õiged ja teistel valed summad.
  • Patiseis: Kaks lõime hoiavad kumbki teise jaoks vajalikku lukku ja kumbki ei jätka. Sümptom: tehing hangub lõputult, selle asemel et ebaõnnestuda veaga.
  • Ressursi vaidlus: Lõimed ootavad sama ühendust, failikäepidet või kirjet ning läbilaskevõime langeb juba ammu enne riistvaralise piirangu saavutamist.
  • Andmete rikkumine: Osaliselt kirjutatud jagatud struktuurid jätavad dokumendid olekusse, mida ükski kehtiv tehing ei suudaks luua.
  • Nälgimine: Madala prioriteediga lõim ei saa kunagi vajalikku ressurssi, seega ühe kasutaja tee aegub, samal ajal kui ülejäänud süsteem näib terve olevat.

Igaüks neist vajab logidesse jäädvustatud ebaõnnestunud katset, sest defekti, mis kordub üks kord viiekümne katse jooksul, on muidu võimatu selle kaudu tõsta. defektide haldamise protsess.

Lõimede testimine vs samaaegsuse testimine vs integratsioonitestimine

Need kolm terminit kattuvad ja neid aetakse testimisplaanides sageli segi. Tabelis on need eraldatud kavatsuse järgi.

Aspekt Lõimede testimine Samaaegsuse testimine Integratsiooni testimine
Testitav üksus Üks äritehing moodulite vahel Mitu kasutajat või teemat tegutsevad korraga Kahe või enama komponendi vahelised liidesed
Esmane küsimus Kas see võtmetee töötab otsast lõpuni? Mis katki läheb, kui juurdepääs on samaaegne? Kas moodulid suhtlevad omavahel korrektselt?
Tüüpiline etapp Varajane integratsioonitestimine Süsteemi või jõudluse testimine Pärast ühiktestimist
Sihitud defektid Katkised täitmisteed, puuduvad üleandmised Pattiseisud, võidujooksu tingimused, lukustuskonflikt Liidese mittevastavus, vale andmesidetracts
Suhe Mitmelõimeline variant kattub samaaegsuse testimisega Laiem kui lõimede testimise mitmelõimeline osa Lõimede testimine on üks selle sees olev järkjärguline strateegia

Lühidalt samaaegsuse testimine küsib, mida samaaegne juurdepääs süsteemile teeb, samas kui lõimetestimine küsib, kas üks oluline tee üldse integratsiooni üle elab. Meeskonnad, kes käitavad mõlemat, ajastavad lõimetestimise tavaliselt esimesena.

Keermetestimise eelised

See tehnika teenib oma koha integratsiooniplaanis mitmel praktilisel põhjusel.

  • Peamised äriteed valideeritakse varakult, seega leitakse katkised üleandmised enne kogu süsteemi kokkupanekut.
  • Integraatorid saavad ulatuse kohta selge pildi, kuna testiüksus on äratuntav tehing, mitte tühi objekt.tract-komponendi piir.
  • Loogiliste teostusradade testimine süsteemi kontekstis paljastab vead, mis isoleerisid komponentide testimine ei näe.
  • Mitmelõimeline töötlemine tekitab pinnapealseid samaaegsusdefekte – ummikseisusid, võidujooksutingimusi ja ressursikonflikte –, mis muidu jõuaksid tootmiskeskkonda.
  • Inkrementaalne integratsioon hoiab silumispinna väikesena, kuna korraga lisatakse ainult üks niit.
  • Tulemused kajastuvad otse regressioonitest, sest mööduv lõim on ilmne kandidaat regressioonikomplekti jaoks.

Keerme testimise puudused

  • Mitmelõimelise testimise puhul on suurimaks väljakutseks ühiktesti jaoks reprodutseeritava testi programmeerimine.
  • Mitmelõimelise koodi jaoks ühiktestide kirjutamine on keeruline ülesanne.
  • Mitmelõimelise testimise kriteeriumid erinevad ühelõimelise testimise kriteeriumidest. Mitmelõimelise testimise puhul varieeruvad tegurid, nagu mälu suurus, salvestusmaht ja ajastusprobleemid, kui koodi kutsutakse erineval riistvaral.
  • Lõime ei saa testida enne, kui moodulid, mida nad läbivad, on saadaval, seega sõltub ajastamine integreerimise järjekorrast.
  • Vahelduvaid rikkeid on lihtne keskkonnamüraks pidada, mistõttu on distsiplineeritud logimine hädavajalik.

KKK

Testijuht teeb ärianalüütikutega koostööd, et järjestada tehinguid tulude mõju ja kasutussageduse järgi. Kõige väärtuslikumad teed integreeritakse ja lõimitakse esimesena, seega kriitiline üleandmise tõrge ilmneb siis, kui ajakava on veel jäänud.

See salvestab äritee, läbitud moodulid, nende vahel edastatud andmed ja eeldatava lõppseisundi. Erinevalt komponendist testjuhtum, asub läbimise tingimus kogu tehingu lõpus.

Tavaliselt valitakse koormusgeneraatorid, mis loovad konfigureeritavaid virtuaalseid kasutajaid. JMeter on levinud avatud lähtekoodiga valik. Lõimede arv, käivituskiirus ja tsükli sätted on otse seotud mitmelõimeliste stsenaariumidega.

Masinõppe mudelid koondavad tuhandete korduvate logide mustreid ja märgistavad ära katkestused, mis eelnevad hangumisele või rikutud kirjele. See kitsendab vahelduva ajastusvea väikese hulga kahtlaste järjestusteni.

GitHubi koopia koostab kiiresti lõimekogumid, lukustusmehhanismid ja pingetsüklid. Testija peab ikkagi otsustama, millised sünkroniseerimispunktid on olulised, sest genereeritud testid läbivad sageli ilma tegelikku põimimist sundimata.

Fikseeritud arvu pole. Meeskonnad kordavad käivitamist erinevate töökoormuste ja riistvaraga, kuni tõrked kaovad, ning seejärel hoiavad stsenaariumi öises komplektis, kuna ajastusvead ilmnevad uuesti, kui keskkond muutub.

Iga prioriseeritud lõim käivitub otsast lõpuni ilma lahendamata defektideta, mitmelõimelised protsessid käivituvad sihtsamaaegsuses lõpuni ja ükski avatud probleem ei ole ummiktee või andmete rikkumise klassi viga. testimise elutsükkel.

Jah — niidist saab teenuste, mitte moodulite vaheline päringutee. Hajutatud tracasendab kohaliku kõnepinu ja sama küsimus kehtib: kas üks äritehing jääb iga hüppe järel puutumata?

Võta see postitus kokku järgmiselt: