Skip to content

Tema:

Testing de aplicaciones.


Introducción

En esta guía aprenderemos a realizar pruebas de un aplicativo, lo cual nos ayuda a verificar el correcto funcionamiento del mismo.

Objetivo

Objetivo General:

  • El objetivo de la practica es realizar pruebas en un aplicativo con las herramientas proveidas por nuestro compilador.

Desarrollo del tema

Una vez que tengamos listo el código de nuestra aplicación podemos empezar a planear una suite de pruebas con las que se pueda garantizar un correcto funcionamiento de las diferentes partes que componen esta aplicación. Llevar esto a la automatización se vuelve crítico para no afectar los tiempos del proyecto.

Laboratorio: Testing de aplicaciones

Descripción

La presente guía aborda la automatización de la fase de testing de la aplicación.

Objetivos

  • Ejecutar los tests de la aplicación y generar un reporte de forma automática.

Antes de comenzar

  • Contar con el acceso al ambiente del laboratorio

  • Ingresar al servidor de laboratorio con la llave proporcionada.

    export LAB=X
    ssh student@lab-${LAB}-aio 
    

  • Cambiar al usuario root

    sudo -i
    

  • Proporcione accesos administrativos al cluster de Kubernetes

    export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
    
    export PATH=$PATH:/var/lib/rancher/rke2/bin
    
    export CONTAINERD_ADDRESS=/run/k3s/containerd/containerd.sock
    

Inicio de laboratorio

  1. Clone el siguiente repositorio y acceda a la carpeta

    git clone https://gitlab.com/cicd4212034/quarkus-testing.git testing
    cd testing
    

  2. Revise el contenido de los archivos de testing

    vi src/test/java/org/acme/getting/started/testing/Profiles.java
    vi src/test/java/org/acme/getting/started/testing/GreetingResourceTest.java
    vi src/test/java/org/acme/getting/started/testing/GreetingServiceTest.java
    vi src/test/java/org/acme/getting/started/testing/StaticContentTest.java
    

  3. Corra un contenedor con una terminal activa y un volumen montando la carpeta actual

    nerdctl run -it --rm -v $PWD:/usr/src/app maven:3.8.5-openjdk-18 bash
    

  4. Acceda a la carpeta de la aplicacion

    cd /usr/src/app
    

  5. Instale las dependencias

    mvn install -Dmaven.repo.local=$PWD/.m2/repository -DskipTests
    

  6. Ejecute los tests

    mvn test -Dmaven.repo.local=$PWD/.m2/repository
    

  7. Verifique los reportes generados de surefire

    ls -l target
    ls -l target/surefire-reports
    exit
    

  8. Agregue todos los pasos anteriores dentro de un archivo llamado test.sh con el siguiente contenido

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    
    cd /usr/src/app
    
    mvn install -Dmaven.repo.local=$PWD/.m2/repository -DskipTests
    mvn test -Dmaven.repo.local=$PWD/.m2/repository
    
    ls -l target/surefire-reports
    

  9. Asigne permisos de ejecución al archivo

    chmod +x ./test.sh
    

  10. Corra el script desde el contenedor

    nerdctl run -it --rm -v $PWD:/usr/src/app maven:3.8.5-openjdk-18 /usr/src/app/test.sh
    

  11. Edite el script agregando variables para los parametros de maven

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    
    cd /usr/src/app
    
    mvn install $MVN_ARGS -DskipTests
    mvn test $MVN_TEST_ARGS $MVN_ARGS
    
    ls -l target/surefire-reports
    

  12. Agregue las variables al comando de docker

    nerdctl run -it --rm -v $PWD:/usr/src/app \
    -e MVN_ARGS="-Dmaven.repo.local=/usr/src/app/.m2/repository" \
    -e MVN_TEST_ARGS="-Dquarkus.test.profile.tags=greeting" \
    maven:3.8.5-openjdk-18 /usr/src/app/test.sh
    

  13. Edite el script agregando una condicional sobre si existe la variable MVN_SETTINGS

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    #!/bin/bash
    
    cd /usr/src/app
    
    if [[ $MVN_SETTINGS ]]; then
      echo $MVN_SETTINGS | base64 -d > settings.xml
      mvn -s settings.xml install $MVN_ARGS -DskipTests
      mvn -s settings.xml test $MVN_TEST_ARGS $MVN_ARGS
    else
    mvn -s settings.xml install $MVN_ARGS -DskipTests
    mvn -s settings.xml test $MVN_TEST_ARGS $MVN_ARGS
    fi
    
    ls -l target/surefire-reports
    

  14. Ejecute el script desde un contenedor

    nerdctl run -it --rm -v $PWD:/usr/src/app \
    -e MVN_ARGS="-Dmaven.repo.local=/usr/src/app/.m2/repository" \
    -e MVN_TEST_ARGS="-Dquarkus.test.profile.tags=greeting" \
    maven:3.8.5-openjdk-18 /usr/src/app/test.sh
    

  15. Edite el script agregando un settings.xml por defecto

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #!/bin/bash
    
    cd /usr/src/app
    
    if [[ $MVN_SETTINGS ]]; then
      echo $MVN_SETTINGS | base64 -d > settings.xml
      mvn -s settings.xml install $MVN_ARGS -DskipTests
      mvn -s settings.xml test $MVN_TEST_ARGS $MVN_ARGS
    else
    cat > settings.xml <<EOF
    <settings>
        <servers>
            <!-- The servers added here are generated from environment variables. Don't change. -->
            <!-- ### SERVER's USER INFO from ENV ### -->
        </servers>
        <mirrors>
            <!-- The mirrors added here are generated from environment variables. Don't change. -->
            <!-- ### mirrors from ENV ### -->
        </mirrors>
        <proxies>
            <!-- The proxies added here are generated from environment variables. Don't change. -->
            <!-- ### HTTP proxy from ENV ### -->
        </proxies>
    </settings>
    EOF
    
    mvn -s settings.xml install $MVN_ARGS -DskipTests
    mvn -s settings.xml test $MVN_TEST_ARGS $MVN_ARGS
    fi
    
    ls -l target/surefire-reports
    

  16. Ejecute el script desde un contenedor

    nerdctl run -it --rm -v $PWD:/usr/src/app \
    -e MVN_ARGS="-Dmaven.repo.local=/usr/src/app/.m2/repository" \
    -e MVN_TEST_ARGS="-Dquarkus.test.profile.tags=greeting" \
    maven:3.8.5-openjdk-18 /usr/src/app/test.sh