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.yamlexport PATH=$PATH:/var/lib/rancher/rke2/binexport CONTAINERD_ADDRESS=/run/k3s/containerd/containerd.sock
Inicio de laboratorio
-
Clone el siguiente repositorio y acceda a la carpeta
git clone https://gitlab.com/cicd4212034/quarkus-testing.git testing cd testing -
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 -
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 -
Acceda a la carpeta de la aplicacion
cd /usr/src/app -
Instale las dependencias
mvn install -Dmaven.repo.local=$PWD/.m2/repository -DskipTests -
Ejecute los tests
mvn test -Dmaven.repo.local=$PWD/.m2/repository -
Verifique los reportes generados de surefire
ls -l target ls -l target/surefire-reports exit -
Agregue todos los pasos anteriores dentro de un archivo llamado
test.shcon el siguiente contenido1 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 -
Asigne permisos de ejecución al archivo
chmod +x ./test.sh -
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 -
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 -
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 -
Edite el script agregando una condicional sobre si existe la variable
MVN_SETTINGS1 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 -
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 -
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 -
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