DDC BC 10 november 2021 - Automatisch testen van je API - Technisch/Functioneel

Woensdag, 10 november 2021, door Luc van Vugt

API, wie gebruikt ze niet! Maar een belangrijker onderdeel hiervan is, WIE test ze niet! Waarschijnlijk gebeurt dit niet zo vaak. Het testen van API zorgt voor een extra uitdaging omdat dit een proces betreft dat zowel binnen als buiten Business Central plaatsvindt. Deze sessie werd door Lucas van Vugt gegeven. Luc (59, MVP) heeft geen verdere uitleg nodig lijkt mij. Luc heeft bijna de tweede druk van zijn boek af, wat uitkomt op 11-01-22, genaamd “Automated Testing in Microsoft Dynamics 365 Business Central”. En wat blijkt, API testing is een nieuwe hoofdstuk in zijn boek. Hoe mooi is het, dat Luc dit weer face-to-face mocht presenteren op de DDC.

De uitdagingen bij het testen van API

In tegenstelling tot het normaal testen van je AL code, zijn er bij het testen van je API twee processen nodig. Namelijk een proces dat de API aanroept genaamd “Client’ en een het proces dat wordt aangeroepen, onze API, genaamd “Server”. Normaal gesproken test je nooit beide system tegelijk omdat dit eigenlijk twee verschillende systemen zijn. De API is een onderdeel van je Business Central, maar de client is vaak van een derde partij. Ondanks dat dit twee verschillende systemen zijn, willen we deze in onze test kunnen beheren/controleren.

Test Flow

De meeste ontwikkelaars onder ons gebruiken ATDD (Acceptance Test-Driver Development). Ondanks dat we nu met twee systemen te maken hebben, kunnen dit nog steeds toepassen.

Uitdagingen

Doordat we nu met twee systemen te maken hebben, lopen tegen wat uitdagingen aan. Bv, Hoe beheren we de Test flow. Hoe kunnen we ons autoriseren met de client bij de server. Hoe loopt de interactie tussen de client en de server.

Test Flow

De grootste uitdaging van de Test Flow is dat er bepaalde onderdelen afspelen in de client en verschillende onderdelen op de server. De client moet een REST bericht sturen naar de server en een response bericht ontvangen. De server, onze API, moet het verstuurde bericht verwerken.
In de test zullen beide onderdelen in dezelfde omgeving zitten en zal onderwater tussen de verschillende processen worden omgeschakeld om zo tot een goed resultaat te komen. Het lijkt dus om één proces te gaan, maar dit zijn twee processen bij het uitvoeren van de test.

Als we nu onze ATDD schema bekijken, dan ziet dit er zo uit.

Authenticatie Client/server

Zoals we allemaal wel weten, is authenticatie soms een uitdaging. Dit heeft dus ook betrekking op het testen van de API. Dit probleem is te omzeilen door alle gebruikers uit de database te verwijderen. Als we een nieuwe Cronus database restoren, kunnen we de database openen zonder een gebruiker in te richten. Deze oplossing zorgt ervoor dat we de API kunnen testen. Door geen gebruikers in de database te hebben, wordt de authenticatie overgeslagen. Een kanttekening bij deze methode is dat dit alleen werkt met Windows authenticatie.

Client / server interactie

De interactie tussen client en server vindt plaats via REST. Zorg dat je een valide target URL hebt. Met bijvoorbeeld de REST Client extension voor VS Code kan je controleren of je de target URL kan bereiken. Is dit het geval, dan kan je eigen code schrijven om met de server te communiceren.
Voor communiceren met een REST is best wat code nodig. Maar in dit geval hebben we mazzel. Microsoft heeft een test codeunit (Library - Graph) waar zo goed als de benodigde functies inzitten om met een REST server te communiceren.
Door gebruik te maken van de functies die er al zijn, is de benodigde code om te communiceren beperkt. Hieronder een voorbeeld van één van de test functies.

Tot slot

Bijna niemand in de zaal test zijn API via test codeunits. Toevallig zat de Waldo in onze zaal en ook hij gaf aan dat het testen van een API voor uitdagingen zorgt. Wat Luc liet zien, zorgt ervoor dat het testen van een API ook kan worden getest via de Test Run. Ondanks wat uitdagingen en kanttekeningen, is het begin hier. Ga je hier mee aan de slag, dan zou ik de opname van deze sessie bekijken. Voor meer info over automatisch testen, raad ik het boek van Luc aan.

Verslag: Guido Robben
Foto's: Dick Mauritz

PS

Voor hen die de sessie gemist hebben: komende dinsdag 23 november 2021 zal Luc dezelfde sessie presenteren als Areopa webinar. Je kunt je hier registreren: https://register.gotowebinar.com/register/2713024469569252878.
Hier vind je de opname: https://www.youtube.com/watch?v=xKnYtdiAG0A.

« Naar het overzicht

Events

10 november 2021 - Dynamics 365 BC Event, 10 november 2021
Van der Valk Hotel Veenendaal | Bastion 73 | 3905 NJ Veenendaall
Datum: 10 november 2021
Meer informatie »

22 juni 2021 - Dynamics 365 BC Event, 22 juni 2021
gather.town
Datum: 22 juni 2021
Meer informatie »

23 maart 2021 - Dynamics 365 BC Event, 23 maart 2021
gather.town
Datum: 23 maart 2021
Meer informatie »


Nieuws

Aptean nieuwe Gold sponsor
08 december 2021
Lees bericht »

Dutch Dynamics Community - BC * Nieuwsflits * November 2021
20 november 2021
Lees bericht »

Dutch Dynamics Community - BC * Nieuwsflits * Oktober 2021 * 2
27 oktober 2021
Lees bericht »


Blog

DDC BC-avond Veenendaal 10 november 2021
10 november 2021
Lees blog »

DDC BC 10 november 2021 - Personaliseren in Business Central - Functioneel
10 november 2021
Lees blog »

DDC BC 10 november 2021 - Werken met XML in AL - Technisch
10 november 2021
Lees blog »

Wat is de Dutch Dynamics Community?

Ons doel is het delen van kennis en ervaringen rondom Microsoft Dynamics software.

We bieden de mogelijkheid aan alle Microsoft Dynamics Professionals om met elkaar in contact te komen en deel te nemen aan presentaties en discussies.

Laagdrempelig, onafhankelijk, diepgaand en altijd actueel.

Om iedereen op de hoogte te houden kun je je inschrijven voor een van onze nieuwsbrieven:

Schrijf je hier in voor de Business Central nieuwsbrief

Schrijf je hier in voor de Finance & Operations nieuwsbrief

Platinum sponsors


Gold sponsors

 

Sapphire sponsors


Silver sponsors


Club van 100

c100