Me gustaría probar e implementar algunos TDD en nuestras aplicaciones web para reducir las regresiones y mejorar la calidad del lanzamiento, pero no estoy convencido de cuán bien pueden realizarse las pruebas automatizadas con algo tan esponjoso como las aplicaciones web.
He leído y probado TDD y pruebas unitarias, pero los ejemplos son funcionalidades 'sólidas' y bastante simples como convertidores de divisas, etc.
¿Hay algún recurso que pueda ayudar con la prueba unitaria de gestión de contenido y sistemas de publicación? ¿Qué hay de la unidad de prueba de un carrito de compras / tienda (productos físicos y en línea)? AJAX?
Buscar en Google "Desarrollo impulsado por pruebas web" solo me trae artículos antiguos de hace varios años, ya sea que cubren los mismos ejemplos de función similar a una calculadora o discusiones sobre por qué TDD es mejor que nada (sin ningún ejemplo).
fuente
Respuestas:
Gran descargo de responsabilidad: no he creado ninguna aplicación web ni he probado ninguna aplicación web. Los siguientes son solo fragmentos de información que he absorbido en mis caminatas aleatorias dentro de la esfera de la información.
Construya su aplicación web de tal manera que pueda probar las reglas comerciales de forma aislada. Si se encuentra probando las reglas de negocio a través de la interfaz de usuario, entonces podría ser el momento de pensar en rediseñar.
Cuando se trata de probar la interfaz de usuario, reemplace las reglas de su negocio con implementaciones simuladas que respondan de manera predecible.
Las dos reglas anteriores se tomaron de la charla de Bob Martin en RailsConf 2010 . La charla no es sobre TDD y la sección donde menciona las pruebas es corta y en algún punto intermedio.
Existen herramientas como JsUnit , JSSpec , YUI Test para probar JavaScript y Selenium y Watir para probar la interfaz de usuario.
La estantería pragmático tiene un par de libros que cubren las pruebas de aplicaciones web. Una lista de libros etiquetados con Testing está en http://www.pragprog.com/categories/design . Los libros de prueba de la aplicación web Pragmatic Bookshelf se centran principalmente en Ruby y Rails, pero deberían ser genéricamente aplicables.
fuente
Test-Driven JavaScript Development es un muy buen libro de Christian Johansen, el desarrollador detrás de Sinon.js y Buster.js , que cubre temas como (tomado del sitio web):
Actualmente usamos Sinon.js con Mocha, pero estamos listos para cambiar a Buster.js, ¡ya que sus características son realmente buenas!
fuente
En un proyecto en el que trabajé recientemente, el desarrollador principal decidió usar Unity para simplificar la burla y el TDD en una aplicación web grande. Creo que el uso de Unity a menudo irá acompañado de que TDD es una aplicación web.
Es probable que la investigación de las pruebas unitarias de CMS conduzca a un callejón sin salida porque simplemente no hay nada razonable de lo que burlarse. No veo qué se puede probar sin burlarse del tráfico http a las páginas, y en ese momento la prueba tiene poco valor.
Creo que una regla práctica útil con las aplicaciones web es que si puede usar un simulacro para reducir la complejidad, entonces probablemente pueda ser probado por la unidad.
Por lo tanto, en una aplicación web puede burlarse de su base de datos para probar diferentes partes de su capa o modelo de acceso a datos; puede burlarse de la entrada del usuario para probar la vista de la interfaz de usuario o la interfaz de usuario, etc.
fuente
He escrito un libro sobre TDD para desarrollo web con Python + Django. Cubre TDD, tanto con pruebas de extremo a extremo / funcionales (selenio) y pruebas de "unidad" de nivel inferior. También cubro prácticas modernas de desarrollo como cómo integrar git en su flujo de trabajo, cómo implementar en un servidor y automatizar y probar eso, integración continua, simulacros y aislamiento de prueba, y mucho más:
http://www.obeythetestinggoat.com/
(o http://shop.oreilly.com/product/0636920051091.do )
fuente