De perfecte app bestaat niet. Dankzij quality assurance (QA) en testen kun je echter wel een app lanceren die voldoet aan alle requirements en daardoor functioneel, gebruiksvriendelijk en veilig is. Pinch heeft sinds kort een QA-engineer in dienst die de kwaliteit van de apps tijdens het hele ontwikkelproces bewaakt en verbetert. Kristina Malashko legt uit wat haar werk precies inhoudt en waarom het zo belangrijk is.
Korte metten met bugs
De Ariane 5-raket explodeerde op 4 juni 1996 door een bug in de software. En toen een stortvloed aan bugs aan het licht kwam meteen na de release van Apple Maps in 2012, moest de CEO van Apple toegeven: ‘We screwed up. That’s the fact.’ Bugs in mobiele apps zijn gelukkig doorgaans niet zó erg, maar apps die vastlopen na een software-update of als er een telefoontje binnenkomt zijn alsnog knap vervelend.
Apps hebben al snel tienduizenden regels code, daar sluipt gemakkelijk een foutje in. En die tasten al snel de user experience aan, in het ergste geval leiden ze zelfs tot crashes of falende kernfunctionaliteiten. Gebruikers maken daar korte metten mee: uit onderzoek blijkt dat 80 procent van de gebruikers een app meteen verwijdert als die niet voldoet aan de verwachtingen. Mede omdat er in de app stores tientallen of zelfs honderden soortgelijke apps staan, krijg je als appeigenaar maar één kans van gebruikers. Zie hier het belang van quality assurance (QA) en testen bij het ontwikkelen van apps.
QA voor nóg betere apps
Pinch test vanzelfsprekend haar apps altijd al, recent is Kristina Malashko gestart als eerste QA-engineer. Het is haar hoofdtaak om de kwaliteit van de door Pinch gebouwde apps te garanderen. Malashko: “Bij QA draait het om de kwaliteit binnen het héle project. Naast het vinden van bugs, het creëren van bug reports en het opstellen van teststrategieën kijk ik naar alles wat we kunnen doen om bugs, errors en crashes te voorkomen. Centraal daarbij staat de vraag: wat kunnen we implementeren om onze apps nóg beter te maken? Het zal altijd afhangen van het project in kwestie, maar we kunnen bijvoorbeeld monitoringtools, application performance management-tools en andere tools inzetten, checklists updaten en teststrategieën veranderen.”
Omdat QA gaat over de kwaliteit binnen het ontwikkeltraject van a tot z, is de engineer betrokken bij iedere stap in het maakproces. Dat begint al bij de discovery-fase, waarin samen met de klant zaken als strategie, uitgangspunten, scope, rollen, features, doelstellingen, planning van het werk, KPI’s en UX-metrics worden vastgesteld. Malashko: “Door dan al aan te haken, kom ik te weten wat de doelen zijn en hoe de app eruit gaat zien. De requirements en het ontwerp van de app controleer ik eerst op basislogica. Daarnaast kan ik al in een vroeg stadium adviseren welke tools voor bijvoorbeeld testen en performance kunnen worden ingezet.”
Structuur voor het testproces
De QA-engineer is momenteel een structuur aan het opstellen voor het testproces. De komende maanden gaat ze werken aan het creëren van een QA-domein op maat voor Pinch, waarvoor ze onder meer geschikte tools gaat zoeken, testdocumentatie moet schrijven en beslist over de lijst met devices die gebruikt gaan worden. “Momenteel werk ik aan een nieuw product met een klant van Pinch, waarbij ik een teststrategie formuleer die we gaan presenteren aan de klant. Daarna zal ik gaan werken aan lopende app-projecten. Idealiter is er straks een QA-engineer betrokken bij iedere app die door Pinch wordt gemaakt.”
Voldoen aan alle requirements
Eén van de belangrijkste taken binnen QA is het testen in verschillende fases van het ontwikkeltraject. Door te testen wordt geverifieerd en gevalideerd dat een app bugvrij is, dat hij voldoet aan de technische requirements die zijn gesteld aan zowel het ontwerp als het development én dat hij alle user requirements afvinkt. Daarmee garandeert testen dat een app uiteindelijk veilig, betrouwbaar, functioneel, bruikbaar, gebruiksvriendelijk en consistent is. Malashko: “Eigenlijk komt het erop neer dat we checken of dat de verwachte resultaten op basis van de requirements overeenkomen met de feitelijke resultaten van de app.”
Waarop wordt getest
Bij het testen van mobiele apps moet op talloze zaken worden gelet, zoals:
- Functioneel testen: werken alle functionaliteiten correct?
- Werkt de app goed binnen verschillende versies van het besturingssysteem?
- Hoe doet de app het bij bepaalde netwerkomstandigheden?
- Zijn de functionaliteit en gebruiksvriendelijkheid van de interface in orde?
- Is de app veilig?
- Ontstaan er geen fouten bij interrupties zoals inkomende oproepen en push-notificaties?
- Hoe werkt de app met verschillende soorten input, zoals vingergebaren, steminput en sensorinput?
- Regressietesten: werkt eerder ontwikkelde en geteste software nog steeds na het doorvoeren van wijzigingen?
Testen op verschillende devices
De komende tijd buigt Malashko zich ook over de vraag hoe Pinch het beste kan omgaan met ontwikkelen voor en testen op verschillende devices. Ieder apparaat heeft z’n eigen unieke combinatie van onder meer (grafische) rekenkracht, geheugen, resolutie, sensors en versie van het besturingssysteem.
Malashko: “Het is belangrijk om op apparaten met verschillende schermresoluties te testen. Wat er goed uitziet op een scherm met een medium resolutie, oogt lang niet altijd goed op een scherm met een lage resolutie. Dit kun je voorkomen door te testen op verschillende apparaten. Daar bovenop is het belangrijk om te testen op verschillende versies van het besturingssysteem en op apparaten van meerdere fabrikanten, aangezien een applicatie totaal anders kan werken op andere apparaten.”
Toegankelijkheid
Pinch wil apps maken die zo toegankelijk mogelijk zijn, ook voor mensen die beperkingen hebben op het gebied van bijvoorbeeld zien, horen en motoriek. Malashko: “Als onze klanten het willen, testen we ook op toegankelijkheid. Overigens werkt Pinch ook samen met een bedrijf dat is gespecialiseerd in het testen van apptoegankelijkheid. Zij hebben de door ons gebouwde apps van NRC en Reformatorisch Dagblad al ge-audit.”
‘Niet iedere fout kan worden gevonden’
Als Malashko over een tijdje goed op dreef is, kan Pinch dan apps afleveren die volledig bugvrij en optimaal gebruiksvriendelijk zijn? “Die garantie kan nooit worden gegeven. Eén van de basisprincipes van testen is ‘allesomvattend testen is onmogelijk’. Oftewel: je kunt een app niet testen op ieder denkbaar aspect aangezien inputs en outputs alleen al een oneindige hoeveelheid combinaties opleveren. Apps kunnen nooit voor 100 procent perfect zijn. We kunnen misschien 99 procent bereiken, maar 100 procent is technisch onmogelijk.”
Hoe hard testteams ook werken, het vinden van sommige fouten ligt simpelweg niet in hun macht. Malashko: “In plaats van streven naar allesomvattend testen, kun je beter testen op basis van risico’s en prioriteiten. Als testers een ticket voor een bug report creëren, geven ze daarbij de ernst van het probleem aan. Vervolgens is het aan een manager om de prioriteit van de bug te beoordelen.”