TESTKRANT MAGAZINE VOOR DE NEDERLANDSE TESTER
Ik ben een contextdriven tester! Joh? Echt waar? Nou en? door HUIB SCHOOTS
Verder artikelen van: Jos van Rooyen Erik van Veendendaal Jan Jaap Cannegieter Martijn de Vrieze Nummer 2 Dec 2012
Gratis magazine van TestNieuws.nl - Meer info op www.testkrant.nl
Voorwoord Met de feestdagen voor de deur is het een mooi moment om de tweede TestKrant uit te brengen. Dan kunnen jullie hem uitgebreid lezen tijdens de kerst. Op verzoek heb ik het PDF bestand kleiner gemaakt zodat het downloaden sneller gaat. De vorige editie was bijna 9 mb en deze keer is het bestand nog geen 2 mb. Al doende leert men zullen we maar zeggen. Als jullie nog meer suggesties of opmerkingen hebben dan hoor ik dat uiteraard graag. In dit nummer weer vier interessante artikelen. Als eerste Huib Schoots die vertelt wat het populaire context-driven testen nu precies is en hoe het er uitziet in de praktijk. Een artikel boordevol informatie en ook veel waardevolle verwijzingen waarmee je na het lezen van het verhaal mee aan de slag kunt. Dan Jos van Rooyen die ingaat op het versneld opzetten van testautomatisering en het gebruik van testtooling binnen agile projecten vanwege de regelmatige regressietesten die daarbinnen plaatsvinden. Vervolgens Erik van Veenendaal en Jan Jaap Cannegieter. Die hebben een stuk geschreven over de volwassenheid van testen in Nederland naar aanleiding van een benchmark onderzoek dat ze hebben uitgevoerd op basis van TMMi bij bijna 50 bedrijven. Mooi om te zien dat er een aantal goede stappen zijn gezet, maar het kan nog beter volgens Erik en Jan Jaap. Als laatste komt Martijn de Vrieze aan het woord die uiteenzet waarom testautomatisering nu wel gaat werken en wellicht toch geen windei maar een gouden ei blijkt te zijn. Ik wens jullie veel leesplezier en prettige feestdagen, tot volgend jaar, Marco van der Spek Oprichter van TestNieuws, TestNewsOnline en de TestKrant
Inhoudsopgave Voorwoord
door Marco van der Spek .............................................................................................
2
Ik ben een context-driven tester! Joh? Echt waar? Nou en? door Huib Schoots ........................................................................................................ 3 Het gebruik van testautomatisering binnen Agile projecten door Jos van Rooyen ................................................................................................... 1 0 De volwassenheid van testen in Nederland
door Erik van Veenendaal en Jan Jaap Cannegieter ..................................................
15
Testautomatisering. Waarom gaat het nu wel werken? door Martijn de Vrieze ................................................................................................. 1 9 Disclaimer .................................................................................................................... 22
2
TestKrant - nummer 2
www.testkrant.nl
Ik ben een contextdriven tester! Joh? Echt waar? Nou en? Door Huib Schoots
Begin dit jaar was er op TestNet een thema avond over ContextDriven Testen die erg goed bezocht was. Dit ondanks het feit dat James Bach en Michael Bolton alleen via een video verbinding te zien waren. Ook uit de TestNet enquête voor het programma 201 3 werd duidelijk dat context-driven testen een populair onderwerp is. Maar wat is context-driven testen nu precies? En hoe ziet dat er dan in de praktijk uit?
3
TestKrant nummer 2
www.testkrant.nl
Wat is contextdriven testen?
Context-driven testen is lastig te beschrijven. Vooral omdat iedereen het anders ervaart. Vraag 1 0 context-driven testers om een definitie en een zeker aantal zal “dat hangt er van af” antwoorden. In zekere zin is dat ook zo. Er is niet echt een definitie waar de hele community zich achter zal scharen. Want context-driven testen is niet alleen een aanpak, maar ook een paradigma en een community [1 ]. Het uitgangspunt voor een context-driven tester is het feit dat de wereld om hem heen een complexe, veranderlijke en onzekere plek is. Daarin is het dus noodzakelijk om je voortdurend aan te passen aan de context van dat moment. We zullen vaardigheden moeten ontwikkelen om te kunnen omgaan met de complexe, vaak dubbelzinnige en vluchtige, steeds veranderende wereld om ons heen. In de blogpost gepubliceerd op de website van DEWT [2] zegt James Bach: “Exploratory testing is het ultieme in adaptiviteit. Aanpassen, aanpassen, aanpassen, dat is exploratief testen. Exploratory testing is wanneer het ontwerp proces van testen en het uitvoeren van de test zijn getrouwd, samen in een interactief proces”. Toch een definitie?
James Bach en Cem Kaner hebben in 2009 een blogpost geschreven waarin ze contextdriven testen als volgt definiëren [3]: “Context-driven testers kiezen hun test doelstellingen, technieken en deliverables (met inbegrip van test documentatie) door eerst te kijken naar de details van de specifieke situatie, met inbegrip van de wensen van de stakeholders. De essentie van context-driven testen is het toepassen van kennis en beoordelingsvermogen dat past in het project. De Context-Driven Test School plaatst deze benadering van het testen binnen een humanistische, sociaal en ethisch kader.
we krijgen. In plaats van te proberen "best practices" toe te passen, accepteren we dat een zeer verschillende aanpak het beste werkt in verschillende omstandigheden (zelfs verschillende definities van veel voorkomende test termen).” De zeven principes
Het meest opvallende dat geschreven is over context-driven testen zijn de 7 principes [4]. Er wordt vaak naar verwezen, dus een verhaal over context-driven testen zou niet compleet zijn zonder deze principes: 1 . De waarde van elke aanpak hangt af van de context. 2. Er zijn goede aanpakken in een bepaalde context, maar er zijn geen 'best practices'. 3. Mensen die samen werken, zijn het belangrijkste onderdeel van de context van ieder project. 4. Projecten verlopen na verloop van tijd op een manier die vaak niet voorspelbaar is. 5. Het product is een oplossing. Als het probleem niet is opgelost, werkt het product dus niet. 6. Goed software testen is een uitdagend intellectueel proces. 7. Alleen door oordeelsvorming en vaardigheid, coöperatief uitgeoefend gedurende het gehele project, zijn wij in staat om de juiste dingen te doen op het juiste moment om onze producten effectief te testen. Michael Bolton verwijst in zijn key-note op Let’s Test in 201 2 [5] naar de zeven principes van de context-driven school. Hij wijst erop dat elk beginsel onzekerheid in zich draagt. In een complexe wereld, moeten we in staat zijn om te gaan met die onzekerheid.
Uiteindelijk gaat context-driven testen over het beste doen wat we kunnen, met dat wat 4
TestKrant - nummer 2
www.testkrant.nl
Contextdriven of toch niet?
Onder de 7 principes op de website [4] wordt ook uitgelegd dat er vormen zijn die contextdriven lijken, maar dat niet zijn. Contextaware (context-bewust) lijkt het meest op context-driven. Het voorbeeld op de website maakt het duidelijk. De IEEE Standaard 829 voor test documentatie begint met een visie op goede documentatie en moedigt de tester aan om de documentatie aan te passen aan de behoeften van de stakeholders. Dit is context-aware. Voor context-driven testing zijn de eisen van de stakeholders, de praktische beperkingen en mogelijkheden van het project het uitgangspunt. Voor de context-gedreven tester biedt de standaard suggesties in plaats van voorschriften. Voor meer uitleg over context-bewust, context-specifiek en context-imperial verwijs ik je graag naar de eerder genoemde website. Contextdriven: een ultiem voorbeeld
Ik herinner me een verhaal dat Michael Bolton vertelde over een ontmoeting tussen James Bach en Jerry Weinberg. Hij heeft het ook gebruikt in zijn key-note op CAST in 2011 [6]. Jerry vraagt James wat de eerste verantwoordelijkheid is van een tester. James antwoord dat hij er wel 5 weet en dat hij niet kan kiezen. Jerry zegt: “De eerste verantwoordelijkheid van een tester is om de situatie te verkennen. Zoiets als hoe je net de beperkingen van mijn vraag hebt uitgedaagd. Een tester is iemand die weet dat alles anders kan zijn. Testers moeten nieuwsgierig zijn. Dingen een beetje opschudden, zodat mensen dingen in een ander licht kunnen zien”.
gevoel en de randvoorwaarden van de vraag aftasten. Je hardop afvragen of dat wat ze van je willen, wel het beste is. Een eigen aanpak
Afgelopen juni schreef ik een blogpost met de naam "Adaptibility vs Context-Driven" [7], die leidde tot een zeer interessante discussie op mijn blog. Joep Schuurkens schreef een geweldige reactie: "Volgens mij is een van de belangrijke aspecten van context -driven een enigszins filosofische testaanpak. Stel vragen, wees sceptisch, zet vraagtekens bij de validiteit (geconstrueerde "geldigheid") van wat er gezegd wordt door jezelf en anderen. Dit betekent dat je jouw aanpak eigen maakt op twee verschillende manieren. Allereerst, het is je persoonlijke, op maat aanpak en van niemand anders. Er is geen externe autoriteit om naar te verwijzen. Jij bent je eigen autoriteit als het gaat om het uitleggen en verdedigen van je testaanpak. Ten tweede, jij kent je aanpak van binnen en van buiten. Wat in die aanpak zit, is er omdat jij dat zo besloten hebt! En je kunt uitleggen waarom. Je kunt een beschrijving geven van je aanpak in drie zinnen, drie uur of drie dagen, afhankelijk van de situatie." Waarop Jesper L Ottosen zegt: “ik zeg meestal dat ik zo context gedreven ben als de context toelaat”. Lessons learned in software testing
Er zijn geen boeken die context-driven testen beschrijven. Met de voorgaande informatie lijkt dat logisch. Het enige boek dat in de
Lees het hele verhaal nog eens rustig na in de volledige transcriptie van de key-note (in het Engels). Voor mij is dit een fantastisch voorbeeld van hoe context-driven tester de vraag zou beantwoorden: werken met je 5
TestKrant - nummer 2
www.testkrant.nl
buurt komt, is “Lessons learned in software testing: a context-driven approach” door Cem Kaner, James Bach en Bret Pettichord. Geen boek dat de aanpak beschrijft, maar een boek vol met lessen die niet altijd waar hoeven te zijn. Of zoals de schrijvers zeggen in het voorwoord: het zijn hun lessen uit hun context en ze vragen je om vooral kritisch te zijn. Het is ook zeker geen boek dat je in één ruk uit zal lezen omdat de voorbeelden veelal los van elkaar staan. Tip: zie het als een scheurkalender: leg het boek op je bureau en lees 1 les per dag! Rapid Software Testen
Toch is er een prima manier om in aanraking te komen met context-driven testen en het te ervaren: rapid software testing [8]. Een training ontwikkelt door James Bach en Michael Bolton. En de beste training die ik in mijn leven gehad heb. Waarom? Omdat het me fundamenteel anders heeft laten denken over bepaalde dingen in mijn vak. Een bloemlezing van thema’s en onderwerpen die aan bod komen in de training zijn: ken uw missie, wees een dienst en geen belemmering, blijf vragen, ben kritisch, ben empirisch (beroep je resultaten uit experimenten en niet op theorie), verantwoordelijkheid, aandacht testbaarheid, heuristieken en een heuristische aanpak van testen, exploratie en een exploratieve aanpak, modellen, geloofwaardigheid, veiligheid taal, diversiteit en het gebruik van diverse half-maatregelen, focus op vaardigheden in plaats van procedures, de kunst van het verhalen vertellen over testen, testen is mensenwerk, denken: kritisch denken, maar ook systeemdenken, stilzwijgende en expliciete kennis en nog veel meer.
Testen als een sociale wetenschap
Ik zie testen als een sociale wetenschap. Testen gaat niet over techniek alleen. Het gaat veel meer over mensen en sociale interactie. Michael Bolton ging hier op in tijdens zijn presentatie “Testing Through The Qualitative Lens” op EuroStar 201 2 in Amsterdam waar hij zei: “Testen kan in het beste geval alleen beloven wat de sociale wetenschappen leveren: gedeeltelijke antwoorden die nuttig kunnen zijn”. Bovendien zegt hij: “Uitstekend testen is niet alleen maar computer wetenschap. Het omvat informatica, wiskunde en technische domeinen. Maar door je alleen te richten op programma's en functies laat je andere vragen over waarde en relaties, waaronder mensen, weg. Voor mij is een uitstekend testen meer als antropologie: interdisciplinair, systeem gericht, onderzoekend en het vertelt verhalen.” Michael zet in de presentatie exacte wetenschappen af tegen de sociale.
Al deze onderwerpen zouden een heel artikel op zich zelf waard zijn en het gaat te ver om hier nu in detail op in te gaan. Ik adviseer eens te kijken op de websites van James of Michael voor meer informatie. 6
TestKrant - nummer 2
www.testkrant.nl
Leren
Ik heb eerder op testnieuws.nl een drieluik column geschreven met de titel “Hoe word ik een software test expert” [9]. Het gaat over wat een goede tester maakt en geeft tips over hoe je jezelf kunt bekwamen in het mooie testvak. De grote lijn is: blijf leren! Jaarlijks een paar dagen training is niet genoeg. Om echte goed te worden in je vak, zal je veel, heel veel, moeten oefenen! In een blogpost zegt James Bach [1 0]: “testen is een oplossing voor een moeilijk probleem dat moet worden afgestemd op de context van het project. Testen is daarom een menselijke activiteit die een grote vaardigheid vereist om het goed te doen. Daarom moeten we het serieus bestuderen. We moeten ons vak oefenen. Context-driven testers streven ernaar om de Jedi Knights van het testen te worden”. Peer workshops
Het valt me op dat context-driven testers vaak bloggen. Dit helpt om ideeën uit te wisselen, maar ook om je ideeën aan te scherpen en erover te discussiëren. Continue leren is heel normaal voor context-driven testers. Via twitter worden links uitgewisseld en de community is erg actief. Het beste voorbeeld daarvan zijn peer conferenties. Over de hele wereld worden door kleine groepjes enthousiaste context-driven testers bijeenkomsten georganiseerd die vaak een hele dag of soms zelf een heel weekend duren. Tijdens deze bijeenkomsten wordt er serieus over testen gepraat. Hierover zegt James Bach op zijn blog [11 ]: “Een geweldige manier om de gevaren van best practices te vermijden, is door te praten over je eigen ervaringen en voorkeuren, in plaats van algemene voorschriften te maken. Dit is de reden waarom, in peer-conferenties zoals LAWST, we ons richten op ervarings verhalen (eigenlijk noemde we ze 'oorlogsverhalen’ tot onze terminologie werd aangevallen door bloeddorstige pacifisten) in plaats van te pleiten voor goede practices.” 7
Zelf zoek ik de community graag op. In peer conferenties of de reguliere conferenties waar we regelmatig in de avond of de dag voor de conferentie met een groep bij elkaar komen om met elkaar te praten over ons vak en van elkaar te leren. Het is geen kenmerk van de context-driven community, er zijn veel meer mensen die peer conferenties organiseren of bijwonen. Maar het valt me wel op dat er heel veel een context-driven inslag of origine hebben. Mijn persoonlijke ervaring
Het boek Lessons Learned prijs ik al jaren aan als één van de beste boeken over testen die ik ooit gelezen heb. Daarnaast was ik al een tijd geïnteresseerd in exploratief testen en de blogs van Michael Bolton en James Bach. De cursus rapid software testen was de aftrap van een grote verandering in mijn denken over testen. Een groot aantal puzzel stukjes die al jaren in mijn hoofd zaten vielen ineens op zijn plek. Bepaalde dingen kregen een naam. Inmiddels ben ik vrij actief op twitter, heb ik ook een blog en heb ik samen met 6 andere testers een peer workshop DEWT (Dutch Exploratory Workshop on Software Testing) opgericht. Ik heb veel contact met mensen uit de context-driven community, via twitter, Skype en ik spreek hen regelmatig op conferenties. We praten over testen, delen interessante artikelen en boeken, reviewen elkaars artikelen, maar delen ook testware. Met een aantal deel ik een passie voor puzzels en we dagen elkaar regelmatig uit. Met James Bach doe ik Skype coaching [1 2] en dat is intensief maar bijzonder leerzaam. Ik kies een onderwerp of we praten over wat me bezig houdt en zo komen we op een onderwerp. Sessies duren ongeveer een uur en daarin stelt James vragen of geeft korte opdrachten en ik werk die direct uit, leg uit wat ik denk en geef antwoorden. Op korte termijn wil ik dat zelf ook gaan doen als coach. Hou de werkgroep training en coaching van TestNet [1 3] in de gaten!
TestKrant - nummer 2
www.testkrant.nl
En jij?
Mogelijk heeft dit artikel je interesse gewerkt en wil je er meer over lezen of verder over praten? Op mijn weblog staat een mooie lijst met links en de leden van DEWT helpen je graag verder. Neem contact met ons op! Huib Schoots is agile test consultant bij codecentric waar hij zijn passie voor testen deelt door coaching, advies, training en het geven van presentaties. Huib is nieuwsgierig, gepassioneerd, context-driven en probeert alles te lezen dat ooit over testen gepubliceerd is. Lid van DEWT, bestuurslid van TestNet en co-auteur van een boek over de toekomst van testen. Huib schrijft zijn blog op magnifiant.com.
Bronnen:
[1 ] Mind map gebruikt tijdens presentatie Contextdriven Testing, Michael Bolton & James Bach, TestNet Thema avond Januari 201 2 (http://www.dewt.files.wordpress.com/201 2/02/pdf-cdt1 .pdf) [2] Blogpost DEWT: http://www.dewt.wordpress.com/201 2/02/09/contextdriven-testing-testnet/ [3] Blogpost Cem Kaner en James Bach: What is context-driven testing? (http://kaner.com/?p=49) [4] Website: http://www.context-driven-testing.com [5] If it is not context-driven, you can’t do it here, Michael Bolton, key-note Let’s Test Conference, 201 2 (http://www.lets-test.com/wpcontent/uploads/201 2/05/IfItsNotContextDriven.pdf) [6] Context-driven testing, Michael Bolton, key-note CAST 2011 : http://www.developsense.com/presentations/2011 -08CAST-ContextDrivenTesting.pdf [7] Blogpost Huib Schoots: Adaptability vs ContextDriven (http://www.huibschoots.nl/wordpress/?p=825) [8] RST materiaal: http://www.satisfice.com/rst.pdf [9] Column Huib Schoots: Hoe word ik een software test expert? (http://www.testnieuws.nl/2011 /1 2/27/hoeword-ik-een-software-test-expert-deel-3/) [1 0] Blogpost James Bach: The Dual Nature of Context-Driven Testing (http://www.satisfice.com/blog/archives/565) [11 ] Blogpost James Bach: The Great Implication of Context-Driven Methodology (http://www.satisfice.com/blog/archives/1 40) [1 2] Website AST over Skype coaching (http://www.associationforsoftwaretesting.org/about/me mbership/skype-coaching/) [1 3] Website werkgroep training en coaching van TestNet (https://www.testnet.org/werkgroepen/traininga-coaching/menu-id-1 4.html) Meer info:
Website DEWT: http://www.dewt.wordpress.com/ Links op mijn weblog: http://www.huibschoots.nl/links Website James Bach: http://www.satisfice.com Website Michael Bolton: http://www.developsense.com Website Cem Kaner: http://www.kaner.com
8
TestKrant - nummer 2
www.testkrant.nl
9
Het gebruik van testautomatisering binnen Agile projecten Door Jos van Rooyen Best practices en randvoorwaarden
Agile krijgt veel aandacht en is tegenwoordig niet meer weg te denken in de IT. Veel bedrijven en organisaties stappen over op Agile ontwikkelmethoden, en dan met name is Scrum erg populair. Bedrijven passen de Agile methodiek toe maar dit gaat niet altijd van een ‘leien dakje’. De overgang van de traditionele Watervalmethode naar Agile zorgt voor grote uitdagingen, zoals het aanhaken op de stuurgroep en de inbedding in de totale projectportfolio. Daarnaast zijn er vooral ook veel positieve ervaringen met Agile. Zo wordt vanaf het begin alle disciplines continue betrokken bij het project en doordat er gewerkt wordt in korte sprints wordt er sneller bruikbare software opgeleverd.
10
TestKrant - nummer 2
www.testkrant.nl
Agile Testers
De testdiscipline binnen een organisatie heeft natuurlijk ook met de ‘nieuwe’ Agile werkvorm te maken. Inmiddels is een grote populatie testers werkzaam als Agile tester en zij merken dat iedere Agile tester dagelijks met dezelfde uitdagingen en vraagstukken te maken heeft. Enerzijds is ‘de tester’ gewend aan methodes, zoals TMap Next, die bij veel Agile implementaties in eerste instantie nauwelijks bruikbaar blijken te zijn. Verder blijkt ook de structuur veranderd te zijn bij Agile testen, en daardoor ook het houvast waar testers gewend aan zijn, bijvoorbeeld de testbasis als voorwaarde, entry-exitcriteria, et cetera. Dit heeft veel effect op de manier waarop een tester zijn vak kan uitvoeren. Anderzijds komen ook hele nieuwe vraagstukken rondom testen versneld opzetten waarvoor elke organisatie zijn eigen oplossing bedenkt en waarbij nieuwe ervaringen worden opgedaan. Bijvoorbeeld de toepassing van testautomatisering vanwege regelmatige regressietesten en testtooling in het bijzonder. Waar loop je dan als organisatie tegen aan binnen Agile projecten? Dit artikel gaat daar verder op in. We zoomen niet in op de theorie. De best practices en de daaraan gekoppelde randvoorwaarden staan centraal.
Best practices
Een best practice is een techniek, werkmethode, proces of activiteit die zich als effectiever heeft bewezen dan enige andere techniek of methode dan ook. De gedachte is dat met de juiste werkmethode het werk uitgevoerd kan worden met minder problemen, minder onvoorzienbare complicaties en betere eindresultaten. Welke best practices kunnen we in Agile projecten onderscheiden? In Agile projecten zie je dat er veel wordt gekozen voor open source testautomatiserings tooling zoals Fitnesse en Selenium. Selenium is hierbij een tool die 11
voor het testen van webapplicaties wordt ingezet, Fitnesse is een tool die voor testautomatisering “onder de motorkap” (tegen API’s, Databases et cetera) gebruikt wordt. Een van de belangrijkste redenen voor het gebruik van deze open source tools zijn de initiële kosten. Als we inzoomen op Fitnesse dan kunnen we zogenaamde fixtures onderkennen. Deze fixtures, in Java geschreven, worden ontwikkeld om herbruikbare componenten op te leveren waarmee testgevallen fysiek gemaakt kunnen worden. Tegenwoordig zie je dat zogenaamde Slim fixtures binnen Fitnesse de standaard worden. Door het gebruik van deze fixtures wordt de testautomatiseringsoplossing minder gevoelig voor wijzigingen. Denk bijvoorbeeld aan het wijzigen van een kolomnaam in een tabel. Als je bijvoorbeeld de definitie van de tabel in een fixture hebt gezet, hoef je de aanpassing van de kolomnaam maar op één plaats te doen, in plaats van op iedere plek in de testgevallen waar deze specifieke tabel gebruikt wordt. Om een link terug te leggen naar bestaande testmethodieken kun je een Slim Java Fixture vergelijken met wat in de TestFrame terminologie een geautomatiseerd actiewoord wordt genoemd. Een andere best practice is het werken met het principe van specification by example. Kort gezegd gaat het er bij specification by example om, om requirements in de vorm van voorbeelden, zogenaamde key examples, te beschrijven. Het idee is dat door de requirements als voorbeelden te beschrijven, de communicatie tussen de verschillende teamrollen (developers, testers, business analisten) verbetert. Je hebt als ware een "single source of truth" gecreëerd. Specification by example staat uitgebreid beschreven in het gelijknamige boek van Gojko Adzic. De zo ontwikkelde specifications vormen een goede bron van documentatie. Altijd een aandachtspunt binnen Agile projecten.
TestKrant - nummer 2
www.testkrant.nl
Zoals in veel projecten is het belangrijk om niet telkens weer het wiel opnieuw uit te vinden. Fixtures, ontwikkeld in het ene project, zijn in principe ook herbruikbaar in andere soortgelijke projecten. Denk hierbij bijvoorbeeld aan specifiek voor ETL ontwikkelde fixtures.
uitgevoerd cq afgerond. Per sprint worden
Een best practice die erg bruikbaar is betreft ‘start small, fail fast’. Oftewel: begin klein, geef feedback op het gemaakte. Houd het beheersbaar! Begin met een testautomatiserings tool, doe ervaring op, leer ervan en ga daarna uitbreiden. Selecteer het onderdeel aan functionaliteit waar een quickwin te halen valt en automatiseer dat onderdeel. Op deze manier kan het team kennis maken met testautomatisering en zien wat de ‘opbrengsten’ voor het team zijn. Er kan ook al snel blijken dat de tool waarmee de testautomatisering wordt aangevlogen niet goed werkt binnen de projectcontext. Op basis hiervan kunnen de juiste vervolgstappen worden bepaald. Belangrijk is dan wel dat je de opbrengsten meet. Een laatste best practice die door velen als bruikbaar wordt beschouwd is dat testen van het gehele team is. Bij Agile vervagen de grenzen van de verschillende disciplines. Een tester is vanuit zijn rol in een Agile project ook een beetje ontwikkelaar en een ontwikkelaar is ook een beetje tester. Het idee is dat productkwaliteit een teamaangelegenheid is en geen testaangelegenheid. De test die een team voortbrengt is van het team en voor het team. Binnen de Agile context kan dan wellicht de testautomatiseringsoplossing hoofdzakelijk uitgewerkt zijn door een tester, het staat de verschillende rollen in het team vrij de testautomatiseringsoplossing ook voor eigen doelstellingen te gebruiken. Randvoorwaarden
Testautomatisering is van belang, om als testdiscipline binnen je team de snelheid van de software ontwikkeling bij te houden. Een testvorm bij uitstek om te automatiseren is de regressietest. Een regressietest zal qua omvang toenemen per sprint die wordt 12
een aantal testgevallen geselecteerd (bijvoorbeeld naar aanleiding van bevindingen) die in aanmerking komen om op te nemen in de regressietest. Om succesvol testautomatisering toe te kunnen passen binnen Agile projecten zijn een aantal randvoorwaarden van belang.
TestKrant - nummer 2
www.testkrant.nl
Een belangrijke randvoorwaarde is opleiding. Training en opleiding zijn belangrijk voor de tool waarmee je werkt. Echter, een nadeel van bijvoorbeeld Open Source tools is, dat er weinig opleidingsmateriaal voorhanden is. Een oplossing kan zijn dat een zogenaamde Toolcoach beschikbaar is om de diverse scrum teams te ondersteunen. Een andere randvoorwaarde is een goede inrichting van kennisborging. Hoe borg je de kennis die je opgedaan hebt? Leg je dat bij een overkoepelende organisatie of een team? Dit zijn vragen waar je vooraf bij stil moet staan. De al eerder genoemde wiki bij de best practices kan daartoe bijdragen. Daarnaast is teamkennis een randvoorwaarde voor het juist kunnen gebruiken van testautomatisering in Agile projecten. De teams moeten nauw kunnen samenwerken en op elkaar ingespeeld zijn. Je moet elkaar en elkaars werkwijze kennen om succesvol te kunnen samenwerken. Op de Agile manier werken omarmt face-to-face communicatie. Zorg daarom dat de fysieke afstand tussen het team minimaal is, om zodoende snel feedback van elkaar te krijgen en te weten waar iedereen mee bezig is.
Hoe meer agile projecten worden uitgevoerd waarbij testautomatisering is gebruikt hoe meer ervaring we kunnen opdoen. Laten we deze met elkaar delen! Dit artikel is mede tot stand gekomen door de bijdragen van John Kronenberg, Sanne Müskens en Sander Ulrich. Jos van Rooyen is lead consultant bij Bartosz. Sinds 1 990 heeft hij ervaring opgebouwd op het gebied van testbeleid, testmanagement, testautomatisering en het testen van software pakketten. Hij is coauteur van diverse boeken zoals, Project de Baas, TestFrame en TestGrip. Tevens heeft Jos vele artikelen gepubliceerd op diverse onderdelen van het testvak. Jos wordt regelmatig gevraagd te spreken over testen op seminars en workshops. Daarnaast is Jos actief binnen diverse werkgroepen van Testnet.
Verder is onderhoudbaarheid een randvoorwaarde. Denk goed na hoe je start, maak stappen en ga door, maar denk goed na! Houd het up-to-date. Om de testautomatiseringsoplossing, bijvoorbeeld in Fitnesse, goed te kunnen onderhouden is het verstandig om zoveel mogelijk van de onderhoudsgevoelige delen in de eerder genoemde fixtures onder te brengen. Deze fixtures moeten wel geprogrammeerd worden. Daarvoor is een ontwikkelaar met bijvoorbeeld JAVA kennis randvoorwaardelijk. De te ontwikkelen fixtures moeten opgenomen worden in de product back log. In dit artikel zijn kort een aantal best practices en randvoorwaarden benoemd voor succesvolle testautomatisering binnen Agile projecten. Uiteraard is deze lijst niet volledig. 13
TestKrant - nummer 2
www.testkrant.nl
De Testnieuws 25 komt er weer aan TestNieuws.nl publiceert elk jaar een ranglijst met de 25 meest actieve en zichtbare Nederlandse softwaretesters. Dit is dus geen ranglijst van de beste tester van Nederland. Het is een opsomming van de testers die het vaakst op de podia van de grote evenementen stonden, de meeste artikelen schreven in de bekende bladen, een boek publiceerde, actief betrokken waren bij de grote testevenementen, betrokken waren bij initiatieven binnen TestNet, ISTQB, BNTQB, TMMI en/of IREB. Kortom welke Nederlandse testers gaven het afgelopen jaar kleur. Hieronder staat de top 5 van vorig jaar. De hele lijst en de motivaties waarom deze mensen in de lijst staan vind je op http://www.testnieuws.nl/201 2/03/1 6/de-testnieuws-25-editie-2011 /
TOP 5 van 2011 1 2
Derk-Jan de Grood
Erik van Veenendaal
3
Nathalie Roosenboom de Vries
4
Bob van de Burgt
5
Jan Jaap Cannegieter
Nu het einde van het jaar 201 2 in zicht is wordt het tijd om de stand op te gaan maken. Hoe zal de top 5 er dit jaar uit zien. Zien we dezelfde gezichten, zijn er verschuivingen en/of zijn er nieuwkomers die met stip de top 25 binnen komen. Wie weet sta jij binnenkort hieronder op één van de plekken in de top 5 van 201 2.
TOP 5 van 2012 1 2
3
4
5
Als jij vindt dat je in deze lijst thuis hoort, als je bang bent dat je vergeten gaat worden of als je zeker wilt weten dat de juiste zaken meegenomen worden bij het opstellen van de ranglijst, zet dan al je prestaties van dit jaar op een rij en mail ze naar TestNieuws. Geef daarbij ook meteen aan waar eventueel bewijs bekeken of verkregen kan worden.
Stuur je prestaties voor 14 januari 2013 naar:
[email protected] 14
De volwassenheid van testen in Nederland Door Erik van Veenendaal en Jan Jaap Cannegieter
Conclusies naar aanleiding van een TMMi benchmarkonderzoek De eerste versie van TMMi, het volwassenheidsmodel voor testen, is vier jaar geleden gepubliceerd. Tientallen organisaties zijn TMMi gaan gebruiken om de volwassenheid van hun testproces te (laten) meten en hun testproces te verbeteren. Ter gelegenheid van de publicatie van het complete model hebben Erik van Veenendaal en Jan Jaap Cannegieter, beiden lid van het ontwikkelteam van TMMi en auteurs van het boek ‘De kleine TMMi’, een benchmark onderzoek uitgevoerd op basis van TMMi bij bijna 50 bedrijven. De uitkomsten van het onderzoek geven een beeld van de volwassenheid van testen in Nederland op dit moment. 15
TestKrant - nummer 2
www.testkrant.nl
Volwassenheidsniveau
Op basis van het benchmarkonderzoek blijkt dat 84% van de organisaties op niveau 1 zit, 1 0% van de organisaties zit op niveau 2 en 6% van de organisaties zit op niveau 3.
Figuur 1 : Verdeling van de TMMi niveau’s.
Het overgrote deel van de organisaties zit dus op niveau 1 . Uiteraard verschillen de organisaties binnen dit niveau nog veel in volwassenheid. Soms is sprake van een totaal chaotisch en niet gedefinieerd proces en soms is men bijna niveau 2. Er kan ook op niveau 1 sprake zijn van een succesvol testtraject. Dit wordt dan veelal bereikt door de ‘helden’ op testgebied, niet door een beheerst proces. Organisaties die op TMMi niveau 2 zitten, behoren in Nederland eigenlijk al tot de Nederlandse eredivisie van het testen. Testen op TMMi niveau 2 is een beheerst proces, met duidelijk gedefinieerde en afgestemde testsoorten. Om testen op niveau 2 uit te kunnen voeren, dient het testbeleid en de teststrategie afgeleid te zijn van de doelstellingen en het beleid van de business. Er wordt dan een productrisicoanalyse uitgevoerd, een testplan opgesteld en bewaakt, testspecificatietechnieken gebruikt en een goede testomgeving gecreëerd en beheerd. Eigenlijk niets speciaals. Organisaties op TMMi niveau 3 spelen in de Champions League. Testen op TMMi niveau 3 is volledig geïntegreerd met de ontwikkeling. Op niveau 3 is er een testorganisatie ingericht en wordt testen in de organisatie gezien als een volwaardige professie met carrièrepaden en opleidingsprogramma’s. 16
Procesgebieden
In figuur 2 zijn de scores per procesgebied van niveau 2 opgenomen.
TBS – Testbeleid en –strategie TP – Testplanning TMB – Testmonitoring en -beheersing TOU – Testontwerp en -uitvoering TO - Testomgeving Figuur 2. Scores per procesgebied van niveau 2
In figuur 2 zijn de scores per procesgebied en de standaarddeviatie opgenomen. De standaarddeviatie geeft de marges aan waarbinnen de scores zich bevinden. Uit het overzicht per procesgebied blijkt dat de operationele procesgebieden, Testontwerp en uitvoering alsmede Testomgeving, het beste ontwikkeld zijn. De standaarddeviatie is bij de tactische en strategische procesgebieden, Testbeleid en –strategie, Testplanning en Testmonitoring en –beheersing het grootst. De spreiding van de uitkomsten is daar dus het grootst. De gemiddelde score van deze tactische en strategische gebieden is dan weliswaar lager dan die van de operationele procesgebieden, maar er zijn dus zeker organisaties die Testbeleid en -strategie en Testplanning goed hebben uitgevoerd. Er zijn echter ook veel organisaties waarvoor dit niet geldt. CMMI en TMMi
Overigens blijkt ook uit de benchmark dat organisaties die CMMI geïmplementeerd hebben of hiermee bezig zijn geweest significant hoger scoren op de strategische-
TestKrant - nummer 2
www.testkrant.nl
en tactische procesgebieden. Bij deze organisaties horen Testbeleid en –strategie alsmede Testplanning tot de best ontwikkelde procesgebieden!
Figuur 3. TMMi scores bij bedrijven die wel of geen CMMI gebruiken
De verklaring hiervoor is dat organisaties, die bekend zijn met CMMI, beter zijn in het opstellen en toepassen van een beleid en daarnaast beter zijn in het plannen en monitoren van processen. Overigens geldt dit waarschijnlijk voor alle verbetermodellen. Het gaat hier waarschijnlijk vooral om ervaring met het doorvoeren van proces verbeteren. Hoewel TMMi ook goed toepasbaar is in organisaties die CMMI niet toepassen, is het implementeren van TMMi eenvoudiger voor organisaties die wel ervaring hebben met CMMI. Branchresultaten
Als we nog wat dieper op de cijfers ingaan, blijkt dat industrie (medisch, automotive, embedded software) significant beter scoort dan finance en overheid, zie figuur 4.
Testbegroten
Uit de benchmark blijkt ook dat bepaalde onderdelen van procesgebieden beter ontwikkeld zijn dan andere onderdelen. Zo blijken veel testorganisaties bevindingenbeheer en testomgevingenbeer goed uit te voeren. Daartegenover staat dat (vooral) het maken van begrotingen, het gebruik van testontwerptechnieken en het opstellen van eisen aan testomgevingen veelal probleemgebieden zijn. Dit sluit aan bij de ervaring van de auteurs van dit artikel: testbegrotingen zijn vaak niet goed onderbouwd, testspecificatietechnieken worden lang niet altijd expliciet gebruikt en in de praktijk ontbreken veelal gedocumenteerde requirements voor testomgevingen. De afgelopen jaren is er veel geïnvesteerd in het professionaliseren van testers en testprocessen. Dit heeft bij een aantal organisaties tot mooie resultaten geleidt. We zijn er echter nog lang niet. Inmiddels heeft TMMi zich binnen en buiten Nederland bewezen als referentiemodel om testprocessen mee te beoordelen en te verbeteren. Op basis van de analyse van de benchmarkresultaten is er echter nog veel te winnen als het gaat om het professionaliseren van testen! Erik van Veenendaal
(www.erikvanveenendaal.nl) is internationaal erkend testexpert, oprichter van Improve Quality Services BV, ontwikkelaar het TMMi en momenteel lid van het bestuur van de TMMi Foundation. Jan Jaap Cannegieter is
Figuur 4. Uitkomsten niveau 2 per bedrijfstak
Hieruit blijkt dat industrie verder is in het professionaliseren van testen dan organisaties die vooral administratieve systemen gebruiken. 17
directeur van SYSQA B.V., een onafhankelijke organisatie gespecialiseerd in requirements, quality Assurance, testen en procesverbetering. Daarnaast was hij lid van het developmentteam van TMMi en is hij TMMi geaccrediteerde lead assessor. Meer info op www.tmmi.org en in het officiële TMMi boek "Test Maturity Model integration (TMMi), Guidelines for Test Process Improvement" (Van Veenendaal and Wells), www.utn.nl
TestKrant - nummer 2
www.testkrant.nl
18
Testautomatisering Waarom gaat het nu wel werken? Door Martijn de Vrieze
Jarenlang is testautomatisering geportretteerd als het gouden ei waarmee allerlei problemen konden worden opgelost. Echter bleek in de praktijk vaak dat er van een gouden ei geen sprake was, eerder van een windei. Waarom is het automatiseren van tests dan de laatste jaren weer zo in trek? Is er iets fundamenteels veranderd waardoor het gouden ei nu echt een gouden ei is?
19
TestKrant - nummer 2
www.testkrant.nl
Een stukje geschiedenis
Van oudsher zijn de tools die men gebruikt voor het automatiseren van testen gebaseerd op het opnemen en afspelen (record/ playback) van testscenarios. Het grote voordeel hiervan, zei men, was dat er zonder enige kennis van code snel en eenvoudig tests geautomatiseerd konden worden. In de praktijk bleek echter al snel dat volledig steunen op record/ playback erg kwetsbaar was, aangezien deze opgenomen tests vrij breekbaar waren. Om de tests voor langere tijd bruikbaar te maken moest er toch veel gescript worden, vaak in de zelfbedachte (proprietary) talen van de diverse tools. De tools waren niet bepaald intuïtief in het gebruik waardoor er veel tijd en geld ging zitten in training in het gebruik van de tools en uiteraard in consultants om de tools te implementeren bij klanten. De lange en vaak pijnlijke trajecten voor het implementeren van geautomatiseerd testen waarbij vaak over budgetten heen gegaan werd en deadlines niet gehaald werden hebben ertoe geleid dat testautomatisering gezien werd als een ‘bodemloze put’, ‘zonde van de tijd en het geld’ en ‘het scheelt uiteindelijk toch niets’.
Waarom gaat het nu wel werken dan?
De afgelopen jaren is het testvak op vele gebieden volwassener geworden. Zo zijn de testopleidingen breder geworden dan alleen maar gericht op methodologieën, met trainingen in technisch testen, agile testen, testautomatisering, etc. Het technische aspect van testen is nadrukkelijker aanwezig in het werkveld van de tester. Doordat testers steeds meer betrokken raken bij het testen van de technische oplossingen in plaats van alleen de traditionele functionele tests, wordt het voor hen ook een logischere en kleinere stap om testautomatisering toe te passen. Niet alleen de testtools maar ook de software heeft in de loop van de afgelopen jaren een grote verandering door gemaakt. Door de opkomst van Object Oriented Programming en Service Oriented Architecture (SOA) zijn er nieuwe lagen aangebracht in de software. Deze lagen zijn onafhankelijk van elkaar te testen en dus ook automatisch te testen. Door niet alleen op de graphical user interface (GUI) te automatiseren, maar ook net daaronder, kunnen tests sneller en stabieler geautomatiseerd worden.
In de afgelopen jaren is er een duidelijke verschuiving gekomen in het soort tools dat gebruikt wordt voor testautomatisering en daarmee ook in de succesverhalen rond geautomatiseerd testen. De ouderwetse record/playback tools zijn vervangen door veelal kleinere frameworks waar tegenaan geprogrammeerd moet worden, de proprietary talen van de tools zijn uitgefaseerd en vervangen voor volwassen programmeertalen als C#, Java en Python. Record/ playback wordt niet langer gezien als de oplossing, maar slechts gezien als inspiratie voor de daadwerkelijke testscripts. Naast de vele grote namen bij de commerciële tools zijn er steeds meer kleine namen en open source projecten in opkomst om het testen te automatiseren. 20
TestKrant - nummer 2
www.testkrant.nl
De tests worden technischer en de applicaties en omgevingen die getest moeten worden zijn dat ook geworden. Het is niet afdoende bij een SOA omgeving om slechts via de user interface te testen, ook de onderliggende architectuur moet getest worden. De API’s (application programming interface) van de services lenen zich bij uitstek om automatisch te testen. Veel van de API’s van tegenwoordig zijn van dermate technisch niveau dat tools altijd benodigd zijn om ze te testen. Al is het maar om de xml bestanden te genereren. Alle communicatie met de API’s gaat namelijk door middel van (technische) berichten. Door gebruik te maken van tools om een API te testen wordt het geautomatiseerd testen van deze omgevingen bevorderd en vereenvoudigd. Naast de omgevingen zijn ook de testautomatiseringstools gegroeid. Het merendeel van deze tools is niet meer record/playback gedreven, maar meer door de code of de modellen van de software under test. Doordat de tools, net als de software under test, technischer zijn geworden is het makkelijker geworden om zonder goede ontwikkelervaring of -kennis toch technische omgevingen solide te automatiseren. Doordat de tooling meer richting code gaat is het mogelijk herbruikbare modules te definiëren en daarmee de testautomatisering ook modulair op te bouwen. Code gebaseerde testtools forceren de testers om beter na te denken over het automatiseren, het automatiseren te benaderen als code schrijven en dus ook de testscripts als dusdanig te onderhouden (in een versioning systeem, code reviews, herbruikbaar, onderhoudbaar etc.) Daarnaast zijn de ontwikkelingen in de open source wereld van groot belang geweest voor de herontdekking van test automatisering. Er zijn diverse enorm populaire tools, zoals 21
Selenium WebDriver, Sikuli, Watir en nog vele anderen die hebben bijgedragen aan het stijgende gebruik van testautomatisering en het succes daarvan binnen (vooral) agile omgevingen. Tenslotte heeft naast tooling en technische omgevingen ook de opkomst en populariteit van Agile development methoden een grote positieve invloed op testautomatisering. Doordat testers en ontwikkelaars nauwer samenwerken in korte iteraties wordt het gebruik van testautomatisering bijna geforceerd. De doorlooptijden zijn dermate korter dan in traditionele ontwikkelmethoden, dat de doorlooptijd die nodig is voor regressie testen simpelweg niet beschikbaar is. Testers en ontwikkelaars ontwikkelen samen een structurele oplossing voor de regressietest door binnen de iteratie nieuwe functionaliteiten zowel handmatig als geautomatiseerd te testen. Deze geautomatiseerde tests kunnen vervolgens weer opgenomen worden in de regressieset, waardoor deze in de loop van een aantal iteraties (of sprints) uitgroeit tot een volwassen, geautomatiseerde regressietest. De technische expertise van de ontwikkelaars zorgt voor een hogere kwaliteit van de testautomatiseringscode. Martijn de Vrieze is als testconsultant werkzaam bij Polteq Test Services. Vanuit zijn functie binnen Polteq ondersteunt Martijn organisaties bij veelal technische test trajecten. Dit door middel van advisering, coördinatie en uitvoering van test automatisering, load & performance testen en automatisering verbeter trajecten. Voor zijn start bij Polteq heeft Martijn bij verschillende werkgevers en opdrachtgevers gewerkt. Door de diversiteit aan opdrachtgevers heeft hij brede (automatisering) kennis opgedaan en toegepast.
TestKrant - nummer 2
www.testkrant.nl
Niets uit deze uitgave mag op enigerlei wijze worden overgenomen zonder uitdrukkelijke toestemming van de uitgever van de TestKrant, te weten www.testnieuws.nl. Hoewel aan de TestKrant uiterste zorg is besteed, aanvaarden de TestKrant nog TestNieuws.nl enige aansprakelijkheid voor schade onstaan door eventuele fouten en/of onvolkomenheden in het blad en/of de website. De uitspraken en meningen van de schrijvers van de artikelen zijn niet ook noodzakelijkerwijs die van de TestKrant. Alleen de schrijvers zijn verantwoordelijk voor de inhoud van hun artikelen. De TestKrant behoudt zich het recht om, tenzij anders overeengekomen met de auteur, ingezonden materiaal in te korten en/of aan te passen. website: www.testkrant.nl e-mail:
[email protected]
22
TestKrant - nummer 2
TESTNIEUWS
Disclaimer
www.testkrant.nl