Artikelen
Tutorials
Interactieve handleidingen
Tutorial integratietesten met Bitbucket Pipelines
Sten Pittet
Mede-auteur
Leer hoe je integratietests uitvoert met Bitbucket Pipelines door meerdere services in afzonderlijke Docker-containers uit te voeren in een pipeline.
Testen is een cruciaal onderdeel van continue integratie en continue levering. En als je continue implementatie gebruikt, is dit de laatste kans om bugs tegen te houden voordat wijzigingen gereleased worden aan je klanten. Unit-tests die individuele methoden en klassen valideren, zijn een goede manier om problemen te voorkomen, maar je zult ook integratietests moeten uitvoeren die ervoor zorgen dat de verschillende modules die door je toepassing worden gebruikt (toepassingsserver, database, cache) goed met elkaar samenwerken. In deze tutorial zie je hoe je integratietests kunt uitvoeren met Bitbucket Pipelines door meerdere services in afzonderlijke Docker-containers uit te voeren in een pipeline.
Tijd
30 minuten
Publiek
Continue integratie en/of Bitbucket Pipelines zijn nieuw voor je
Vereisten
- Een Bitbucket-account
-
Node-versie 4.6 of hoger om de toepassing uit te voeren
-
Docker Community Edition-versie 17.03 of hoger om MongoDB op je lokale computer uit te voeren
- Een terminal om bash-opdrachten uit te voeren
-
Git om de repository te beheren en terug te pushen naar Bitbucket Cloud
Stap 1: De voorbeeldtoepassing lokaal uitvoeren
We gebruiken een eenvoudige Node.js-toepassing die een bericht op de startpagina toont en bezoeken aan een database registreert. Je kunt de toepassing eenvoudig vanaf je terminal klonen om je volledig te concentreren op de Bitbucket Pipelines-configuratie.
git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.git
Ga nu naar je lokale repository en voer npm install uit om de afhankelijkheden te installeren die vereist zijn door de toepassing.
cd bitbucket-pipelines-services-tutorial
npm install
Voordat we de toepassing uitvoeren, moeten we een nieuwe MongoDB-installatie starten. Dankzij Docker is dit iets dat je gemakkelijk kunt doen vanaf je terminal.
docker run --name mongodb -d -p 27017:27017 mongo
Start vervolgens je toepassing en ga naar http://localhost:3000 om de toepassing in actie te zien.
npm start
Je kunt naar http://localhost:3000/visits gaan om er zeker van te zijn dat een bezoek correct is gelogd in de database.
Laten we er ten slotte voor zorgen dat de tests lokaal met succes worden voltooid via de opdracht npm test. Er zouden twee tests voltooid moeten worden nadat de opdracht is uitgevoerd.
npm test
Deze voorbeeldtoepassing voert twee verschillende tests uit:
- Eén test die verifieert dat de toepassing Hello World op de startpagina toont.
- Eén test die verifieert dat een nieuw bezoek wordt geregistreerd in de database wanneer iemand de startpagina bezoekt.
De eerste test slaagt zelfs als de database niet beschikbaar is, maar de tweede test is een integratietest die controleert of de webtoepassing correct samenwerkt met de databaseserver. Het kan ook worden opgevat als een functionele test, aangezien enkele zakelijke vereisten van de toepassing worden geverifieerd. Meer informatie over de verschillende soorten tests vind je in onze handleiding.
We gaan nu kijken hoe je Bitbucket Pipelines kunt gebruiken om het testen van je toepassing te automatiseren en te configureren om goed te kunnen gebruiken met een database.
Stap 2: Tests automatisch uitvoeren met Bitbucket Pipelines
Begin met het aanmaken van een nieuwe repository in je Bitbucket-account en werk de externe URL voor origin bij om naar je Bitbucket-repository te verwijzen.
git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainline
Ga naar het Pipelines-gedeelte van je repository om Bitbucket Pipelines in te schakelen.
Je kunt de standaard Javascript-sjabloon in het volgende scherm gebruiken. Deze bevat al de npm install- en npm test-opdrachten die je nodig hebt om afhankelijkheden te installeren en de testsuite uit te voeren.
Het bitbucket-pipelines.yml-bestand zou er ongeveer zo uit moeten zien.
image: node:16
pipelines:
default:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
- npm test
De databaseservice ontbreekt, maar deze zullen we later toevoegen.
Nadat je je bestand hebt gecommit, word je naar de sectie Pipelines van je repository geleid waar je je eerste pipeline in uitvoering kunt zien. Je pipeline zal mislukken omdat de tweede test niet goed kan worden uitgevoerd zonder een databaseverbinding. Als je doorklikt naar je pipeline, zou je een scherm moeten zien dat lijkt op het onderstaande scherm waarin staat dat één test is geslaagd en één test is mislukt.
In het volgende gedeelte zullen we dit probleem oplossen door een nieuwe servicedefinitie toe te voegen aan je Pipelines-configuratie.
Stap 3: Een servicedefinitie toevoegen voor de database
Met Bitbucket Pipelines kun je maximaal drie extra Docker-containers uitvoeren bovenop de hoofdtoepassing die in een pipeline wordt uitgevoerd. Je kunt deze containers gebruiken om services uit te voeren, zoals een datastore, analysetool of een service van derden die je toepassing mogelijk nodig heeft om de pipeline te voltooien. In ons geval zullen we een aparte servicecontainer gebruiken om MongoDB uit te voeren.
Ga naar het brongedeelte van je repository om de lijst met bestanden te zien.
Klik op het bitbucket-pipelines.yml-configuratiebestand om er toegang toe te krijgen. In de rechterbovenhoek vind je de knop Bewerken waarmee je het bestand kunt bewerken en rechtstreeks vanuit je browser kunt committen.
Onderaan het configuratiebestand moet er een servicedefinitie voor onze database worden toegevoegd.
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
definitions:
services:
database:
image: mongo
In het geval van MongoDB hebben we geen extra instellingen nodig in de image-definitie, maar voor sommige Docker-images voor datastores en services moet je mogelijk enkele omgevingsvariabelen opgeven. Je kunt een lijst met database voorbeelden vinden in de documentatie van Bitbucket Pipelines.
Voordat je het bestand commit, moet je de nieuwe service toevoegen aan de stap die de tests uitvoert. De uiteindelijke configuratie van Pipelines moet eruitzien als de onderstaande code.
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- database
definitions:
services:
database:
image: mongo
Ga naar je Pipelines-gedeelte nadat je het bestand hebt gecommit om de voortgang van de pipeline te zien. Deze zou normaal gesproken gewoon voltooid moeten worden.
Je kunt op het databasetabblad in het logpaneel klikken om de logs van de MongoDB-container te zien.
Dat was het! Je weet nu hoe je services aan je pipeline toevoegt om integratietests uit te voeren. Vergeet niet de documentatie te lezen om meer te weten te komen over hoe je deze services kunt gebruiken.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.