¿Debería un desarrollador también actuar como probador? [cerrado]

60

Somos un equipo scrum de 3 desarrolladores, 1 diseñador, el scrum master y el propietario del producto. Sin embargo, no tenemos un probador oficial en nuestro equipo. Un problema que siempre está con nosotros, es que, probar la aplicación y pasar esas pruebas y eliminar errores se ha definido como uno de los criterios para considerar un PBI (Producto de la Lista de Producto) como hecho.

Pero el problema es que, no importa cuánto (3 desarrolladores y 1 diseñador) intentemos probar la aplicación y los casos de uso implementados, todavía no se ven algunos errores y arruinan nuestra presentación ( ley de Murphy ) a las partes interesadas.

Como remedio, recomendamos que la compañía contrate un nuevo probador. Alguien cuyo trabajo estaría probando, y probando solo. Un probador profesional oficial.

Sin embargo, el problema es que el scrum master y las partes interesadas creen que un desarrollador (o un diseñador) también debería ser un probador.

¿Tienen razón? ¿Deberíamos nosotros los desarrolladores (también diseñadores) ser probadores también?

Saeed Neamati
fuente
1
Posible duplicado de programmers.stackexchange.com/questions/100637/… , aunque ese es el que se pregunta desde el punto de vista opuesto.
Adam Lear
En el equipo de scrum en el que he estado, todos estaban probando la aplicación de teléfono inteligente o tableta y todos fueron de gran ayuda.
ott--
Los escritores necesitan un editor.
JeffO

Respuestas:

59

Ex ante: parece haber mucha confusión sobre lo que se considera probar lo que no. Claro, cada desarrollador necesita probar su código mientras lo crea, él / ella necesita verificar que funcione. Ella / él no puede entregarlo a un probador antes de que él / ella piense que está hecho y que es lo suficientemente bueno. Pero los desarrolladores no lo ven todo. Es posible que no reconozcan los errores. Estos errores solo se pueden encontrar más adelante en el ciclo de desarrollo cuando se realizan pruebas exhaustivas. La pregunta es si los desarrolladores deben realizar ese tipo de pruebas o no, y en mi humilde opinión, esto debe analizarse desde el punto de vista del gerente de proyecto:

Los desarrolladores pueden ser probadores, pero no deberían serlo . Los desarrolladores tienden a evitar involuntariamente / inconscientemente usar la aplicación de una manera que pueda romperla. Eso es porque lo escribieron y lo prueban principalmente en la forma en que debería usarse.

Un buen probador, por otro lado, intenta torturar la aplicación. Su intención principal es romperlo. A menudo usan la aplicación de formas que los desarrolladores no habrían imaginado. Están más cerca de los usuarios que del desarrollador y, a menudo, tienen un enfoque diferente para probar un flujo de trabajo.

Además, el uso de desarrolladores como probadores aumenta los costos de desarrollo y no beneficia tanto la calidad del producto como tener un probador dedicado. No permitiría que los desarrolladores hicieran una prueba cruzada de sus trabajos cuando un probador pueda hacerlo mejor por poco dinero. Solo si el ciclo de retroalimentación entre los desarrolladores y los probadores se volviera demasiado costoso, haría que los desarrolladores hicieran una prueba cruzada del código de los demás, pero en mi experiencia eso rara vez es el caso y depende en gran medida del proceso.

Eso no significa que un desarrollador deba ser descuidado y dejar todo al probador. El software debe estar respaldado por pruebas unitarias y los errores técnicos deben reducirse al mínimo antes de entregar el software al probador. Aún así, a veces tienes una solución aquí, rompes los problemas u otros errores que ningún desarrollador podría prever, está bien. Además, las pruebas de integración deben ser realizadas principalmente por los desarrolladores. El objetivo principal del probador es verificar que se cumplan los requisitos.

En un equipo tan pequeño (y también dependiendo del tamaño de la aplicación), también puedo ver al probador en un rol híbrido, escribiendo pruebas unitarias y pruebas de IU. Definitivamente deberías contratar uno .

Pero más importante que el probador son las congelaciones / ramas regulares. No presente nada que no haya sido probado adecuadamente. Cuando agregaste una función o cambiaste algo, todo lo que la rodea debe verificarse nuevamente. Solo obtendrá una mala reputación si su empresa no lo hace. No sueltes algo inestable. Cuando el cliente quiera tener el software en una fecha determinada, deje de desarrollarlo lo suficientemente temprano y pruébelo de manera adecuada, para que tenga tiempo suficiente para corregir errores. A menudo es mejor rechazar las solicitudes de funciones de último momento que implementarlas de manera deficiente o liberarlas sin las pruebas adecuadas.

Halcón
fuente
99
Totalmente y con vehemencia no estoy de acuerdo ... Los desarrolladores pueden ser probadores altamente efectivos, pero el desarrollador de una característica NO debe ser también el probador de la misma característica. Muchos equipos pequeños desempeñan ambos roles, por tres personas que trabajan en tres características diferentes, y luego entregan las pruebas a uno de los otros tres desarrolladores. Funciona extremadamente bien cuando un equipo no tiene un probador de control de calidad.
maple_shaft
55
@maple_shaft: En mi humilde opinión, no hay excusa para no tener un probador. Cualquier proyecto ofrecerá una mayor calidad con un probador dedicado y los desarrolladores pueden centrarse en el desarrollo, si hay alguno. Hacer que los desarrolladores prueben el código de los demás es una solución improvisada, incluso para equipos pequeños en mi humilde opinión. También deberías leer el artículo de Joel al respecto.
Falcon el
3
Los desarrolladores pueden ser probadores, y un buen desarrollador en realidad conoce muchos lugares donde el código puede ser débil y estar sujeto a roturas. Simplemente nunca la gente pruebe el código que diseñaron o escribieron, eso es inútil. El código de otras personas puede estar bien.
StasM
44
@deadalnix: Realmente me desconcierta por qué las personas votan negativamente sin siquiera leer y comprender mi respuesta. Para citarme a mí mismo: "El software debe estar respaldado por pruebas unitarias y los errores técnicos deben reducirse al mínimo antes de entregar el software al probador".
Falcon
2
"Un buen probador, por otro lado, intenta torturar la solicitud. Su intención principal es romperla". - Totalmente en desacuerdo. Tengo un probador que continuamente intenta aplastar el teclado o desbordar los campos. Claro, estos son errores, pero una factura de $ 1 billón de billones que arroja un error es tan baja en mi lista de tareas pendientes que no me registro. Un GRAN probador prueba todos los escenarios en los que varios usuarios usarían la aplicación. Un buen desarrollador se asegura de que todas las rutas de código hayan sido probadas y que la aplicación funcione cuando se usa según lo previsto.
Paul
42

Los desarrolladores pueden ser probadores del código de otros desarrolladores.

Pero probar su propio código no es un buen movimiento: los desarrolladores tienden a tener bloqueos mentales sobre su propio código y, por lo tanto, tienen dificultades para diseñar pruebas completas o apropiadas.

Siempre habrá desarrolladores que piensen que lo hacen bien, pero generalmente no lo hacen (y estoy seguro de que tengo muchos puntos ciegos).

Si REALMENTE NO PUEDE contratar a un probador, haga que los desarrolladores realicen pruebas cruzadas entre sí, es decir, si A escribe el código y realiza pruebas unitarias, haga que B revise esas pruebas unitarias y vea si hay otras cosas que podrían agregarse. . Y haga que B intente probar el código (como usuario) e informe defectos.

Esto no es perfecto, pero es mejor que un solo desarrollador tratando de hacer todo.

A veces, sus colegas pueden ser realmente buenos para romper su software, porque disfrutan de eso y no les importa demasiado, porque no es SU código.

rápidamente_ahora
fuente
2
Oh si, claro. Completamente de acuerdo. Es solo que cuando no puede obtener el 100% de lo que desea, puede que tenga que conformarse con menos. Sabes que menos no es tan bueno pero es mejor que nada.
rapid_now
44
Generalmente estoy de acuerdo con las pruebas cruzadas, pero en algunos equipos que introducirán conflictos. Algunas personas disfrutan culpar a otros ("mis cosas funcionan, las tuyas no, jaja, soy mucho mejor que tú") y eso es inaceptable. Lo he presenciado en numerosas ocasiones. Las pruebas cruzadas solo deben hacerse entre colegas que se respetan mutuamente. En mi equipo, presenté al desarrollador sin nombre al que se culpa por cada error para evitar que alguien pierda la cara. Los errores no tienen nombre, suceden.
Halcón
55
+1 es imposible probar adecuadamente su propio código. Es sorprendente cuáles son los trucos que la mente puede jugar contigo: estarás 100% seguro de que codificaste y probaste alguna función y necesitará que alguien más te muestre que en realidad no funciona, excepto en un caso muy estrecho. Sea obvio para usted una vez que se muestra, pero nunca lo vería usted mismo. La mente usa atajos cognitivos, y al probarlos, es imposible que la persona que diseñó y desarrolló el código lo pruebe adecuadamente.
StasM
2
@StasM: de acuerdo, con una pequeña calificación: descubrí que volviendo a mi propio código meses después, puedo ver las fallas y puedo hacer un mejor trabajo al probarlo objetivamente. Pero probar el tuyo después de escribir es muy difícil.
rapid_now
1
@Ben Aston: Un desarrollador aún debería estar haciendo pruebas unitarias, pruebas de integración, etc. Simplemente no exclusivamente. Los puntos ciegos no desaparecerán solo porque tú quieras que lo hagan.
rápidamente_ahora
11

¿Debería el periodista tender a escribir correctamente? Quiero decir, es trabajo de correctores y editores encontrar todos los errores gramaticales.

Sin embargo, los periodistas proporcionan algún corrector ortográfico por sí mismos. Sin embargo, el corrector es una profesión separada e importante.

Lo mismo sobre desarrolladores y probadores, excepto el hecho de que el control de calidad es una parte aún más importante del desarrollo. Incluso si es un buen desarrollador, simplemente no tiene tiempo para probar exhaustivamente todos los casos de prueba, para cubrir todos los entornos, navegadores y sistemas operativos que admite su producto.

Si uno, además de desarrollarse, también hace ese trabajo constantemente, solo significa un hecho simple: es un probador a tiempo parcial.

shabunc
fuente
10

no importa cuánto (3 desarrolladores y 1 diseñador) intentemos probar la aplicación y los casos de uso implementados, aún así algunos errores no se ven y arruinan nuestra presentación ... a las partes interesadas.

Considere realizar una "ejecución controlada" para un sprint o dos, rastreando el desarrollo y probando los esfuerzos por separado. Al final de dicha ejecución, analice los datos recopilados para averiguar cuánto esfuerzo dedica a las pruebas.

Si descubre que las pruebas requieren mucho esfuerzo, pase esos datos a la administración; será una evidencia convincente que respalde su solicitud (mucho más convincente de lo que tiene ahora).

De lo contrario (si encuentra que su prueba lleva poco tiempo), considere invertir un esfuerzo adicional para hacerlo mejor (o aprender cómo hacerlo). Negocie ese esfuerzo adicional que planifica con su administración, porque en su lugar pueden preferir contratar a un evaluador. :)


... recomendamos que la empresa contrate un nuevo probador. Alguien cuyo trabajo estaría probando, y probando solo. Un probador profesional oficial.

Sin embargo, el problema es que el scrum master y las partes interesadas creen que un desarrollador (o un diseñador) también debería ser un probador.

Tengo que admitir que la administración de su empresa me parece bastante floja. Quiero decir, está bien, puede ser realmente difícil averiguar cuántos probadores serían mejores para el proyecto, está bien.

Pero tener al menos un probador es solo una apuesta segura, es realmente divertido que duden en intentarlo, mientras afirman que son scrum / agile .

mosquito
fuente
9

Bueno, tuvimos dos pruebas cruzadas de desarrolladores después de que el primero hizo algunos cambios en una pantalla de entrada. Esto fue cuando nuestro probador regular estaba de baja por maternidad.

Básicamente, cambió una pantalla de listado de facturas que los usuarios usaron para seleccionar las facturas antes de hacer zoom para editar mediante un botón "Editar". Se eliminó la lista original y se insertó una nueva vista de cuadrícula, con filtrado, agrupación, clasificación y todo tipo de funcionalidades geniales.

Las pruebas fueron excelentes y cargaron los cambios al cliente al día siguiente. Dos semanas después, el cliente llama y dice: "Nos gusta mucho lo nuevo que pones, ahora podemos ver todo tipo de información. Pero ... er ... ¿a dónde vamos a editar las facturas ahora? ?? "

Resulta que el desarrollador sacó la casilla de verificación (para la selección) y el botón de edición y dado que los desarrolladores siempre hicieron doble clic para seleccionar un elemento de todos modos, ninguno de ellos encontró nada malo ...

Los desarrolladores y usuarios viven en mundos diferentes, hacer pruebas cruzadas es mejor que hacer que el desarrollador pruebe su propio trabajo, pero aún no es lo mismo.

Permas
fuente
3
Yo no diría "viven en mundos diferentes", pero las personas tienen hábitos y el código de un desarrollador funcionará si lo usa alguien con el mismo hábito. No puedo contar con qué frecuencia no pude reproducir un error encontrado por un probador, miré por encima de su hombro mientras reproducía el error y dijo "wow, nunca hubiera hecho lo que acabas de hacer".
gnasher729
4

Como otros han dicho aquí, los desarrolladores pueden realizar una prueba cruzada del código de los demás (pruebas unitarias o funcionales), y tal vez su scrum master y el propietario del producto puedan ayudarlo con las pruebas de integración, pero para las pruebas de aceptación del usuario debe asegurarse de obtener muchos comentarios de las pruebas del cliente, lo que significa implementaciones frecuentes con las que pueden trabajar de la misma manera que lo hacen los usuarios reales y un canal de comunicaciones realmente abierto .

StevenV
fuente
2

Debe diseñar teniendo en cuenta la capacidad de prueba, pero si no tiene un probador dedicado, algunas cosas simplemente pasarán desapercibidas porque no hay suficientes horas en el día para diseñar, implementar y probar el software.

davidk01
fuente
2

Probar software es un trabajo profesional a tiempo completo. Se necesita un buen cerebro, talento y mucha experiencia para convertirse en un buen probador. Es ridículo suponer que un desarrollador de software, no importa cuán inteligente sea, puede acercarse a un probador profesional cuando la prueba es solo un pequeño componente de su trabajo diario.

Además de eso, surge el problema de que inconscientemente el desarrollador de software no quiere encontrar errores.

gnasher729
fuente
1

Estoy de acuerdo con su punto de que los desarrolladores / diseñadores deberían probar su código, con la certeza de que el diseñador / desarrollador que hizo una sección de código no será el único conjunto de "ojos" en ese código antes de comprometerse a vivir. Si bien eso no va a agarrar todo, al menos ayudará a evitar la ceguera que se arrastra en las pruebas y la reevaluación de su propio código durante el desarrollo.

Por la mención del caso de uso, supondré que también está utilizando herramientas de cobertura de código. De lo contrario, podría ayudar a ver qué código podría no probarse, y podría aparecer errores inesperados durante ciertas condiciones.

Dicho esto, si hay suficiente trabajo o si su organización es de un tamaño decente, estoy de acuerdo en que se necesita una persona de control de calidad profesional, ayudaría a enfocar un poco más los roles de todos, y también podrían ver si hay algún patrón sobre qué se está perdiendo y, lo que es más importante, cómo solucionarlo.

credo canadiense
fuente