--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
Hola,En vuestra experiencia:-Involucráis al usuario a hacer unas buenas pruebas. UAT?
-Pe podéis hablar de equipos? Es decir, si un equipo tiene 7 programadores, que equipo de pruebas tenéis?
La verdad es que esto es un aspecto bastante difícil de medir.De todas formas, entiendo que TDD/BDD reduce los bugs, pero, en cuanta medida? Podéis decir más de vuestra experiencia en esto?
De todas formas, Carlos, se puede automatizar algunas pruebas de integración, no?
Pregunta,
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
We need to go fast, and we need to stay clean so we can keep going fast. How can we incent the team to achieve both goals? Simple. We measure both and reward them equally. If the team goes fast but makes a mess, then there is no reward. If the team stays clean but goes slow, then again, there is no reward. If the team goes fast and stays clean, then there is a reward!
We can measure messes by implementing engineering disciplines and practices like Test Driven Development (TDD), Continuous Integration, Pair Programming, Collective Ownership, and Refactoring; i.e. the engineering practices of eXtreme Programming (XP).
Hola Jose Manuel,Estaría bien el enlace al artículo :)
Yo soy pro-medir. Cuanto más se pueda medir mejor. Lo malo es que al mismo tiempo necesitas muchos meses y muchos proyectos para sacar datos concluyentes. Si no, puedes ser como estos de los restaurantes que salen en la tele quejándose porque la semana anterior al entrar la ley anti-tabaco habían facturado 50€ más. Y perdón por el off-topic del ejemplo.
Me ha llamado la atención lo de la calidad de la build. No creo realmente que el número de veces que se rompa sea medir la calidad de la build. Una build sin casi tests o donde no crezcan los tests, será una build que apenas se rompa, y tendrá muy poca calidad. Al mismo tiempo, builds rotas puede significar que o bien nos cargamos el código, o bien que hemos aumentado el número de tests, y ambos casos son buenos síntomas (el primero detectamos bugs, bien!! , y el segundo es bastante obvio).
Pero bueno, creo que el objetivo de tu post no era entrar en estas dos chorradillas :) Me ha llamado la atención que has puesto en el subject diseño y TDD, y después no has escrito nada. Y yo que iba a entrar al trapo... :)
El argumento es buenísimo: ¿Cómo hacen los contables para no equivocarse, que NO pueden? Apuntando DOS veces. Y pes una muy buena razón de utilizar TDD ya que te obliga, al hacer el test primero, que te asegures por duplicado que tu código funciona.
No se si con TDD podría pasar algo parecido, que diera una falsa apariencia de seguridad
y se pensara que no necesitas hacer más pruebas de ningún otro tipo.
Respondiendo a Abel:"Por otra parte, para probar 2 veces, en realidad haces dos implementaciones."Si haces dos implementaciones, tienes que probar 4 veces. Expresandolo en la metáfora de Uncle Bob: "hacer dos implementaciones es contratar dos grupos de contables, cada uno siguiendo su metodología de contabilidad doble.".
"4.- TDD y cambio de requisitos dan lugar a algunas pesadillas. Por ejemplo, los que hayáis hecho la kata del mes (string calculator), suponed que "el cliente" se da cuenta de lo absurdo que es usar una coma para sumar y os pide tener operadores y operaciones estándar (+, -, *, /). ¿cuántos de vuestros tests sobreviven?"Sobreviven los que tienen que sobrevivir. Las pruebas no es algo definitivo y monólitico. Los requisitos cambian, las pruebas también. La aplicación de TDD no te garantiza que tus pruebas sean mantenibles. En "xUnit Test Patterns" que trata sobre patrones de pruebas (con uno de los propósitos que es mantenibilidad) apenas se habla de TDD.
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
Hola,supongo que muchos habéis leido el artículo de Uncle Bob en la Scrum Alliance:Creo que ha sido muy inteligente por parte de la SA y en particular de su presidente Mike Cohn el hacer una serie de artículos técnicos, que encaja muy bien con Scrum que sólo trata la parte de gestión del proyecto.A la mayoría de la gente que conozco le ha encantado el artículo, a mi me ha dejado un poco confuso con respecto a TDD.La mayoría de ventajas que se mencionan de TDD en el artículo me parecen que son mejoras por usar pruebas automáticas, no TDD en particular.No se si está pasando lo que pasa con Scrum, que muchas gente dice "Scrum" queriendo decir simplemente "hacer iteraciones", o "Kanban" queriendo decir "usar tablones" o "TDD" queriendo decir "hacer pruebas automáticas".Yo uso TDD algunas veces, no para todo (a veces hago las pruebas automáticas antes que el código y a veces después). Lo que sí hago son pruebas automáticas, pequeñas iteraciones, diseño incremental, refactorizaciones, etc. No se si a eso se le está llamando TDD, aunque no siempre se haga el test primero.P.e. para hacer la interfaz de usuario no creo que se haga un test que me pida que un texto tiene que tener cierto tipo de letra. Lo digo por llevar al extremo el que probablemente TDD (o xDD....) no se use para absolutamente todas las partes de una aplicación.¿ Qué pensáis ? ¿ TDD es principalmente para diseñar, para hacer pruebas automáticas, ... ? ¿ No se pueden hacer buenas pruebas automáticas, integración, sistemas, etc si no se hace TDD ? no se puede tener un buen diseño emergente si no se hace TDD ? ...¿ Los que hacéis TDD, luego no tenéis un equipo adicional de test (o si no otros miembros del equipo que no hayan desarrollado cierta funcionalidad) para que la prueben y hagan pruebas automáticas adicionales (de integración, end-2-end con Selenium o parecido, etc.) ?
Quiero decir, ¿ toda la parte de pruebas automáticas de la aplicación va en el TDD ?
Gracias.
Saludos,Leo
--
Leo Antoli
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
Hola,Lo mejor del artículo es la discusión que suscita :-), pero no pienso que era necesario leer dicho artículo para descubrir algo que para cualquiera que desarrolle software debe resultar obvio: "el mantenimiento existe", ... y bienvenido sea!!. Cualquier software que tenga éxito demandará mantenimiento. ... me explico a continuación.
Una metodología ágil es especialmente más apropiada en productos que empiezan desde cero (no estoy diciendo que sólo sirva para este caso). Además de todos los bien conocidos ingredientes favorables, tales como requisitos cambiantes, desafíos tecnológicos, oportunidad de negocio, etc., al principio como es natural, tu producto evoluciona rápidamente, y todo esfuerzo por intentar "tomar el control" especificando a fondo o estableciendo protocolos más estructurados puede quedar desbordado.
Pero el ritmo de incorporación de características en un producto software difícilmente se mantiene constante o al menos manteniendo la misma estrategia que usaste en su inicio.
En la medida que tu arquitectura crece y se sofistica más esfuerzo conlleva el incorporar nuevas características o mejoras en las ya existentes. Más aún si tienes una base de usuarios/clientes utilizando tu producto No puedes correr el riesgo de sacrificar su confianza en tu producto por añadir cambios desafortunados, eso se paga caro.
Ahí viene la segunda parte, el TDD. En mi opinión se ensalza demasiado, otra nueva bala de plata, que con el tiempo ocupará el lugar que le corresponde: otra pieza útil o incluso imprescindible del puzzle, pero no la única. TDD se basa en la idea de no escribir código sin tener antes pruebas para probarlo. TDD se enmarca en el testeo unitario y está estrechamente ligado a automatización. Así pues, TDD contribuye a la programación y diseño a nivel unitario. Para pruebas de otros niveles, y en particular el que a mí me apasiona :-) (testeo de aceptación), TDD como tal, no los aborda (aunque existen ciertas extrapolaciones). Que alguien afirme que tiene miles de test unitarios automatizados no es para ponerle una medalla. Precisamente en el testeo unitario es donde mucha gente se "engolosina" en las infinitas instanciaciones que pueda tener una simple invocación de un método, pero la efectividad de las pruebas no tiene medida más aplastante que la asociada a responder a: ¿cuántos fallos pasan tus niveles de pruebas y llegan al cliente?. Añádele a esto la paradoja que escribir pruebas es también escribir código (de pruebas), que llegará a tener los mismos problemas de mantenimiento que el código fuente de tu producto :-).
Se pensará que estoy en contra de las pruebas y el TDD, pues no!, y rotundo no!, pero estoy convencido que hay que "dosificarse". En nuestros proyectos siempre privilegiamos la especificación (y puntual automatización "dosificada") de pruebas de aceptación. Considero que esta estrategia nos ha resultado rentable. TDD va incorporándose puntualmente en nuestras prácticas, pero el camino es lento, exige formación y cambio de chip para los programadores. El propósito no es el mismo, pero de momento, al menos con las pruebas de aceptación se intenta verificar la satisfactoria implementación de los requisitos, ... que no es poco dentro de todos los atributos de calidad que se pueden exigir a tu producto :-).
--
Has recibido este mensaje porque estás suscrito al grupo "agile-spain" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a agile...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a agile-spain...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/agile-spain?hl=es.
Patricio Letelier