ASP.NET MVC Workshop Día 2

4.528 visualizaciones

Publicado el

Introducción a ASP.NET y otras tecnologías asociadas

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
4.528
En SlideShare
0
De insertados
0
Número de insertados
3.942
Acciones
Compartido
0
Descargas
36
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

ASP.NET MVC Workshop Día 2

  1. 1. WorkshopASP.NET MVCDía 2Rodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof
  2. 2. Agenda• Diseño guiado por pruebas– Unit Testing– Mocking– Inyección de dependencias– TDD• Data Validation
  3. 3. Diseño guiado por pruebas
  4. 4. ¿Qué es un Test?
  5. 5. Tipos de TestsUnitario Integración
  6. 6. Test unitario• Prueba los componentes por separado• Independiente• Prueba un solo aspecto / funcionalidad• Atómico y transaccional
  7. 7. Test de Integración• Prueba integración entre varios componentes• Independiente• Prueba un solo aspecto / funcionalidad• Atómico y transaccional
  8. 8. Scope Test de IntegraciónVista Controller Servicio Entidad RepositorioScope TestUnitarioScope TestUnitarioScope TestUnitarioLa diferencia esta en el scopeVista Controller Servicio Entidad Repositorio
  9. 9. Test Scope¿Como limitar el scope?Controller Servicio Repositorio DB
  10. 10. Test Scope¿Como limitar el scope?Controller Servicio Repositorio DBRepositorioFalso
  11. 11. Inyección de dependencia
  12. 12. Inyección de dependencia
  13. 13. Inyección de dependencia
  14. 14. Inyección de dependencia
  15. 15. Inyección de dependencia
  16. 16. Unit Test PatternSetupEjecuciónVerificación
  17. 17. Anti-patterns• Test que prueben mas de una situación• Test dependientes / ejecución en orden• Test con aserciones débiles / humanas• Try Catch
  18. 18. TDD“En el largo plazo todos estaremos muertos”John Maynard Keynes
  19. 19. ¿Que es TDD?• Es una técnica en la que se escriben los casosde prueba primero y luego el código aplicativo• Las pruebas guían o dictan el código que sedesarrolla• Las pruebas son una indicación de intención– Son un especificación de que es lo que hace elcódigo– Son un parte importante de la documentación
  20. 20. Orígenes• Ambientes de objetos puros– Reducir el tiempo invertido de pruebas• Metodologías agiles• Proceso de pruebas– Falta de metodologías de pruebas de caja blanca– Necesidad de asegurar la calidad desde elcomienzo– Métricas mas difíciles de obtener
  21. 21. Red, Green, RefactorEscribir un testCompilarHacer que compileEjecutar el test,y ver como fallaEscribir solo códigonecesario para pasar eltestEjecutar el test,y ver como pasaRefactorizar el código
  22. 22. Reglas Generales• Siempre se programan las pruebas y luego seprograman el código que satisface las pruebas– Solo se escribe código si evita que algún test falle– Un test unitario solo debe interactuar con el código– Si se detecta un bug, su reporte debe referenciar auna prueba que falle• Las prueba deben poder ejecutarse y evaluarseautomáticamente• El código de las pruebas tiene la mismaimportancia que el código de la aplicación– Evoluciona, se versiona, etc.• TDD no reemplaza al testing tradicional
  23. 23. Ciclo de vida abstractoPlanificarDiseñarEjecutarEvaluar
  24. 24. Modelos de ciclo de vidaPlanificarDiseñarEjecutarEvaluarPlanificarDiseñarEjecutarEvaluarEjecutarEvaluarCascada PrototiposPlanificarDiseñarEjecutarEvaluarCíclico
  25. 25. DiseñaEtapas en TDDEscribir un testCompilarHacer que compileEjecutar el test,y ver como fallaEscribir solo códigonecesario para pasar lostests que fallanEjecutar el test,y ver como pasaRefactorizar el códigoDiseñarEjecutar DiseñarEvaluar
  26. 26. ¿Qué es el refactoring?• "Refactoring is the process of changing asoftware system in such a way that it does notalter the external behavior of the code yetimproves its internal structure“ Martin Fowler• Típicamente se hace en pequeños pasos• Hay menos riesgo de que el sistema se“rompa”• Esta técnica evita las “parálisis”
  27. 27. Refactorings• Add Parameter• Change Bidirectional Association toUnidirectional• Change Reference to Value• Change Unidirectional Association toBidirectional• Change Value to Reference• Collapse Hierarchy• Consolidate Conditional Expression• Consolidate Duplicate ConditionalFragments• Convert Dynamic to StaticConstruction• Convert Static to DynamicConstruction•Form Template Method•Hide Delegate•Decompose Conditional•Duplicate Observed Data•Encapsulate Collection•Encapsulate Downcast•Encapsulate Field•Extract Class•Extract Interface•Extract Method•Extract Package•Extract Subclass•Extract Superclass
  28. 28. DemoUnit TestInyección de dependenciasMockingTDD
  29. 29. Work Time
  30. 30. Data Validation
  31. 31. Todo se especifica en el modelo
  32. 32. Todo se especifica en el modelo
  33. 33. Código en la vista
  34. 34. Que se transforma en HTML yJavaScript no intrusivo
  35. 35. DemoData Validation
  36. 36. Work Time
  37. 37. Contacto• Mail:– rodolfof@lagash.com• Blogs:– http://shockbyte.net• Twitter:– @rodolfof
  38. 38. ¡Gracias!

×