Ikke-destruktiv softwaretestning (NDT): Hvad er teststrategi?

โšก Smart opsummering

Ikke-destruktiv testning verificerer, at en applikation opfรธrer sig korrekt, nรฅr den modtager gyldigt input, hvilket er grunden til, at testere ogsรฅ kalder det positiv- eller happy path-testning. Det bekrรฆfter forventede resultater i forhold til dokumenterede krav.

  • ๐Ÿ”˜ Positivt af design: Enhver ikke-destruktiv test bruger gyldige data og et kendt krav, sรฅ en bestรฅelse beviser, at funktionen fungerer som specificeret.
  • โ˜‘๏ธ Tidligste test, der skal kรธres: Den lykkelige vej kontrolleres fรธrst, fordi en brudt hovedstrรธm blokerer nรฆsten alle andre tests, der fรธlger den.
  • โœ… Krav tracevne: Hver testcase knyttes tilbage til et acceptkriterium, hvilket gรธr det nemt at forsvare resultaterne i en anmeldelse.
  • ๐Ÿงช Modsรฆtning til destruktiv testning: Destruktiv testning leder efter bristepunktet, mens ikke-destruktiv testning bekrรฆfter, at den tilsigtede adfรฆrd holder.
  • ๐Ÿ› ๏ธ Lave opsรฆtningsomkostninger: Der krรฆves ikke noget sรฆrligt miljรธ, beskadigede data eller fejlinjektion, sรฅ teknikken passer til korte tidsplaner og stramme budgetter.
  • ๐Ÿ“ˆ Kendt begrรฆnsning: At bestรฅ enhver lykkelig test beviser intet om fejlhรฅndtering, sรฅ negativ og destruktiv testning skal stadig kรธre sidelรธbende med det.

Ikke-destruktiv softwaretestning (NDT) forklaret med teststrategi

Hvad er ikke-destruktiv softwaretest?

Ikke-destruktiv testning er en softwaretesttype, der involverer test og interaktion med softwareapplikationen korrekt. Med andre ord kan Non Destructive Software Testing (NDT) ogsรฅ kaldes Positiv Testing eller Happy path testing. Det giver de forventede resultater og beviser, at softwareapplikationen opfรธrer sig som forventet.

Navnet er lรฅnt fra ingeniรธrvidenskab, hvor ikke-destruktiv testning inspicerer en fysisk komponent uden at beskadige den. I software er ideen den samme: applikationen udfรธres pรฅ den mรฅde, den er designet til at blive brugt, og den overlever testen intakt.

Eksempel: Indtastning af de korrekte data i et loginmodul og kontrol af, om det accepterer legitimationsoplysningerne og navigerer til nรฆste side.

Skรฆrmbilledet nedenfor viser loginformularen med en gyldig vรฆrdi indtastet i brugernavnsfeltet, fรธr testen udfรธres.

Loginformular brugt som et eksempel pรฅ ikke-destruktiv softwaretestning med gyldigt input

For at udfรธre ikke-destruktiv testning pรฅ ovenstรฅende eksempel skal du indtaste et gyldigt brugernavn og en gyldig adgangskode i loginformularen. Da inputtet matcher kravene, er det รธnskede resultat positivt, og testeren bekrรฆfter blot, at applikationen gรฅr videre til nรฆste side.

Hvorfor udfรธrer ikke-destruktiv softwaretest (NDT)?

Ikke-destruktiv testning besvarer det fรธrste spรธrgsmรฅl, som enhver interessent stiller om et build: Gรธr funktionen rent faktisk det, den blev bedt om at gรธre? Dette er grundene til, at teams kรธrer den.

  • Den stรธrste fordel ved NDT-metoden er, at den resulterer i forbedret softwarekvalitet, fordi fejl, der findes i hovedflowet, rettes tidligt.
  • For at demonstrere, at softwarefunktioner fungerer i overensstemmelse med specifikationen.
  • For at verificere, at prรฆstationskravene er opfyldt.
  • For at verificere, at slutbrugernes krav er opfyldt.
  • At kontrollere, at en lille del af koden eller funktionaliteten fungerer som forventet og ikke รธdelรฆgger den relaterede funktionalitet.
  • At fremlรฆgge beviser, der kan fremvises pรฅ et test af brugeraccept godkendelse, hvor kunden รธnsker at se den tilsigtede adfรฆrd i stedet for fejltilstandene.

Nรฅr ikke-destruktiv testning (NDT) udfรธres?

Timing betyder mere her end for de fleste teknikker, fordi den lykkelige vej fรธrer alt nedstrรธms.

  • Det er den fรธrste form for testning, som en tester udfรธrer pรฅ en applikation, dvs. i den indledende fase af SDLC.
  • Ikke-destruktiv testning udfรธres normalt, nรฅr der ikke er tid nok til en fuld testcyklus, da det stadig beviser, at acceptkriterierne er opfyldt.
  • Den kรธrer fรธr negative og destruktive scenarier. Hvis hovedflowet er afbrudt, rapporterer fejlhรฅndteringstests stรธj snarere end reelle defekter.
  • Det gentages efter hver fejlrettelse, hvilket er hvor det overlapper med regressionstest.

Teststrategi for ikke-destruktiv testning

Strategien for ikke-destruktiv testning er bevidst enkel, og disciplinen ligger i at forblive positiv snarere end i at anvende vรฆrktรธjer.

  • Tilgangen til ikke-destruktiv prรธvning bรธr vรฆre positiv.
  • Formรฅlet med NDT-teknikken er at bevise, at en applikation vil fungere, nรฅr den fรฅr gyldige inputdata.
  • Der er ingen sรฆrlige krav eller behov for at udfรธre ikke-destruktiv testning.
  • Bedste praksis for ikke-destruktiv testning er at kontrollere, om systemet gรธr, hvad det skal.

Diagrammet nedenfor opsummerer, hvordan strategien normalt er organiseret pรฅ tvรฆrs af en testcyklus.

Teststrategiflow for ikke-destruktiv softwaretestning pรฅ tvรฆrs af en testcyklus

Sรฅdan skriver du ikke-destruktive (positive) testcases

En ikke-destruktiv testcase er kun nyttig, nรฅr dens input er beviseligt gyldigt, og dens forventede resultat kommer fra et krav snarere end fra testerens antagelse. De fรธlgende trin producerer den slags test sag.

Trin 1) Vรฆlg รฉt acceptkriterium. Lรฆs kravet, og gentag det som รฉn verificerbar erklรฆring, for eksempel "brugernavnsfeltet accepterer seks til tyve alfanumeriske tegn".

Trin 2) Vรฆlg gyldige inputdata. Vรฆlg vรฆrdier, der ligger komfortabelt inden for det tilladte omrรฅde. ร†kvivalensopdeling hjรฆlper her โ€” รฉn reprรฆsentativ vรฆrdi pr. gyldig partition er normalt nok.

Trin 3) Skriv det forventede resultat, fรธr du udfรธrer det. Det forventede resultat skal skrives ud fra specifikationen. At skrive det efter kรธrslen forvandler testen til en beskrivelse af, hvad buildet tilfรฆldigvis gjorde.

Trin 4) Hold trinnene i brugerens rรฆkkefรธlge. Sekvensen skal matche, hvordan en rigtig bruger ville udfรธre opgaven, fordi pointen med teknikken er at bekrรฆfte den tilsigtede rejse.

Trin 5) Registrer kravidentifikatoren. TracAt bringe sagen tilbage til dens kriterium er det, der gรธr det muligt for teamet at bevise dรฆkning under en gennemgang.

Et eksempel pรฅ et login-modul ser sรฅdan ud.

Felt Ikke-destruktiv testcase
Krav Brugernavn accepterer 6-20 alfanumeriske tegn
Test data Brugernavn guru99tester, gyldig matchende adgangskode
Steps ร…bn loginsiden, indtast legitimationsoplysningerne, og vรฆlg Log ind
Forventet resultat Legitimationsoplysninger accepteres, og hjemmesiden vises
Type Positiv/lykkelig vej

Bemรฆrk, at intet i sagen forsรธger at bryde feltet. En sag, der indtaster fem tegn for at se fejlmeddelelsen, er en negativ test, ikke en ikke-destruktiv en.

Eksempler pรฅ ikke-destruktiv testning

Eksemplet nedenfor viser, hvordan ikke-destruktiv testning opfรธrer sig pรฅ tvรฆrs af en multimodulapplikation, efter at en fejl er blevet rettet.

  • En applikation har fem moduler: loginside, startside, brugerdetaljeside, oprettelse af nye brugere og oprettelse af opgaver.
  • Antag, at der er en fejl pรฅ login-siden: brugernavnsfeltet accepterer fรฆrre end seks alfanumeriske tegn. Dette er imod det fastsatte krav, som siger, at brugernavnet ikke mรฅ acceptere fรฆrre end seks tegn, sรฅ opfรธrslen er en defekt.
  • Fejlen rapporteres til udviklingsteamet via den sรฆdvanlige metode. proces til hรฅndtering af fejl, det er rettet, og build'et sendes tilbage til testholdet.
  • Testteamet tjekker ikke kun loginsiden, hvor fejlen blev rettet, men tester ogsรฅ de andre moduler. Mens de tester alle modulerne med gyldige data, udfรธrer de ikke-destruktiv testning, simpelthen for at bekrรฆfte, at hele applikationen stadig fungerer korrekt.

Ikke-destruktiv testning vs. destruktiv testning

De to teknikker undervises ofte sammen, fordi de besvarer modsatrettede spรธrgsmรฅl om den samme bygning. Destruktiv test ser efter det punkt, hvor softwaren giver efter, mens ikke-destruktiv testning bekrรฆfter, at den tilsigtede adfรฆrd holder.

Aspect Ikke-destruktiv testning Destruktiv test
Intention Interager korrekt med applikationen og verificer positive resultater Angiv usรฆdvanligt eller ugyldigt input for at finde fejlpunktet
Indtast data Gyldige data hentet fra kravet Ugyldige, korrupte eller ude af rรฆkkefรธlge data
Nรธdvendige krav Ja โ€” sager skrives i henhold til acceptkriterier Ikke nรธdvendigvis; testere arbejder uden brugerhistoriebias
Hvad det afslรธrer Svagheder i funktionaliteten i forhold til specifikationen Svagheder i design, robusthed og genvindingsevne
Relaterede teknikker Rรธgtest, funktionstest Abetestning, udforskende testning

De to er komplementรฆre snarere end alternativer. At kรธre ikke-destruktiv test alene efterlader fejlhรฅndtering ubekrรฆftet, og at kรธre destruktiv test alene beviser aldrig, at produktet fungerer.

Fordele og begrรฆnsninger ved ikke-destruktiv softwaretestning

At vide, hvor teknikken holder op med at vรฆre nyttig, er lige sรฅ vigtigt som at vide, hvad den dรฆkker.

Fordele

  • Hurtig at designe og udfรธre, fordi testdataene kommer direkte fra specifikationen.
  • Krรฆver intet sรฆrligt miljรธ, fejlinjektion eller beskadiget datasรฆt.
  • Producerer dokumentation, der afspejler kravene รฉn-til-รฉn, hvilket passer til revisioner og godkendelser.
  • Fungerer lige sรฅ godt som manuel test og som skrevet automatiseringstest, sรฅ de samme tilfรฆlde kan genbruges i en regressionssuite.
  • Giver et tidligt, รฆrligt signal om bygningens tilstand pรฅ ethvert niveau, fra enhed til integrationstest til system test.

Begrรฆnsninger

  • En fuld gennemgang siger intet om, hvordan applikationen opfรธrer sig med ugyldigt input, sรฅ alvorlige fejlhรฅndteringsfejl kan overleve den.
  • Dรฆkningen er begrรฆnset af kravenes kvalitet. Alt, der ikke er specificeret, testes aldrig.
  • Det kan skabe falsk selvtillid, nรฅr den lykkelige vej er den eneste vej, der praktiseres fรธr en frigรธrelse.
  • Den mรฅler ikke robusthed, restitution eller ydeevne under stress, som krรฆver deres egne teknikker fra det bredere sรฆt af typer af softwaretest.

Betragt ikke-destruktiv testning som den grundlรฆggende metode, som alle andre teknikker bygger pรฅ, og planlรฆg den inden for den bredere ramme. livscyklus for softwaretest snarere end som en engangsaktivitet.

Ofte Stillede Spรธrgsmรฅl

Kun princippet deles. Ingeniรธr-NDT inspicerer en fysisk del uden at beskadige den ved hjรฆlp af metoder som ultralyd eller radiografi. Software-NDT lรฅner ideen om at lade emnet vรฆre intakt, men selve teknikken er almindelig positiv testudfรธrelse.

Ikke-destruktiv testning leverer valide data og forventer succes. Negativ test indlรฆser ugyldige data og forventer en kontrolleret, informativ fejl, sรฅsom en valideringsmeddelelse. Begge dele er nรธdvendigt, fordi en ren, tilfredsstillende sti aldrig beviser, at fejlhรฅndteringen fungerer.

De automatiserer lettere end nogen anden kategori. Dataene er stabile, det forventede resultat er fastsat af kravet, og flowet รฆndrer sig sjรฆldent, hvilket gรธr happy path-tilfรฆlde til de naturlige fรธrste kandidater til en regressionssuite.

ร‰t tilfรฆlde pr. gyldig รฆkvivalenspartition er den sรฆdvanlige regel, plus รฉt for hvert distinkt vellykket resultat, som kravet beskriver. Tilfรธjelse af flere gyldige vรฆrdier inden for den samme partition finder sjรฆldent noget nyt og forsinker pakken.

AI-assisterede vรฆrktรธjer lรฆser brugerhistorier og acceptkriterier og udarbejder de matchende "happy path"-cases og gyldige testdata. Besparelsen er reel, men et menneske skal stadig bekrรฆfte hvert forventet resultat i forhold til specifikationen, fรธr casen kan betros.

GitHub Copilot scaffolds happy path-scripts hurtigt fra en eksisterende testfil eller et beskrevet flow. RevGennemgรฅ pรฅstandene omhyggeligt โ€” genererede tests har en tendens til at pรฅstรฅ, hvad koden gรธr, snarere end hvad kravet krรฆver.

De overlapper hinanden, men er ikke identiske. Rรธgtest er en lav passage over de kritiske strรธmninger for at afgรธre, om en bygning er vรฆrd at teste. Ikke-destruktiv testning er en positiv tilgang, der anvendes i enhver dybde, inklusive fuld funktionel dรฆkning.

Kravdรฆkningen er den รฆrlige: andelen af โ€‹โ€‹acceptkriterier med mindst รฉt โ€‹โ€‹bestรฅet positivt tilfรฆlde. Kombiner det med bestรฅelsesraten og forholdet mellem positive og negative tilfรฆlde, hvilket afslรธrer tilfรฆlde, der kun nogensinde tester den lykkelige vej.

Opsummer dette indlรฆg med: