7 veelvoorkomende soorten softwaretests
An INFJ personality wielding brevity in speech and writing.
U bent misschien zakelijke casestudy’s tegengekomen over softwareproducten die met veel tamtam werden gelanceerd, met miljoenen dollars aan advertentie- en marketinguitgaven, om vervolgens enorme mislukkingen te worden in het veld of op de markt.
Dit kan van alles zijn, van een mobiele app die niet zoveel kijkers of downloads krijgt als verwacht, tot een geautomatiseerd vliegtuigsysteem dat halverwege de vlucht uitvalt, met een tragisch verlies aan mensenlevens tot gevolg. Al deze fouten komen voort uit een gemeenschappelijke bron: ontoereikendheid in softwaretests.
Softwaretesten is een van de meest kritieke componenten van deSoftware Development Life Cycle (SDLC) en toch is er zo weinig over bekend. Wist u bijvoorbeeld dat er tegenwoordig meer dan 150 verschillende soorten softwaretests worden uitgevoerd? En er komen er regelmatig meer bij!
Hoewel er meer dan 150 verschillende soorten softwaretests zijn, namelijk
- Functioneel testen
- Belasting testen
- Verkennende tests
- Niet-functioneel testen
- Prestatietesten
- Regressietesten
- Gezondheidstesten
- Beveiligingstests
- Rooktest
- Stresstesten
- Unit-testen
- White-box testen
- Toegankelijkheidstest
- Acceptatietesten
- Black box-testen
- End-to-end testen
- En er volgt nog meer…
Sommige van deze softwaretests kunnen handmatig of geautomatiseerd worden uitgevoerd. In deze blog zien we de
7 meest voorkomende typen softwaretests
1. Acceptatietesten
Acceptatietesten is een vorm van softwaretesten waarbij systemen worden getest op naleving van zakelijke en technologische vereisten om de geschiktheid voor uiteindelijke levering aan eindklanten te evalueren. Simpel gezegd, Acceptance Testing beoordeelt of het gegeven softwaresysteem zijn doel vervult.
Acceptatietesten worden over het algemeen uitgevoerd door teams van functionele testers en ontwikkelaars op basis van een reeks functionele specificaties. Het is een kritieke vorm van testen omdat het valideert of de software voldoet aan de eindcriteria waarvoor deze is ontwikkeld. Vaak worden live-informatie en echte use-cases meegenomen in acceptatietesten, waardoor het een integraal onderdeel is van de SDLC. Inadequate acceptatietesten hebben in het verleden geleid tot grote verliezen voor verschillende organisaties, omdat de prijs van het herstellen van fouten veel hoger is dan de kosten van uitgebreid testen.
Los van de testteams kan Acceptance Testing zelfs door eindgebruikers worden uitgevoerd, dit wordt User Acceptance Testing (UAT) of Beta Testing genoemd. Vaak geven eindgebruikers de meest waardevolle feedback die nodig is om een geweldig product te ontwikkelen. Daarom is UAT een essentieel onderdeel van acceptatietesten en zorgt het niet alleen voor de afwezigheid van bugs, maar helpt het ontwikkelaars ook proactief hiaten in de functionaliteit op te vullen voordat het product op de markt komt.
2. Integratietesten
Tegenwoordig wordt de meeste software ontwikkeld in modules, die vervolgens worden geïntegreerd om een groter systeem te bouwen. Vaak is het gebrek aan compatibiliteit tussen verschillende modules de belangrijkste bron van softwaredefecten die de levensvatbaarheid ervan aantasten. Daarom wordt Integration Testing uitgevoerd waarbij individuele softwaremodules als geheel worden geïntegreerd en getest. Het evalueert de conformiteit van het ‘volledige’ systeem in tegenstelling tot de afzonderlijke componenten.
Verschillende vormen van integratietesten zijn:
- String Testing, waarmee een verzameling logisch gerelateerde modules wordt geëvalueerd nadat ze zijn geïntegreerd en vóór productie
- Thread Testing, dit evalueert het vermogen van een systeem om specifieke processen of threads vroeg in de integratiefase uit te voeren
Integratietesten wordt geïmplementeerd met behulp van Stubs en Drivers, dummy-programma’s die datacommunicatie tussen modules simuleren, zonder de volledige systeemlogica te implementeren. De drie veelvoorkomende typen integratietesten zijn gebaseerd op hun strategische aanpak. Ze bevatten:
1. Big Bang-benadering
Dit omvat het voltooien van het volledige integratieproces en het testen van alle modules in één enkele fase.
2. Stapsgewijze aanpak
De incrementele aanpak daarentegen voert testen uit in meerdere fasen. Op basis van de volgorde waarin tests worden uitgevoerd, kan dit verder worden onderverdeeld:
a. Van bovenaf aBij benadering worden eerst alle bovenste geïntegreerde modules getest, vervolgens systematisch de vertakking van de module, totdat ten slotte de laatste gerelateerde module wordt getest.
testen
b. Van onderop
testen
c. De Sandwich-benadering gebruikt, zoals de naam al doet vermoeden, een combinatie van de Top-Down- en Bottom-Up-benaderingen.
3. Eenheid testen
Unit Testing is de fundamentele bouwsteen van de hele familie van softwaretests en omvat het testen van de afzonderlijke componenten die in het volledige systeem terechtkomen. Het evalueert het kleinste testbare deel van het systeem en omvat over het algemeen slechts een beperkt aantal inputs/outputs. Onder Unit Testing omvatten de “units” die worden getest blokken broncode, programmamodules en gebruiks-/bedieningsprocedures. Zoals mag worden verwacht, worden ze getest op geschiktheid voor het doel, d.w.z. of ze de taken volbrengen die ze geacht worden uit te voeren en zich gedragen zoals verwacht.
4. Functioneel testen
Functioneel testen, zoals de naam al doet vermoeden, controleert of het softwaresysteem aan alle functionele specificaties voldoet. Als onderdeel van functionele tests worden verschillende inputs aan het systeem geleverd in overeenstemming met zijn functionaliteit, en de output wordt gebruikt om te verifiëren of het al dan niet aan de vereisten voldoet.
Functioneel testen speelt een belangrijke rol bij het testen, omdat het ervoor zorgt dat een applicatie klaar is voor release. Functioneel testen kan handmatig of geautomatiseerd zijn en valt over het algemeen in de categorie Black Box-testen, waarbij de functionele testers individuele componenten onderzoeken ten opzichte van het hele systeem.
Enkele veelvoorkomende vormen van functioneel testen zijn:
- Componenten testen
Betreft het testen van individuele modules of componenten om hun functionaliteit te evalueren en omvat codebrokken, webpagina’s, mobiele schermen, enzovoort.
- Rooktest
De oorsprong van de term wordt verondersteld te zijn in sanitair, waar rook werd gebruikt om scheuren in leidingen op te sporen. Evenzo staan bij Smoke Testing de kritieke problemen centraal, en het doel is om ze eerst op te lossen in plaats van uitgebreide systeemtests uit te voeren.
- Gezondheidstesten
Bij deze vorm van softwaretesten worden nieuwe builds met kleine updates getest om te controleren of in de nieuwe versie defecten zijn verholpen en of er nieuwe defecten zijn geïntroduceerd. Het is geen uitgebreide reeks tests, maar slechts een subset van de hele suite die is ontworpen om het effect van softwareaanpassingen te onderzoeken.
Bekijk de uitgebreide gids tot functioneel testen, de typen, voorbeelden en tools
5. Prestatietesten
Terwijl functionele tests alleen controleren of het systeem voldoet aan de functionele vereisten, onderzoekt prestatietesten andere even kritieke factoren zoals snelheid, stabiliteit, schaalbaarheid, betrouwbaarheid en reactievermogen onder gespecificeerde werklasten. Het doel van Performance Testing is niet alleen het vinden van defecten, maar ook het elimineren van performance bottlenecks.
Prestatietesten is een van de belangrijkste vormen van testen, omdat het problemen evalueert die het meest waarschijnlijk van invloed zijn op het gebruik en die rechtstreeks van invloed zijn op de eindgebruiker, zoals laadtijden van pagina’s, reactietijden van het netwerk, verwerkingstijden van serververzoeken, gelijktijdige gebruikersvolumes en geheugen- of CPU-gebruik. Het stelt ontwikkelaars in staat om de problemen te lokaliseren die moeten worden aangepakt voordat het product als marktklaar kan worden beschouwd.
Sommige vormen van prestatietesten zijn:
-
Belastingtesten
Uitgevoerd door de belasting van een systeem consequent te verhogen om drempelwaarden te bepalen, omvat het lezen/schrijven van grote hoeveelheden gegevens, het uitvoeren van meerdere applicaties, enzovoort. Volumetesten en schaalbaarheidstesten werken volgens een soortgelijk principe door respectievelijk het gegevensvolume en de gebruikersbelasting te vergroten.
-
Stresstesten
Stresstesten controleren of systemen goed werken onder stress, bijvoorbeeld bij weinig CPU, geheugen of bandbreedte.
-
Spike-testen
Zoals de naam al doet vermoeden, creëert Spike Testing periodieke pieken in de eisen aan het systeem om te onderzoeken of het binnen acceptabele grenzen blijft presteren.
-
Onderdompeling/uithoudingstesten
Dit omvat het langdurig testen van het systeem onder constante belasting en het controleren op geheugenlekken, systeemstoringen, oververhitting en andere dergelijke prestatieproblemen.
6. Regressietesten
Regressietesten is een van de meest voorkomende vormen van testen en omvat het opnieuw uitvoeren van eerdere testgevallen. Het herhaalt alle eerdere functionele en niet-functionele tests om ervoor te zorgen dat het systeem naar tevredenheid blijft presteren, zelfs na wijzigingen, updates of aanpassingen. Als het systeem niet werkt, is er sprake van een regressie, vandaar de naam regressietesten. Deze vorm van testen kan selectief worden genoemd met slechts een subset van bestaande testgevallen om de impact van nieuwe code te analyseren, of het kan progressief zijn om ervoor te zorgen dat nieuwe wijzigingen geen negatieve invloed hebben op reeds bestaande functionaliteit.
Op basis van het testniveau omvatten de testtypen:
- Unit Regression Testing, die zich nauw richt op code-eenheden en complexe interacties en afhankelijkheden blokkeert.
- Gedeeltelijke regressietesten, waarbij nieuwe code wordt getest tegen bestaande code om acceptabele prestaties van het systeem te garanderen.
- Volledige regressietesten, die worden uitgevoerd na grote revisies en meerdere aanpassingen aan bestaande code.
7. Bruikbaarheidstesten
Usability Testing houdt zich bezig met de manier waarop eindgebruikers omgaan met een bepaald softwaresysteem. Meestal gaat het om observatie van proefpersonen door onderzoekers om de gebruikerservaring in de echte wereld te begrijpen. Het speelt een sleutelrol in User-Centric Interaction Design of User Experience (UX) Design, waar het voor verschillende doeleinden wordt gebruikt:
- Gebruiksproblemen ontdekken
- Benchmarking van prestaties
- Toewijzing van gebruikspatronen
- Gebruiksgemak
Samenvatting
Software van alle soorten en maten vertrouwt ons alle soorten softwaretests toe, met name testautomatisering. We zijn graag uw verlengde testmaatje en helpen u met vertrouwen kwaliteitsproducten te lanceren.
Laat productiefouten uw klantervaring niet in de weg staan.
Wilt u de kwaliteit van uw product verbeteren? Bekijk Zuci’s testservices en zie hoe u Zuci kunt inzetten voor uw zakelijke behoeften.