Steeds vaker gaan organisaties die een traditioneel lineair proces voor systeemontwikkeling hanteren over op agile ontwikkeling. Redenen waarom organisaties kiezen voor agile zijn onder andere: sneller resultaten behalen, beter inspelen op de -vaak wisselende- wensen van de gebruikers en gebruikmaken van de moderne technologieën. Maar wat betekent het eigenlijk om systemen agile te ontwikkelen? En wat is de impact op het testen?

Verschillen agile en lineair ontwikkelen

De belangrijkste verschillen tussen een agile en een traditioneel proces zijn:

  • Bij een lineair proces wordt het gehele systeem ontworpen en gebouwd in een aantal fases. Deze fases bestrijken een relatief lange periode, waarna uiteindelijk het eindproduct ter acceptatie wordt opgeleverd aan de gebruikersorganisatie.
  • Bij een agile proces wordt het geheel opgedeeld in korte periodes (iteraties of sprints) van 1 tot 4 weken. Hierbij wordt telkens een deel van de gewenste functionaliteit opgeleverd aan de gebruikersorganisatie.
  • Bij lineair ontwikkelen is een aantal van die stappen specifiek bedoeld om de kwaliteit van het systeem op verschillende aspecten te controleren.
  • Bij agile ontwikkelen wordt ook het testen door alle teamleden gedaan gedurende de gehele iteratie.

Waarom kiezen voor agile ontwikkelen?

Hoewel lineair ontwikkelen in sommige situaties nog zeker zijn waarde zal behouden, zien we dat agile steeds meer de voorkeur krijgt. De redenen hiervoor zijn:

  • Bij lineair ontwikkelen moet de organisatie vooraf alle wensen helder hebben en eenduidig formuleren. De organisatie ziet pas na het gehele ontwikkelproces wat het eindresultaat is. Het aanpassen van gewijzigde inzichten of wensen tijdens en na het proces is kostbaar.
  • Bij agile ontwikkelen krijgt de organisatie na elke iteratie te zien wat er tot dusver is ontwikkeld. De kans dat de inzichten na een aantal weken is gewijzigd, is gering. Als dat al zo is dan is de aanpassing relatief goedkoop. Het kan gebeuren dat de organisatie als gevolg van een opgeleverd resultaat inderdaad andere ideeën voor het vervolg heeft. Dit betekent dat er uiteindelijk iets anders wordt ontwikkeld dan initieel bedacht. En dit heeft dan nauwelijks extra budget gekost.

Wat betekent agile werken voor de betrokkenen?

Naast deze verschillen tussen het agile en lineair ontwikkelen, zijn er ook grote verschillen voor de betrokkenen. De belangrijkste verschillen zijn:

  • Een lineair proces bestaat uit voor alle betrokkenen uit duidelijk afgebakende stappen met omschreven input en output. De activiteiten binnen deze stappen worden door verschillende specialisten uitgevoerd, ieder met hun eigen verantwoordelijkheid
  • Bij agile ontwikkelen wordt per iteratie bekeken wat in die periode wordt uitgewerkt en doen de teamleden dat gezamenlijk. De rollen vervagen.

Een medewerker die daar veel van merkt, is de tester. De tester is niet meer de kwaliteitscontroleur, die achteraf de software test en ingeval van fouten terugstuurt. De tester is een teamlid dat vanaf het begin mede verantwoordelijkheid draagt voor de ontwikkeling van het systeem. Zo draagt de tester bij aan het op juiste wijze ontwerpen en bouwen van systemen die voldoen aan de wens van de gebruiker.

Meerdere rollen voor de tester

Teamleden vervullen binnen een agile proces steeds vaker meer dan 1 rol. De tester vervult vaak minimaal 2 rollen, naast tester kan dat de rol zijn van businessanalist, informatieanalist of ontwikkelaar. Op deze manier draagt de tester in het team optimaal bij aan een kwalitatief hoogwaardig en door de organisatie geaccepteerd systeem. Kortom de rol van de tester verbreedt zich.

Specification by Example

In zijn nieuwe rol gebruikt de tester nieuwe technieken, zoals Specification by Example, die ondersteunen bij het omschrijven van de functionaliteit. De testontwerp- en specificatietechnieken die de gespecialiseerde tester van oudsher al beheerst, zijn hierbij van groot belang. Tijdens het opstellen van de specificaties is de tester met behulp van deze technieken in staat om kritisch te kijken naar de specificaties die het team opstelt.

Shift Left

agile testen en ontwikkelenDoor de jaren heen hebben testers ervoor gestreden om eerder betrokken te worden bij het ontwikkelproces. Het uitvoeren van de productrisicoanalyse, het opstellen van de teststrategie, het houden van statische tests zijn voorbeelden van activiteiten vroeg in het ontwikkelproces waarbij testers een belangrijke rol kunnen spelen. Immers, de Amerikaanse software engineer en professor Barry Boehm rekende het ons al lang geleden voor: zo vroeg mogelijk in het proces fouten vinden, is relatief goedkoop. In de testwereld wordt dit ook wel de ‘Shift Left’ genoemd, het opschuiven naar de linkerzijde van het V-model. Dat de testers voor die betrokkenheid altijd erg hun best hebben moeten doen, geeft aan dat de andere disciplines binnen het systeemontwikkelproces niet  overtuigd waren (zijn) van het nut van vroeg betrekken van testers.

De rol van de tester verandert

Door de gewijzigde aanpak voor ontwikkelen en testen binnen een agile ontwikkelproces wordt de tester nu wel vanaf het begin betrokken. De tester heeft een belangrijke rol bij het ontwerp, het vroeg in het proces opstellen van testgevallen en het continu testen van alle software. Dit alles leidt tot ‘first-time-right’ leveren van systemen die daadwerkelijk doen wat de organisatie nodig heeft. De rol van de tester verandert dus. Dat betekent niet dat de testexpertise overbodig wordt. In tegendeel, door het vermengen van de activiteiten in een agile proces is de kennis en ervaring van de tester misschien wel belangrijker dan ooit.

Overstap van lineair naar agile

Wanneer een organisatie over wil van lineaire naar agile systeemontwikkeling betekent dat een grote stap. Als die stap goed wordt gezet, heeft dat positieve gevolgen voor alle betrokkenen, niet in de laatste plaats de testers.

Menu