Joy of coding, property-based testing

2015-05-31 18:49:26 +0000

Afgelopen vrijdag heb ik Joy of Coding bezocht, een conferentie voor programmeurs. Ik wilde met name John Hughes horen, onder meer bekend van de paper 'Why functional programming matters' (uit 1984 !). In dit artikel een verslag van zijn sessie over property-based testing, Joy of Testing.

Bij Rotterdam cs was niet moeilijk om de juiste bus naar de conferentie te vinden, andere conferentiebezoekers waren makkelijk bij een bushalte te herkennen.

Plaats van conferentie, de Van Nelle Fabriek, staat op de lijst van monumenten van Unesco. Het terrein ziet van buitenkant indrukwekkend uit en van binnen geven de vele ramen en hoge wanden hetzelfde ruimtelijke gevoel dat het arbeiders begin 20e eeuw moest geven.
's Ochtends ging ik naar Joy of Testing toe van John Hughes. De spreker introduceerde property-based testing in een paper, met de bijbehorende software QuickCheck.
Property-based testing begint met schrijven van een specificatie van verwacht gedrag van software. Aan de hand van de specificatie worden vervolgens software uitgevoerd met zoveel mogelijk varianten van input-data. Ofwel, in plaats van met enkele testgevallen te testen wordt de software getest met miljoenen of miljarden willekeurige testgevallen. Dat lijkt misschien onvoorstelbaar, maar computers van nu snel genoeg om al die testgevallen te genereren.
Aan de hand van een, op eerste gezicht correcte implementatie van een queue in C, demonstreerde hij hoe via property-based testing fouten in die implementatie gevonden konden worden. Hij gebruikte hiervoor Quviq, een commerciële variant van QuickCheck die wat makkelijker samen met C te gebruiken is.
Verder vertelde hij hoe propery-based testing werd gebruikt om software te testen, die embedded zou worden in nieuwe auto's van Volvo. Aan de hand van specificaties werd ook software die door een derde partijen geschreven was getest. Een voorbeeld was een fout die gevonden werd in de software die de communicatie tussen verschillende onderdelen van de auto moest verdelen, een soort centrale messagebus. Door een obscure fout konden soms berichten met een lage prioriteit een hoge prioriteit krijgen. Wat zou kunnen veroorzaken dat een signaal naar de airbag tijdens een botsing minder prioriteit zou krijgen dan een signaal van de volumeknop.
Dat was ook het opmerkelijkste wat ik hoorde: dat property-based testing werd gebruikt werd voor wat vaak integratie- of acceptatietesten wordt genoemd. Ik stel me voor dat je in plaats van met JBehave, FitNesse of soortgelijke tools testspecificaties combineert met enkele tabellen aan testdata, voer je je testen uit met miljoenen datapoints. De property-testing library, QuickCheck of de vele clones en ports zoals ScalaCheck of junit-quickcheck filteren vervolgens de testgevallen eruit die ervoor zorgen dat je software niet werkt zoals gespecificeerd.

's Middags was er ook een workshop met property based testing. Deze heb ik niet bezocht omdat ik een andere parallelle sessie heb bezocht. De source-code van de workshop online, dankzij fpcomplete hoef ik niet eens een ide te installeren, maar zonder opgaven heb je daar toch niet zo veel aan.

Binnenkort vervolg van dit artikel, met verslag van andere interessante sessies die ik heb bezocht, zoals The joy of debugging ourselves, van Laurent Bossavit en de buitengewoon leerzame Excercises in programming style van Crista Lopes.

Read more

Online diary on the fly

2015-05-13 14:36:51 +0000

For quite a while I just to have digital personal diary. First as a text file stored in my computer, occasionally backed up on cd. Then I switched to ohlife.com. I liked the clean interface and the fact that you'd get reminder mails you could just reply to create a new entry. Most of those reminders I just deleted I noticed. Ohlife shut down last year. Fortunately the creators allowed you to download a backup of all your entries so no content is lost.
Since then I don't keep a personal diary. I do post occasionally on twitter as well as lots of other social media or as it just to be called word wide web. My calendar is on google, just as my mail and part of my documents. Besides that my photos and other documents are stored on my own laptop - not stored on any cloud (at least not that I know of), but synced via syncthing in case I lose my laptop. I create notes on evernote, store articles I might want to read on getpocket, and sometimes publish code on github, bitbucket or other hosted code services. And of course most of my activity is tracked by Google, Facebook and probably other organizations I know or not know of.

All in all a lot of digital data or information by or on me, created on purpose or by accident. All those information combined would be enough to reasonable 'auto-create' a diary entry.
Some new online diaries I just found on the interweb allow integration with twitter and facebook such as Journalate.  But I don't want to use on online diary anymore that stores data on it's own server(s), certainly not one that only allows you to download your entries if you pay them money. I'd rather have my diary stored on my own computer, or maybe on some blockchain, but only accessible by me. Also my hypothetical diary doesn't need to contain a copy of all that data, a link to that data combined with some tags or notes created by me would be could enough.

I wonder if something like that already exist?

Read more

Archive

subscribe via RSS