"Bij het beschouwen van het gehele proces van softwaretesten zijn er enkele cruciale momenten, waaronder... 't begin en 't end. Je kunt deze momenten op verschillende manieren benaderen: eenvoudig en beknopt, of juist uiterst gedetailleerd. Een gedetailleerde benadering heeft een vergelijkbaar effect zoals geïllustreerd wordt in het volgende TikTok-filmpje: https://vm.tiktok.com/ZGJK9JXSd/ Laten we eens kijken naar het startpunt: Overweeg je bijvoorbeeld een Preliminary Risk Assessment (PRA)? De keuze om al dan niet een PRA uit te voeren, kan worden beschouwd als een diepgaandere analyse, zoals gedemonstreerd wordt in het TikTok-filmpje. Hetzelfde geldt voor het 'beëindigen van het testen'. Je kunt het op een eenvoudige manier bekijken, maar je kunt er ook dieper op ingaan." "Achter de vraag 'wanneer moeten we stoppen met testen?' schuilt een complexe wereld. Een uitgebreide blog die deze kwestie behandelt, is te vinden op: https://developsense.com/blog/2009/09/when-do-we-stop-test Het begrip wordt duidelijk wanneer je het principe begrijpt: je kunt het oppervlakkig bekijken, maar ook diep inzoomen. De volgende stap is het toepassen van de schaal waarop je kijkt. Met 'schaal' bedoelen we het niveau waarop je het starten en stoppen van testen kunt overwegen. Dit kan op het overkoepelende 'Project Niveau' zijn, bijvoorbeeld alle apparaten, wet- en regelgeving, of op een zeer holistisch niveau. Je kunt hetzelfde principe toepassen op een module, functie, backlog-item, een enkele vereiste of een individueel testgeval. De schaal waarop je kijkt kan variëren, net zoals de mate van detail waarmee je kijkt. Je kunt bijvoorbeeld diep inzoomen op een specifiek element of juist oppervlakkig 'het geheel' bekijken. Een laag is dat je het aanvangen en of stoppen van testen kunt bekijken op overkoepelend hoog 'Project Niveau' (bijvoorbeeld alle devices, of alle wet- en regelgeving of... enorm holistisch) Maar ook op een lager niveau Hetzelfde principe gaat op voor een module. (of feature) Hetzelfde gaat op voor een backlog item... Hetzelfde gaat op voor slechts 1 requirement of slechts 1 testgeval. De laag waarop je kijkt kan dus variëren (bijvoorbeeld een bodemlaag van de grond), de gedetailleerdheid waarmee je kijkt kan dus variëren (bijvoorbeeld dan ver ingezoomd op één specifiek element van die bodemlaag, of juist oppervlakkig 'alles wat daar zit'.). Tot nu toe begrijpelijk? Laten we het ingewikkelder maken. De wereld van software testen is complexer dan dit. Neem bijvoorbeeld een backlog-item. We ontwikkelen een feature en testen deze op verschillende lagen, zoals de unit-testlaag, de API-laag, de gebruikersinterface (E2E) en zelfs met het blote oog (functionele test). Stel dat we een bug vinden, laten we zeggen, op de gebruikersinterface-laag. Dan wordt er een bug gevonden met één van deze manieren van testen (praktijk is natuurlijk meerdere bugs op meerdere testlagen van de piramide, voor het gemak laten we dat even hier nu achterwege) mag je zelf kiezen op welke laag van de piramide, laten we zeggen op de UserInterface laag. Herinner je je het voorbeeld van de mate van detail bekijken? Je zou deze bug kunnen classificeren als onbelangrijk, met een lage prioriteit, vanwege de lage kans op fouten en lage ernst. Tijd verstrijkt en dan ontdek je dat deze bug toch een groot effect heeft op een hoger niveau, zoals het onvermogen om af te drukken. Dit opent deuren naar andere processen, want in softwaretesten geldt vaak: 'verander je hier iets, dan heeft dat elders impact'. Niet alleen dat, één bug kan een specifieke testaanpak vereisen. Daarom zijn er talloze softwaretesttechnieken beschikbaar. Om softwaretesten goed te begrijpen, is diepgaande theoretische kennis nodig, en moet je verschillende aspecten en niveaus van diepgang kunnen benaderen. Dit vereist de vaardigheid om zowel te simplificeren als een holistische kijk te hanteren en het grotere geheel te overzien. In- en uitzoomen, dat is de sleutel!" 3-11-2023 aanvulling. Bij het teruglezen van de blog was ik er in zijn algeheel content mee. Toch wil ik er nog een extra aanvulling op doen bij nader inzien. Wat je vaak ziet in het testen (en dus het bepalen van starten en stoppen) is dat requirements in een soort van hiërarchische structuur aan elkaar hangen als je ze uittekent of opstelt. Zie onderstaande plaatje: Echter, dat is geen garantie voor het juist in scope hebben van de (daadwerkelijke) prioriteiten.
Daarmee bedoel ik dat soms een requirement als zeer onbelangrijk word bestempeld. Naarmate tijd verstrijkt en (al dan niet door testen) meer info wordt ingewonnen, blijkt toch dat dat ene item een heel stuk belangrijker is dan het in eerste instantie leek. Niet altijd wordt de prioriteit in het item dan goed bijgehouden, resulterend ook niet goed in scope gehouden in het SCRUM proces. Kortom, de begripsvorming dat het starten kan fluctueren ("zie zoom-in text en video's") en het stoppen kan fluctueren ("zie zoom-out tekst en video's") wordt nog eens bemoeilijkt doordat de scope (wat testen we) bemoeilijkt wordt doordat items omhoog en omlaag schieten qua prioriteiten. Had ik al gezegd dat software testen best moeilijk is? Ik benadruk het nog maar eens opnieuw... software testen is moeilijk! (of zoom ik nu misschien wat te ver uit? ;) )
0 Comments
Op 2 oktober is de vijfde blog in de reeks van zes blogs van Polteq gepubliceerd. Zoals eerder aangegeven, zal ik deze keer ook een analyse presenteren. Over het algemeen ben ik het eens met de geformuleerde stellingen. Ik zou echter graag een aanvullende opmerking willen maken: Het feit dat een organisatie terughoudend is om legacy-code aan te raken, kan direct verband houden met de kwaliteit van het testproces! Hier zijn enkele essentiële overwegingen: 1. Het gebruik van adequate requirements: Is de organisatie in staat om goede requirements op te stellen en worden deze bijgehouden wanneer ze veranderen? (CRUD administratie) 2. Testdekking van de requirements: Worden alle requirements op een systematische wijze getest, zodat het duidelijk is welke (regressie)tests overeenkomen met welke acceptatiecriteria of requirements? Bijvoorbeeld: Automatiseringstest #1: test requirement nummers 3, 15 en 416. Het is van belang om eerlijk te zijn tegenover de organisatie over haar positie in dit opzicht. Hebben we het zo ingeregeld, of niet? Het is zwart/wit. 3. De uitdaging van legacy-code: Stel, er is daadwerkelijke testautomatisering voor legacy-code die requirements test. Hier kan een significant probleem ontstaan, Voorbeeld: Requirement 416 stelt dat wanneer een 5 wordt ingevoerd in het eerste invoerveld van scherm 1 en op 'submit' wordt gedrukt, er √9 moet verschijnen. In 2007 begreep iedereen deze vereiste en was alles duidelijk. Maar na verloop van tijd -en de groei van de monoliet- kan niemand zich meer herinneren waarom requirement 416 tot √9 moest leiden. Dit is in het bijzonder het geval wanneer dit werd ontwikkeld in de watervalmethode, waarbij alles uitgebreid werd beschreven in technische ontwerpen (T.O.'s) en functionele ontwerpen (F.O.'s) en later is overgegaan op Agile. Het is belangrijk op te merken dat in de Agile Scrum-methodologie vaak niet wordt gewerkt met traditionele requirements, maar eerder met User Stories en soms andere varianten zoals probleembeschrijvingen. Het kan soms een hele Sprint duren voordat een User Story volledig wordt begrepen. (Terzijde: Zelfs als tester kun je meemaken dat iemand een Demo geeft van de opgeleverde functionaliteit en pas dan vallen er kwartjes van de (echte/volledige) werking.) In een dergelijke situatie is het vier maanden later al vaak niet meer duidelijk welke geautomatiseerde tests welke requirements testen en/of de resultaten daarvan juist of onjuist zijn, laat staan jaren later. Kortom, de terughoudendheid om legacy-code aan te passen is niet altijd toe te schrijven aan onwil of onvermogen, maar eerder aan de complexiteit en vaak verwarrende aard van de vereisten en tests binnen een evoluerende ontwikkelomgeving. De programmeercode is wel leesbaar, dat is niet altijd het belangrijkste punt, maar de context van destijds is kwijt geraakt. In veel omgevingen is er zogezegd al niet een test dat "requirement 416 verifieert" en/of als deze er al wel is en NA de code aanpassing rolt ⚅ er een ANDERE waarde uit... -> "Geen idee of deze binnen de marges valt, maar √9 is de uitkomst niet meer!". Het effect is nog meer reden voor: niemand durft het nog te wijzigen! |
Categories :
All
120 unieke bezoekers per week.
Uw banner ook hier? Dat kan voor weinig. Tweet naar @testensoftware AuthorMotto: Archives
March 2024
This website uses marketing and tracking technologies. Opting out of this will opt you out of all cookies, except for those needed to run the website. Note that some products may not work as well without tracking cookies. Opt Out of Cookies |