Hva er destruktiv testing i programvare?

⚡ Smart oppsummering

Destruktiv testing presser bevisst et program til det feiler, og avslører de nøyaktige punktene der robustheten bryter sammen under feil bruk, ugyldig input og uforutsigbar oppførsel som vanlige funksjonskontroller aldri når.

  • 💥 Kjerneide: Applikasjonen er laget for å feile med vilje, slik at feilpunktene blir synlige og målbare.
  • 🔎 Ingen krav nødvendig: Forhåndskunnskap om spesifikasjonen er valgfritt, men det skjerper teststrategien.
  • 🇧🇷 Motsatt par: Ikke-destruktiv testing går den gode veien; destruktiv testing angriper den fra alle feil vinkler.
  • 🧰 Tilnærminger: Feilpunktanalyse, fagfellevurdering av tester, forretningsgjennomgang og utforskende kjøringer med kjøringsark.
  • 🧪 Gjenbrukte metoder: Regresjon, grensesnitt, ekvivalenspartisjonering, løkke- og aksepttesting tjener alle destruktive mål.
  • 📉 Ærlige grenser: Det er vanskelig å garantere dekning, innsatsen er høy, og funnene kan være vanskelige å reprodusere.

Hva er destruktiv testing i programvare med metoder og teknikker

Hva er destruktiv testing?

Destruktiv testing er en metode for programvaretesting som brukes til å finne feilpunkter i et program. I denne teknikken blir et program med vilje gjort til å feile, slik at robustheten kan kontrolleres og feilpunktene identifiseres. I motsetning til testmetoder som verifiserer hva programmet skal gjøre, undersøker destruktiv testing uforutsigbar brukeratferd inne i programmet.

Kunnskap om de opprinnelige kravene er ikke nødvendig for destruktiv testing. Litt kunnskap hjelper imidlertid i utviklingenping en god teststrategi.

Illustrasjonen nedenfor fanger opp ideen – testeren jobber mot produktet i stedet for med det.

Konsept for destruktiv testing: en applikasjon som bevisst presses til punktet hvor den feiler

Hvorfor utføre destruktiv testing?

  • Det hjelper å forstå forutsigbar programvareoppførsel når programvaren brukes feil.
  • Det hjelper å sjekke robustheten til et programvareprodukt.
  • Den avdekker sjeldne feil som vanlige brukere aldri utløser, men som dukker opp senere i produksjonen.

Destruktiv testing vs. ikke-destruktiv testing

De to tilnærmingene er komplementer, ikke rivaler. Ikke-destruktiv testing – også kalt positiv testing eller happy-path-testing – samhandler med programvaren på riktig måte og lar bygget være intakt. Destruktiv testing gjør det motsatte: den mater ugyldige data og feil sekvenser inntil noe går i stykker.

Aspekt Destruktiv testing Ikke-destruktiv testing
Intent Tving applikasjonen til å mislykkes Bekreft at applikasjonen fungerer som spesifisert
Inndata brukt Ugyldig, feilformet, utenfor rekkevidde, utenfor sekvens Gyldige data innenfor forventet område
Spørsmål besvart Hvor og hvordan går det i stykker? Gjør den det den skal?
Kravkunnskap Valgfritt Viktig
Typisk kostnad Høyere — utforskende og åpent Nedre – skrevet og repeterbar
Utfallet Feilpunkter, rekkeviddegrenser, gjenopprettingsatferd Bestått eller ikke bestått i henhold til spesifikasjonen

Hva sjekker du i destruktiv testing?

Destruktiv testing ser på begge sider av atferdsgrensen:

  • Riktig programvareoppførsel
  • Feil programvareoppførsel
  • Feil bruk
  • Feil inndata
  • Riktige utdata

To betingelser må være oppfylt gjennom hele øvelsen:

  • Programvaren skal aldri behandle eller godta ugyldige inndata.
  • Uavhengig av gyldigheten eller korrektheten til inndataene, bør programvaren alltid produsere riktige utdata.

Hvordan utføre destruktiv testing?

Destruktiv testing involverer mange aktiviteter, som å designe et sett med testskript, kjøre disse skriptene, rapportere feil, lukke feil og gi bestått- eller ikke-bestått-målinger til interessenter på slutten av iterasjonen.

Det finnes mange måter å kjøre det på. Noen eksempler følger.

  • Metode for analyse av feilpunkt: en gjennomgang av systemet som vurderer hva som kan gå galt på ulike punkter. Hjelp fra en forretningsanalytiker kan tas for denne strategien.
  • Fagfellevurdering av tester: få din test tilfeller analysert eller gjennomgått av en medtester som er mindre kjent med systemet eller funksjonen.
  • Forretningsgjennomgang av testtilfeller: Sluttbrukere eller eksperter tenker ofte på gyldige scenarier som testere overser, fordi testernes fokus ligger på de angitte kravene.
  • Utfør utforskende testing ved hjelp av kjøreskjemaer: utforskende testing Med kjøreskjemaer registreres hva som ble testet, det er mulig å gjenta testene og testdekningen holdes under kontroll.
  • Bruk en annen kilde: be noen andre om å ødelegge programvareproduktet og analysere scenariene de finner.

Eksempel på destruktiv testing

Tenk på innloggings- og profilskjermene i en bankapplikasjon. En destruktiv passasje ville fungere gjennom tilfeller som disse:

  • Lim inn en streng på 5,000 tegn i et felt som er begrenset til 50 tegn, og bekreft at feltet avviser den i stedet for å avkortes stille.
  • Send inn bokstaver, symboler og negative verdier i et numerisk beløpsfelt.
  • Bryt den forventede sekvensen – åpne betalingsbekreftelsessiden direkte uten å fullføre det foregående trinnet.
  • Trykk send gjentatte ganger og i rask rekkefølge for å se om det opprettes dupliserte poster.
  • Koble fra nettverket midt i en transaksjon og sjekk om applikasjonen gjenoppretter seg uten problemer eller om den etterlater en delvis oppføring.

Hvert tilfelle har en definert forventning: en tydelig valideringsmelding, ingen datakorrupsjon og ingen ubehandlede unntak. Alt annet er et feilpunkt som er verdt å nevne som en mangel.

Destruktive testmetoder

Følgende metoder brukes i programvareteknikk for å oppnå mål for destruktiv testing:

Destruktive testteknikker

Teknikkene nedenfor kan brukes med modifikasjoner:

Tilstøtende teknikker som er verdt å legge til når robusthet er målet er negativ testing, stresstesting, gjenopprettingstesting og fuzz testing.

Fordeler og ulemper med destruktiv testing

Avveiningen er verdt å si tydelig før teknikken planlegges utgitt.

Fordeler

  • Revavdekker feilpunkter som spesifikasjonsdrevet testing aldri når.
  • Etablerer reelle rekkeviddegrenser, slik at produktet kan brukes inni dem med trygghet.
  • Avslører sjeldne feil som dukker opp i produksjonen lenge etter lansering.
  • Kontrollerer holdbarhet, gjenopprettingsevne og feilhåndtering under misbruk.

Ulemper

  • Åpen av natur, så dekning kan ikke garanteres eller måles enkelt.
  • Tidkrevende og avhengig av testerens erfaring og kreativitet.
  • Funn kan være vanskelig å reprodusere uten nøye loggføring av trinnene som er brukt.
  • Dårlig kontrollerte kjøringer kan ødelegge delte testdata, så et isolert miljø er nødvendig.

Spørsmål og svar

De overlapper hverandre, men har ulikt omfang. Negativ testing sjekker definerte ugyldige input mot forventet feilhåndtering. Destruktiv testing er bredere og åpen, og jakter på enhver tilstand som gjør at applikasjonen feiler.

Vanligvis erfarne QA-ingeniører, støttet av kolleger som ikke er kjent med modulen og av forretningsbrukere. Utenfrakommende øyne er viktige, fordi de som bygde funksjonen har en tendens til å teste den slik den ble designet.

Etter at funksjonspakken er stabil, peker feil på robusthet snarere enn uferdige funksjoner. Mange team planlegger det under systemtesting og gjentar det før større utgivelser i testing av livssyklus.

Modeller genererer misdannede nyttelaster, grenseverdier og uvanlige handlingssekvenser på et volum ingen tester kan matche, og rangerer deretter hvilke som produserte avvik. Maskinlæring basert på tidligere defektdata forutsier også hvilke moduler som fortjener den hardeste behandlingen.

GitHub Copilot utarbeider raskt utkast til inngangsgeneratorer, grensetilfeller og nedbrytningsrutiner. En tester bestemmer fortsatt hvilke feilmoduser som er viktige og om den observerte oppførselen teller som et akseptabelt resultat.

Den nøyaktige inndataen eller sekvensen som ble brukt, den observerte feilen, logger og skjermbilder, miljøet og alvorlighetsgraden av virkningen. Bestått- eller ikke-bestått-målinger for iterasjonen går til interessentene sammen med defektregistreringer.

Den skal aldri berøre produksjon. Kjør den i et isolert miljø med gjenopprettelige data, fordi bevisst ugyldige inndata og tvungne krasj kan etterlate delvise poster som er dyre å rydde opp i.

Hold et løpeskjema under økten der du registrerer alle handlinger og inndata i rekkefølge. Spill av arket fra en ren tilstand, og reduser det deretter til den korteste sekvensen som fortsatt utløser feilen.

Oppsummer dette innlegget med: