Reading Time: 7 mins

Grondbeginselen van softwaretesten

Fundamentals-of-software-testing-1

Grondbeginselen van softwaretesten

Wat is softwaretesten?

Beurscrashes veroorzaken miljarden verliezen.

Miljoenen auto’s van populaire autofabrikanten worden teruggeroepen.

Vliegtuigen en gevechtsvliegtuigen crashen met tragisch verlies van mensenlevens tot gevolg.

Medische apparatuur faalt met ernstige gevolgen voor patiënten.

Defecten in banksoftware leiden tot onberekenbare verliezen.

We horen vaak dergelijk nieuws met alarmerende frequentie over de hele wereld. Maar waarom gebeuren ze? Wat kunnen we doen om dergelijke tragedies te voorkomen?

Er is één gemeenschappelijk antwoord op al deze problemen: softwaretesten!

Ja! En dat komt omdat al deze tragedies voorkomen hadden kunnen worden door een proces van rigoureuze softwaretests.

Simpel gezegd, softwaretesten is het onderzoek naar de eigenschappen van een softwaresysteem om de haalbaarheid ervan voor een bepaalde taak of doel te bepalen. Met softwaretests wordt gecontroleerd of de software functioneert zoals verwacht wordt, onder een groot aantal verschillende omstandigheden.

Omdat het doel van verschillende softwaresystemen breed en gevarieerd is, variëren ook de soorten testen dienovereenkomstig. Er zijn in feite meer dan 150 soorten softwaretests en er worden er regelmatig meer toegevoegd om gelijke tred te houden met de enorme vooruitgang op het gebied van softwaretechnologie. Uiteraard zijn niet alle tests van toepassing op alle softwareproducten of -diensten. Elke test is zorgvuldig samengesteld volgens de exacte vereisten van de applicatie die wordt getest.

In het algemeen is het testen van software gericht op het identificeren van fouten en tekortkomingen in softwaresystemen met betrekking tot de verwachte vereisten. Alle rampen die we noemden, deden zich voor omdat de tests die erop werden uitgevoerd er niet in slaagden de defecten of ‘bugs’ erin te ontdekken. Een van de kenmerken van goede softwaretests is dus het vermogen om defecten te identificeren.

Het bereiken van 100% nauwkeurigheid of nul-defecten is de heilige graal van softwaretesten. Dit is echter makkelijker gezegd dan gedaan. Een van de belangrijkste wapens in het arsenaal van softwaretesters is de ontwikkeling van testcases. Testgevallen worden geschreven met het doel de testdekking te maximaliseren, met andere woorden het uitvoeren van tests in zoveel mogelijk verschillende situaties.

Gezien de ernstige gevolgen van softwaredefecten, zijn de inspanningen om de testdekking te maximaliseren de moeite waard. Andere belangrijke redenen voor uitgebreide softwaretests zijn:

  • Betere beveiliging

Bepaalde toepassingen, zoals bank-, defensie- en andere kritieke toepassingen, moeten aan hogere beveiligingseisen voldoen dan de meeste andere software.

  • Kwaliteitsverbetering

Alle applicaties zijn gericht op het verbeteren van de kwaliteit om superieure functionaliteit te garanderen.

  • Kostenoptimalisatie

Testen kan ook de kosteneffectiviteit verbeteren door de prestaties van applicaties te optimaliseren.

  • Tevredenheid van een klant

Een andere belangrijke overweging bij het testen van software is om de verwachtingen van klanten te overtreffen door superieure functies te leveren.

Definitie van softwaretesten

Volgens de ANSI/IEEE 1059-standaard wordt softwaretesten gedefinieerd als de systematische analyse van software om verschillen tussen bestaande en vereiste omstandigheden te detecteren en de functies ervan te evalueren.

Er zijn verschillende brede categorieën van softwaretesten op basis van onder andere de aanpak en methodologie:

  • Het testen van software kan bijvoorbeeld handmatig worden uitgevoerd of door middel van testautomatisering. Met de immense complexiteit van softwarecode wordt handmatig testen snel vervangen door geautomatiseerd testen. Geautomatiseerd testen maakt gebruik van tools, waarvan Selenium de meest populaire is, om testscripts uit te voeren en testresultaten te genereren. Aan de andere kant is handmatig testen afhankelijk van menselijk ingrijpen om erachter te komen wat wel of niet werkt. Het gaat om testers die de software uitproberen vanuit het oogpunt van de eindgebruiker aan de hand van handmatige testplannen. Zelfs handmatige tests zijn afhankelijk van tools zoals Testpad om testplannen te maken en kunnen worden gebruikt wanneer automatisering niet mogelijk is.
  • Een ander populair onderscheid is tussen Black Box- en White Box-testen. In het eerste geval leren of onderzoeken testers de interne werking van de software niet. Testen gebeurt puur op functionaliteit met weinig of geen kennis van de implementatie. Regressie- en functionele testen zijn de meest voorkomende Black Box-testtypes. White Box-testen daarentegen worden over het algemeen uitgevoerd door ontwikkelaars die een grondige kennis hebben van de interne structuur/code en implementatie van de applicatie of het product. Het is meer geschikt voor het testen van algoritmen en omvat pad/lus/voorwaardelijk testen.

Software testen levenscyclus (STLC)

De Software Testing Life Cycle (STLC) is een subset van de Software Development Life Cycle (SDLC). Het is echter een van de meest kritieke fasen in softwareontwikkeling, om redenen die we al hebben gezien.

Hoewel het testen van software sterk varieert, zijn er verschillende algemene stappen die deel uitmaken van de STLC, ongeacht de testdoelen.

software testen levenscyclus

  • Voorwaarden

Tijdens de vereistenfase bestuderen en definiëren testteams de reikwijdte van het testen, communiceren ze de noodzaak van mitigatiestrategieën waar tests niet haalbaar zijn, en bereiden ze testplannen voor.

  • Planning

Testplannen omvatten identificatie van belangrijke meetwaarden, evenals methodologieën voor het meten en volgen ervan. Het omvat het creëren van teststrategieën en risicobeheer en mitigatie. De analysefase identificeert testomstandigheden, afhankelijk van de mate van testen, complexiteit, risico’s en exitcriteria. Hoe gedetailleerder de testomstandigheden, hoe beter de testdekking en testresultaten die kunnen worden verkregen. De ontwerpfase splitst de testomstandigheden op in meer detail, zet testomgevingen op en creëert traceerbaarheids- en dekkingsstatistieken.

  • Testgevallen

Op basis van analyse en ontwerp worden gedetailleerde testgevallen gemaakt en beoordeeld op nauwkeurigheid en dekking. Ze worden geprioriteerd en gescheiden in geautomatiseerde/handmatige tests en er worden testscripts gemaakt.

  • Uitvoering

In de daadwerkelijke uitvoering worden de tests uitgevoerd, defecten gelogd en traceerbaarheidsstatistieken bewaakt.

  • Sluiting

In de conclusiefase worden exitcriteria gecontroleerd en worden rapportages gegenereerd. In de afsluitingsfase worden alle tests gecontroleerd op voltooiing en worden beoordelingen uitgevoerd om de belangrijkste lessen en kansen voor verbetering vast te leggen.

Terwijl softwareontwikkeling zijn stadia doorloopt, doet de STLC dat ook. Dit genereert een reeks testartefacten, die resultaten zijn die vóór, tijdens en na de testfasen worden gemaakt.

Algemene testartefacten gegenereerd tijdens de STLC.

Algemene testartefacten gegenereerd tijdens de STLC.

Samenvatting

Het testen van software is een van de meest kritieke fasen van het softwareontwikkelingsproces . Er zijn honderden soorten testen, ontworpen volgens de specifieke toepassingen die worden getest. Het teken van goede softwaretests is de omvang van de testdekking en het vermogen om fouten en tekortkomingen te detecteren. Met de overvloed aan applicaties die wereldwijd worden ontwikkeld en gebruikt, is het testen van software van vitaal belang om de veiligheid van mensen te waarborgen, hoge kwaliteit en kostenefficiëntie te bereiken en klanttevredenheid te leveren.

Keerthi Veerappan

An INFJ personality wielding brevity in speech and writing. Marketer @ Zucisystems.