tutorial library framework español python automated-tests robotframework

python - library - Ejecutando un conjunto de pruebas con más de un millón de casos de prueba.



robot framework vs selenium (2)

Tenemos un entorno de prueba distribuido con el robotremoteserver iniciando un montón de otras aplicaciones y trabajando con ellas como parte de la prueba. La prueba que estoy intentando ejecutar requiere que se ejecuten más de un millón de casos de prueba en una única suite. El problema aquí es que cuando el pybo t comienza a ejecutarse, bloquea hasta 8 GB de RAM y da como resultado un rendimiento lento. Después de un tiempo se congela.

Para superar este problema, planeaba crear suites separadas con menos de 100 casos en cada una. Pero en este caso no puedo usar las palabras clave de los otros remotoservers iniciados desde otras suites. La única forma en que puedo usarlo es desconectarme del servidor remoto y volver a conectarlo en cada suite, lo que anularía el propósito de la prueba.

No estoy seguro de si alguien se ha encontrado con este escenario. Apreciaría si alguien puede pensar en una solución a este problema.

Información Adicional

Otra cosa que ayuda a resolver esto: ¿es posible llamar una palabra clave desde una biblioteca (con estado) iniciada por otra suite?

¿Puedo usar la instancia de la biblioteca de obtención cuando uso RIDE? Estoy importando la biblioteca en una suite, luego trato de obtener la instancia de la biblioteca en otra suite. es posible?

Sigo recibiendo el siguiente error:

AttributeError: la instancia remota no tiene atributo ''reemplazar''

En Suite 1 esto es lo que estoy haciendo:

Import Library Remote ${verifix_xmlrpc_url} WITH NAME Verifix ${lib}= BuiltIn.Get Library Instance Verifix Set Global Variable ${lib}

En la suite 2:

${lib}.remove messages ${VenueNSDQ}


DE ACUERDO. Primero, no programo en Python, y tampoco tengo idea de qué tipo de computadoras está usando o cuánta memoria tiene la computadora o cualquier otra cosa sobre su situación con su (s) computadora (s). Así que esto es solo información general obtenida de la escritura de programas del sistema y el trabajo en múltiples computadoras.

Dicho esto: si va a ejecutar grandes conjuntos de datos o una gran cantidad de programas, tendrá que dividir lo que quiere hacer para que quepa en el sistema que está usando. Esa es la primera parte.

La segunda parte es que si desea hablar de programas a otros programas o sistemas, necesita configurar algún tipo de uso de memoria común. Sé que PHP tiene tal cosa incorporada, así que debo asumir que Python también tiene tal cosa. Usted configura el área de memoria común y luego envía información entre los distintos programas. Usualmente se usa algún tipo de tokens para identificar cada programa y / o sistema. De esta manera, puede configurar las cosas para que una vez que se complete un conjunto de pruebas, pueda indicar que comience el siguiente conjunto y, por lo tanto, no se haga cargo de su sistema.

Si es realmente bueno, también podría crear algún tipo de programa de controlador que inicie una prueba, la observe hasta que la prueba finalice / finalice y luego comience la siguiente prueba. (Así que, en lugar de una forma de hacer una cadena de margaritas, tiene una forma maestro / esclavo de hacer esto como una relación cliente / servidor).

Si está utilizando una caja / sistema operativo Windows, le sugeriría que busque en AutoIt. AutoIt puede controlar fácilmente la ejecución de un programa y comenzar una nueva tarea una vez que una tarea anterior haya terminado. También le permite un control total tanto de su sistema como del sistema remoto y fue desarrollado para ayudar a automatizar tareas como la que está tratando de hacer. Descubrí (experimentando) que AutoIt también se puede usar con cajas Unix / Linux como Macs y otros. Aunque solo entonces tiene los comandos que envía en lugar de acceder a las funciones de Windows.

Si tiene más habilidad con Python, puede hacer lo anterior, usándolo, y así tendrá más poder para usted. A pesar de que han pasado dos años desde que preguntaste esto, espero que esto te ayude en tus esfuerzos. :-)


No conozco ninguna información específica sobre Python, pero es posible que desee probar a girar cada caso de prueba como un proceso separado. Esto le permitirá recuperar la memoria de cada proceso a medida que se complete, y le permitirá ejecutar sus millones de casos de prueba de manera segura en una máquina.

Generalmente, cuando un programa necesita más memoria del sistema operativo, lo toma, pero no puede devolverlo hasta que sale. Esto es probable por qué su proceso se cae.

Los procesos rápidos que puede girar y luego matar, aliviarán este problema de memoria ... y luego es un paso muy corto desde allí para ejecutar cada uno de estos casos de prueba a través de rsh en una máquina diferente por completo.

Espero que eso ayude un poco.