Skip to main content

Categorie: Continuous Learning

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 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!

Bedrijfsbezoek Tricentis

Van afgelopen donderdag tot zaterdag zijn we met 2B4QA in Wenen geweest om onze partner Tricentis te bezoeken. Tricentis is de ontwikkelaar van Tosca, een suite voor testcase management, testautomatisering en test reporting. De laatste jaren hebben ze een enorme groei doorgemaakt en wordt er op hoog tempo nieuwe functionaliteit toegevoegd aan de Tosca test suite. Reden voor ons om eens  de banden aan te halen met onze partner.

Een goed begin?

Donderdag vertrokken we naar Wenen. Na enige treinvertragingen vanwege blikseminslagen bleek ook onze vlucht twee uur vertraging te hebben. We waren hierdoor genoodzaakt om wat tijd door te brengen in een authentiek Schiphol etablissement wat ons de gelegenheid bood om te reflecteren op de vraag  waarom het samenreizen van twee niet nader te noemen individuen altijd samenhangt met vertraging.

Na een kort nachtje en een stevig ontbijt voor sommigen werden we hartelijk ontvangen bij Tricentis door Franca en Peter. Franca werkt als implementatie consultant en Peter is director of Alliances van de regio EMEA. Franca trapte de dag af met een presentatie over de mogelijkheden van Tosca. Ze koppelde de theorie van test case design in Tosca aan de praktijkervaring die ze heeft bij klanten. Uit haar ervaring bleek bijvoorbeeld dat het stellen van een korte termijn doel een hogere kwaliteit van risk assessment biedt. Wanneer er te lang over gedaan wordt en alle actoren hun plasje over het gewicht van de requirements moeten doen kan er de neiging tot politieke correctheid ontstaan. Uit de praktijk blijkt dat de risico’s een egaal gewicht wordt toegedicht. Dit voorkomt een zuivere analyse van de risico’s. Franca: ”Political correctness kills the assessment.

Theorie en praktijk

In de praktijk wordt testautomatisering niet optimaal gebruikt om kwaliteit van software te vergroten. De grote beloftes die testautomatiseringstools in de afgelopen decennia hebben gemaakt zijn tot nu toe nog niet waar gemaakt. In het geval van Tosca komt dit voornamelijk omdat er niet goed wordt nagedacht over wat een efficiënte manier is van het bepalen van de testcases. De module testcase design biedt mogelijkheden om op een gestructureerde wijze testcases samen te stellen die gebaseerd zijn op de happy flow door een systeem. De happy flow is het pad door het systeem met de hoogste business value. Over het algemeen is dit een pad dat veel gebruikt wordt en daarmee de kern is van het verdienmodel van de klant.  Met testcase design is men in staat om op basis van deze flow testcases te genereren die steeds één stap afwijken van de happy flow. Als er een testcase faalt, dan weet je precies door welke teststap dit komt.

Demo

Na de presentatie van Franca doken we met Roman van Tricentis in een demo van oude en nieuwe functionaliteiten van Tosca. De mogelijkheden op het gebied van API testing, test case management, testcase design en exploratory testing werden besproken. In exploratory testing is een feature opgenomen waarmee mensen zonder Tosca licentie uitgenodigd kunnen worden voor een testsessie. Zo kan je hun bevindingen integreren in een Tosca test report. Zodoende krijgen stakeholders een volledig, integraal en samenhangend overzicht van de uitgevoerde testen. Daarnaast sprong de API testing feature er voor mij uit omdat het een efficiënte manier biedt om functionaliteit van een applicatie te testen met een hoge performance.

Great expectations

Wolfgang Platz, CEO en founder van Tricentis hield een vurig betoog over de rol van Tosca in de toekomst van testen. Zijn idee is dat er in het algemeen meer nagedacht moet worden over het efficiënt inzetten van middelen zodat je met minder mensen een veel hogere testdekking van applicaties kan realiseren (zie afbeelding) . In de huidige situatie zijn te weinig testen geautomatiseerd, test redundancy (overbodige testen) is veelvoorkomend en testers zitten niet dicht genoeg op het vuur waardoor ze vaak te laat op de hoogte zijn van de ontwikkelingen in hun applicatie. Door in te zetten op goed opgeleide mensen die in staat zijn om Tosca in de volle breedte te gebruiken kan zowel het marktaandeel van Tosca vergroot worden en de inzet van Tosca specialisten bij organisaties. Door grondige kennis van Tosca en van continuous development te hebben gaan Tosca specialisten continuous testing implementeren bij organisaties om zodoende continu inzicht te bieden in de kwaliteit van de opgeleverde software. Hierbij heeft Tricentis een maturity model ontwikkeld dat organisaties helpt bij de overgang naar continuous testing.

Verkennend onderzoek

Naast het opdoen van kennis over testautomatisering hebben we gedurende weekend ook onze exploratory test vaardigheden aangesproken om het recreatie aanbod van de stad Wenen te testen. Alle collega’s van 2B4QA hadden ervoor gekozen om ook de zaterdag met elkaar in Wenen door te brengen. Daarbij hebben we gelet op de kwaliteit van de plaatselijke horeca, de mate van architectonische waarde van bezienswaardigheden, de klantvriendelijkheid van de plaatselijke markkoopmannen. Er kan gemeld worden dat deze cases allen succesvol gerund zijn.

Devops ervaringen/tips voor beginnende devopsers

Vanaf augustus ben ik in een devops-team gekomen. In eerste instantie was dit team opgericht om de openstaande problemen en incidenten voor de ontwikkelstraat op te ruimen. Voor ons, de devopersers, bestaat deze straat uit 4 scrumteams, productie-incidenten en -problemen en een zijstraat met nog eens 4 teams. Wij zouden deze straat gaan ondersteunen door onopgeloste problemen en niet functionerende software aan te pakken en werkend te maken. Een taskforce die geen functionaliteit zou gaan opleveren, maar problemen van bestaande functionaliteit en ook van de nieuw opgeleverde functionaliteit zouden gaan oplossen om zo het gehele product te verbeteren.
Natuurlijk is dit voor 1 team onmogelijk, maar toch zijn we vol moed en toewijding begonnen met het analyseren van de problemen. Hieruit kwamen nogal wat lijstjes en deze lijstjes verdwenen weer bij een directielid in de la.
Deze lijstjes leek ons niet echt taskforce, laat staan devops. Dus zijn we begonnen om die lijstjes los te laten. Ze te leggen bij de mensen die ze wilden hebben en ons daarmee maar moesten aansturen. Wij gingen ons in de straat zetten als één van de teams. Hierdoor dwongen we onszelf om weer te gaan scrummen. Een goede keuze voor het team. We werden namelijk een team. Een groep die weet waar de expertises liggen en wie er aangesproken moeten worden voor welke problemen. Dit werd het kenmerk voor mij om het team te bekijken als devops. Een team met ontwikkelaars, ofwel developers, en met beheerders, ofwel operations. Zo kunnen de ontwikkelaars makkelijk schakelen met de beheerders over een plan van aanpak. Maar ook kan er snel geschakeld worden om de oorzaak van een probleem te vinden.

Nu we dit hadden moest ons scrumbord opgetuigd worden. Aangezien we anders functioneren dan de andere teams konden we niet zomaar het scrumproces blijven volgen. We maakten ons bord met een extra horizontale lane. De specials lane, die gebruikt werd voor alle issues die door de sprint heen aan het team werd gevraagd. Een voorbeeld waarvoor we de specials lane nog gebruiken is voor de beheerders. Niet alle testomgevingen zijn even stabiel, waardoor de beheerders nog wel eens bezig zijn met andere zaken dan de stories op het bord. Juist daarvoor is deze lane er, om rekening te houden met de tijd die het team buiten de sprint om bezig is.

De specials lane is voor ons ook handig om de tijd buiten de sprint in te perken. We wilden namelijk ook functionaliteit opleveren en de al in stories opgenomen problemen oplossen. Hierdoor moesten we af en toe ‘nee’ verkopen, of ‘ben je al bij de product owner geweest?’. Voor de teams om ons heen niet zo leuk, maar voor ons cruciaal om te kunnen blijven functioneren. En dit moesten we ook naar de andere teams communiceren: De devops is er niet om alle problemen voor je op te lossen. We krijgen problemen op ons bord die niet met een simpele refinement te vatten zijn. We duiken dieper de stof in, maar devops wil niet zeggen dat we de vuilniswagen zijn.

Ons scrumproces bevat dan ook geen refinement zoals scrum dat aangeeft. We hebben in onze tweewekelijkse sprint geen refinement waar we als hele team de stories voor de komende sprint bekijken en klaarmaken. Deze refinement noemen wij analyse en de stories die voor een analyse in de wacht staan nemen we op in de sprint om ze op de goede diepte en waarde in te schatten. Deze analysestories geven dus alleen een oplossingsrichting. Na de analyse wordt dan gekeken of de oplossing de gewenste oplossing is en hoe deze ingevoerd kan worden. Hierbij is het voor ons de taak om de story bij het goede team te zetten. Dit hoeven wij namelijk niet te zijn.

Om te blijven functioneren als devops is het dus van belang om niet alleen lijstjes te maken of te analyseren. Het is juist belangrijk om te doen. Om de expertises te gebruiken binnen het team en daarmee problemen efficiënt op te lossen. Het is hierbij dan ook binnen het team belangrijk om een proces te volgen dat past bij het team waardoor het team kan functioneren. Een extra specials lane of juist geen refinement kunnen de middelen zijn die succes garanderen.

  • 1
  • 2