Niet-destructief softwaretesten (NDT): Wat is het? Teststrategie

⚡ Slimme samenvatting

Niet-destructief testen verifieert of een applicatie correct werkt wanneer deze geldige invoer ontvangt. Daarom wordt het ook wel positief testen of 'happy path'-testen genoemd. Het bevestigt de verwachte resultaten aan de hand van de gedocumenteerde vereisten.

  • 🔘 Positief van ontwerp: Elke niet-destructieve test maakt gebruik van geldige gegevens en een bekende eis, dus een geslaagde test bewijst dat de functionaliteit werkt zoals gespecificeerd.
  • ☑️ De vroegst mogelijke test die uitgevoerd moet worden: Het 'happy path' wordt als eerste gecontroleerd, omdat een onderbroken hoofdproces vrijwel elke volgende test blokkeert.
  • eis tracgeschiktheid: Elke testcase is gekoppeld aan een acceptatiecriterium, waardoor de resultaten gemakkelijk te verdedigen zijn tijdens een beoordeling.
  • 🧪 Het tegenovergestelde van destructief onderzoek: Bij destructief onderzoek wordt gezocht naar het breekpunt, terwijl bij niet-destructief onderzoek wordt bevestigd dat het beoogde gedrag behouden blijft.
  • Lage opstartkosten: Er is geen speciale omgeving, beschadigde data of foutinjectie nodig, waardoor de techniek geschikt is voor strakke deadlines en beperkte budgetten.
  • 📈 Bekende beperking: Het doorlopen van alle succesvolle scenario's bewijst niets over foutafhandeling, dus negatieve en destructieve tests moeten er nog steeds naast worden uitgevoerd.

Niet-destructief softwaretesten (NDT) uitgelegd met teststrategie

Wat is niet-destructief softwaretesten?

Niet-destructief onderzoek is een softwaretesttype waarbij de softwareapplicatie correct wordt getest en gebruikt. Met andere woorden, Non Destructive Software Testing (NDT) wordt ook wel Positive Testing of Happy path testen genoemd. Het geeft de verwachte resultaten en bewijst dat de softwareapplicatie zich gedraagt ​​zoals verwacht.

De naam is ontleend aan de techniek, waar niet-destructief onderzoek een fysiek onderdeel inspecteert zonder het te beschadigen. In software is het principe hetzelfde: de applicatie wordt gebruikt zoals deze is ontworpen en doorstaat de test zonder problemen.

Voorbeeld: Het invoeren van de juiste gegevens in een inlogmodule en controleren of de inloggegevens worden geaccepteerd en of er naar de volgende pagina wordt doorgestuurd.

De onderstaande schermafbeelding toont het inlogformulier, met een geldige waarde ingevoerd in het gebruikersnaamveld voordat de test wordt uitgevoerd.

Inlogformulier gebruikt als voorbeeld van niet-destructief softwaretesten met geldige invoer

Om niet-destructief te testen op het bovenstaande voorbeeld, voert u een geldige gebruikersnaam en wachtwoord in het inlogformulier in. Omdat de invoer overeenkomt met wat de vereiste toestaat, is het gewenste resultaat positief en bevestigt de tester eenvoudigweg dat de applicatie naar de volgende pagina gaat.

Waarom niet-destructieve softwaretests (NDT)?

Niet-destructief testen beantwoordt de eerste vraag die elke stakeholder stelt over een project: doet de functionaliteit daadwerkelijk wat ervan verwacht wordt? Dit zijn de redenen waarom teams het uitvoeren.

  • Het grootste voordeel van de NDT-methode is dat deze leidt tot een verbeterde softwarekwaliteit, omdat defecten die in de hoofdcode worden gevonden, vroegtijdig worden verholpen.
  • Om aan te tonen dat softwarefuncties volgens de specificatie werken.
  • Om te controleren of aan de prestatie-eisen is voldaan.
  • Om te controleren of aan de eisen van de eindgebruikers wordt voldaan.
  • Om te controleren of een klein gedeelte van de code of functionaliteit naar behoren werkt en de gerelateerde functionaliteit niet verstoort.
  • Om bewijsmateriaal te produceren dat kan worden getoond op een gebruikersacceptatie testen Bij de goedkeuringsfase wil de klant het beoogde gedrag zien in plaats van de mogelijke fouten.

Wanneer wordt niet-destructief onderzoek (NDT) uitgevoerd?

Timing is hier belangrijker dan bij de meeste technieken, omdat het succesvolle scenario bepalend is voor alles wat erna komt.

  • Het is de eerste test die een tester uitvoert op een applicatie, oftewel in de beginfase van de ontwikkeling. SDLC.
  • Niet-destructief onderzoek wordt doorgaans uitgevoerd wanneer er onvoldoende tijd is voor een volledige testcyclus, omdat het toch aantoont dat aan de acceptatiecriteria is voldaan.
  • Het wordt uitgevoerd vóór negatieve en destructieve scenario's. Als de hoofdstroom wordt onderbroken, rapporteren foutafhandelingstests ruis in plaats van echte defecten.
  • Het wordt na elke foutcorrectie herhaald, en dat is waar het overlapt met regressietesten.

Teststrategie voor niet-destructief testen

De strategie voor niet-destructief onderzoek is bewust eenvoudig, en de discipline schuilt in een positieve instelling in plaats van in de gebruikte apparatuur.

  • De benadering van niet-destructief onderzoek moet positief zijn.
  • Het doel van de NDT-techniek is aan te tonen dat een applicatie werkt wanneer deze geldige invoergegevens ontvangt.
  • Voor het uitvoeren van niet-destructief onderzoek zijn geen speciale vereisten of omstandigheden nodig.
  • De beste werkwijze voor niet-destructief onderzoek is om te controleren of het systeem doet wat het moet doen.

Het onderstaande diagram geeft een overzicht van hoe die strategie normaal gesproken is georganiseerd gedurende een testcyclus.

Teststrategiestroom voor niet-destructief softwaretesten gedurende een testcyclus

Hoe schrijf je niet-destructieve (positieve) testgevallen?

Een niet-destructieve testcase is alleen nuttig als de invoer aantoonbaar geldig is en het verwachte resultaat voortkomt uit een vereiste in plaats van uit een aanname van de tester. De volgende stappen leiden tot zo'n testcase. testcase.

Stap 1) Kies één acceptatiecriterium. Lees de vereiste en herformuleer deze als één verifieerbare verklaring, bijvoorbeeld: "Het gebruikersnaamveld accepteert zes tot twintig alfanumerieke tekens".

Stap 2) Kies geldige invoergegevens. Selecteer waarden die ruim binnen het toegestane bereik vallen. Gelijkwaardigheidspartitionering Dit helpt — één representatieve waarde per geldige partitie is normaal gesproken voldoende.

Stap 3) Noteer het verwachte resultaat voordat u de code uitvoert. Het verwachte resultaat moet uit de specificatie worden afgeleid. Als je het resultaat pas na de uitvoering schrijft, wordt de test een beschrijving van wat de build toevallig heeft gedaan.

Stap 4) Houd de stappen in de door de gebruiker aangegeven volgorde. De volgorde moet overeenkomen met hoe een echte gebruiker de taak zou uitvoeren, omdat het doel van de techniek is om het beoogde traject te bevestigen.

Stap 5) Noteer de vereiste-identificatiecode. TracDoor de casus terug te voeren naar de onderliggende criteria, kan het team tijdens een evaluatie de dekking aantonen.

Een uitgewerkt voorbeeld voor de inlogmodule ziet er als volgt uit.

Veld Niet-destructieve testcase
eis De gebruikersnaam mag 6 tot 20 alfanumerieke tekens bevatten.
Testgegevens Gebruikersnaam guru99testergeldig overeenkomend wachtwoord
Stappen Open de inlogpagina, voer de inloggegevens in en selecteer 'Inloggen'.
Verwacht resultaat De inloggegevens worden geaccepteerd en de startpagina wordt weergegeven.
Type Positief / gelukkig pad

Merk op dat er in dit geval niets is dat probeert het veld te breken. Een geval waarbij vijf tekens worden ingevoerd om het foutbericht te zien, is een negatieve test, en niet een niet-destructieve.

Voorbeelden van niet-destructieve tests

Het onderstaande voorbeeld laat zien hoe niet-destructief testen werkt in een applicatie met meerdere modules nadat een defect is verholpen.

  • Een applicatie bestaat uit vijf modules: inlogpagina, startpagina, gebruikersdetailpagina, pagina voor het aanmaken van een nieuwe gebruiker en pagina voor het aanmaken van taken.
  • Stel dat er een fout zit in de inlogpagina: het gebruikersnaamveld accepteert minder dan zes alfanumerieke tekens. Dit is in strijd met de gestelde eis dat de gebruikersnaam niet minder dan zes tekens mag bevatten, dus dit gedrag is een defect.
  • De bug wordt via de gebruikelijke kanalen aan het ontwikkelteam gemeld. defectbeheerprocesHet probleem is opgelost en de build wordt teruggestuurd naar het testteam.
  • Het testteam controleert niet alleen de inlogpagina waar het defect is verholpen, maar test ook de andere modules. Tijdens het testen van alle modules met geldige gegevens voert het team niet-destructieve tests uit, puur om te bevestigen dat de gehele applicatie nog steeds naar behoren werkt.

Niet-destructief onderzoek versus destructief onderzoek

De twee technieken worden vaak samen aangeleerd omdat ze antwoord geven op tegenovergestelde vragen over hetzelfde bouwwerk. Destructief testen Bij niet-destructief testen wordt gezocht naar het punt waarop de software het begeeft, terwijl bij gewoon testen wordt bevestigd dat het beoogde gedrag behouden blijft.

Aspect Niet-destructief onderzoek Destructief testen
Bedoeling Gebruik de applicatie correct en controleer of de resultaten positief zijn. Voer ongebruikelijke of ongeldige invoer in om het probleem te vinden.
Invoergegevens Geldige gegevens afgeleid van de vereiste Ongeldige, beschadigde of niet-in de juiste volgorde opgeslagen gegevens
Vereisten nodig Ja, dossiers worden opgesteld aan de hand van acceptatiecriteria. Niet per se; testers werken zonder vooringenomenheid ten aanzien van gebruikersverhalen.
Wat het blootlegt Tekortkomingen in de functionaliteit ten opzichte van de specificatie Zwakke punten in ontwerp, robuustheid en herstelbaarheid
Gerelateerde technieken Rook testen, functioneel testen Apenproeven, verkennende tests

De twee vullen elkaar aan, ze zijn geen alternatieven. Het uitvoeren van niet-destructieve tests alleen laat de foutafhandeling onverifieerd, en het uitvoeren van destructieve tests alleen bewijst nooit dat het product zijn werk doet.

Voordelen en beperkingen van niet-destructief softwaretesten

Weten waar de techniek ophoudt nuttig te zijn, is net zo belangrijk als weten wat de techniek precies inhoudt.

Voordelen

  • Snel te ontwerpen en uit te voeren, omdat de testgegevens rechtstreeks uit de specificatie komen.
  • Vereist geen speciale omgeving, foutinjectie of beschadigde dataset.
  • Levert bewijsmateriaal op dat één-op-één aansluit op de vereisten, wat geschikt is voor audits en goedkeuringen.
  • Werkt net zo goed als handmatig testen en zoals voorgeschreven automatisering testenZodat dezelfde gevallen opnieuw kunnen worden gebruikt in een regressietestsuite.
  • Geeft vroegtijdig en eerlijk een indicatie van de bouwkwaliteit op elk niveau, van unit tot en met. integratie testen naar systeem testen.

Beperkingen

  • Een volledige testuitslag zegt niets over hoe de applicatie omgaat met ongeldige invoer, waardoor ernstige fouten in de foutafhandeling kunnen blijven bestaan.
  • De dekking wordt beperkt door de kwaliteit van de eisen. Alles wat niet gespecificeerd is, wordt nooit getest.
  • Het kan een vals gevoel van zekerheid scheppen wanneer alleen het succesvolle scenario wordt doorlopen vóór een release.
  • Het meet niet de robuustheid, het herstelvermogen of de prestaties onder stress, waarvoor eigen technieken uit een breder scala aan methoden nodig zijn. software testtypen.

Beschouw niet-destructief onderzoek als de basis waarop elke andere techniek voortbouwt, en plan het in binnen het bredere plan. levenscyclus van softwaretests in plaats van als een eenmalige activiteit.

Veelgestelde vragen

Alleen het principe is hetzelfde. Technische NDT inspecteert een fysiek onderdeel zonder het te beschadigen, met behulp van methoden zoals ultrasoon onderzoek of röntgenonderzoek. Softwarematige NDT neemt het idee over om het object intact te laten, maar de techniek zelf is een gewone positieve testuitvoering.

Niet-destructief onderzoek levert valide gegevens op en gaat uit van succes. Negatieve testen Het systeem voert ongeldige gegevens in en verwacht een gecontroleerde, informatieve foutmelding, zoals een validatiebericht. Beide zijn nodig, omdat een volledig succesvol scenario nooit bewijst dat de foutafhandeling werkt.

Ze zijn gemakkelijker te automatiseren dan welke andere categorie dan ook. De data is stabiel, het verwachte resultaat wordt bepaald door de vereisten en de workflow verandert zelden, waardoor 'happy path'-gevallen de meest voor de hand liggende kandidaten zijn voor een regressietestsuite.

De gebruikelijke regel is één geval per geldige equivalentiepartitie, plus één voor elk afzonderlijk succesvol resultaat dat de vereiste beschrijft. Het toevoegen van meer geldige waarden binnen dezelfde partitie levert zelden iets nieuws op en vertraagt ​​de testsuite.

AI-ondersteunde tools lezen gebruikersverhalen en acceptatiecriteria en genereren de bijbehorende succesvolle scenario's en geldige testgegevens. De tijdsbesparing is aanzienlijk, maar een mens moet elk verwacht resultaat nog steeds controleren aan de hand van de specificaties voordat het scenario als betrouwbaar wordt beschouwd.

GitHub-copiloot Genereer snel scripts voor het succesvolle scenario op basis van een bestaand testbestand of een beschreven workflow. RevBekijk de beweringen zorgvuldig — gegenereerde tests hebben de neiging te beweren wat de code doet in plaats van wat de vereiste voorschrijft.

Ze overlappen elkaar, maar zijn niet identiek. Rook testen Het betreft een oppervlakkige analyse van de kritieke stromingen om te bepalen of een constructie de moeite waard is om te testen. Niet-destructief onderzoek is een positieve aanpak die op elke diepte kan worden toegepast, inclusief volledige functionele dekking.

De dekkingsgraad van de vereisten is de meest eerlijke maatstaf: het aandeel acceptatiecriteria met ten minste één positief geval dat slaagt. Combineer dit met het slagingspercentage en de verhouding tussen positieve en negatieve gevallen, waardoor testsuites aan het licht komen die alleen het succesvolle scenario testen.

Vat dit bericht samen met: