Wat is testen in een pipeline?

Een pipeline is een geautomatiseerd proces dat helpt bij het bouwen, testen en deployen van software. Het wordt vaak gebruikt in Continuous Integration (CI) en Continuous Deployment (CD) om codewijzigingen efficiënt en betrouwbaar door te voeren.

Een pipeline is meestal gekoppeld aan een -=GIT REPOSITORY=-. Zodra er een wijziging is in de repository, bijvoorbeeld een push, dan wordt het proces gestart.

De stappen (stages) in de pipeline kunnen worden ingesteld. Mogelijke stages zijn: controles op -=CODE SMELLS=-, testen uitvoeren, het installeren van packages, het bouwen van de applicatie, het deployen van de applicatie.

Het gebruiken van pipelines verhoogt de kwaliteit van je proces en applicatie. Dit komt door:

  • Automatisering: Minder handmatig werk en minder kans op fouten.
  • Snelle feedback: Bugs en fouten worden vroeg ontdekt.
  • Consistentie: Alle code wordt op dezelfde manier getest en gedeployed.
  • Efficiëntie: Ontwikkelaars kunnen sneller en veiliger nieuwe features uitrollen.

Pipelines worden vaak beheerd via tools zoals:

  • -=GITHUB ACTIONS=-
  • GitLab CI/CD
  • Jenkins
  • CircleCI
  • Azure DevOps

Kort gezegd: Een pipeline automatiseert de weg van code naar productie, waardoor software sneller en betrouwbaarder wordt ontwikkeld.

Hoe zit pipeline testen in elkaar?

Een pipeline bestaat uit een proces. Meestal wordt dit proces verdeeld in verschillende fasen, de stages. Voorbeelden van stages zijn: build, test, deploy. Opvolgende stages kunnen gebruik maken van vorige stages. Zo kan de stage test gebruik maken van de build stage waarin de packages zijn geïnstalleerd. De volgende stage gaat pas van start als een vorige stage geslaagd is. Stages zijn onderverdeeld in jobs. Een test stage zou kunnen bestaan uit de jobs: linting en unit tests uitvoeren. Voor elke job wordt een nieuwe, schone virtuele server gebruikt, de runners genoemd. Standaard wordt gebruik gemaakt van Github runners, maar het is ook mogelijk om zelf gehoste runners te gebruiken.

Hoe gebruik je test in pipelines?

We gaan er vanuit dat de applicatie beschikt over een testproject met unittesten en een verwijzing (reference) heeft naar het testproject. Verder is er een Github repository waar de applicatie is opgeslagen. Dit is samen de uitgangssituatie.

De stages van een pipeline zijn te configureren in de map .github/workflows.

In onderstaande voorbeeld zijn de stages opgenomen in het workflowbestand .github/workflows/maui-tests.yml.

De workflow wordt uitgevoerd bij elke push en pull request op main. Dit is geconfigureerd onder on.

De workflow bevat één job, het uitvoeren van testen. Om de testen te kunnen uitvoeren wordt een virtuele machine gemaakt waarin in stappen alles wordt geïnstalleerd om de applicatie en de testen te kunnen uitvoeren.

Codevoorbeeld

name: MAUI Unit Tests
 
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
 
jobs:
  test:
    runs-on: ubuntu-latest  # Of windows-latest/macOS-latest als specifiek platform nodig is
    steps:
      - name: Haal de repository op
        uses: actions/checkout@v4
 
      - name: Installeer .NET SDK
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: '8.0.x'  # Gebruik de juiste versie voor MAUI
 
      - name: Installeer MAUI workloads
        run: dotnet workload install maui
 
      - name: Herstel afhankelijkheden
        run: dotnet restore
 
      - name: Bouw de applicatie
        run: dotnet build --configuration Release --no-restore
 
      - name: Voer unit tests uit
        run: dotnet test --configuration Release --no-restore --no-build --verbosity normal
 

Volgende stap: Stappen testen in pipeline