¿Cuál es el mejor enfoque para probar su aplicación Rails con RSpec?

La teoría establece que podría comenzar con el ciclo BDD y pasar al ciclo TDD. Agregue una especificación de característica, luego agregue una especificación de controlador, una especificación de vista, una especificación de modelo, implemente cada pieza, luego comience nuevamente. Esa es la ruta segura.

La mayoría de la gente no los sigue. La experiencia le dirá el nivel de comodidad sobre la cantidad de pruebas que debe hacer. Si no sabe, hágalos todos, la pila completa. No tiene derecho a elegir hasta que haya pasado varios meses en un proyecto y ahora tenga que refactorizar, eliminar piezas, reescribir algunas secciones y debe sentir el dolor de las partes que omitió las especificaciones o las partes donde escribió especificaciones frágiles y ahora pasa más tiempo ajustando las especificaciones y luego haciendo la implementación en sí.

No existe el “orden de importancia” o las “especificaciones de funciones que duplican las especificaciones de los controladores”. No hay reglas estrictas escritas en piedra. Hay niveles de confort. Por ejemplo, si usted es el único desarrollador de su propio proyecto personal de mascotas y está absolutamente seguro de que nadie más tocará ese código y no tiene ganas de agregar especificaciones, entonces no lo haga. Especialmente si es algo que sabes está a un tiro de distancia. Ahora, los niveles de prueba cambian cuanto más sepa que no se quedará para siempre en el proyecto, más sabrá que habrá más desarrolladores haciendo otros módulos que eventualmente se integrarán con los suyos.

En la práctica, la mayoría de las personas agregarán especificaciones de características para las características más complicadas o importantes (sí, evite hacer las especificaciones de características de boilerplace para meras pantallas de inicio de sesión o pantallas de “olvidé mi contraseña”, podría, pero no es prioridad). Agregue especificaciones para todos sus modelos y clases relacionadas, como Trabajadores, Servicios, Decoradores / Presentadores, etc. Agregue especificaciones para el enrutamiento para asegurarse de que la navegación no se interrumpa. Agregue especificaciones de controlador para asegurarse de que sus vistas reciban las variables de instancia correctas que necesitarán para representar las vistas y agregue especificaciones de características para asegurarse de que la navegación entre controladores / páginas funcione. No son duplicaciones: las especificaciones del controlador verifican los parámetros HTTP de entrada y las variables de instancia resultantes para las vistas y eso es todo. La especificación de características prueba los casos de uso reales desde el punto de vista de los usuarios. Las especificaciones de Modelo, Controlador, Vista prueban la matriz de entradas / salidas para cada clase, son técnicas. Las especificaciones de funciones están centradas en el usuario.

Comience con la directriz Better Spec para Rspec básica (Better Specs {rspec Guidelines with ruby}).

El sarcasmo no viaja bien en la web, por lo que me adelantaré a la siguiente cita con una advertencia: lo que sigue es sarcasmo, que no debe tomarse literalmente:

Como dice el refrán “meses de codificación pueden ahorrarle horas de planificación”.

Teniendo en cuenta lo anterior, es necesario analizar el proceso de desarrollo de un servicio / aplicación web. Muchos desarrolladores con los que tuve el honor de trabajar son propensos a hacer las cosas de la siguiente manera:

Corte primero, mida después. Muchos desarrolladores disfrutan de la codificación y están ansiosos por mostrar sus increíbles y sorprendentes chuletas de codificación. Se lanzarían al primer soplo de una idea, como “Me pregunto si de alguna manera podríamos integrar el estado de los pedidos desde el final con las tendencias promocionales que vienen de nuestra campaña”. Escuchas a gente de negocios / comercializador decir algo así, e inmediatamente ves a los programadores apresuradamente apresurados a sus teclados y comienzan a cortar código. Luego, una vez que terminan, miden para ver si su increíble código cumple con las expectativas de los gerentes.

Este enfoque, amigos, es lo que se conoce como ‘poner el carro antes que el caballo’. O, “arrojar dinero bueno después de dinero malo”. No recomendado (a menos que tu padre sea el CEO de la compañía donde trabajas como desarrollador).

Entonces, para remediar esta tendencia alcista, debemos reducir la velocidad un poco, respirar profundamente y estar de acuerdo en que es mejor, después de todo, medir primero y luego cortar el código. ¿Correcto? ¿Todos conmigo?

Sí, entonces la pregunta es: ¿cómo medimos primero? Obviamente, analizar algunos diagramas imbéciles que nos brindan los analistas de negocios es inútil; esos diagramas solo fomentan ILUSIONES DE ACUERDO.

Necesitamos algo mejor Y lo mejor que tenemos como medida antes de cortar el código son las expectativas declaradas en forma de historias de usuarios cargadas de escenarios. Esos escenarios luego se traducen en casos de uso, y cada caso de uso se codifica como una prueba de unidad: “dado, cuándo, entonces”, o “organizar, actuar, afirmar” o “precondición, evento desencadenante, postcondición”.

Una vez que tenemos esas expectativas declaradas, las tratamos como un modelo, una medición precisa de lo que se debe cortar en código mediante nuestras impresionantes habilidades de codificación. Así que ahora podemos relajarnos y liberar nuestras increíbles chuletas e implementar un código Lean que satisfará las expectativas y hará pasar todas esas pruebas unitarias. Una vez que lleguemos allí, ahora estamos en plena libertad de llamarnos ingenieros duros.

More Interesting

¿Qué puede hacer una aplicación nativa de iOS / Android que HTML5 no puede hacer?

¿Cuál es la mejor manera de desarrollar y lanzar una aplicación: web o Android?

¿Qué idioma de la base de datos permitirá que una pequeña base de datos de un solo usuario se adapte más fácilmente a una aplicación web multiusuario?

¿Puedo usar un sitio web diseñado para dispositivos móviles con diseño receptivo para que funcione como una aplicación móvil? ¿Puede un sitio web de este tipo reemplazar una aplicación? ¿Qué puede hacer una aplicación móvil que un sitio web no puede hacer?

¿Cuál es el mejor lenguaje de programación de back-end, en casos de uso general, para aplicaciones móviles?

Cómo aprender a construir algoritmos, para poder construir una aplicación, cuando no tengo experiencia o experiencia en codificación

¿Puedo usar Javascript para forzar a un navegador móvil a permanecer en modo vertical u horizontal?

¿Qué espera la gente de una aplicación de chat? ¿Cuáles son las necesidades de las personas para la aplicación de chat?

¿Cuál es el costo promedio y el tiempo requerido para la construcción de una página web? ¿Las aplicaciones móviles son mucho más fáciles o más rápidas de hacer?

¿Cómo se programan los stickers (en sitios como Facebook y aplicaciones de chat)? ¿Cuáles son los lenguajes y conceptos de programación?

¿Puedes construir aplicaciones a través de WordPress?

¿Mis conversaciones web de WhatsApp están almacenadas en mi computadora?

¿Es una mala decisión construir mi aplicación usando Parse incluso si se cierra el próximo año?

¿Qué marco es mejor para un desarrollador principiante de aplicaciones web móviles?

¿Cuál sería la mejor manera de crear una aplicación de comercio electrónico con un primer enfoque móvil?