Vea qué solución de pruebas de API resultó ganadora en el informe GigaOm Radar. Obtenga su informe analítico gratuito >>

Vea qué solución de pruebas de API resultó ganadora en el informe GigaOm Radar. Obtenga su informe analítico gratuito >>
Saltar a la sección
Es posible que haya leído en una publicación anterior sobre cómo aplicar SAST y pruebas unitarias en un entorno en contenedores. Aquí hay una continuación sobre cómo puede implementar adecuadamente el análisis estático y las pruebas unitarias utilizando Parasoft C/C++test Standard en un contenedor Docker.
Saltar a la sección
Saltar a la sección
Los contenedores son una tecnología de empaque evolutiva, estandarizada y portátil que se está implementando directamente en los flujos de trabajo de desarrollo Agile modernos como DevOps/DevSecOps. Los contenedores se introdujeron por primera vez para el desarrollo y la implementación de aplicaciones web y microservicios, donde obtuvieron una amplia adopción en la industria de TI. Hoy en día, la industria integrada utiliza contenedores de forma extensiva.
Los contenedores ofrecen una reproducción rápida de entornos idénticos para el desarrollo integrado, las pruebas de software, la puesta en escena y la producción en cualquier fase del SDLC.
La implementación de contenedores proporciona varios beneficios.
Es importante comprender la arquitectura del contenedor. Vayamos a través de una descripción rápida. Un contenedor es una aplicación empaquetada con otros componentes o dependencias, como binarios o bibliotecas de tiempo de ejecución de lenguaje específico y archivos de configuración. Los contenedores tienen sus propios procesos, sus propias interfaces de red y montajes.
Los contenedores también están aislados entre sí y se ejecutan sobre un motor de contenedores, como Docker, para facilitar la portabilidad y la flexibilidad. Además, los contenedores comparten un sistema operativo y se ejecutan en cualquiera de los siguientes:
También es importante comprender el papel del motor de contenedor porque proporciona funcionalidades cruciales, que incluyen:
Una imagen de contenedor es un archivo estático con código ejecutable e incluye todo lo que un contenedor necesita para ejecutarse. Por lo tanto, un contenedor es una instancia en ejecución de una imagen de contenedor. C/C++test se envía con una imagen de contenedor de ejemplo, pero para ser más específicos, es un archivo de Docker.
Parte 1 de esta publicación discutió los beneficios de usar contenedores para implementar cadenas de herramientas de desarrollo integradas. Mostró cómo configurar Parasoft C / C ++ test Professional para trabajar con la cadena de herramientas de compilación y el entorno de ejecución de pruebas implementado en un contenedor.
Ahora, veamos cómo crear una imagen de contenedor con Parasoft C / C ++ test Standard. Demostraré un ejemplo simple con una ejecución de análisis estático en el contenedor.
Como herramienta basada en la línea de comandos, Parasoft C/C++test Standard es adecuado para implementaciones en contenedores. Puede empaquetarse con el compilador y el sistema de compilación en una imagen de contenedor y usarse para CI/CD e implementarse en los escritorios de los desarrolladores para los escaneos de la línea de comando local. La siguiente imagen muestra la descripción general de alto nivel de esta configuración:
El diagrama muestra a Jenkins usando la prueba C / C ++ en contenedores para ejecutar análisis estático. En esta configuración específica, la prueba de Parasoft C / C ++, la cadena de herramientas de compilación y las herramientas de compilación se implementan en el contenedor que se muestra en la esquina superior derecha del diagrama.
El contenedor debajo de él, en la parte inferior derecha, proporciona el entorno de ejecución, que puede ser necesario para ejecutar pruebas en tiempo de ejecución, como pruebas unitarias o pruebas de nivel de sistema automatizadas.
Si pretendemos implementar solo análisis estático, lo más probable es que nuestra configuración incluya solo un tipo de contenedor con la cadena de herramientas de compilación y la prueba Parasoft C / C ++.
Si aún no lo ha hecho, por favor instale la última versión de Parasoft C/C++test para Linux.
Para simplificar el proceso de creación de una imagen de contenedor con la prueba C / C ++, la última versión se envía con un ejemplo de Dockerfile. Puede encontrar este Dockerfile en la siguiente ubicación:
/ integración / docker / Dockerfile
Este simple Dockerfile se enfoca solo en los pasos de prueba C / C ++ requeridos para construir la imagen. En la mayoría de los casos del mundo real, deberá fusionar este archivo con su Dockerfile.
Antes de analizar el contenido en el Dockerfile de ejemplo, veamos cómo funciona. Mi ejemplo asume la siguiente estructura de archivo simple:
style = ”tamaño de fuente: 13px;”>$ HOME / sandbox / parasoft_cpptest_standard-2020.1.0-linux.x86_64.tar.gz
1. Descomprima la distribución de prueba C / C ++.
2. Copie el Dockerfile de ejemplo de la distribución
3. Prepare un archivo de propiedades para la prueba C / C ++ con la información sobre la licencia. Usaremos el archivo cpptestcli.properties predeterminado como base, así que lo copiaremos a nuestro directorio de trabajo:
Edítelo para insertar la información sobre la ubicación del servidor de licencias. Utilice su editor favorito para configurar la información de licencia. Guarde el archivo cuando haya terminado.
4. Edite el Dockerfile y elimine el comentario de la línea número 13 (en la que se copia el archivo cpptestcli.properties del directorio local a la ubicación en los contenedores). La línea en el Dockerfile debería verse así:
5. Ahora, estamos listos para crear la imagen de Docker. Ejecute el comando para construir la primera imagen con la prueba C / C ++. El nombre de la imagen es "cpptest_ci_image".
Docker tardará un tiempo en analizar su caché y descargar la imagen base requerida. Una vez hecho esto, la distribución de prueba de C / C ++ se copia e instala en la imagen. Después de uno o dos minutos, la imagen debería estar lista. Confirme ejecutando el comando para listar todas las imágenes:
En la salida, debería ver "cpptest_ci_image" en la parte superior. Genial, tenemos una imagen construida y lista. ¡Ahora es el momento de probarlo!
Para una prueba simple, use una de las líneas de comando auxiliares / ejemplares proporcionadas dentro del Dockerfile.
Use su editor favorito para abrir el Dockerfile y desplácese hacia abajo hasta la parte inferior de los archivos. Debería ver un par de líneas de comando de ejemplo como esta:
Usemos la línea de comando de la línea 26 para ejecutar un análisis estático en el contenedor en uno de los ejemplos de prueba de C / C ++ enviados con la distribución.
Dado que decidimos incorporar el archivo cpptestcli.properties con la información de licencia en el contenedor, podemos simplificar la línea de comandos y eliminar la opción -settings. La línea de comando para la prueba debería verse así:
¡Voila! El análisis estático se ejecutó en el contenedor. Los resultados se informaron en la consola.
Podríamos configurar aún más la herramienta para producir el informe HTML en el sistema de archivos local, pero esa es otra historia. Nuestro objetivo principal era crear el contenedor con C/C++test dentro y configurarlo para ejecutar análisis estáticos. Logramos el objetivo.
Si necesita configurar un servidor CI con análisis estático como parte del proceso, su tarea es mucho más sencilla. Simplemente acceda al contenedor. Lo mismo ocurre si los desarrolladores de su equipo desean ejecutar un análisis estático.
¿Necesita actualizar Parasoft C/C++test a la última versión? ¡Simplemente descargue la distribución, reconstruya la imagen de su contenedor y listo! El equipo y la infraestructura automatizada ni siquiera notarán esta operación. Suave, fácil y reversible, si es necesario.
Antes de terminar, veamos el contenido del Dockerfile enviado con la prueba Parasoft C / C ++ que se usó para crear nuestra imagen. La siguiente imagen muestra el contenido de / integración / docker / Dockerfile.
Aquí están los detalles:
Esto es todo lo que se necesita para crear un contenedor simple con la prueba Parasoft C / C ++ que esté listo para ejecutar análisis estáticos.
Como mencioné, este es un Dockerfile simple. Se agregó a la distribución del producto para brindarle un ejemplo de lo que puede necesitar para crear una imagen de contenedor para su entorno. Deberá adaptarlo a sus necesidades o fusionarlo con Dockerfiles existentes.