Pregunta

Construyo y mantengo un conjunto de componentes Flash que se distribuyen a los editores y les permite integrarse con nuestro sistema. Actualmente, el componente no tiene una interfaz de usuario y simplemente contiene código compilado para consultar los servidores de nuestro sistema, analizar la respuesta y modificar los parámetros enviados en la consulta. Hay una versión As2 y versiones AS3 para Flex y CS3. Nuestro flujo de trabajo típico es así:

1.) cargar el componente 2.) establecer parámetros en el componente 3.) Dile al componente que consulte nuestro sistema. 4.) esperar un evento que diga que la respuesta ha sido recibida y analizada 5.) métodos de llamada en el componente para recuperar y usar datos analizados

Últimamente hemos estado hablando mucho sobre la automatización de las pruebas de estos componentes, y parece que hay muchos rumores en torno a marcos como AsUnit y FlexUnit. Sin embargo, nunca he podido comprender cómo podría usar uno de estos de manera efectiva. Los ejemplos y tutoriales siempre escatiman en los ejemplos del mundo real y en su lugar proporcionan múltiples clases y un código excesivo para probar si una función de ejemplo devuelve num1 + num2.

Lo único que puedo suponer es que estos marcos de prueba están diseñados para implementarse desde el principio, con la planificación del conjunto de pruebas, el corredor de prueba y los casos de prueba incorporados al inicio del desarrollo.

Una prueba automatizada de nuestro componente tendría que asegurarse de que las propiedades se establecieron correctamente, esas propiedades se enviaron en la solicitud a nuestro sistema, la respuesta recibida fue correcta teniendo en cuenta los parámetros enviados, los datos analizados incluyen información correcta y ningún error Se producen malas respuestas o infinitos bucles de análisis.

mi pregunta es, ¿hay alguna manera de automatizar las pruebas de un componente Flash existente, ampliamente distribuido y establecido sin volverlo a trabajar para que se ajuste a un marco de prueba? ¿O estoy malinterpretando los marcos de prueba y esto ya es posible?

ACTUALIZACIÓN : Gracias por las respuestas. Comencé a integrar mi componente con AsUnit y creo que tengo una buena comprensión de cómo puede ayudarme. Sin embargo, AS2 AsUnit no admite casos de prueba asíncronos, y estoy teniendo dificultades para encontrar un marco de prueba de unidad AS2 que lo haga. Las pruebas asíncronas son muy importantes para este proyecto. ¿Alguien tiene alguna recomendación para un marco diferente? ¡Gracias!

¿Fue útil?

Solución

Estamos usando FlexUnit en nuestro proyecto y estoy muy contento con él. Suponiendo que su proyecto fue diseñado con un grado de acoplamiento bastante suelto, no debería necesitar cambiar mucho (si es que lo hace) para probar su código. Si ya está utilizando un marco MVC como Cairngorm o PureMVC , FlexUnit debe integrarse sin problemas.

Sin embargo, diré que mi experiencia con las pruebas de unidades Flash / Flex no es tan positiva como lo ha sido con otros idiomas como Ruby o .NET por tres razones. La primera es que un grado tan alto de código ActionScript está relacionado con la IU, y este tipo de código es difícil, si no imposible, de probar. Otra razón es que el corredor de prueba no se presta para ser conectado a un entorno de integración continua como CruiseControl.NET o CruiseControl.rb , ya que requiere Un humano para ejecutarlo y hacer clic en los botones. Por último, un gran beneficio de las pruebas unitarias es que puede ejecutarse junto con una herramienta de análisis de cobertura como NCover o rcov . Flash / Flex no se presta a este tipo de análisis sin un compilador modificado como Flexcover .

Otros consejos

Me alegra saber que fuiste con AsUnit!

AsUnit es el único marco de prueba de unidad que le brindará una experiencia consistente en ActionScript 2 y ActionScript 3. No depende de ningún marco externo, especialmente Flex, y no debería haber problemas reales con la creación de pruebas para su proyecto después el hecho.

Las últimas compilaciones de AsUnit tienen soporte para pruebas asíncronas en ActionScript 2. La rama as25 se puede encontrar aquí:

http://github.com/lukebayes/asunit

Aunque nunca tuve la oportunidad de trabajar con un probador de unidades en ActionScript, en el trabajo creamos un marco que:

  1. compiló el (los) script (s) dentro de una aplicación de prueba, en nuestro caso con flex
  2. configurar una aplicación de temporizador (watchdog), en caso de falla del bucle
  3. ejecutó la aplicación que, a su vez:
    • conectado a un backend PHP para obtener un caso de prueba
    • alimentó la prueba al componente
    • lee los resultados y los envía de vuelta
  4. el perro guardián activaría y eliminaría la aplicación en lo que ocurriera primero:
    • el temporizador se agotó (tiempo de espera razonable)
    • la aplicación devolvió los resultados
  5. si hubiera otras pruebas para ejecutar, vaya a 2.

Definitivamente no es elegante, pero hizo el trabajo (esto fue con los scripts AS1)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top