Les proves automatitzades són una part fonamental de la Integració Contínua (CI). Aquestes proves permeten detectar errors de manera primerenca en el cicle de desenvolupament, assegurant que el codi nou o modificat no introdueixi regressions ni errors. En aquesta secció, explorarem els conceptes clau de les proves automatitzades en CI, les seves eines, i com configurar-les en un pipeline de CI.

Conceptes Clau

  1. Tipus de Proves Automatitzades

Les proves automatitzades poden ser de diversos tipus, cadascun amb un propòsit específic:

  • Proves Unitàries: Verifiquen la funcionalitat d'unitats individuals de codi (funcions, mètodes, classes).
  • Proves d'Integració: Asseguren que diferents mòduls o serveis del sistema funcionen correctament junts.
  • Proves de Sistema: Validen el sistema complet per assegurar-se que compleix amb els requisits especificats.
  • Proves de Regressió: Detecten si els canvis recents han afectat funcionalitats que anteriorment funcionaven correctament.
  • Proves de Rendiment: Mesuren la velocitat, escalabilitat i estabilitat del sistema sota diferents càrregues.

  1. Beneficis de les Proves Automatitzades

  • Detecció Primerenca d'Errors: Identifiquen problemes en fases inicials del desenvolupament.
  • Consistència: Les proves es poden executar de manera consistent cada vegada que es fa un canvi en el codi.
  • Eficiència: Redueixen el temps i l'esforç necessaris per a la verificació manual.
  • Confiança: Augmenten la confiança en la qualitat del codi i en la capacitat de desplegar-lo amb seguretat.

Eines Populars per a Proves Automatitzades

  1. JUnit

  • Descripció: Una eina de proves unitàries per a Java.
  • Característiques: Facilita la creació i execució de proves unitàries, amb suport per a assertions i fixtures.

  1. Selenium

  • Descripció: Una eina per a proves de navegadors web.
  • Característiques: Permet automatitzar la interacció amb pàgines web per verificar el seu comportament.

  1. TestNG

  • Descripció: Una eina de proves per a Java inspirada en JUnit.
  • Característiques: Ofereix funcionalitats avançades com la configuració de proves paral·leles, la dependència entre proves i la generació de reports.

  1. PyTest

  • Descripció: Una eina de proves per a Python.
  • Característiques: Suporta proves unitàries, d'integració i de sistema, amb una sintaxi senzilla i extensible.

  1. Jenkins

  • Descripció: Una eina d'integració contínua que pot executar proves automatitzades com a part del pipeline de CI.
  • Característiques: Integració amb diverses eines de proves, suport per a plugins i configuració de pipelines.

Configuració de Proves Automatitzades en un Pipeline de CI

Pas 1: Escriure les Proves

  • Unit Testing: Escriu proves unitàries per a cada funció o mètode del teu codi.
  • Integration Testing: Escriu proves d'integració per assegurar-te que els diferents components del sistema funcionen junts.

Pas 2: Configurar l'Entorn de Proves

  • Dependències: Instal·la totes les dependències necessàries per executar les proves.
  • Dades de Prova: Configura les dades de prova necessàries per a l'execució de les proves.

Pas 3: Integrar les Proves en el Pipeline de CI

  • Jenkinsfile: Si utilitzes Jenkins, crea o modifica el Jenkinsfile per incloure l'execució de les proves.
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                // Comandes per compilar el codi
                sh 'mvn clean install'
            }
        }
        stage('Test') {
            steps {
                // Comandes per executar les proves
                sh 'mvn test'
            }
        }
    }
    post {
        always {
            // Publicar els resultats de les proves
            junit 'target/surefire-reports/*.xml'
        }
    }
}

Pas 4: Executar i Monitoritzar les Proves

  • Execució Automàtica: Configura el pipeline perquè s'executi automàticament en cada commit o push al repositori.
  • Monitorització: Revisa els resultats de les proves i les alertes per detectar i corregir errors ràpidament.

Exercici Pràctic

Objectiu

Configurar un pipeline de CI en Jenkins que inclogui l'execució de proves unitàries utilitzant JUnit.

Passos

  1. Escriure Proves Unitàries: Crea proves unitàries per a una aplicació Java utilitzant JUnit.
  2. Configurar Jenkins: Configura un projecte en Jenkins i crea un Jenkinsfile per compilar el codi i executar les proves.
  3. Executar el Pipeline: Fes un commit del codi i observa com Jenkins executa el pipeline, incloent les proves unitàries.

Solució

// Exemple de prova unitària amb JUnit
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calc = new Calculator();
        int result = calc.add(2, 3);
        assertEquals(5, result);
    }
}
// Jenkinsfile per a executar les proves unitàries
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'mvn clean install'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
    }
    post {
        always {
            junit 'target/surefire-reports/*.xml'
        }
    }
}

Conclusió

Les proves automatitzades són essencials per assegurar la qualitat del codi en un entorn de CI. Mitjançant l'ús d'eines adequades i la integració de proves en el pipeline de CI, es pot detectar i corregir errors de manera primerenca, millorant la fiabilitat i l'eficiència del procés de desenvolupament. En el següent mòdul, explorarem els fonaments del Lliurament Continu (CD) i com es complementa amb la Integració Contínua.

© Copyright 2024. Tots els drets reservats