¿Cómo puedo reducir la cantidad de tiempo que toma la prueba de regresión completa de una aplicación lista para el lanzamiento?

7

Se está desarrollando una aplicación en la que trabajo con una versión modificada de scrum. Si no está familiarizado con el scrum, es solo un enfoque alternativo a un modelo Watefall más tradicional, en el que se trabaja una serie de características durante un período determinado de tiempo conocido como sprint. La aplicación está escrita en C # y hace uso de WPF. Usamos la edición Visual C # 2010 Express como un IDE.

Si trabajamos en un sprint y agregamos algunas características nuevas, pero no planeamos lanzarlo hasta que se complete otro sprint, entonces las pruebas de regresión no son un problema como tal. Solo probamos las nuevas funciones y le damos a la aplicación una buena vez. Sin embargo, si se planea un lanzamiento que nuestros clientes pueden descargar, se incluye una prueba de regresión completa. En el pasado, esto no era un gran problema, demoraba 3 o 4 días y los desarrolladores simplemente arreglaban los errores encontrados en la regresión fase, pero ahora, a medida que la aplicación se hace cada vez más grande e incorpora más y más funciones, la regresión se extiende durante semanas.

Estoy interesado en cualquier método que la gente conozca o use que pueda disminuir este tiempo. En este momento, las únicas ideas que tengo son comenzar a escribir Pruebas unitarias, que nunca he probado completamente en un entorno comercial, o investigar la posibilidad de cualquier API de automatización de la interfaz de usuario o herramientas que me permitan escribir un programa para realizar Una serie de pruebas por lotes. Literalmente no sé nada sobre las posibilidades de la automatización de la interfaz de usuario, por lo que cualquier información sería valiosa. Tampoco sé mucho acerca de las pruebas unitarias, ¿qué tan complicadas pueden ser las pruebas? ¿Es posible obtener pruebas unitarias para utilizar la interfaz de usuario? ¿Hay otros métodos que deba considerar?

Gracias por leer y por cualquier consejo por adelantado.

Editar: Gracias por la información. ¿Alguien sabe de alguna alternativa a lo que se ha mencionado hasta ahora (NUnit, RhinoMocks y CodedUI)?

    
pregunta DrLazer 09.03.2011 - 13:17

3 respuestas

4

Naturalmente, si prueba todo manualmente, le llevará mucho tiempo. Especialmente en los proyectos scrum, donde las pruebas son frecuentes y las constantes de tiempo son cortas, es importante utilizar pruebas automatizadas.

Una buena solución de prueba es una combinación de pruebas unitarias (que prueban una pequeña parte del código, generalmente una clase) y pruebas de integración automatizadas (que siguen los procesos de extremo a extremo y los casos de uso en su aplicación). Algunas de las pruebas de integración definitivamente pueden ser pruebas de UI, y existen marcos para las pruebas de UI que puede utilizar.

Puede pasar de las pruebas manuales a las pruebas automatizadas gradualmente. Comience por hacer cumplir la práctica de que cada nuevo código escrito por el equipo debe tener pruebas de unidad. Lea sobre el desarrollo impulsado por pruebas, es un enfoque un poco duro, pero es un buen punto de partida al diseñar sus propias mejores prácticas.

NUnit, combinado con RhinoMocks, es una solución excelente tanto para pruebas unitarias como para pruebas de integración.

    
respondido por el Ilya Kogan 09.03.2011 - 13:25
2

Ya que está utilizando VS 2010, el marco de MS Test es un marco de prueba alternativo que puede usar. - Vea aquí una comparación de NUnit con MS Test enlace

Aquí hay un artículo que habla específicamente sobre cómo escribir pruebas de UI para aplicaciones WPF: enlace

En general, cuando se trata de aplicaciones complejas de gran tamaño, las pruebas unitarias suelen ser la mejor manera de tener una cobertura completa, pero también la más costosa en términos de tiempo para escribir cuando se empieza de cero. Es probable que necesite refactorizar una gran parte del código que no está escrito teniendo en cuenta la capacidad de prueba. En estos casos, a menudo es más rápido y más eficiente invertir en pruebas de integración y UI primero; utilizando la confianza en la calidad que proporcionan para reformular el código para facilitar las pruebas unitarias.

El enfoque más eficiente que he usado en múltiples aplicaciones ahora es el siguiente:

  • Primero, automatice las pruebas de integración de sistema / extremo a extremo que consumen más tiempo
  • Comience a automatizar sobre la marcha: los nuevos defectos deben tener pruebas automatizadas para cubrir la regresión; Si está modificando algún código que no tiene una prueba alrededor, escriba algunos
  • No puede automatizar todo: también realice un análisis de costos de beneficios en qué casos de prueba desea automatizar frente a los que aún puede ejecutar manualmente.
  • Al comenzar a automatizar las pruebas, considere la posibilidad de integrar las pruebas con un motor de integración continua como Teamcity, Bamboo o Cucumber para que sus pruebas se ejecuten en cada registro, reduciendo así el esfuerzo requerido para descubrir la causa raíz de los errores y corrigiéndolos a medida que se presentan. .
respondido por el Sharath Satish 01.06.2012 - 10:56
1

He tenido éxito con la prueba unitaria de mi aplicación con MSTest y con mi Javascript con QUnit y recogiendo los resultados de esas pruebas con una única prueba MSTest Unit que utiliza WatiN (me sugirieron Selenium , que también tiene la capacidad de registrar pruebas, pero encontró que WatiN es mejor para la automatización limpia y utilizarlas para las pruebas de regresión.

No estoy seguro de la idoneidad de este enfoque para WPF.

He usado Moq para el aislamiento (una parte importante de las pruebas unitarias), vea esto pregunta de SO en marcos de aislamiento para obtener más alternativas.

Compruebe The Art Of Unit Testing para una buena introducción a cómo realizar una prueba de unidad y una buena discusión de alternativas. También he oído que Trabajar de manera efectiva con el código heredado es bueno para agregar pruebas unitarias al código existente, pero aún no lo he leído.

    
respondido por el StuperUser 10.03.2011 - 12:33

Lea otras preguntas en las etiquetas