Material Detail

"How To Write Unit Tests (The Right Way)" icon

How To Write Unit Tests (The Right Way)

In this video the author explains how to write better unit tests in under 15 minutes.

Quality

  • User Rating
  • Comments  (1) Comments
  • Learning Exercises
  • Bookmark Collections
  • Course ePortfolios
  • Accessibility Info

More about this material

Comments

Log in to participate in the discussions or sign up if you are not already a MERLOT member.
David Mansilla Martín
1 year ago
EVALUACIÓN DE LA CALIDAD DEL RECURSO COMO MATERIAL DE APRENDIZAJE EN LOS ESTUDIOS DE GRADO DE INGENIERÍA INFORMÁTICA DE LA UPM. Description: 1. Descripción del Recurso y Overview (Visión General): el recurso trata de explicar los principios del unit testing o testeo unitario, que, en resumen, consiste en subdividir el código software a probar en las unidades más pequeñas posibles, tratando de aislarlo de dependencias de código internas (por ejemplo, si una función usa dos subrutinas a y b, tratar de evitar que errores de una de ellas no permita comprobar el posible funcionamiento correcto de la otra subrutina) o de perturbaciones externas (por ejemplo, mediante el uso de piezas de código que emulen el resultado de hacer una conexión de red, para evitar tener que realizar ésta en el testeo y que un problema de red no causado por el software analizado afectase al resultado del test). He considerado que el recurso pertenece a la subdisciplina de Application Development (desarrollo de aplicaciones), en concreto de la subdisciplina de Programming (programación). 2. Tipos de Materiales de Aprendizaje: presentación en vídeo. 3. Requisitos Técnicos: un dispositivo con capacidad de cargar un vídeo en Youtube, incluyendo conexión a internet. 4. Resultados de Aprendizaje: El autor del vídeo separa el vídeo en varios tramos, tramos resumidos en una frase o idea, y dichas ideas las repite al final para cerrar el vídeo. Considero que dichas frases y lo que llevan detrás son los conocimientos que el autor quiere transmitir, y, por tanto, los resultados de aprendizaje del recurso si se comprende y recuerda correctamente el contenido y explicaciones del vídeo. La principal idea es la misma que el título del vídeo: how To Write Unit Tests (The Right Way), es decir, cómo escribir test unitarios de la forma correcta. Esta idea se descompone en los siguientes apartados: A) Qué son los test unitarios: son aquellos que analizan una única ramificación del código con el objetivo de que lo ejecute correctamente. B) Solamente testea el comportamiento: hay que asegurarse de que los test no prueban la ejecución de un código en particular, pues puede haber diferentes implementaciones de código de una idea que den el resultado correcto. Por ello, el autor del vídeo recomienda seguir el formato "tdd", es decir, una forma de escribir código consistente en escribir primero los tests que debe pasar el código objetivo, en principio éste código estará vacío y, por tanto, fallará las pruebas, pero se modificará hasta que las cumpla. Una vez las cumpla, entonces el código puede ser refactorizado, es decir, mantener su funcionalidad cambiando la estructura o el estilo del código, por ejemplo si se considera así más claro y legible, y que siga pasando los tests unitarios a pesar de ello. C) Hacer la configuración de los tests simple: hay que procurar que los tests cumplan estándares de buenas prácticas de codificación, por ejemplo, evitar usar tests cuyo código sea difícil de entender o de configurar, de manera que sea sencillo añadir más pruebas o modificar las ya existentes. D) Una sola aserción por cada test: una aserción es un predicado verificable como verdadero o falso, por tanto, los tests unitarios deben evitar la comprobación simultánea y codependiente de varias aserciones a la vez, tanto para evitar que ciertas partes de código erróneas que causan aserciones falsas no permitan comprobar el funcionamiento correcto de otras partes del código (salvo si el entorno de trabajo específicamente soportara el análisis independiente de aserciones escritas de esta forma), como para evitar el uso de nombres demasiado genéricos en los tests del código, que complican encontrar la fuente de un error si éste surge en dichos tests, pues marca una causa genérica en lugar de una específica. E) Mantener los tests unitarios separados: los tests unitarios deben poder ejecutarse en paralelo a otros tests unitarios o en orden aleatorio sin que afecte a su funcionamiento correcto. También debe procurarse que circunstancias externas al código analizado no puedan afectar a los resultados, para lo cual se pueden utilizar fragmentos de código "falso" o "de imitación" (mocks es el término inglés usado por el autor del vídeo) para, por ejemplo, emular el resultado de una conexión de red para que el código no falle si hay un error de red, pues se pretende analizar el código en sí, no las circunstancias en que se ejecuta. 5. Usos Recomendados: simplemente ver el vídeo y entender su contenido sirve para conocer o recordar la existencia y los principios básicos del testeo unitario. Partiendo de esto, se puede ahondar en más tutoriales, explicaciones o ejemplos de testeo unitario, o, por ejemplo, comprar y leer libros que tratan esta temática, como The Art of Unit Testing: with Examples in .NET, de Roy Osherove. En conclusión, ver y entender este vídeo puede promover mejores pruebas en los programas informáticos, y, por tanto, mejor software. 6. Población Estudiantil Objetivo: College General Ed, College Lower Division, College Upper Division, Graduate School y Professional, entendiendo que estas categorías incluyen a todo estudiante (actual o futuro) o graduado universitario de una rama de informática, o bien a un profesional, tanto si es del área de informática que quiera refrescar o mejorar sus conocimientos, como si pertenece a otra área y quiere explorar un posible cambio de perfil profesional. 7. Conocimientos Previos: si bien tener unos conocimientos básicos de lógica y programación probablemente ayuden a entender mejor el vídeo, la verdad es que me parece que la explicación es lo suficientemente clara y sencilla como para que no sea necesario más que prestar atención al vídeo. 8. Evaluaciones y Observaciones sobre la Calidad del Contenido: en general, y basándome en lo que he buscado de los tests unitarios, parece que el contenido del vídeo es válido, porque suena convincente, coherente, razonable, lógico, y coincide con el contenido de dos artículos sobre tests unitarios que encontré alojados en documentación de Microsoft y Oracle. Por otro lado, el contenido del vídeo parece significativo, pues es razonable suponer que saber desarrollar mejores tests ayuda a generar mejor código de programación, y conocer o refrescar el concepto y principios de los tests unitarios puede facilitar pues la proliferación de mejor código por parte de programadores que hayan visto dicho recurso. 9. Fortalezas y Preocupaciones sobre la Calidad del Contenido: como ya mencioné y expliqué en la respuesta anterior, dos aparentes fortalezas del contenido es que parece un recurso significativo pues su visualización puede fomentar mejores pruebas de código y, por tanto, mejor código, y que es un material que aparenta ser válido, convincente, coherente, razonable, lógico, cuyas conclusiones parecen coincidir con entradas de documentación en las webs de Microsoft y Oracle con respecto al tema en cuestión, los tests unitarios. Comparto dichas entradas: Microsoft (artículo de 2022, reciente): https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices Oracle (no aparece fecha pero supongo que se considera válido a día de hoy): https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1013111155.html#subsect_78084810454 Por otro lado, supongo que algunos posibles puntos negativos del vídeo son que no contenga más ejemplos o que no sea más exhaustivo en la presentación, pero probablemente el autor del vídeo tampoco pretendía que este recurso fuera algo más allá que un resumen del concepto y los principios de los tests unitarios. 10. Potencial Efectividad como Herramienta de Enseñanza/Aprendizaje. Fortalezas y Preocupaciones sobre la Efectividad como Herramienta de Aprendizaje: con respecto a las fortalezas sobre la efectividad del recurso como herramienta de aprendizaje, el recurso presenta el concepto de test unitario y desarrolla a partir de él una serie de ideas secundarias, incluyendo ejemplos. Creo que el autor consigue explicar lo anterior de manera razonablemente clara, por lo que podría resultar de utilidad revisar este vídeo si más adelante me veo en la situación de necesitar o pudiera ser conveniente crear, modificar o analizar pruebas unitarias de un determinado código software. Por otro lado, en cuanto a preocupaciones sobre la efectividad del recurso como herramienta de aprendizaje, como ya dije en la respuesta de preocupaciones de la calidad del contenido, el vídeo podría contener más ejemplos o ser más exhaustivo en la presentación, por lo que, a la hora de querer profundizar en el aprendizaje del uso de tests unitarios, probablemente el contenido del vídeo por sí solo sería insuficiente y convendría buscar y ver otros vídeos, artículos o páginas de documentación al respecto. 11. Facilidad de Uso. Fortalezas y Preocupaciones sobre la Facilidad de Uso: con respecto a las fortalezas del recurso sobre la facilidad de uso, la presentación utiliza un lenguaje claro y en general sencillo, presenta ayudas visuales tales como mostrar en pantalla la idea principal discutida en un determinado fragmento del vídeo e ideas secundarias a éstas, y finaliza el vídeo repasando las ideas principales, lo que ayuda a afianzar la información que presenta en el vídeo. Por otro lado, en el caso de las preocupaciones del recurso sobre la facilidad de uso, dos posibles problemáticas de uso del recurso son: - Si bien en general usa un lenguaje sencillo (de ahí que considere que conocimientos de lógica y programación ayudan pero no son necesarios para aprender con el vídeo), utiliza conceptos que pueden ser desconocidos para un receptor no especializado, como por ejemplo el término aserción o el formato/desarrollo de código "tdd". - El recurso está explicado en inglés y solamente hay subtítulos automáticos ofrecidos por Youtube. Aunque sea un lenguaje muy común en el ámbito informático y de las TI, supone una desventaja para alguien que no tenga suficiente soltura con el inglés.