Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren



Vergelijkbare documenten
Domein API Handleiding

End-to-End testen: de laatste horde

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST

Unit testing. Wat houdt testen in. 17 Januari 2011, voor Codequest.nl

De plug-in is heel eenvoudig te installeren met een setup-programma. Waarna je een aantal menu opties in het tools menu er bij krijgt.

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

Uitdagingen performancetesten in een Agile omgeving Best Practices & Demo

Software Test Plan. Yannick Verschueren

Object Oriented Programming

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Connect Social Business

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

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Unit testen met Rhino mocks Twee handen op één buik

Continuous Delivery. Sander Aernouts

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Software Test Plan. Yannick Verschueren

XAMPP Web Development omgeving opzetten onder Windows.

Connect Social Business

Ervaringen met het opzetten van een MDD omgeving

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april Versie 2.1.0

Beveiligingsbeleid Perflectie. Architectuur & Procedures

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

ProjectHeatmap. Onderzoeksrapport v Dennis Wagenaar

Taak Strict or Strong. Inhoud

Programmeertechnieken Week 7

Kleine cursus PHP5. Auteur: Raymond Moesker

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

TECHNICAL DESIGN DOCUMENT

Opdrachtformulering (pagina 3 van 7)

Wie ben ik? Agile Software Development. Het waterval model. Inhoud

BDD/Gherkin. Een introductie

LET OP! Lees dit eerst even door!

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce

Unit testen met Rhino Mocks

Continuous Testing? FITR testautomatisering! Bas Dijkstra

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

René Tuinhout De verzwegen waarheid van Grenswaardenanalyse Najaarsevent Testnet: 16 september 2008

Beveiligingsbeleid. Online platform Perflectie

High Performance Computing

Documentatie Distributed Services Enterprise Service Bus

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Testautomatisering werkt niet bij Continuous Delivery en DevOps

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Angular Best Practices Door Alex en Chris van Beek

EXACT ONLINE INTEGRATION TOOL VERSIE 1.0.9

Dynamiek met VO-Script

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

Correspondentie inzake overnemen of reproductie kunt u richten aan:

Xampp Web Development omgeving opzetten onder Windows.

Project Fasering Documentatie Applicatie Ontwikkelaar

Modelleren en Programmeren

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Overerving & Polymorfisme

Javascript oefenblad 1

Adding value to test tooling

Het besturingssysteem of operating system, vaak afgekort tot OS is verantwoordelijk voor de communicatie van de software met de hardware.

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Formulieren maken met Dreamweaver CS 4/CS 5

Wat kan er allemaal in Design Studio 1.4

Handleiding voor Zotero versie 2.0

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Practicumopgave 3: SAT-solver

Geen webservice? Geen probleem!

Hunter-CRM. Documentatie Handleiding Spamfilter

enterprise; development; operations; CA Technologies; DevOps; management; agility; software delivery life cycle; SDLC; CA

Agile Testen in de praktijk

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Delft-FEWS & Web Services

Test rapportage Waarom eigenlijk?

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Als eerste bedankt voor het aanschaffen van deze PDF waarin ik je handige tips en trucs zal geven over het schrijven van een handleiding.

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Intake <applicatie> Conclusie & Aanbevelingen. <Datum> 1.0. <Auteur> ###-#######

UBC op Microsoft Windows 64-bits

Handleiding installatie Enecsys uitlezen op een Synology NAS

Bijlage 3: Master testplan

ACA Retail BV. Pagina 2 van 9

Programmeerstructuren met App Inventor

Analyse probleem remote execution

Programmeren met Arduino-software

Is APEX a worthy substitute for Oracle Forms?

Enterprise Connectivity. Marnix van Bo. TU Delft Elek Software Architect 20 jaar ervarin ontwikkeling

SiteSafe. Rapportage. Security Audit voor CFConsultancy

Programmeren: Visual Basic

Verantwoord omgaan met onderzoekgegevens. Hoe je data- en syntaxbestanden transparant opslaat en je analyses repliceerbaar maakt

Testomgevingen beheer

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

DrICTVoip.dll v 2.1 Informatie en handleiding

En hoe gaan ze dit allemaal terugvinden?

Customer Case: WoningNet

Transcriptie:

Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren

Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest... 6 Versiebeheer... 6 Mock objects... 6 Conclusie... 7 2

Unit testing Inleiding Ik heb een kort onderzoek gedaan naar unit testing in software ontwikelling, unit testing is een procedure om individuele stukjes code te testen of ze goed werken. Normaal gesproken bestaat dit uit een method (functie) binnen een class. Unit testing is maar een onderdeel van alle test methode's bij een software project, normaal gesproken zou deze moeten bestaan uit: 1. Unit Testing (Test elk stukje code) 2. System / Integration testing (Test de code op de omgeving waarin het gebruikt gaat worden.) 3. Acceptance testing (Test de applicatie vanuit een eindgebruikers perspectief.) Black box / White box Er zijn twee methodes voor unit testing, black box teting en white box testing. Black box testing werkt buiten de code, er wordt gebruik gemaakt van de API en er wordt gecontroleerd wat er wordt teruggegeven. White box testing bestaat uit het controleren binnen de code, dit kan zelfs als zijn het geven van een echo of print command om de waardes in de code te bekijken. XP Unit testing is een belangrijk onderdeel van XP (http://www.extremeprogramming.org). Hier worden eerst de unit tests geschreven en pas daarna de code die erbij hoort, in plaats van andersom eerst de code en dan de test. Hierdoor wordt Hierbij wordt de code zo simpel mogelijk gehouden om alleen de test te laten slagen, en kan hier worden refactored, waarna de test weer gedraaid wordt voor regressie testing. SimpleTest Als test framework heb ik gebruik gemaakt van SimpleTest (http://simpletest.sourceforge.net/). Hiermee kan automatisch getest worden, de lijst met basis assertions waarop je kan controleren is als volgt. asserttrue(\$x) Fail if \$x is false assertfalse(\$x)fail if \$x is true assertnull(\$x) Fail if \$x is set assertnotnull(\$x) Fail if \$x not set 3

assertisa(\$x, \$t) assertequal(\$x, \$y) Fail if \$x is not the class or type \$t Fail if \$x == \$y is false assertnotequal(\$x, \$y) assertidentical(\$x, \$y) assertnotidentical(\$x, \$y) assertreference(\$x, \$y) Fail if \$x == \$y is true Fail if \$x === \$y is false Fail if \$x === \$y is true Fail unless \$x and \$y are the same variable assertcopy(\$x, \$y) Fail if \$x and \$y are the same variable assertwantedpattern(\$p, \$x) Fail unless the regex \$p matches \$x assertnounwantedpattern(\$p, \$x) Fail if the regex \$p matches \$x assertnoerrors() asserterror(\$x) Fail if any PHP error occoured Fail if no PHP error or incorrect message Eclipse plugin Er valt een pakket te downloaden als los PHP script en er is ook een Eclipse plugin, hierbij moet je eerst de instellingen invoeren. 4

En daarna kan je een script als simpletest runnen. Als je de tests draait, dan zie je in het result view of de tests geslaagd zijn of niet. 5

GroupTest Het is ook mogelijk om meerdere test te groupen en tegelijkertijd te draaien. Versiebeheer Het is handig om gebruik te maken van versiebeheer zoals SVN of CVS bij de code, zodat als een test niet meer werkt, er terug kan worden gegaan naar een oude versie en kijken wat er mis is gegaan. Mock objects Een onderdeel van unit testing is het testen van stukjes code die afhankelijk zijn van andere obecten, of data vanaf buitenaf zoals een database. Het is belangrijk de units te isoleren zodat afhankelijkheden zo min mogelijk voor fouten kunnen zorgen, externe data zoals een database hoort meer bij Integration tests de volgende stap in de testfase. Om dit probleem op te lossen kan er gebruik worden gemaakt van Mock objecten, Mock objecten zijn objecten die het gedrag van het echte object simuleren. De API is hetzelfde als het echte object het is mogelijk om test data op te zetten welke het mock object moet returnen. Het genereren van een Mock object gaat als volgt: Mock::generate('ClassName'); SimpleTest maakt dan een kopie van de class welke je kan aanroepen als volgt: 6

$class = new MockClassName($this); Je kan dan een return waarde voor een method in de class aangeven: $class->setreturnvalue('methodname', 'Value'); Conclusie Door middel van unit testing in je project te gebruiken kan je fouten in je applicatie voorkomen en snel oplossen. Het komt vooral van pas in grotere applicaties waar meerdere mensen aan meewerken, maar ook bij kleinere projecten kan het veel kopzorgen voorkomen. Vooral de regressie testen zullen van pas komen bij het onderhouden en uitbreiden van de applicatie in de toekomst. Het gebruik van TDD (Test Driven Development) heeft sowieso het voordeel dat je als ontwikkelaar een beter overzicht op de API heb omdat je als eerste deze gebruik maakt bij het opzetten van de testen nog voordat je de daadwerkelijke code gaat schrijven. Hierdoor is het mogelijk om nog in de beginfase wijzigingen in de API aan te brengen waar je misschien eerder nog niet aan had gedacht. 7