Threat Stack ahora es F5 Distributed Cloud App Infrastructure Protection (AIP). Empieza a utilizar Distributed Cloud AIP con tu equipo hoy.
Todos los proyectos de desarrollo de software, ya sean grandes o pequeños, pueden beneficiarse de unas pruebas bien planificadas y ejecutadas. Es la forma de garantizar que el software que está desarrollando funcione según lo previsto y aporte valor al cliente. Y, lo que es más importante, dada la naturaleza del panorama actual de la ciberseguridad, unas pruebas bien ejecutadas permiten garantizar que el software no se lance con errores o vulnerabilidades que puedan comprometer su integridad. En resumen, unas buenas pruebas permiten ofrecer a los clientes un rendimiento valioso y, al mismo tiempo, proporcionarles una seguridad sólida.
En Threat Stack, contamos con un entorno de desarrollo full stack complejo que requiere una gran labor de planificación y toma de decisiones por parte del equipo de ingeniería de pruebas para garantizar que todas las áreas funcionales de nuestra plataforma se sometan a pruebas de forma eficaz y eficiente. Esto incluye decidir qué herramientas de pruebas utilizar, ya que las adecuadas nos permiten incorporar la automatización y mejorar la velocidad, la repetibilidad, la coherencia y la precisión de los resultados.
En este artículo, vamos a hablar de diez de las herramientas de pruebas automatizadas que utilizamos, con el objetivo de compartir algunas ideas que esperamos que le ayuden en sus actividades de pruebas.
Sin embargo, antes de analizar las herramientas, contextualicemos la cuestión examinando las áreas clave que nuestros ingenieros de pruebas tienen en cuenta al probar nuestra plataforma y su infraestructura.
- Los agentes de Threat Stack están integrados en las flotas de máquinas virtuales de Amazon Web Services de los clientes para realizar su seguimiento y supervisión, tanto si utilizan distribuciones de Linux —como Ubuntu, Amazon Linux, Red Hat Enterprise Linux, CentOS o CoreOS— como si ejecutan alguna versión de Windows, como Windows Server 2012 R2, 2016 o 2019.
- Es posible que nuestros clientes utilicen contenedores o Kubernetes que deban supervisarse para detectar indicios de incidentes de seguridad.
- Cada agente envía datos de forma segura a Threat Stack Cloud Security Platform®, donde se analizan y procesan mediante uno de nuestros numerosos microservicios.
- Los datos de eventos se procesan mediante reglas de host, archivos, CloudTrail e inteligencia sobre amenazas, así como reglas personalizadas, para generar alertas clasificadas por nivel de gravedad y ayudar a los equipos de DevOps y seguridad de nuestros clientes a analizar lo que ocurre en sus sistemas.
- Todos los datos de eventos, reglas y alertas deben ser accesibles no solo a través de nuestra aplicación web, sino también mediante nuestras API de Threat Stack.
- Nuestros clientes pueden tomar estos datos y exportarlos a su propio almacenamiento externo para realizar sus propios análisis.
- Threat Stack Application Security Monitoring, un componente de Threat Stack Cloud Security Platform, se ejecuta como un microagente que supervisa las cargas útiles de las aplicaciones, envía información a la plataforma Threat Stack y avisa a los desarrolladores si detecta errores de programación segura. También supervisa las cargas útiles de las aplicaciones para detectar comportamientos maliciosos, como ataques de scripting entre sitios.
Como puede ver, nuestro software abarca muchos ámbitos y debe hacerlo de forma rápida, segura, precisa y a gran escala. Teniendo esto en cuenta, veamos algunas de las herramientas de pruebas que utilizamos.
Herramientas de pruebas que utilizamos en Threat Stack
Los ingenieros de software especializados en pruebas, integrados en sus respectivos equipos de funcionalidades, no solo se encargan de probar las nuevas características y funciones que se desarrollan continuamente, sino también de incorporar automatizaciones para garantizar que el resto del producto siga funcionando según lo previsto.
Como muestra del valor que nuestra organización otorga a estos profesionales, cada ingeniero de pruebas también tiene la responsabilidad de recomendar los métodos, las herramientas y los lenguajes de automatización que considere adecuados. A continuación se enumeran algunas de las herramientas que utilizamos en nuestras iniciativas de pruebas automatizadas. Tenga en cuenta que, en general, utilizamos un conjunto de herramientas más amplio; nuestro objetivo aquí es analizar una selección de ellas y recordarle que debe elegir las que mejor se adapten a los proyectos específicos en los que esté trabajando.
Aviso legal: Los recursos mencionados en esta publicación no están clasificados según su valor percibido. Nuestros comentarios tampoco implican ningún tipo de respaldo. Nuestra intención es simplemente proporcionarle información que consideramos que podría resultarle útil para ampliar sus conocimientos sobre herramientas de pruebas.
1. Capybara
Sitio web: https://teamcapybara.github.io/capybara/
Tipo: Gratuito, Código abierto
Soporte: Grupo de Google de Ruby-Capybara
Última versión: 3.29.0 (2 de septiembre de 2019)
Capybara es la gema de Ruby que utilizamos con Selenium para interactuar con nuestras pruebas de automatización de la interfaz de usuario en el navegador al realizar pruebas integrales de la interfaz de usuario. Capybara incluye métodos integrados que simulan cómo un usuario puede visitar una página, rellenar un cuadro de texto, hacer clic en un botón, o seleccionar una opción de un menú desplegable.
La pesadilla de cualquier tester de software es que los elementos web tarden una cantidad de tiempo absurda en cargarse en una página, lo que provoca fallos inexplicables en las pruebas. Todos los métodos que ofrece Capybara incorporan esperas automáticas.
Capybara detecta problemas relacionados con la experiencia de usuario utilizando nuestro producto de forma muy similar a como lo harían nuestros clientes: inicia sesión en nuestra aplicación, navega por el sitio, consulta los eventos activados por nuestros sistemas de prueba, crea nuevas reglas que determinan qué eventos deben generar alertas, examina en detalle la información de las alertas disponible en nuestro panel de control y actualiza diversos ajustes.
2. Gauge de ThoughtWorks
Sitio web: http://gauge.org
Tipo: Gratuito, Código abierto
Soporte: Grupo de Google de GetGauge, Chat de Gitter
Última versión: 1.0.7 (29 de agosto de 2019)
Gauge es un framework de automatización de pruebas creado por ThoughtWorks Studio India que utilizamos para configurar nuestras pruebas de aceptación de la interfaz de usuario y la API. Aunque usamos Gauge junto con Ruby, también es compatible con Java, C#, JavaScript y Python. Gauge es muy similar a Cucumber, el framework de BDD, aunque presenta algunas diferencias menores:
- Los planes de pruebas se encuentran en archivos de especificación escritos en Markdown, en lugar de en los archivos de funcionalidades de Cucumber, lo que facilita la creación y el mantenimiento de las pruebas.
- En lugar del formato Dado / Entonces / Cuando de Cucumber, los pasos de prueba se presentan como una lista con viñetas.
Como herramienta de desarrollo guiado por el comportamiento (BDD), Cucumber puede resultar algo verboso cuanto más compleja sea la prueba. Con Gauge, cada paso se presenta como una viñeta clara, concisa y fácil de leer. Además, Gauge incluye funciones de generación de informes en varios formatos (XML, JSON, HTML). Puede utilizarse tanto desde la línea de comandos como en un IDE como Visual Studio Code. Por último, se ofrece abundante documentación sobre diversos temas, como la instalación, la redacción de especificaciones, tutoriales con ejemplos y mucho más.
3. Pruebas de carga con Gatling
Sitio web: https://gatling.io/
Tipo: versiones tanto empresariales como de código abierto versions
Soporte: Grupo de Google de Gatling
Última versión: 3.2.1 (27 de agosto de 2019)
Gatling proporciona pruebas de carga continuas en Threat Stack. Está escrito en Scala y puede funcionar como herramienta independiente o utilizarse como dependencia de su producto mediante Maven.
Como demostración de su velocidad y potencia, en diez minutos pudimos generar tres millones de solicitudes en nuestro entorno de pruebas y comprobar que todas ellas devolvieron resultados en menos de 800 milisegundos.
Como afirma BlazeMeter en su blog, Ocho razones por las que debería utilizar Gatling para sus pruebas de carga, «Gatling creó un panel de métricas detallado que puede consultar tras ejecutar las pruebas sin necesidad de añadir ningún complemento adicional. El informe se almacena como un archivo HTML, que puede guardarse fácilmente para futuros análisis y comparaciones de métricas. Además, el informe es interactivo, lo que le permite realizar análisis más detallados y centrarse en solicitudes específicas, además de obtener una visión general».
4. Test Kitchen de Chef.io
Sitio web: https://kitchen.ci/
Tipo: Código abierto
Soporte: Comunidad de Chef.io
Última versión: 2.2.0 (26 de abril de 2019)
Test Kitchen es el producto de Chef.io que utilizamos para automatizar la creación y eliminación de los distintos entornos de Amazon Web Services que usamos durante nuestras pruebas. Test Kitchen es una herramienta de pruebas que permite ejecutar el código configurado de forma aislada en una o varias plataformas. Kitchen es compatible de serie con numerosos frameworks de pruebas, incluido Chef InSpec. Todos los cookbooks de la comunidad gestionados por Chef utilizan Kitchen, que es la herramienta preferida para realizar pruebas de integración de cookbooks.
Learn.Chef.io cuenta con una serie muy bien diseñada de módulos de formación y demostraciones, entre los que se incluye un excelente módulo titulado Introducción a Test Kitchen.
5. ScalaTest
Sitio web: http://www.scalatest.org
Tipo: gratuito, Código abierto
Soporte: Grupo de Google de ScalaTest
Última versión: 3.0.8 (10 de junio de 2019)
Los ingenieros de pruebas de Threat Stack han empezado a colaborar con nuestros desarrolladores de software para escribir pruebas de servicio para su código Scala utilizando ScalaTest.
Nuestras pruebas de integración utilizan FeatureSpec, el trait de estilo de ScalaTest que describe las pruebas unitarias basadas en el desarrollo guiado por pruebas (TDD) con un formato Dado/Cuando/Entonces. Como se indica en la documentación de ScalaTest FeatureSpec es un «conjunto de pruebas en el que cada prueba representa un escenario de una funcionalidad. FeatureSpec está pensado para escribir pruebas de un “nivel superior” al de las pruebas unitarias, como, por ejemplo, pruebas de integración, pruebas funcionales y pruebas de aceptación».
ScalaTest ofrece abundante documentación útil en su sitio web, incluida una guía detallada de inicio rápido, instrucciones de instalación y una guía de usuario.
6. Chef InSpec
Sitio web: https://kitchen.ci/docs/verifiers/inspec/
Tipo: Gratuito, Código abierto
Soporte: Comunidad de Chef.io
Última versión: (11 de agosto de 2019)
En Threat Stack, utilizamos Chef InSpec para crear pruebas basadas en Ruby con las que verificamos que todo funcione según lo previsto una vez creado un entorno de pruebas sobre la marcha. Las pruebas de InSpec están diseñadas para que sean fáciles de entender. Si conoce marcos de pruebas como RSpec, el código de InSpec le resultará familiar. InSpec detecta discrepancias y documenta las diferencias en forma de informe. A continuación, podemos realizar los cambios necesarios en Chef para que el sistema alcance el estado deseado.
Para ayudarte a empezar, Learn Chef Rally cuenta con una sección muy útil que te guía paso a paso para configurar un entorno de Docker y Docker Compose, descargar el entorno de ejemplo y explorarlo con InSpec.
7. Mocha
Sitio web: https://mochajs.org/
Tipo: gratuito, Código abierto
Soporte: Grupo de Mocha en Gitter, Grupo de Mocha en Google
Última versión: 3.2.1 (27 de agosto de 2019)
Mocha es un framework de pruebas de JavaScript que se ejecuta en Node.js y en un navegador, lo que nos permite realizar pruebas asíncronas. Como las pruebas de Mocha se ejecutan de forma secuencial, podemos generar informes más flexibles y precisos, así como asociar las excepciones no capturadas a los casos de prueba correspondientes.
Al usar Mocha en un entorno Node.js, puede utilizar el módulo assert integrado como biblioteca de aserciones. En Threat Stack, combinamos Mocha con Chai para crear el marco de pruebas de la funcionalidad Threat Stack Application Security Monitoring .
El sitio web de Mocha ofrece una amplia variedad de documentación sobre temas que abarcan desde una descripción detallada de las funcionalidades, la instalación y los primeros pasos hasta información sobre funcionalidades y tareas específicas.
8. Cypress.io
Sitio web: https://www.cypress.io/
Tipo:
- Ejecutor de pruebas gratuito y de código abierto test runner
- Servicio comercial de panel de control, gratuito para un máximo de tres usuarios
Soporte: chat de Gitter; soporte por correo electrónico para usuarios de pago
Última versión: 3.4.1 (29 de julio de 2019)
Cypress.io está diseñado para desarrolladores de front-end de JavaScript que solo necesitan probar su trabajo en Chrome. Cypress se ejecuta en el mismo bucle de ejecución que nuestra aplicación, lo que significa que nuestro código de prueba también puede acceder a todas las funciones, ventanas, elementos web, temporizadores y servicios a los que puede acceder la aplicación Threat Stack. También podemos leer y modificar el tráfico de red sobre la marcha, lo que nos permite añadir algunos casos de prueba negativos interesantes, como comprobar qué ocurre cuando no se puede acceder a un servidor de backend.
Cypress.io ofrece documentación bien estructurada que proporciona una visión general completa, información para empezar y conceptos básicos, incluida información sobre cómo escribir y organizar pruebas. ¿Quieres descubrir lo que Cypress puede hacer? TestAutomationU acaba de lanzar un nuevo curso: Introducción a Cypress.
9. Jest
Sitio web: https://jestjs.io
Tipo: Gratuito, Código abierto
Soporte: Chat de Discord de React, Grupo de Google de JestJs
Última versión: 24.9 (agosto de 2019)
Nuestros desarrolladores de software full stack han pasado de probar el frontend basado en ReactJS de Threat Stack Cloud Security Platform con Mocha / Chai a hacerlo con Jest, que ofrece una mejor compatibilidad integrada para probar los componentes de ReactJS que utilizamos. Este framework de pruebas de JavaScript nos permite crear mejores pruebas unitarias y de integración. Ambas herramientas, ReactJS y Jest, han sido desarrolladas por Facebook.
Al igual que ocurre con la mayoría de las demás herramientas mencionadas en esta publicación, el sitio web de Jest ofrece documentación con numerosos ejemplos que explica cómo empezar, cómo configurar la herramienta y una amplia variedad de casos de uso.
10. Apache JMeter
Sitio web: https://jmeter.apache.org/
Tipo: gratuito, código abierto
Soporte: Grupo de Google de JMeter
Última versión: 5.1.1 (13 de marzo de 2019)
Apache JMeter es un software de código abierto diseñado para realizar pruebas de carga del comportamiento funcional y medir el rendimiento. Según su sitio web, JMeter «puede utilizarse para probar el rendimiento tanto de recursos estáticos como dinámicos y de aplicaciones web dinámicas. Puede utilizarse para simular una carga elevada en un servidor, un grupo de servidores, una red o un objeto con el fin de comprobar su capacidad o analizar el rendimiento general bajo distintos tipos de carga».
Utilizamos JMeter para analizar y medir el rendimiento de nuestra aplicación y nuestros servicios. Esto nos permite probar nuestra aplicación con cargas elevadas y tráfico de múltiples usuarios simultáneos para determinar cómo podemos mejorar nuestra capacidad de escalado.
JMeter ofrece una útil variedad de documentación (incluidas las guías Primeros pasos, Manual del usuario y Buenas prácticas), así como varios tutoriales paso a paso.
¡Felices pruebas!
Por muy buenos que sean nuestros ingenieros de pruebas en Threat Stack, no llegarían muy lejos sin procesos sistemáticos respaldados por herramientas potentes. A medida que nuestra plataforma evoluciona, nuestro equipo sigue perfeccionando su experiencia, actualizando continuamente sus competencias y conocimientos, adoptando e incorporando nuevas herramientas y desarrollando nuevos métodos para garantizar que siga aportando valor al ciclo de vida de desarrollo de software (SDLC) de Threat Stack. Esperamos que este artículo le haya permitido conocer mejor cómo utiliza nuestro equipo de pruebas diversas herramientas de pruebas automatizadas para abordar las múltiples funciones de nuestra plataforma de seguridad en la nube.
Threat Stack ahora es F5 Distributed Cloud App Infrastructure Protection (AIP). Empieza a usar Distributed Cloud AIP con tu equipo hoy.
Sobre el autor
Artículos relacionados del blog

Cree servicios públicos seguros, resilientes y preparados para la IA con F5 y AWS
Descubre cómo las organizaciones del sector público pueden modernizar de forma segura sus aplicaciones y soluciones de IA, al tiempo que gestionan los sistemas heredados, el cumplimiento normativo y el riesgo operativo.
Protección de los sistemas de IA: por qué la seguridad debe avanzar al ritmo de la innovación
Desde acelerar avances revolucionarios en medicina y educación hasta transformar la vida cotidiana, la IA está cambiando nuestra forma de vivir y trabajar. Pero también ofrece grandes oportunidades a los ciberdelincuentes.
Avanzar hacia la optimización digital tras la transformación
Descubre estrategias de optimización digital para garantizar políticas de seguridad coherentes, impulsar la madurez de la transformación digital y superar los retos de la transformación.
Proyecto de código abierto destacado: mayor observabilidad con F5 Cloud Logger iApp
En el punto de mira del código abierto: cómo aumentar la observabilidad. Lee el blog de F5 para descubrir cómo exportar fácilmente la telemetría de BIG-IP a plataformas modernas de análisis en la nube.
El estado de la entrega de aplicaciones en 2018: la transformación digital impulsa la automatización y la multinube pese a las preocupaciones de seguridad
Descubre las principales conclusiones del cuarto informe anual de F5 sobre el estado de la entrega de aplicaciones.
Estado de la entrega de aplicaciones en 2017: automatización, API y DevOps
Descubre el informe sobre el estado de la entrega de aplicaciones de 2017. Lee el blog retrospectivo de F5 sobre los inicios del auge de las redes declarativas y los flujos de DevOps.