Clean code improves test quality

Vergelijkbare documenten
Software Test Plan. Yannick Verschueren

Test rapportage Waarom eigenlijk?

Parasoft toepassingen

ICT GROUP WATER CONGRES 2018 Slimmer omgaan met machines door softwareanalyse

Software Test Plan. Yannick Verschueren

ERP Testing. HP Nijhof. Testmanager. Testnet November 2005

MDA in de praktijk. Freek Bosch, Business Unit Manager Amsterdam, 4 juni 2009

Martin van Leeuwen Happy Testing

GETTING THE BEST OUT OF YOUR SOURCE CODE MODERNISEREN MET UNIFACE

Praktijk en practices

CMM 3: levert het wat op?

Software Test Document

BDD/Gherkin. Een introductie

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar

BVH Software Risk Assessment Rapport t.b.v. vts Politie Nederland

1,3 miljoen regels mission critical code omzetten naar C++, hoe test je dat?

Is APEX a worthy substitute for Oracle Forms?

Architectuurredeneermodel Afgewogen keuzes maken

TestNet Voorjaarsevenement 2010 Jurian van de Laar 12 mei 2010

Wie durft? Kwaliteit rapporteren voor het IT project start! Bart-Jan de Leuw TestNet 10 mei 2011

ADVANCED KNOWLEDGE SERVICES (AKS )

Process & IT: eerst KIEZEN maakt het DOEN daarna zoveel makkelijker

BVH. Software Risk Assessment Rapport t.b.v. vts Politie Nederland. vertrouwelijk. 25 juni Dr. ir. Joost Visser, Dr. ir. Pieter Jan 't Hoen

Xedule: stimulator en simulator voor de verbetering van plannen én roosteren

Uitstroom + Crebonummer Applicatie- en mediaontwikkelaar; Crebonummer Niveau Niveau 4

Agile bij grote administratieve systemen. Omgaan met requirements

Testen. Presentatie. Open-i Software Services BV, Maarssen Datum : Versie : 1.2

Uitdagingen performancetesten in een Agile omgeving Best Practices & Demo

Cloud dienstverlening en Informatiebeveiliging. ISACA Round Table Assen - Maart 2017

Procesvalidatie voor een veiliger ketentest

Hoe veilig is proven technology? - Marnix Suyver & Dennis Werner

ISM: BPM voor IT Service Management

Business Process Management

Beveiligingsbeleid Perflectie. Architectuur & Procedures

ITIL en/of eigen verantwoordelijkheid

Introductie. NAV performance. Derk Jan Oelemans. Manager Development, BI en E-Business Qurius Business Solutions

Eibert Dijkgraaf Kijk verder dan je test neus lang is: Life Cycle Testing Scan Voorjaarsevent Testnet: 30 juni 2008

Plan van aanpak Toogle

DevOps Waarom moeilijk doen 31 oktober als het samen kan

Adding value to test tooling Hoe en waarom DevOps de wereld van performance testen verandert

Reports of my death are greatly exaggerated

(NPR) 5325 Opleveren en overdragen van software

Wij testen..maar....wat test jij?

Connect Social Business

Van requirements naar teststrategie

Connect Social Business

EIGENSCHAPPEN CONVERGED HARDWARE

Hoe test je een pen? Je kunt de presentatie na afloop van elke les downloaden. Ga naar : Kies voor de map Acceptatietesten

KIM. Slimme acties ondernemen

Testomgevingen beheer

Vertrouwen in ketens. Jean-Paul Bakkers

Continuous testing in DevOps met Test Automation

Rotterdamse TerugMeld Faciliteit

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Professioneel beheer. Altijd kunnen vertrouwen op uw (bedrijfskritische) informatiesystemen

Wees in control over uw digitale landschap

Webtesten onder schaarste

BiZZdesign. Bouwen van sterke en wendbare organisaties met behulp van standaarden, methode, technieken en tools. Research & Development

De brug tussen PRINCE2 en TMap

Hoe ga je van idee naar product? Jan Leideman

SMART requirements en slim testen Hoe goede requirements en een slim testproces elkaar versterken

Oracle WebCenter Content in grote omgevingen

AERIUS II. Mark Wilmot Product Owner AERIUS. Ministerie van EL&I Programma Directie Natura 2000 Programma Stikstof (PAS)

ISO/IEC in een veranderende IT wereld

Offshoring & Testing. Verander een uitdaging in een kans. Door Ernst Labruyère. re Consultant ps_testware. 20 september 2007

10 trends in Performance testen of: wat hebben we écht te bieden?

GETTING THE BEST OUT OF YOUR SOURCE CODE FIT TEST VOOR UNIFACE

Testen = Monitoren. Hoe de werkzaamheden van de boodschapper van de koning gaan veranderen. Datum: 30 April 2015

Beveiligingsbeleid. Online platform Perflectie

Van testproces tot testvak... en verder

Te hoog gemikte silver bullets missen doel Te hoog gemikte silver bullets missen doel

Marc Koper Performancetesten voor dummies

Customer Case: WoningNet

Connect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB

Tools die je móét hebben voor je (gaat) testen!

Agenda. Introductie Aan het werk Conclusie / restrospective

Auteur Kenmerk Versie 1.0 Datum Bestandnaam Status Definitief. NK Software Testen 2017

De tester als bruggenbouwer

14/11/2010. Voorbeelden van productrisico s. Omschrijving bevindingenanalyse. Productrisicoanalyse (1)

Kwaliteit van ICT vergt samenwerking

De essentie van de nieuwe ISO s. Dick Hortensius, NEN Milieu & Maatschappij

Stichting NIOC en de NIOC kennisbank

Model Driven Development. Kosten, baten, organisatie

Gebruikservaring Martin de Haan, Antonius Zorggroep, Sneek Martin Boerman, Máxima Medisch Centrum, Veldhoven en Eindhoven

AERIUS: Rekeninstrument voor de PAS

Flamingo, een open source geo viewer. De doorbraak: een nieuw beheermodel

Product Risico Analyse

To cloud or not to cloud Afgewogen keuzes maken met DYA Software

TAM. Control Model for Effective Testing

Testen van digitale leeromgevingen bij ThiemeMeulenhoff. Een Exploratory testaanpak in een veranderende wereld.

Transcriptie:

Clean code improves test quality Michel Kroon, Senior Consultant, SIG TestNet Voorjaarsevenement 30 juni 2008 Arent Janszoon Ernststraat 595-H NL-1082 LD Amsterdam info@sig.nl www.sig.nl

De Software Improvement Group 2 I 29 Wie zijn wij? Hooggespecialiseerd onderzoeksbureau dat de technische kwaliteit van software systemen in kaart brengt. Opgericht in 2000 uit Centrum voor Wiskunde en Informatica. Internationale start gemaakt in Zwitserland. Wij zijn objectief en onafhankelijk. Geen pakketverkoop, maar tool based consultancy. Onze dienstverlening en tools zijn technologie onafhankelijk. Innovatief: 2005 winnaar R&D Award en in 2007 winnaar van de Innovatie Award. In 2008 waren wij de winnaar van de ICT Regie Award en genomineerd voor de Koning Willem I prijs.

Kwaliteit van software 3 I 29

Wat gebeurt er? Veel aandacht voor functioneel testen. 4 I 29

Wat moet er gebeuren? Belicht alle aspecten van software kwaliteit! 5 I 29

Functionele en technische kwaliteit route 6 I 29 Voldoende -/+ Voldoet vandaag onvoldoende, maar systeem is aanpasbaar aan eisen. risk ++ Nu conform verwachting. Gezondheid monitoren. Technische kwaliteit route risk route risk Onvoldoende -- Verstoort de business én is duur. Slechts kort toelaatbaar. -/- Voor vandaag oké, maar niet bestand tegen veranderingen, onderhoud te duur, risico s hoog. route risk Onvoldoende Voldoende Functionele kwaliteit

Onze producten en diensten DocGen Assessments Monitoring 7 I 29 Automatische Documentatie Generatie Risk assessment gebaseerd op technische werkelijkheid Monitoring ondersteunt IT Governance en nieuwbouw projecten

Observaties Testtraject zit vaak in de kreukelzone van het project Tussen de einde bouw en deadline oplevering. 8 I 29 Aan het testtraject wordt vaak het predikaat Quality Assurance gegeven Maar of het systeem tegen een stootje (aanpassing) kan is moeilijk te testen. Onze conclusie is: Weet wat je test. Kijk in de black box van het systeem (de code). Doel van deze presentatie: Een kijkje in de black box. Aan de hand van de Code Quiz (iedereen doet mee).

De theorie Onderhoudbaarheid, ISO 9126 9 I 29 Separation of concerns High level architectuur Exception handling Volume Modularisation Method length Unit-test quality Complexity Duplication Process Analysability X X X X X X Changeability X X X X X Stability X X X Testability X X X X

Code Quiz Vraag 1 10 I 29 Welke uitspraak is juist? Duplicatie van de broncode A. De enige manier waarop we meters kunnen maken in dit project is door bestaande code te kopiëren en te veranderen. De nieuwe functionaliteit lijkt toch erg sterk op de al bestaande functionaliteit. B. Ons systeem is zo opgezet dat nieuwe functionaliteit wordt afgeleid van de bestaande functionaliteit. Dit kost ons nu iets meer inspanning, maar in de toekomst kunnen we dan snel nieuwe functionaliteit toevoegen.

Metriek Duplicatie: Het aantal identieke blokken code. Uitgedrukt in percentage ten opzichte van het totale systeem. Moderne talen moeten onder de 5% zitten. 11 I 29 Gevaar hoge duplicatie Aanpassingen worden gedaan in deel van de code, maar niet in het gedupliceerde deel van de code. De bug is opgelost, maar een soortgelijke bug in een ander deel zit er nog in.

Code Quiz Vraag 2 12 I 29 Welke uitspraak is juist? Complexiteit van de broncode A. Onze business functionaliteit is erg complex, het is dus heel logisch dat de code ook erg complex is. Daar kunnen de developers niets aan te doen. B. Onze developers kunnen complexe business functionaliteit realiseren door code met een lage complexiteit te schrijven.

Metriek Complexiteit Aantal beslissingen per testbare eenheid in de code. Hoe meer beslissingen, hoe meer testpaden nodig voor verificatie. Meting a.d.v McCabe index, classificatie McCabe > 50 is niet testbaar. Gewenst, minder dan 5% van de code heeft een McCabe > 10. 13 I 29 Gevaar hoge complexiteit Aanpassing aan complexe code leidt vaak tot omvallen van andere functionaliteit in hetzelfde stuk code.

Code Quiz Vraag 3 14 I 29 Welke uitspraak is juist? Geautomatiseerde Unit tests A. We hebben een strakke projectplanning, het schrijven van unit-tests kost alleen maar tijd, die hebben we niet. B. De developers in dit project schrijven eerst de unit-test en dan pas de productie code, dit houdt het systeem aanpasbaar en testbaar en levert tijdwinst op.

Metriek Geautomatiseerde Unit tests: Door de developer vastgelegde idee van de productie code in een paar heldere tests. Developers doen altijd unit-tests, alleen wordt deze inspanning niet altijd vastgelegd in een geautomatiseerd unit-test framework. Gewenste dekkingsgraad boven de 80%, voor elke eenheid een test-eenheid. 15 I 29 Gevaar onvoldoende unit-tests Een aanpassing introduceert een fout in afhankelijke code waardoor pas tijdens het functioneel testen blijkt dat de aanpassing niet goed is.

Code Quiz Vraag 4 16 I 29 Welke uitspraak is juist? foute foutafhandeling A. We vangen altijd alle fouten generiek af en schrijven dit naar de foutlogger op de server. Tijd besteden aan het specificeren en doorgeven van de fouten is overbodig, het staat allemaal in de log. B. Wij maken altijd onderscheid tussen de fouten en geven deze door naar de bovenliggende laag. We gebruiken een standaard framework hiervoor, tenslotte zijn we niet de enige die dit nodig hebben in een systeem.

Metriek Foute foutafhandeling: 17 I 29 Bestaat o.a. uit fouten inslikken in de code, in plaats van doorgeven naar een hoger niveau in de code. Het generiek afvangen van fouten waarbij geen onderscheid gemaakt wordt tussen het type fout. Bv Hardware fout, proces fout of rekenkundige fout. Gevaar foute foutafhandeling: Het traceren van foutmeldingen is moeilijk of onmogelijk omdat onduidelijk is wat is fout gegaan. Verkeerde input of disk vol? De reproductie van fouten erg moeilijk omdat het systeem uiteindelijk op een punt verderop in het proces crasht.

Code Quiz Vraag 5 18 I 29 Welke uitspraak is juist? Separation of concerns A. Ons systeem bestaat uit delen die elk voor zich een stukje van de business functionaliteit implementeert. Hierdoor blijft de code voor die functionaliteit dicht bij elkaar, zowel de UI als de data. B. Elk deel van de code krijgt in ons systeem een specifieke taak mee. Hierdoor scheiden we de taken, waardoor we in de toekomst eenvoudiger wijzigingen kunnen doorvoeren.

Metriek Separation of Concerns: Elk deel van de code richt zich op een specifieke taak. De delen van de code hangen in de lagen-architectuur. De code is lokaal, roept geen code aan uit andere delen van het systeem. 19 I 29 Gevaar geen goede Separation of Concerns Na elke aanpassing, hoe klein deze ook is, moet het hele systeem worden doorgetest met alle testcases omdat moeilijk kan worden voorspelt wat het gewijzigde gedrag van het systeem is.

Case studie Systeem A 20 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken

Case studie Systeem A 21 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken Dus: 30% kans dat de opgeloste bug nog ergens anders voorkomt.

Case studie Systeem A 22 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken Dus: 20% kans dat andere functionaliteit omgevalt bij een aanpassing.

Case studie Systeem A 23 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken Dus: 85% van de code is niet gecontroleerd op correcte werking.

Case studie Systeem A 24 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken Dus: onbekende hoeveelheid tijd inruimen voor reproductie van fouten.

Case studie Systeem A 25 I 29 - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken Dus: na elke hot fix het gehele systeem doortesten met alle testcases.

Case studie Systeem A 26 I 29 Of: heeft het wel zin om te gaan testen? - Duplicatie: 30% - Complexiteit: 20% - Aantal regels: 200.000 Unit-test regels: 30.000 - Foutafhandeling: veel fout - Geen scheiding van taken klanten van ons weigeren zo n systeem te testen

Conclusie 27 I 29 Test kwaliteit kan alleen worden geleverd als de technische kwaliteit van de broncode op orde is. Onderhoudbare code is testbare code Dus testers: eis code kwaliteit, kijk in de black-box (of erop) en Improve the Software.

28 I 29 Vragen

Meer informatie? Neem gerust contact op 29 I 29 Michel Kroon E m.kroon@sig.nl W www.sig.nl T +31 20 3140950