Threat Stack ahora es F5 Distributed Cloud App Infrastructure Protection (AIP). Comience a utilizar Distributed Cloud AIP con su equipo hoy mismo .
Todos los proyectos de desarrollo de software, ya sean grandes o pequeños, pueden beneficiarse de pruebas bien planificadas y bien ejecutadas. Es su manera de garantizar que el software que está desarrollando funcione como se espera y brinde valor al cliente. Más importante aún, dada la naturaleza de nuestro panorama cibernético actual, las pruebas bien ejecutadas son su forma de garantizar que su software no tenga errores o vulnerabilidades que puedan comprometer su integridad. En una palabra, las buenas pruebas le permiten transmitir valor de rendimiento a los clientes y, al mismo tiempo, brindarles seguridad subyacente.
En Threat Stack, tenemos un entorno de desarrollo complejo y completo que requiere mucha planificación y toma de decisiones dentro del equipo de ingeniería de pruebas para asegurarnos de que todas las áreas funcionales de nuestra plataforma se prueben de manera efectiva y eficiente. Esto incluye decisiones sobre qué herramientas de prueba utilizar, ya que las adecuadas nos permiten introducir automatización, así como velocidad, repetibilidad, consistencia y precisión de los resultados.
En esta publicación, analizaremos diez de las herramientas de pruebas automatizadas que utilizamos, con el objetivo de compartir algunos conocimientos que esperamos le ayuden en sus actividades de prueba.
Sin embargo, antes de analizar las herramientas, creemos algo de contexto examinando áreas clave que nuestros ingenieros de pruebas tienen en cuenta cuando prueban nuestra plataforma y su infraestructura.
Como puede ver, nuestro software cubre mucho territorio y debe hacerlo de manera rápida, segura, precisa y a escala. Con esto en mente, echemos un vistazo a algunas de las herramientas de prueba que utilizamos.
Los ingenieros de software en pruebas, integrados en sus propios equipos de funciones, no solo son responsables de probar nuevas características y funciones que se desarrollan constantemente, sino también de agregar automatización para asegurarse de que el resto del producto siga funcionando como se espera.
Como testimonio del valor que nuestra organización otorga a estas personas, a cada ingeniero de pruebas también se le otorga la responsabilidad de recomendar métodos, herramientas y lenguajes de automatización que considere apropiados. A continuación se muestra una lista de algunas de las herramientas que utilizamos para ayudarnos en nuestros esfuerzos de pruebas automatizadas. Tenga en cuenta que utilizamos un conjunto de herramientas más amplio en general; nuestro objetivo aquí es analizar una selección de herramientas y recordarle que elija las herramientas que funcionen mejor para los proyectos específicos en los que está trabajando.
Descargo de responsabilidad: Los recursos mencionados en esta publicación no están clasificados en términos de valor percibido. Nuestros comentarios tampoco implican respaldo de ningún tipo. Nuestra intención es simplemente brindarle información que creemos que podría serle útil a medida que amplía su conocimiento sobre las herramientas de prueba.
Sitio web: https://teamcapybara.github.io/capybara/
Tipo: Gratis, código abierto
Apoyo: Grupo de Google Ruby-Capybara
Última versión: 3.29.0 (2 de septiembre de 2019)
Capybara es la gema Ruby que usamos con Selenium para interactuar con nuestras pruebas de automatización de UI basadas en navegador cuando realizamos pruebas de interfaz de usuario de extremo a extremo. Capybara contiene métodos integrados que emulan cómo un usuario puede visitar una página, rellenar un cuadro de texto, hacer clic en un botón o seleccionar un menú desplegable .
La pesadilla de un probador de software es cuando los elementos web tardan una cantidad absurda de tiempo en cargarse en una página, lo que causa fallas de prueba inexplicables. Cada método proporcionado por Capybara tiene esperas incorporadas automáticamente.
Capybara prueba los problemas de experiencia del usuario, opera nuestro producto tal como lo harían nuestros clientes, iniciando sesión en nuestra aplicação, navegando por el sitio, viendo eventos activados por nuestros sistemas de prueba, creando nuevas reglas que rigen qué eventos deben activar alertas, analizando en profundidad la información de alerta que se encuentra en nuestro tablero y actualizando varias configuraciones.
Sitio web: http://gauge.org
Tipo: Gratis, código abierto
Apoyo: Grupo de Google GetGauge , chat Gitter
Última versión: 1.0.7 (29 de agosto de 2019)
Gauge es un marco de automatización de pruebas creado por ThoughtWorks Studio India, que utilizamos para configurar nuestras pruebas de aceptación de UI y API. Aunque combinamos Gauge con Ruby, también es compatible con Java, C#, JavaScript y Python. Gauge es muy parecido a Cucumber, el marco BDD, con pequeñas diferencias:
Como herramienta de desarrollo impulsado por el comportamiento (BDD), Cucumber puede resultar un poco extenso cuanto más compleja sea la prueba. Con Gauge, cada paso es una viñeta clara, concisa y fácil de leer. Además, Gauge tiene informes integrados disponibles en múltiples formatos (XML, JSON, HTML). Se puede utilizar tanto en la línea de comandos como dentro de un IDE como Visual Studio Code . Por último, se proporciona amplia documentación para cubrir una variedad de temas, incluida la instalación, la redacción de especificaciones, tutoriales de ejemplo y más.
Sitio web: https://gatling.io/
Tipo: Versiones Enterprise y de código abierto
Apoyo: Grupo de Google Gatling
Última versión: 3.2.1 (27 de agosto de 2019)
Gatling proporciona pruebas de carga continuas aquí en Threat Stack. Escrito en Scala, funciona como una herramienta independiente o puede usarse como una dependencia de su producto con Maven .
Como demostración de su velocidad y potencia, en diez minutos pudimos generar tres millones de solicitudes en nuestro entorno de prueba y pudimos determinar que todas las solicitudes devolvían resultados en menos de 800 milisegundos.
Como afirma BlazeMeter en su blog, Ocho razones por las que debería usar Gatling para sus pruebas de carga , “Gatling creó un panel de métricas detallado que puede ver después de la ejecución de las pruebas sin tener que agregar ningún complemento adicional. El informe se almacena como un archivo HTML, que se puede guardar fácilmente para futuros análisis y comparación de métricas. Además, el informe es interactivo, lo que permite realizar análisis más detallados y concentrar solicitudes específicas además del panorama general”.
Sitio web: https://kitchen.ci/
Tipo: Código abierto
Apoyo: 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 activación y desactivación de los diferentes entornos de Amazon Web Services que utilizamos durante nuestras pruebas. Test Kitchen es una herramienta de prueba que puedes utilizar para ejecutar tu código configurado en una o más plataformas de forma aislada. Muchos marcos de prueba son compatibles con Kitchen de forma predeterminada, incluido Chef InSpec . Kitchen es utilizado por todos los libros de cocina comunitarios administrados por Chef y es la herramienta de prueba de integración preferida para los libros de cocina.
Learn.Chef.io cuenta con una serie de módulos de capacitación y demostraciones bien pensados, incluido un excelente módulo llamado Primeros pasos con Test Kitchen .
Sitio web: http://www.scalatest.org
Tipo: Gratis, código abierto
Apoyo: Grupo de Google de ScalaTest
Última versión: 3.0.8 (10 de junio de 2019)
Los ingenieros de pruebas de Threat Stack han comenzado a asociarse con nuestros desarrolladores de software para escribir pruebas de servicio para su código Scala utilizando ScalaTest.
Nuestras pruebas de integración utilizan el rasgo de estilo ScalaTest, FeatureSpec, que describe las pruebas unitarias de estilo de desarrollo impulsado por pruebas (TDD) en un formato Dado/Cuando/Entonces. Como se menciona en el documento de ScalaTest , FeatureSpec es un “conjunto de pruebas en el que cada prueba representa un escenario de una característica. FeatureSpec está diseñado para escribir pruebas de "nivel superior" que las pruebas unitarias; por ejemplo, pruebas de integración, pruebas funcionales y pruebas de aceptación".
ScalaTest proporciona mucha documentación útil en su sitio, incluido un inicio rápido detallado, procedimientos de instalación y una guía del usuario.
Sitio web: https://kitchen.ci/docs/verifiers/inspec/
Tipo: Gratis, código abierto
Apoyo: Comunidad de Chef.io
Última versión: (11 de agosto de 2019)
En Threat Stack, utilizamos Chef InSpec para crear pruebas basadas en Ruby para verificar que todo funcione como se espera una vez que se ha creado un entorno de prueba sobre la marcha. Las pruebas InSpec están diseñadas para ser legibles por humanos. Si está familiarizado con marcos de prueba como RSpec , el código InSpec debería resultarle familiar. InSpec detecta discrepancias y documenta las diferencias en forma de informe. Luego podemos ingresar y realizar los cambios necesarios en el Chef para que el sistema llegue al estado deseado.
Para comenzar, el Learn Chef Rally tiene un segmento útil que lo guía a través de la configuración de un entorno de Docker y Docker Compose, la descarga del entorno de muestra y la exploración del entorno utilizando InSpec.
Sitio web: https://mochajs.org/
Tipo: Gratis, código abierto
Apoyo: Grupo Mocha Gitter , Grupo Mocha Google
Última versión: 3.2.1 (27 de agosto de 2019)
Mocha es un marco de pruebas de JavaScript que se ejecuta en Node.js y en un navegador, lo que nos permite realizar pruebas asincrónicas. Debido a que las pruebas de Mocha se ejecutan en serie, nos permite generar informes más flexibles y precisos, así como la capacidad de asignar excepciones no detectadas a los casos de prueba correctos.
Al utilizar Mocha en un entorno Node.js, puedes usar el módulo de afirmación integrado como tu biblioteca de afirmación. En Threat Stack, combinamos Mocha con Chai para crear el marco de prueba para la funcionalidad de monitoreo de seguridad de aplicação de Threat Stack .
El sitio de Mocha pone a disposición una variedad de documentación sobre temas que abarcan desde una descripción detallada de las funciones, la instalación y los primeros pasos hasta información sobre funciones y tareas específicas.
Sitio web: https://www.cypress.io/
Tipo:
Apoyo: Chat de Gitter ; Soporte por correo electrónico para usuarios pagos
Última versión: 3.4.1 (29 de julio de 2019)
Cypress.io está diseñado para desarrolladores front-end de JavaScript que solo necesitan probar su trabajo en Chrome. Cypress se ejecuta en el mismo bucle de ejecución que nuestra aplicação, lo que significa que a todas las funciones, ventanas, elementos web, temporizadores y servicios a los que puede acceder la aplicação Threat Stack, nuestro código de prueba también puede acceder. También podemos leer y alterar el tráfico de red sobre la marcha, lo que nos permite agregar algunos casos de prueba negativos interesantes, como probar qué sucede cuando un servidor backend es inaccesible.
Cypress.io ofrece documentación bien organizada que proporciona una descripción general sólida, información de inicio y conceptos centrales que incluyen información sobre cómo escribir y organizar pruebas. ¿Quieres ver lo que Cypress puede hacer? TestAutomationU acaba de lanzar un nuevo curso, Introducción a Cypress .
Sitio web: https://jestjs.io
Tipo: Gratis, código abierto
Apoyo: Chat de Discord de React , grupo de Google de JestJs
Última versión: 24.9 (agosto de 2019)
Nuestros desarrolladores de software de pila completa han cambiado las pruebas del frontend basado en ReactJS de Threat Stack Cloud Security Platform de Mocha/Chai a Jest, que tiene un mejor soporte integrado para probar los componentes ReactJS que usamos. Con este marco de pruebas de JavaScript, podemos crear mejores pruebas unitarias y de integración. Ambos conjuntos de herramientas, ReactJs y Jest, son ofrecidos por Facebook.
Al igual que con la mayoría de las otras herramientas de esta publicación, el sitio web de Jest proporciona documentación rica en ejemplos que cubre cómo comenzar, la configuración y una amplia gama de escenarios de casos de uso.
Sitio web: https://jmeter.apache.org/
Tipo: Gratis, código abierto
Apoyo: Grupo de Google de JMeter
Última versión: 5.1.1 (13 de marzo de 2019)
Apache JMeter es un open source software diseñado para probar la carga del comportamiento funcional y medir el rendimiento. Según su sitio, JMeter “puede usarse para probar el rendimiento tanto de recursos estáticos como dinámicos y de aplicações web dinámicas. Se puede utilizar para simular una carga pesada en un servidor, grupo de servidores, red u objeto para probar su resistencia o para analizar el rendimiento general bajo diferentes tipos de carga”.
Utilizamos JMeter para analizar y medir el rendimiento de nuestras aplicação y servicios. Esto nos permite probar nuestra aplicação contra cargas pesadas, con tráfico de usuarios múltiples y simultáneos para ver cómo podemos mejorar nuestra capacidad de escalamiento.
JMeter pone a disposición una útil variedad de documentación (incluidos Primeros pasos, Manual del usuario y Mejores prácticas), así como una serie de tutoriales paso a paso.
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 continúa perfeccionando su experiencia, actualizando continuamente sus habilidades y conocimientos, adoptando e incorporando nuevas herramientas y desarrollando nuevos métodos para garantizar que sigan aportando valor al ciclo de vida del desarrollo de software (SDLC) de Threat Stack. Esperamos que esta publicación le haya proporcionado una idea de cómo nuestro equipo de pruebas utiliza diversas herramientas de prueba 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). Comience a utilizar Distributed Cloud AIP con su equipo hoy mismo .