Wat is dynamisch testen? Typen, technieken en voorbeelden
โก Slimme samenvatting
Dynamisch testen voert de applicatie uit en observeert hoe de draaiende code zich gedraagt โโmet echte invoer, waardoor testers de functionaliteit, prestaties en stabiliteit kunnen valideren die met documentanalyse onmogelijk aan het licht kunnen komen.
Wat is dynamisch testen?
Dynamisch testen Dynamisch testen is een softwaretestmethode die wordt gebruikt om het dynamische gedrag van softwarecode te testen. Het belangrijkste doel van dynamisch testen is het onderzoeken van softwaregedrag met dynamische variabelen โ variabelen die niet constant zijn โ en het vinden van zwakke punten in de runtime-omgeving van de software. De code moet worden uitgevoerd om het dynamische gedrag te kunnen testen.
Testen is verificatie en validatieEn beide vormen van verificatie zijn nodig om het testen compleet te maken. Verificatie wordt uitgevoerd door middel van statische testen, waarbij de vereisten, ontwerpdocumenten en code worden beoordeeld zonder ze uit te voeren. Validatie wordt uitgevoerd door middel van dynamische testen, waarbij de build wordt uitgevoerd en wordt vergeleken wat de applicatie daadwerkelijk doet met wat deze zou moeten doen.
De onderstaande tabel geeft een overzicht van de verschillen tussen de twee.
| Aspect | Statische testen (verificatie) | Dynamische testen (validatie) |
| Code uitgevoerde | Nee | Ja |
| Typische activiteiten | Revbezichtigingen, rondleidingen, inspecties, statische analyse | Testuitvoering op alle testniveaus |
| Vraag beantwoord | Bouwen we het product op de juiste manier? | Bouwen we het juiste product? |
| Geconstateerde defecten | Vage eisen, schendingen van codeerstandaarden, dode code | Onjuiste uitvoer, geheugenlekken, timingfouten, integratiefouten |
| Begint | Zodra een artefact bestaat | Zodra er een uitvoerbare build bestaat |
| Relatieve kosten van een oplossing | Lager, omdat defecten eerder worden ontdekt. | Hoger, omdat defecten later aan het oppervlak komen |
Dynamisch testvoorbeeld
Een kort uitgewerkt voorbeeld laat zien hoe dynamisch testen in de praktijk werkt.
Stel, er wordt een inlogpagina getest. Deze pagina heeft twee velden: gebruikersnaam en wachtwoord. De gebruikersnaam mag alleen uit alfanumerieke tekens bestaan.
Wanneer de gebruiker de gebruikersnaam invoert als โGuru"99", accepteert het systeem het. Wanneer de gebruiker "GuruBij "99@123" geeft de applicatie een foutmelding. Dit resultaat laat zien dat de code dynamisch reageert op de gebruikersinvoer.
Dynamisch testen betekent dus dat je met het daadwerkelijke systeem werkt, een invoer geeft en het werkelijke gedrag van de applicatie vergelijkt met het verwachte gedrag โ met andere woorden, dat je met het systeem werkt met de bedoeling fouten te vinden.
Dynamisch testen is daarom het proces waarbij een softwareapplicatie wordt gevalideerd zoals een eindgebruiker dat zou doen, in verschillende omgevingen, om zo de juiste software te ontwikkelen.
Wat doet dynamisch testen?
Het hoofddoel van dynamische tests is ervoor te zorgen dat de software tijdens en na de installatie naar behoren werkt, en een stabiele applicatie zonder grote gebreken oplevert. Geen enkele software is volledig foutloos en testen kunnen de aanwezigheid van defecten aantonen, maar nooit hun afwezigheid.
Dynamische tests zorgen ook voor consistentie in de software, zoals dit voorbeeld laat zien.
In een bankapplicatie zijn er verschillende schermen, zoals Mijn rekeningen, Geld overmaken en Bill Betalen. Ze bevatten allemaal een bedragveld.
Stel dat in het veld 'Mijn accounts' het bedrag 25,000 wordt weergegeven, bij 'Geld overmaken' $25,000 en de Bill Op het betaalscherm wordt $25000 weergegeven. Het bedrag is hetzelfde, maar de manier waarop het wordt weergegeven verschilt, wat de software inconsistent maakt.
Consistentie beperkt zich niet tot functionaliteit. Het omvat ook standaarden zoals prestaties, gebruiksgemak en compatibiliteit, en daarom is dynamisch testen zo belangrijk.
Soorten dynamisch testen
Dynamische testen worden in twee categorieรซn ingedeeld.
- Wit Box Testen
- Zwart Box Testen
Het onderstaande diagram koppelt de twee categorieรซn aan de testniveaus die daaronder vallen.
Elk type en het beoogde doel worden hieronder beschreven.
Wit Box Testen โ een softwaretestmethode waarbij de interne structuur en het ontwerp bekend zijn bij de tester. Het belangrijkste doel is om te controleren hoe het systeem presteert op basis van de code. Deze methode wordt voornamelijk uitgevoerd door ontwikkelaars of white-box testers met programmeerkennis.
Zwart Box Testen โ een testmethode waarbij de interne structuur, code en het ontwerp NIET bekend zijn bij de tester. Het hoofddoel is het verifiรซren van de functionaliteit van het te testen systeem. Dit type testen vereist dat de volledige testsuite wordt uitgevoerd, wordt voornamelijk door testers uitgevoerd en vereist geen programmeerkennis.
Blackbox-testen worden wederom in twee typen ingedeeld.
- Functioneel testen
- Niet-functioneel testen
Functioneel testen
Functioneel testen Deze controle wordt uitgevoerd om te verifiรซren dat alle ontwikkelde functionaliteiten overeenkomen met de functionele specificaties. Dit gebeurt door de functionele tests uit te voeren. testgevallen Geschreven door het QA-team. In deze fase wordt het systeem getest door invoer te geven, de uitvoer te verifiรซren en de daadwerkelijke resultaten te vergelijken met de verwachte resultaten.
Er bestaan โโverschillende niveaus van functionele testen, waarvan de vier hieronder de belangrijkste zijn.
- Testen van een eenheid Een unit is een klein, testbaar stukje code. Unit testen wordt uitgevoerd op een individuele software-eenheid en wordt gedaan door ontwikkelaars.
- Integratietesten โ Dit wordt uitgevoerd na de unit-tests, door de afzonderlijke testbare eenheden te combineren. Het wordt uitgevoerd door ontwikkelaars of door testers.
- Systeem testen โ uitgevoerd om ervoor te zorgen dat het systeem zich gedraagt โโzoals vereist. Dit wordt over het algemeen gedaan door testers wanneer het complete systeem gereed is, nadat de build is vrijgegeven aan het QA-team.
- Acceptatietesten โ wordt uitgevoerd om te controleren of het systeem aan de bedrijfsvereisten voldoet en klaar is voor gebruik of implementatie. Deze controle wordt over het algemeen door de eindgebruikers uitgevoerd.
Niet-functioneel testen
Niet-functioneel testen Niet-functioneel testen is een testtechniek die zich niet richt op functionele aspecten, maar in plaats daarvan op niet-functionele eigenschappen van het systeem, zoals geheugenlekken, prestaties of robuustheid. Niet-functioneel testen wordt op alle testniveaus uitgevoerd.
Er bestaan โโveel niet-functionele testtechnieken, waarvan de vijf hieronder de belangrijkste zijn.
- Performance Testing โ controleert of de reactietijd van het systeem normaal is, conform de vereisten, onder de gewenste netwerkbelasting.
- Herstel testen โ controleert hoe goed een systeem herstelt van crashes en hardwarestoringen.
- Compatibiliteitstesten โ verifieert hoe het systeem zich gedraagt โโin verschillende omgevingen.
- Beveiligingstests โ verifieert de robuustheid van de applicatie en zorgt ervoor dat alleen geautoriseerde gebruikers en rollen toegang hebben tot het systeem.
- Usability Testing โ verifieert de bruikbaarheid van het systeem door de eindgebruikers en hoe vertrouwd die gebruikers ermee zijn.
Dynamische testtechnieken
Nu de typen vastgesteld zijn, is de volgende vraag hoe een dynamische testcyclus daadwerkelijk wordt uitgevoerd.
Dynamische testtechnieken in de STLC Dynamisch testen bestaat uit taken zoals het analyseren van de vereisten voor de tests, testplanning, het ontwerpen en implementeren van testgevallen, het opzetten van de testomgeving, het uitvoeren van testgevallen, het rapporteren van bugs en ten slotte het afsluiten van de test. Elke taak in dynamisch testen is afhankelijk van de voltooiing van de voorgaande taak in het testproces.
Binnen de STLC begint het eigenlijke dynamische testproces met het ontwerpen van testgevallen. Het onderstaande diagram toont de volgorde van activiteiten, die hierna elk afzonderlijk worden beschreven.
Voordat met het proces wordt begonnen, moet de te volgen strategie voor dynamische testen worden overeengekomen.
Een teststrategie moet zich primair richten op de beschikbare middelen en het tijdsbestek. Op basis van deze twee factoren moeten het doel van de test, de reikwijdte van de test, de testfasen of -cycli, het type omgeving, de aannames of mogelijke uitdagingen en de risico's allemaal worden gedocumenteerd.
Zodra de strategie is vastgesteld en door het management is goedgekeurd, begint het daadwerkelijke proces van het ontwerpen van de testgevallen.
Testontwerp en -implementatie
In deze fase identificeert het team het volgende.
- Functies die getest moeten worden
- Testomstandigheden afgeleid van die kenmerken
- Dekkingsitems afgeleid van de testomstandigheden
- Testgevallen afgeleid van de dekkingsitems
Zwarte doos testontwerptechnieken zoals equivalentiepartitionering, grenswaardeanalyse, beslissingstabeltesten en toestandsovergangstesten zijn datgene wat een testconditie omzet in een concrete set uitvoerbare gevallen.
Testomgeving instellen
De test omgeving De testomgeving moet altijd zoveel mogelijk lijken op de productieomgeving. In deze fase wordt de build geรฏnstalleerd en worden de testmachines beheerd en geconfigureerd.
Test uitvoering
Tijdens deze fase worden de testgevallen daadwerkelijk uitgevoerd, handmatig of via een geautomatiseerd systeem. automatiseringEn de werkelijke resultaten worden vergeleken met de verwachte resultaten.
Bugrapport vastgelegd
Als de verwachte en de daadwerkelijke resultaten van de test niet overeenkomen, moet de testcase als 'Mislukt' worden gemarkeerd en moet er een bug worden geregistreerd. defectbeheer proces.
Voordelen van dynamisch testen
- Dynamische tests brengen defecten aan het licht die als te moeilijk of te complex worden beschouwd om te detecteren, en die door statische analyses helemaal niet kunnen worden opgespoord.
- De software wordt van begin tot eind uitgevoerd, wat de kwaliteit van zowel het product als het project verhoogt.
- Dynamische tests zijn een essentieel middel om beveiligingsrisico's in een draaiend systeem op te sporen.
- Fouten die alleen tijdens de uitvoering optreden, zoals geheugenlekken, timingproblemen en integratiefouten, komen hier aan het licht en nergens anders.
Nadelen van dynamisch testen
- Dynamisch testen is tijdrovend, omdat het uitvoeren van de applicatie of code veel resources vereist.
- Het verhoogt de kosten van het project, omdat het niet vroeg in de softwarelevenscyclus wordt gestart en problemen die in latere fasen worden opgelost, meer geld kosten om te herstellen.
- Een productieachtige omgeving en realistische testgegevens zijn essentiรซle voorwaarden, en het kost moeite om deze op te bouwen en te onderhouden.


