La mejor práctica para la integración de TDD con el desarrollo de aplicaciones web?

StackOverflow https://stackoverflow.com/questions/18601

  •  09-06-2019
  •  | 
  •  

Pregunta

Pruebas unitarias y ASP.NET las aplicaciones web son un punto ambiguo en mi grupo.Más a menudo que no, las buenas prácticas de ensayo de caída a través de las grietas y las aplicaciones web se acaban de ir a vivir por varios años con ninguna de las pruebas.

La causa de este punto de dolor generalmente gira alrededor de la molestia de escribir automatización de interfaz de usuario mediados de desarrollo.

¿Cómo usted o su organización integrar mejor TDD prácticas de desarrollo de aplicaciones web?

¿Fue útil?

Solución

La unidad de pruebas será alcanzable si separar las capas apropiadamente.Como Rob Cooper implícita, no ponga ninguna lógica en su Formulario web distinta de la lógica para gestionar su presentación.Todas las demás cosas de la lógica y la persistencia de las capas debe ser mantenido en clases separadas y, a continuación, puede probar los de forma individual.

Para probar la GUI a algunas personas les gusta el selenio.Otros se quejan de que es un dolor de configurar.

Otros consejos

I de la capa de la aplicación y, al menos, de la unidad de prueba de la presentadora/controlador (cualquiera que sea su preferencia, mvc/mvp) para la capa de datos.De esa manera tengo la prueba de una buena cobertura en la mayor parte del código que se escribe.

He mirado en FitNesse, Watin y Selenio, como opciones para automatizar la prueba de interfaz de usuario, pero no he llegado a usar estos en cualquiera de los proyectos todavía, así que nos quedamos con las pruebas en humanos.FitNesse era la que yo estaba inclinada hacia pero no podía introducir este, así como la introducción de TDD (¿ que me hacen mal?Espero que no!).

Esta es una buena pregunta, que voy a ser la suscripción demasiado :)

Estoy todavía relativamente nuevo en el desarrollo web, y yo también estoy mirando un montón de código que es bisoños.

Para mí, puedo mantener la interfaz de usuario luz como sea posible (normalmente sólo unas pocas líneas de código) y la prueba de la mierda de todo lo demás.Al menos puedo tener algo de confianza en que todo lo que hace a la interfaz de usuario es tan correcta como puede ser.

Es perfecto?Tal vez no, pero al menos es como todavía bastante altamente automatizado y el código de núcleo (donde la mayoría de la "magia" que sucede) todavía tiene muy buena cobertura..

Yo en general, evitar las pruebas que implica depender de elementos de interfaz de usuario.Estoy a favor de las pruebas de integración, que las pruebas de todo, desde la capa de base de datos a la capa de la vista (pero no el diseño).

Pruebe a iniciar una serie de pruebas antes de escribir una línea de código real en un nuevo proyecto, ya que es más difícil escribir las pruebas más adelante.

Elegir cuidadosamente lo que prueba - no sin pruebas de escritura para todo.A veces es una aburrida tarea, así que no hacen más difícil.Si usted escribe demasiadas pruebas, usted está en riesgo de abandonar la tarea bajo el peso del tiempo dedicado a su mantenimiento.

Trate de agrupar tanto la funcionalidad como sea posible en una sola prueba.De esa manera, si algo va mal, de los errores se propagan de todos modos.Por ejemplo, si usted tiene un compendio de generación de la clase de prueba de la salida real, no todos los auxiliares de la función.

No confía en sí mismo.Suponga que usted siempre va a cometer errores, y por lo que escribir pruebas para hacer su vida más fácil, no más difícil.

Si usted no se siente bien acerca de los exámenes de escritura, es probable que esté haciendo mal ;)

Una práctica común es mover todo el código de la código subyacente y en un objeto que puede probar en el aislamiento.Dicho código se suelen seguir el MVP o patrones de diseño MVC.Si usted busca en "Rhino Iglú" probablemente, encontrará el enlace a su repositorio de Subversion.Ese código es digno de un estudio, como lo demuestra uno de los mejores MVP de las implementaciones en los Formularios Web que he visto.

Su código subyacente, cuando siguiendo este patrón, hacer dos cosas:

  1. Tránsito de todas las acciones del usuario con el presentador.
  2. De procesamiento de datos proporcionados por el presentador.

La unidad de pruebas, el presentador debe ser trivial.

Actualización:Rhino Iglú se puede encontrar aquí: https://svn.sourceforge.net/svnroot/rhino-tools/trunk/rhino-igloo/

Ha habido trata sobre la obtención gratuita de Microsoft UI Automation (incluido en el .NET Framework 3.0) para trabajar con aplicaciones web (ASP.NET).Una empresa alemana llamada Artiso pasa a tener por escrito una entrada en un blog que explica cómo conseguir que (enlace).

Sin embargo, su blogpost también enlaces a MSDN Webcasts que explica la interfaz de usuario de Automatización Marco con winforms y después eché un vistazo a esto, me di cuenta de que necesita el AutomationId para obtener una referencia al respeto de los controles.Sin embargo, en las aplicaciones web, los controles no tienen un AutomationId.

Me preguntó Thomas Schissler (Artiso) acerca de esto y él explicó que este era un gran inconveniente a partir de internet explorer.Él se hace referencia a una tecnología más antigua de Microsoft (MSAA) y estaba esperando a sí mismo que IE8 va a hacerlo de la mejor manera.

Sin embargo, también estaba dando Watin prueba y parece que funciona bastante bien.Incluso me gustó la Cera, lo que permite implementar simples guiones de pruebas a través de hojas de cálculo Microsoft Excel.

Ivonna puede la unidad de prueba de sus puntos de vista.Me gustaría recomendar pasando la mayor parte del código a otras partes.Sin embargo, algunos códigos de pertenece allí, como las referencias a los controles o de control de los controladores de eventos.

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