python - moviles - ¿Cómo puedo automatizar las pruebas de parches antivirus/WSUS de mi controlador y binario de Windows?
pruebas automatizadas java (1)
Mi (pequeña) empresa desarrolla una popular aplicación de Windows, pero una cosa con la que siempre hemos luchado es la prueba: con frecuencia solo es probada por los desarrolladores en un sistema similar al que desarrollaron, y cuando se actualiza una actualización. a los clientes, hay un segmento de nuestra base que experimenta problemas debido a alguna funcionalidad extraña con un parche de Windows, o en el caso de ciertas aplicaciones antivirus paranoicas (¡Te estoy mirando, Comodo y Kaspersky!), serán falsas -positivo en nuestra aplicación.
Hacemos pruebas manuales de lo que usa el 70% de nuestros usuarios, pero es lento y doloroso, y algunas veces no es tan completo como debería ser. La administración insiste en que debemos mejorar, pero siguen peleándose por el tema cuando llega el momento de lanzarlo (las pruebas llevarán ¿CUÁNTO TIEMPO? ¡Solo sácalo y emitiremos un parche para los clientes que tengan problemas!).
Me gustaría diseñar un mejor sistema de pruebas automatizadas utilizando máquinas virtuales, pero podría usar algunas ideas sobre cómo implementarlo, o si hay un producto COTS por ahí, cualquier sugerencia sería genial. Estoy pirateando una secuencia de comandos de Python que "ejecuta" cada característica de nuestro producto, pero no estoy seguro de cómo realizar la prueba si obtenemos un bloqueo de Windows (además de comprobar si todavía está en la lista de procesos), o peor aún, si Comodo lo ha marcado por alguna estúpida razón.
Para simular mejor el entorno de prueba, trato de mantener la VM lo más "pura" posible y no cargar mucha basura fuera del sistema operativo y el antivirus, y algunas aplicaciones comunes (Acrobat Reader, Firefox, etc.).
¡Cualquier idea sería muy apreciada!
Problema interesante. Una cosa que debe evitarse es usar las API de antivirus para verificar si su aplicación las desencadena. Desea una implementación en tiempo real de su aplicación, en el sistema operativo esperado, con una instalación de AV real que lo monitoree. De esta forma activará el monitoreo heurístico así como el simple "¿este código coincide con esa suma de verificación" con la que funciona la API?
No nos ha dicho en qué está escrita su aplicación, pero si su suite de pruebas para su aplicación realmente ejerce porciones de la aplicación, en lugar de probar rutas de código único, puede ser un buen comienzo. Idealmente, su suite de pruebas de integración es el mismo conjunto de pruebas que utiliza para verificar si hay problemas en sus objetivos de despliegue. Sus pruebas de integración deberían verificar la entrada Y la salida de cada prueba en un entorno en vivo, que DEBERÍA atrapar colisiones y similares. Además, no olvide verificar las cosas que tardan mucho más de lo que deberían, desafortunadamente es un modo de falla común. Lo que es más importante, su conjunto de pruebas debe ser lo suficientemente fácil como para escribir, modificar y mejorar, de modo que permanezca sincronizado con el producto. Las pruebas que no prueban todo son inútiles, y las pruebas que no se ejecutan son aún peores. Si tuviéramos más información sobre cómo funciona su programa, podríamos brindarle mejores consejos sobre cómo automatizarlo.
Probablemente querrá un conjunto de imágenes de VM en los destinos de implementación previstos, en varios estados de parche (y sin parche). Para algunas aplicaciones, necesitarás una VM separada para cada variante de IE, ya que eso cambia otros aspectos del sistema. Tenga mucho cuidado con la combinación de cosas que tiene en cada máquina virtual. No pruebe más de un AV a la vez. Actualice los AV en sus instantáneas antes de ejecutar sus pruebas. Si tiene un software de combinación lo suficientemente grande en sus imágenes, es posible que necesite automatizar la creación de imágenes: obtener una compilación del sistema base, actualizar al último nivel de parche y luego crear secuencias de comandos para la instalación de AV y otras combinaciones de aplicaciones.
Sí, mantener esta granja de máquinas virtuales será un problema, pero si crea un script para la implementación de su aplicación, y tiene buenas instantáneas y un plan para aplicar parches y actualizar las instantáneas, el conjunto de pruebas en sí mismo no debería tardar tanto en ejecutarse. dado el hardware apropiado. Deberá investigar las soluciones de VM, pero probablemente comenzaría con VMWare.