Skip to main content

Auteur: Andre Boeters

Artificial Intelligence: Utopie of dystopie?

Deel 1: Wat is Artificial Intelligence en hoe werkt het?

Intro

Eén van de meest besproken items op het gebied van wetenschappelijke vooruitgang van dit moment is iets dat niet lang geleden slechts behoorde tot het rijk van science fiction. Volgens velen is het echter slechts een kwestie van tijd is voor het zijn intrede doet, misschien al tijdens de huidige generatie. Wat zeker is, is dat wanneer het er is, het de samenleving drastisch zal veranderen. We hebben het hier over kunstmatige intelligentie, ook bekend onder de Engelstalige afkorting AI (Artificial Intelligence). Tijdens onze laatste pizzasessie hebben we dit interessante onderwerp behandeld om antwoord te krijgen op vragen als: Wat is het eigenlijk precies en wat zijn de laatste ontwikkelingen hierin? We blikken vooruit op wat de ingrijpende gevolgen hiervan kunnen zijn, zo ook op software testing.

Wat is het en hoe werkt het?

Er bestaan meerdere definities voor AI. Een gangbare definitie is: Artificial Intelligence is erop gericht functies van intelligentie te ontwikkelen buiten het menselijke brein. Artificial, of kunstmatig, is alles wat niet biologisch is en intelligentie is het vermogen om kennis en ervaring toe te passen bij het oplossen van problemen.

AI wordt onderverdeeld in drie categorieën: Artificial Narrow Intelligence (ANI), Artificial General Intelligence (AGI) en Artificial Super Intelligence (ASI). De eerstgenoemde bestaat al. ANI, ook wel Weak Intelligence genoemd, bestaat uit algoritmes die gericht zijn op het bereiken van één specifiek doel of een collectie van gerelateerde doelen. Het werkt door middel van neurale netwerken, die in essentie een brein simuleren. Het idee van deze neurale netwerken bestaat al decennia, maar is pas in recente jaren echt realiseerbaar geworden door de toegenomen rekenkracht van computers. Belangrijk voor de werkzame algoritmes is het ontdekken en classificeren van non-lineaire verbanden. Er zijn al tal van algoritmes ontwikkeld die binnen bepaalde domeinen op zeer efficiënte wijze taken uitvoeren, en deze alleen nog maar beter gaan uitvoeren door steeds nieuwe data te analyseren. Hier hebben we allemaal dagelijks al mee te maken en deze ‘domme’ AI’s zijn vrijwel altijd beter in hetgeen wat ze doen dan mensen. Een aantal bekende voorbeelden zijn:

  • Zoekmachines
  • Image recognition/ FaceID
  • Automatische inkoop
  • Bots die aandelen verhandelen
  • Digital assistants (Siri, Alexa)
  • AI’s die zichzelf computerspellen leren spelen (en mensen binnen de kortste keren verslaan)
  • De Maeslantkering, die op basis van een kennis gebaseerd systeem worden geopend of gesloten.

We spreken over Artificial General Intelligence (AGI) of ‘Strong’ AI wanneer er een niveau van kunstmatige intelligentie wordt bereikt dat minimaal gelijk is aan het niveau van de mens. In tegenstelling tot ANI, zal een entiteit van AGI zich niet beperken tot het oplossen van een enkel type probleem, of enkele gerelateerde problemen. Deze vorm van kunstmatige intelligentie bestaat (nog) niet, maar veel experts denken dat dit een kwestie van enkele decennia zal zijn, hoewel er ook experts zijn met een veel sceptischere mening. Wanneer het zover is zal het echter een heleboel vragen, dilemma’s en uitdagingen met zich meebrengen waar we als maatschappij mee te maken gaan krijgen. Kan een dergelijke intelligente entiteit als bewustzijn worden gezien? En moeten we het daarom rechten geven? Hoe gaan we als maatschappij om met het enorme banenverlies dat een potentieel hooggeschoolde, goedkope werkkracht teweeg brengt (dit probleem wordt vandaag al langzaam ingezet door ANI)? Moeten we onze economie gaan herinrichten?

Als we nadenken over de mogelijkheid van een machine die gelijk is aan ons op het gebied van intelligentie, dan is het niet heel moeilijk om nog een stap verder te denken. Wat als er een AI ontstaat of ontwikkeld wordt die nog veel slimmer is dan mensen, nog slimmer dan alle mensen bij elkaar? Is dit een absurde gedachte die beperkt zal blijven tot sci-fi films en boeken? Misschien niet. Computers hebben een voordeel dat organismen niet hebben: directe verbondenheid. Wanneer een machine menselijke capaciteiten kan bereiken, stel je dan eens voor dat al die apparaten met elkaar verbonden zijn via het internet en alle data en rekenkracht kunnen delen. Hiermee zou een Artificial Super Intelligence (ASI) kunnen ontstaan of gecreëerd worden. Dit is voor veel mensen een beangstigend idee. En met goed recht. Al duizenden jaren zijn mensen de dominante en meest intelligente levensvorm op aarde. Wat als we nu opeens van onze troon worden gestoten? Niemand kan precies weten hoe zo’n AI denkt. Zal het compassie kennen? Zal het onverschillig zijn? Als een soort orakel dienen? Of ons als overbodig of zelfs als bedreiging zien? De tijd zal het leren. Mocht het ooit zover komen, dan moeten we in ieder geval goed nadenken over veiligheidsmaatregelen. Als deze geest uit de fles is, krijg je hem er niet zomaar weer in.

In het volgende deel bespreken we de laatste ontwikkelingen en toepassingen van Artificial Intelligence.

2B4QA Quality Game – kwaliteitsbeheersing op een speelse manier

Samen met je collega’s nadenken over de non-functional requirements van een systeem? Speel de 2B4QA Quality Game!

Samen met mijn collega’s binnen 2B4QA heb ik de 2B4QA Quality Game ontwikkeld om in een speelse setting  na te denken over non-functional aspecten van een systeem. Op een luchtige manier brengen we de  niet functionele aspecten van een systeem onder de aandacht. De 2B4QA Quality Game wordt gebruikt om met medeprojectleden te leren wat belangrijke non-functionals zijn en hierover met elkaar in gesprek te gaan.

Naast wat een systeem moet doen, is het van belang om te bepalen hoe het systeem moet functioneren. Bijvoorbeeld hoe snel, hoe betrouwbaar en hoe onderhoudbaar is het systeem? Wij gebruiken daarvoor de ISO 25010 norm , zoals die hieronder is weergegeven. Leer meer over deze norm via de oplossingen op onze website.

Hoe werkt de 2B4QA Quality Game?

Het doel van het spel is om alle risico’s af te dekken met maatregelen en zo het project tot een succesvol einde te brengen. Met de 2B4QA Quality Game worden  op kaartjes verschillende risico’s aan de spelers uitgedeeld. Op een kaartje staat een specifiek risico met uitleg over dit risico en enkele voorbeelden. De spelers kunnen om beurten maatregelkaarten aanwenden om voor de opgetreden risico’s maatregelen te nemen. Er kan dus worden gespeeld tot er een winnaar bekend is en ondertussen leren de deelnemers welke non-functional requirements er zijn, welke risico’s kunnen optreden en welke maatregel ingezet kan worden om het risico te beperken.

Wanneer speel ik de 2B4QA Quality Game?

De 2B4QA Quality Game kan gespeeld worden met teamgenoten of andere collega’s die geïnteresseerd zijn in non-functional requirements. Het spel heeft op zichzelf staande voorbeelden en hoeft niet gespeeld te worden door mensen die aan hetzelfde systeem werken. Het kan goed gebruikt worden om, tijdens het spel of daarna, een discussie te houden over welke non-functionals belangrijk zijn, welke risico’s deze met zich meebrengen en welke daarbij passende maatregelen ingezet kunnen worden.

2B4QA Continuous Learning Sessie Java for Testers

Continuous learning

Bij 2B4QA hanteren we het principe van Continuous Learning op onze Odd Friday sessie, omdat we het belangrijk vinden dat we als Quality Consultants onszelf blijven ontwikkelen en zo bijblijven in de snel ontwikkelende wereld om ons heen. Lees hier verder over onze visie op continuous learning.

Binnen ons vakgebied is het Agile werken in multidisciplinaire teams niet meer weg te denken. Teams bestaan uit developers, welke natuurlijk nog wel specialisaties hebben. Ontwikkelaars, testers, designers werken steeds nauwer samen, moeten dezelfde taal spreken om zo tot een goed en releasebaar eindproduct te komen.

Door de korte release cycles en het snel veranderen van functionaliteiten is testautomatisering onontbeerlijk verbonden met onze werkzaamheden binnen het multidisciplenaire team. We willen als Quality Consultants samen met de ontwikkelaars ook na kunnen denken over test automatisering. Of het nu unit testen zijn of geautomatiseerde regressie testen, we willen toegevoegde waarde leveren binnen het team.

Java for Testers

Vanuit dit oogpunt hebben we recentelijk de cursus “Java for Testers” gevolgd. Met het hele team hebben we twee vrijdagen ons verdiept in Java en dan met name gefocused op wat we als testers aan Java kennis nodig hebben. Immers, als testers hebben we niet dezelfde diepgaande Java kennis nodig als ontwikkelaars, maar is het wel echt handig als je niet volledig in het duister tast als er termen als Class of Method geroepen wordt.

Het doel van de training was om ervaring op te doen in het schrijven van testautomatiseringscode in Java, ondersteund door JUnit. Het leren van de basisprincipes van Java, maar ook code leren lezen en begrijpen. Dit geeft je namelijk een voordeel als je met je mede teamleden naar defects gaat kijken in plaats van alleen opvoeren.

We hebben kennisgemaakt met Java door onze eerste programma te maken “Hello World”, wie kent het niet.

Hello World in Java

Uiteindelijk is er veel aan bod gekomen in de twee dagen en kan ik met een gerust hart zeggen dat deze sessie ons verbreding en verdieping heeft gegeven in Java, maar ook in kennis van testautomatisering.

We gaan ons nu zelf ook verder ontwikkelen door de combinatie met bijvoorbeeld de Selenium Webdriver library en BDD via Cucumber te zoeken.

Het vervolg van onze Continuous Learning sessies op onze Odd Fridays zal dan ook ongetwijfeld iets in deze hoek zijn. Lees hier verder over onze Odd Fridays.

Want ja, een dag niet geleerd is een verloren dag!

Met continue verbetering is niets onmogelijk

Processen en software kunnen continu verbeterd worden. Maar heb je wel eens nagedacht over hoe je zelf continu beter kan worden? Het principe van iedere dag een stapje beter zorgt uiteindelijk voor grote resultaten. Dezelfde aanpak kan zowel worden toegepast op je eigen verbetering als op werkproces verbeteringen.

Continue verbetering stamt uit de oosterse filosofie. Door iedere dag een klein beetje beter te worden kun je uiteindelijk grote resultaten behalen.

Kaizen

Een veelgebruikte implementatie van continue verbetering in het bedrijfsleven is kaizen. Dit Japanse woord betekent positieve verandering. Het hangt sterk samen met de organisatorische aanpak lean. Bij een lean manier van werken worden alle mensen in de organisatie gestimuleerd om op zoek te gaan naar een manier om het werken te verbeteren en moeilijkheden en drempels voor succes weg te halen. Men gaat hierbij op zoek naar wat “waste” genoemd wordt. Waste zijn alle dingen die productiviteit in de weg kunnen staan. Een manier om lean te werken in de softwareontwikkeling is agile in een scrumteam.

De kaizen gedachte van de continue verbetering stroomt door al deze frameworks heen. Er horen een aantal principes bij:

  • Als je iedere dag verbetert haal je grote resultaten
  • Iedereen is verantwoordelijk voor verbetering
  • Analyse is belangrijk om te meten wat er verbeterd is

Lean (manufacturing) komt van oorsprong uit de productie industrie. Het is vooral ontwikkeld bij Toyota. In zo’n fabriek ligt het voor de hand dat je grote winst kunt behalen door kleine verbeteringen in een proces dat zich heel vaak herhaalt. Als je het proces verbeterd van het maken van een onderdeel dat je 100.000 keer maakt dan zal de winst aanzienlijk zijn. In een serviceorganisatie waar software gemaakt wordt werkt dat misschien anders. Via het werken in een scrumteam zal je toch ook veel verschillende keren hetzelfde doen in de vorm van user story’s of product backlog items. De inhoud zal veranderen maar de vorm is hetzelfde. Er wordt binnen het scrum framework, maar bijvoorbeeld ook binnen het scaled agile framework toegewerkt naar backlog items die qua grootte en complexiteit vergelijkbaar zijn, zodat de verbeteringsprocessen hier vat op kunnen hebben.

Kwaliteiteitscyclus van Deming

Zoals je het werken in een team en oppakken en afronden van product backlog items kunt verbeteren, zo kun je je eigen gedrag ook verbeteren. Hiervoor kunnen we terug gaan naar de originele cyclus van Deming die beschrijft hoe je processen kan verbeteren in plan-do-check-act.

continue verbetering

Plannen bestaat uit het identificeren van een situatie die verbeterd kan worden. Bij Do implementeer je het plan. Dan check je de resultaten en bij Act kun je blijven bijsturen. Dit kun je ook in je eigen leven gebruiken wanneer je bijvoorbeeld een taal wilt leren, wilt stoppen met roken of snoozen of beter wilt leren koken.

Bij de ontwikkeling van een kind zit het continu verbeteren automatisch ingebakken. Iedere dag worden er nieuwe dingen geleerd. Eerst met observaties en daarna met veel oefenen. En letterlijk met vallen en opstaan.

Het uitvoeren van verbeteringen

Soms is het erg makkelijk om een plan te bedenken, maar is de uitvoer ervan nog niet zo makkelijk. Er zijn ontelbare to-do lijstjes volgeschreven met taken die nooit zijn uitgevoerd. Een manier om dit uitstelgedrag aan te pakken nadat je een plan hebt gemaakt is door je ideeën in kleine stukjes te hakken en het vervolgens in zogenaamde pomodoro’s uit te voeren. Hierbij werk je 25 minuten en neem je dan 5 minuten pauze.

Volg de Deming cyclus als volgt. Breng in kaart wat je zou willen verbeteren en hoe je dat kunt verbeteren (plan). Bijvoorbeeld wil je je te laat komen voor vergaderingen aanpakken. Je kunt je gedrag aanpassen door bijvoorbeeld op tijd een alarm te laten klinken voor een volgende vergadering (do). Houdt bij hoe vaak je nog te laat komt voor vergadering (check). Het is dan ook handig om vooraf een meting gedaan te hebben. Stel je doelen SMART op zodat je ook weet of je ze bereikt hebt. Wil je bijvoorbeeld 100% op tijd zijn, of misschien wel 5 minuten van tevoren? Of wil je alleen een verbetering zien. Als laatste stap kun je nog bijsturen als je je doelen niet behaald hebt (act). Het is opgebouwd als cyclus omdat je altijd wel iets kunt verbeteren. Je kunt dus weer een nieuw verbeterplan opstellen.

Een valkuil van deze manier van verbeteren is dat het gericht is op kleine stapjes. Het is ook belangrijk om af en toe een stapje uit te zoomen en out-of-the-box te denken. Misschien is het in ons voorbeeld ook wel slim om naar het aantal vergaderingen in je agenda te kijken of andere maatregelen te treffen.

Dit principe kun je natuurlijk voor allerlei activiteiten in je leven toepassen. De belangrijkste tips zijn:

  • Met kleine stapjes kun je grote resultaten halen
  • Maak een plan en meet of je het behaald hebt
  • Er is altijd iets nieuws te verbeteren

 

2B4QA op de Nederlandse Testdag !!

Wij staan 20 oktober op de Nederlandse testdag, georganiseerd bij Windesheim in Zwolle. Als je meer wilt weten over ons Tornadomodel, kom dan naar de presentatie van Erik en Tobias . Je kunt Raldy en Matthijs vinden op de beursvloer om te horen wat wij voor jou kunnen betekenen.