Hva er trådtesting i programvaretesting?
⚡ Smart oppsummering
Trådtesting verifiserer den viktigste funksjonelle egenskapen til en enkelt forretningsoppgave mens den beveger seg gjennom et integrert system, og den kjøres tidlig i integrasjonstestingen i stedet for etter at hver komponent er ferdig.

Hva er trådtesting?
Trådtesting er en type programvaretesting som verifiserer den viktigste funksjonelle egenskapen til en spesifikk oppgave, kalt en tråd. Den utføres vanligvis på et tidlig stadium av integrasjonstesting fase. Trådbasert testing er en av de trinnvise strategiene som brukes under systemintegrasjonstesting. Av den grunn beskrives en trådtest mer korrekt som en trådinteraksjonstest.
En tråd her er ikke bare en tråd om operativsystemet. software engineering I praksis er en tråd én komplett forretningstransaksjon – for eksempel «kunde legger inn en bestilling» – tracgår gjennom hver modul den berører. Trådtesting spør om den ene banen fortsatt oppfører seg riktig når modulene er koblet sammen.
Diagrammet nedenfor viser hvordan individuelle tråder integreres og utøves som et delsystem før hele systemet settes sammen.
Typer trådtesting
Trådbasert testing er klassifisert i to kategorier, og skillet avgjør både testdataene og feilene du sannsynligvis vil finne.
- Testing av enkelttråder: En test med én tråd involverer én applikasjonstransaksjon om gangen. Bare én forespørsel behandles, slik at responsatferden er forutsigbar og testen er enkel å skripte og gjenta.
- Flertrådstesting: En flertrådstest involverer flere samtidig aktive transaksjoner samtidig. Separate tråder forberedes for samme tjeneste, slik at responsivitet og håndtering av delt tilstand kan observeres under samtidig belastning.
En transaksjon som består uten problemer i testing med én tråd, kan fortsatt mislykkes i en kjøring med flere tråder, fordi den andre kjøringen legger til konkurranse om de samme postene, tilkoblingene og minnet.
Slik gjør du trådtesting
Trådprosessen fokuserer på integrasjonsaktivitetene snarere enn hele utviklingslivssyklusen. I praksis fungerer tilnærmingen som følger.
- Trådbasert testing er en generalisert form for øktbasert testing, ved at økter er en form for tråd, men en tråd er ikke nødvendigvis en økt.
- Tråden eller programmet (liten funksjonalitet) integreres og testes trinnvis som et delsystem, og kjøres deretter for hele systemet.
- På det laveste nivået gir det integratorer bedre kunnskap om omfanget av hva som skal testes.
- I stedet for å teste programvarekomponenter direkte, krever det at integratorer konsentrerer seg om å teste logiske utførelsesbaner i konteksten av hele systemet.
Fordi arbeidsenheten er en forretningssti snarere enn en komponent, ligger trådtesting naturlig mellom modultesting og full systemtesting.
Tips for flertrådstesting
Flertrådede defekter er avhengige av timing, så en enkelt ren kjøring beviser svært lite. Tipsene nedenfor øker sjansen for å oppdage dem.
- Test det flertrådete programmet ditt ved å kjøre det gjentatte ganger med en ulik blanding av applikasjoner som kjører.
- Test det flertrådete programmet ditt ved å ha flere instanser av programmet aktive samtidig.
- Kjør det flertrådete programmet ditt på forskjellige maskinvaremodeller med varierende stressnivåer og arbeidsbelastninger.
- Bruk kodeinspeksjon, siden noen synkroniseringsfeil er enklere å lese enn å reprodusere.
- Samle bare inn feil og mangler som oppsto i andre tråder enn hovedtråden.
Vanlige feil funnet under gjengetesting
Samtidighetsfeil annonserer seg sjelden med en ren stakk trace. Kategoriene nedenfor står for det meste av det en flertrådskjøring eksponerer, og hver av dem har et distinkt symptom som er verdt å være oppmerksom på.
- Løpsforhold: To tråder leser og skriver samme verdi uten rekkefølge, så det endelige resultatet avhenger av hvilken tråd som ble ferdig først. Symptom: totaler som er riktige på noen kjøringer og feil på andre.
- Vranglås: To tråder har hver en lås som den andre trenger, og ingen av dem fortsetter. Symptom: transaksjonen henger seg på ubestemt tid i stedet for å mislykkes med en feil.
- Ressursstrid: Tråder i kø for samme tilkobling, filhåndtak eller post, og gjennomstrømningen kollapser lenge før maskinvaregrensen er nådd.
- Datakorrupsjon: Delvis skrevne delte strukturer etterlater poster i en tilstand ingen gyldig transaksjon kunne produsere.
- Sult: En tråd med lav prioritet får aldri ressursen den trenger, så én brukerbane får tidsavbrudd mens resten av systemet ser ut til å være i orden.
Hver av disse trenger at den mislykkede kjøringen registreres i logger, fordi en feil som reproduserer seg én gang per femti forsøk ellers er umulig å oppdage gjennom prosess for feilhåndtering.
Trådtesting vs. samtidighetstesting vs. integrasjonstesting
De tre begrepene overlapper hverandre og blandes ofte sammen i testplaner. Tabellen skiller dem etter intensjon.
| Aspekt | Trådtesting | Samtidighetstesting | Integrasjonstesting |
| Enhet under testing | Én forretningstransaksjon på tvers av moduler | Flere brukere eller tråder som opptrer samtidig | Grensesnitt mellom to eller flere komponenter |
| Hovedspørsmål | Fungerer denne nøkkelveien fra ende til annen? | Hva går galt når tilgangen er samtidig? | Kommuniserer modulene riktig med hverandre? |
| Typisk stadium | Tidlig integrasjonstesting | System- eller ytelsestesting | Etter enhetstesting |
| Målrettede feil | Ødelagte utførelsesbaner, manglende overleveringer | Vranglåser, løpsforhold, låsekamp | Grensesnittfeil, feil datafeiltracts |
| Slektskap | Flertrådsvarianter overlapper med samtidighetstesting | Bredere enn flertrådsdelen av trådtesting | Trådtesting er én trinnvis strategi inni den |
Kort oppsummert, samtidighetstesting spør hva samtidig tilgang gjør med systemet, mens trådtesting spør om én viktig bane i det hele tatt overlever integrasjon. Team som kjører begge planlegger vanligvis trådtesting først.
Fordeler med trådtesting
Teknikken fortjener sin plass i en integrasjonsplan av flere praktiske grunner.
- Viktige forretningsveier valideres tidlig, slik at en ødelagt overlevering oppdages før hele systemet er satt sammen.
- Integratorer får et klart bilde av omfanget, fordi testenheten er en gjenkjennelig transaksjon snarere enn en abstract-komponentgrense.
- Testing av logiske utførelsesbaner i systemkontekst avslører feil som isolerte komponenttesting kan ikke se.
- Flertrådskjøringer avdekker samtidighetsfeil – vranglåser, kappløpsbetingelser og ressurskonflikter – som ellers ville nådd produksjon.
- Inkrementell integrasjon holder feilsøkingsflaten liten, siden bare én tråd legges til om gangen.
- Resultatene går direkte inn i Regresjonstesting, fordi en forbipasserende tråd er en åpenbar kandidat for regresjonssuiten.
Ulemper med trådtesting
- For multithreading-testing er den største utfordringen å kunne programmere en reproduserbar test for en enhetstest.
- Å skrive enhetstester for flertrådet kode er en utfordrende oppgave.
- Testkriteriene for flertrådstesting er forskjellige fra testing med én tråd. For flertrådstesting varierer faktorer som minnestørrelse, lagringskapasitet og tidsproblemer når koden kalles på ulik maskinvare.
- Tråder kan ikke testes før modulene de krysser er tilgjengelige, så planleggingen avhenger av integrasjonsrekkefølgen.
- Periodiske feil er enkle å avfeie som miljøstøy, noe som gjør disiplinert logging avgjørende.

