Objectiu de l'Exercici

En aquest exercici, aprendràs a integrar proves automatitzades en un pipeline de CI/CD. Això inclou la configuració de proves unitàries i d'integració, així com la seva execució automàtica en cada commit.

Passos a Seguir

  1. Configuració del Projecte

  1. Clona el Repositori: Clona el repositori del projecte des del qual treballaràs.

    git clone https://github.com/usuari/projecte.git
    cd projecte
    
  2. Instal·la les Dependències: Assegura't que totes les dependències del projecte estiguin instal·lades.

    npm install
    

  1. Escriure Proves Automatitzades

  1. Crea un Directori de Proves: Si no existeix, crea un directori per a les proves.

    mkdir tests
    
  2. Escriu Proves Unitàries: Crea un fitxer de proves unitàries dins del directori tests. Per exemple, tests/unit.test.js.

    const assert = require('assert');
    const suma = require('../src/suma');
    
    describe('Funció de Suma', function() {
        it('hauria de retornar 5 per a suma(2, 3)', function() {
            assert.strictEqual(suma(2, 3), 5);
        });
    
        it('hauria de retornar -1 per a suma(-2, 1)', function() {
            assert.strictEqual(suma(-2, 1), -1);
        });
    });
    
  3. Escriu Proves d'Integració: Crea un fitxer de proves d'integració dins del directori tests. Per exemple, tests/integration.test.js.

    const request = require('supertest');
    const app = require('../src/app');
    
    describe('API Endpoints', function() {
        it('hauria de retornar llista d'usuaris', function(done) {
            request(app)
                .get('/usuaris')
                .expect('Content-Type', /json/)
                .expect(200)
                .end(function(err, res) {
                    if (err) return done(err);
                    assert(Array.isArray(res.body));
                    done();
                });
        });
    });
    

  1. Configuració del Pipeline de CI

  1. Configura el Fitxer de Pipeline: Afegeix la configuració necessària per executar les proves en el fitxer de pipeline de CI. Per exemple, en un fitxer .gitlab-ci.yml:

    stages:
      - test
    
    test:
      stage: test
      image: node:14
      script:
        - npm install
        - npm test
      only:
        - master
    
  2. Configura el Fitxer de Proves: Assegura't que el fitxer package.json inclogui un script per executar les proves.

    {
      "scripts": {
        "test": "mocha tests/*.test.js"
      }
    }
    

  1. Executar el Pipeline

  1. Commit i Push: Fes commit i push dels canvis al repositori.

    git add .
    git commit -m "Afegeix proves automatitzades"
    git push origin master
    
  2. Verifica l'Execució del Pipeline: Accedeix a la plataforma de CI/CD (per exemple, GitLab) i verifica que el pipeline s'executi correctament i que les proves passin.

Solució

Fitxer tests/unit.test.js

const assert = require('assert');
const suma = require('../src/suma');

describe('Funció de Suma', function() {
    it('hauria de retornar 5 per a suma(2, 3)', function() {
        assert.strictEqual(suma(2, 3), 5);
    });

    it('hauria de retornar -1 per a suma(-2, 1)', function() {
        assert.strictEqual(suma(-2, 1), -1);
    });
});

Fitxer tests/integration.test.js

const request = require('supertest');
const app = require('../src/app');

describe('API Endpoints', function() {
    it('hauria de retornar llista d'usuaris', function(done) {
        request(app)
            .get('/usuaris')
            .expect('Content-Type', /json/)
            .expect(200)
            .end(function(err, res) {
                if (err) return done(err);
                assert(Array.isArray(res.body));
                done();
            });
    });
});

Fitxer .gitlab-ci.yml

stages:
  - test

test:
  stage: test
  image: node:14
  script:
    - npm install
    - npm test
  only:
    - master

Fitxer package.json

{
  "scripts": {
    "test": "mocha tests/*.test.js"
  }
}

Errors Comuns i Consells

  1. Error: No es troba el mòdul 'assert' o 'supertest':

    • Solució: Assegura't d'instal·lar totes les dependències necessàries.
    npm install mocha assert supertest --save-dev
    
  2. Error: Les proves no es troben o no s'executen:

    • Solució: Verifica que els camins dels fitxers de proves siguin correctes i que el script de proves en package.json estigui ben configurat.
  3. Error: El pipeline falla en la fase de test:

    • Solució: Revisa els logs del pipeline per identificar l'error específic i corregeix-lo. Pot ser útil executar les proves localment abans de fer push.

Conclusió

En aquest exercici, has après a integrar proves automatitzades en un pipeline de CI/CD. Has configurat proves unitàries i d'integració, i has assegurat que s'executin automàticament en cada commit. Aquest procés és essencial per mantenir la qualitat del codi i detectar errors de manera primerenca.

© Copyright 2024. Tots els drets reservats