Las pruebas automatizadas basadas en servicios son la clave para dispositivos IoT seguros y de alta calidad
por Parasoft
30 de junio de 2017
4 min leer
IoT necesita una perspectiva diferente sobre las pruebas
La escala de IoT es grande, probablemente más grande de lo que la mayoría de los fabricantes integrados se han enfrentado anteriormente. Además, los dispositivos individuales son solo parte de un todo más amplio que consta de muchas variedades y tipos de dispositivos. En mi ultimo post, Hablé de cómo la promesa de IoT está en los servicios que proporciona y la conglomeración de muchas "cosas" en algo de valor para la empresa. Es importante lidiar con esta escala tanto en (1) los requisitos del dispositivo ("cosas") como (2) el valor que agrega a toda la automatización ("servicios") en el ciclo de vida del desarrollo de software, con el fin de cubrir los costos, horario y restricciones de tiempo de comercialización. Las pruebas, en particular, deben escalar al entorno operativo esperado, además de brindar soporte para requisitos críticos no funcionales como el rendimiento y la seguridad.
Internet de los servicios necesita automatización
La automatización en el proceso de desarrollo de software se vuelve fundamental a medida que aumenta la escala de la implementación de IoT. Los requisitos de seguridad y no funcionales se vuelven más importantes a medida que aumenta la conectividad y la escala. Las pruebas automatizadas basadas en servicios se vuelven críticas durante las fases de integración y prueba del sistema, al mismo tiempo que permiten las pruebas de seguridad, estabilidad y rendimiento.
Echemos un vistazo a la profundidad y amplitud de Parasoft en la automatización de pruebas, como se muestra en la Figura 1, ya que se aplica a cada fase del SDLC. La conclusión clave es cómo cada solución se complementa con la otra y se escala a medida que crece el producto. Las pruebas unitarias se complementan con análisis estáticos y en tiempo de ejecución. Durante la integración, las pruebas unitarias progresan a API y herramientas de prueba de servicios, que luego progresan a la virtualización de servicios.
Figura 1: Pruebe las soluciones de automatización y dónde se introducen en el ciclo de vida del desarrollo de software.
La mayoría de los desarrolladores están familiarizados con algunos aspectos de la automatización de pruebas; sin embargo, muchos no están pensando en términos de servicios o pruebas y virtualización basadas en servicios. A medida que el paradigma cambia de "cosas" a "servicios", el beneficio de las pruebas basadas en servicios se vuelve más evidente.
Reducción de riesgos y costos con pruebas basadas en servicios en IoT
A medida que un producto avanza a través del proceso de desarrollo hacia la integración, las pruebas se vuelven más complicadas y costosas. Esta es también la etapa en la que se encuentran muchos errores críticos, incluidos problemas de seguridad y rendimiento no detectables a nivel de unidad. Un gran riesgo es la disponibilidad de personal de pruebas, laboratorios y recursos de hardware.
La solución aquí es la automatización. La automatización proporciona una forma de aumentar la productividad de las pruebas, la repetibilidad y el alcance de las pruebas del sistema. Un enfoque de prueba automatizado y basado en servicios es fundamental para el éxito de un dispositivo IoT recientemente desarrollado.
Los beneficios incluyen los siguientes:
- Mayor productividad de las pruebas
La automatización puede ayudar en la generación de pruebas basadas en servicios y cargas de prueba que son repetibles y extensibles. Las herramientas de análisis en tiempo de ejecución se ejecutan junto con las pruebas en vivo para detectar y rastrear errores. Los defectos se detectan y solucionan más fácilmente que con las pruebas manuales. Una vez que se realiza una corrección, la automatización proporciona pruebas de regresión sencillas. Se admite la repetición de pruebas como parte de un proceso de desarrollo continuo, ágil o iterativo. - Eliminar los cuellos de botella de los recursos de hardware
Uno de los mayores problemas en la programación de pruebas es la disponibilidad de componentes dependientes. Estos pueden ser otros dispositivos en la red o funciones de nivel superior en la red de IoT. La simulación de estas dependencias elimina el cuello de botella de las pruebas y, al mismo tiempo, hace que un laboratorio virtual completo esté disponible en el escritorio de todos los probadores y desarrolladores. - Adaptación a las necesidades actuales y futuras
A medida que avanza la integración del sistema, el alcance de las pruebas aumenta para incluir cada vez más componentes dependientes. La escalabilidad es clave en los sistemas de IoT, ya que se espera que el dispositivo bajo prueba funcione en un entorno altamente complejo. Durante el entorno del ciclo de vida del dispositivo, la complejidad aumentará y las pruebas automatizadas deben escalar con el producto. - Pruebas de seguridad y rendimiento prácticas y realistas
Los equipos de desarrollo hacen lo que pueden para probar el rendimiento y la seguridad durante la integración, pero sin la automatización, a menudo es costoso y lento configurar escenarios realistas en el laboratorio. Un enfoque orientado a servicios proporciona un marco para especificar y verificar el rendimiento y probar la seguridad.
Más allá de la prueba funcional: seguridad y rendimiento
Una prueba funcional pura no es suficiente para llevar un dispositivo al mercado. Los requisitos no funcionales, como la seguridad y el rendimiento, son críticos, pero son algunas de las características más difíciles de probar. Un dispositivo que tiene un rendimiento deficiente o una seguridad deficiente simplemente no es competitivo, pero cumplir con las limitaciones de tiempo de comercialización y probar adecuadamente el rendimiento y la seguridad es un desafío serio para los dispositivos de IoT. La orientación al servicio proporciona una forma común de especificar los requisitos (por ejemplo, rendimiento por servicio) y para probar la seguridad (por ejemplo, ataques que explotan servicios y API expuestos).
Pruebas de rendimiento y carga
Es probable que los requisitos de rendimiento y seguridad se expresen en términos de una declaración de calidad de servicio. Por ejemplo, es posible que se requiera un sistema HVAC para mantener la temperatura del edificio a 75 grados en dos horas en base a una diferencia de 5 grados en la temperatura exterior, informando la temperatura actual cada 10 segundos. Si diseña un termostato para este producto, puede probar la funcionalidad a nivel individual y quizás también el rendimiento. Sin embargo, si un sistema implementado consta de cientos de termostatos, el rendimiento del dispositivo es solo una pequeña parte de una red compleja de otros dispositivos.
Pruebas de seguridad
Los requisitos de seguridad suelen ser vagos y a nivel del sistema. En el ejemplo del sistema HVAC, es posible que se requiera que un termostato no falle bajo cargas pesadas de la red. Un ataque de denegación de servicio se basa en inundar el objetivo con mucho tráfico, a veces con paquetes mal formados. Las pruebas de penetración y fuzz se utilizan en estos casos para asegurarse de que los dispositivos puedan soportar un entorno de red hostil. La escalabilidad disponible en un entorno virtual supera lo que es posible con hardware real.
Virtualización de servicios
El siguiente paso lógico para las pruebas automatizadas basadas en servicios es la virtualización. Es posible un entorno virtual completo simulando todos los componentes dependientes más un conjunto completo de estímulos de prueba. El beneficio de la virtualización de servicios no es solo los entornos de prueba realistas y repetibles, sino la capacidad de duplicar e implementar a voluntad, creando así un "laboratorio virtual", un laboratorio que es tan efectivo como el real pero a una fracción del costo.
Conclusión
La automatización de pruebas, en general, es fundamental para cumplir los objetivos de los productos de IoT, como el tiempo de comercialización y el presupuesto. Un enfoque basado en servicios aumenta la productividad de las pruebas y permite pruebas de rendimiento y seguridad altamente repetibles y escalables, junto con la capacidad de crear entornos de prueba virtuales. A medida que crece la complejidad de los dispositivos de IoT y su entorno de implementación, la necesidad de pruebas escalables a nivel de servicio se vuelve más apremiante.