¿Deben participar los desarrolladores en las fases de prueba?

10

Estamos utilizando un proceso de desarrollo clásico en forma de V. Luego tenemos requisitos, arquitectura, diseño, implementación, pruebas de integración, pruebas de sistema y aceptación.
Los probadores están preparando casos de prueba durante las primeras fases del proyecto. El problema es que, debido a problemas de recursos (*), las fases de prueba son demasiado largas y a menudo se acortan debido a limitaciones de tiempo (ya sabes, los gerentes de proyecto ...;)). Los desarrolladores están haciendo sus pruebas unitarias como deberían.

Entonces, mi pregunta es simple: ¿deberían los desarrolladores participar en las fases de prueba y no es demasiado 'peligroso'? Me temo que le dará a los gerentes de proyecto una falsa sensación de mejor calidad a medida que se realiza el trabajo, pero ¿el valor agregado de man.days sería de alguna utilidad? No estoy realmente seguro de que los desarrolladores hagan pruebas (sin ofender aquí, pero todos sabemos que es bastante difícil romper con unos pocos clics lo que has hecho en varios días).

Gracias por compartir tus pensamientos.

(*) Por razones oscuras, aumentar el número de probadores no es una opción a partir de hoy.

(Solo por adelantado, no es un duplicado de ¿Deberían los programadores ayudar a los evaluadores a diseñar las pruebas? Que habla sobre la preparación de la prueba y no la ejecución de la prueba, donde evitamos la implicación de los desarrolladores)

LudoMC
fuente
Editado para precisar que nuestros desarrolladores están haciendo sus pruebas unitarias. Estoy preocupado por las fases después de las pruebas unitarias, cuando los chicos de QA entran en el ciclo.
LudoMC
Hmmm, no será fácil elegir entre el "absoluto inequívoco SÍ" y el "absolutamente no". Lo pensaré un poco más, esperando otras respuestas o comentarios sobre las respuestas para tener una visión más clara.
LudoMC
Ok, acepté una respuesta, pero también voté algunas de las otras respuestas que proporcionaron buenos argumentos para el problema. Gracias a todos.
LudoMC

Respuestas:

13

Mirando su pregunta muy literalmente ("involucrado en") Mi única respuesta es absolutamente inequívoca

SI

Los desarrolladores nunca deberían tener la última palabra en su propio código.

Pero, los desarrolladores deben participar en la prueba del trabajo de otros desarrolladores. Hace dos cosas:

  1. Aporta la visión de un desarrollador a las pruebas. Esto se debe al caso general de solo saber qué API probablemente se están utilizando en un punto dado, cuáles son las excepciones que pueden provenir de esas API y cómo deben manejarse. También ayuda en un proyecto específico porque los desarrolladores tienen mucha más exposición a las diversas discusiones sobre por qué se está haciendo algo de lo que normalmente hace el control de calidad, lo que significa que pueden detectar casos de vanguardia que el control de calidad no haría. También es probable que los errores detectados por un desarrollador sean más baratos de solucionar porque un desarrollador generalmente proporcionará más información y mucha más información sobre cómo solucionarlo de inmediato.
  2. Proporciona al desarrollador exposición a partes de la aplicación a las que de otro modo no se expondría. Esto los hará mejores desarrolladores para esa aplicación a largo plazo. Cuando sé cómo se consume mi API, soy mucho mejor anticipando lo siguiente que debo hacer que si solo estoy eliminando una especificación. Lo más importante, puedo saber cuándo la especificación es incorrecta antes de comenzar a codificar si conozco la aplicación y su uso.

Finalmente, ¿por qué no usarías tantos ojos como sea posible? Rara vez puede darse el lujo de pasar por el proceso de contratación e incorporación para incorporar a otras personas de control de calidad durante el momento crítico. Entonces, ¿dónde encuentras los ojos adicionales que necesitas? ¿O intenta pasar el tiempo de crisis con la misma cantidad de control de calidad que tuvo todo el tiempo? Incluso si los desarrolladores pasan el 20% de su tiempo probando y el 80% reparando cualquier error que surja, todavía hay más ojos en la aplicación que antes. Las pruebas automatizadas solo le brindan un cierto nivel de seguridad y nunca serán del 100%.

http://haacked.com/archive/2010/12/20/not-really-interested-in-lean.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+haacked+%28you%27ve+been+HAACKED%29

desaparecido en combate
fuente
+1 ya que los desarrolladores deberían participar en la observación del código de otros
Gary Rowe
Aceptaré este por 1: el enlace proporcionado (muy interesante y estrechamente relacionado con nuestra situación) 2: los buenos argumentos en su respuesta: el hecho de que los desarrolladores no deben probar su propio código, que les da una buena visión de otras partes de la aplicación o sistema.
LudoMC
11

Para cualquier cosa menos pruebas de unidad, absolutamente no. Los desarrolladores simplemente saben demasiado sobre la aplicación y cómo se "supone" que funciona para ser probadores objetivos.

kirk.burleson
fuente
2
En su mayor parte, estoy completamente de acuerdo con esto. Sin embargo, la publicación dice que el equipo de control de calidad es responsable de elaborar los casos de prueba. Suponiendo que las pruebas tienen una cobertura exhaustiva, no veo una razón convincente por la cual los desarrolladores no puedan ejecutar los casos de prueba antes de lanzar el software a QA. Puede ayudar a detectar errores temprano y reducir la sobrecarga resultante de múltiples versiones de corrección de errores.
Pemdas
2
No estoy de acuerdo con este punto de vista porque tener un ojo de desarrollador puede ser extremadamente beneficioso durante las pruebas funcionales. Un desarrollador es un recurso valioso, por lo que no debería pasar por escenarios de prueba de memoria, sino que puede aconsejar a los evaluadores dónde ir para romper la aplicación de manera más eficiente (haciendo que la vida de los evaluadores sea más divertida ...)
Gary Rowe
GR ... en general, estoy de acuerdo con su afirmación acerca de que los desarrolladores tienen un recurso valioso, pero el problema aquí es realmente reorganizar qué recurso ya tienen para garantizar una cobertura de prueba adecuada. Si esto significa que los desarrolladores tienen que participar en algunas pruebas de Qaish, entonces que así sea.
Pemdas
8

La diferencia fundamental en las filosofías de prueba entre desarrolladores y Qs es la siguiente: el programador generalmente prueba su programa para demostrar que su código funciona (prueba "positiva"). El control de calidad puede y lo hace, pero también tiene un enfoque adicional en descubrir qué no funciona al intentar romper el software (usando pruebas "negativas").

En la medida en que el personal de QA podría corromperse potencialmente por las pruebas de los programadores que "prueban" que el software funciona, debe haber un aislamiento entre la prueba del desarrollador y la prueba de QA. El desarrollador ciertamente puede ayudar a las pruebas de control de calidad demostrando lo que funciona, pero depende del control de calidad verificar independientemente que el software no se rompa.

Lo mejor que puede hacer el programador para ayudar en el esfuerzo de prueba es proporcionar un conjunto de pruebas de unidad completo, de alta calidad y verificable, que contenga pruebas que se alineen con los requisitos individuales en el documento de requisitos.

Robert Harvey
fuente
2

Bueno, en términos de pruebas, hay 3 tipos.

Caja negra, caja gris y caja blanca.

El recuadro negro se refiere a los usuarios que prueban el producto, sin saber cómo funciona internamente.

El recuadro gris se refiere a usuarios avanzados que tienen conocimientos sobre programación de computadoras, pero que no están en el equipo de desarrollo. Estas personas comprobarán si el producto tiene pérdidas de memoria, problemas con los requisitos del sistema, etc.

Aquí está la parte principal: el cuadro blanco se refiere a los desarrolladores que prueban el producto a nivel de código. Esto significa decir que hacen pruebas unitarias, depuración, ... etc.

Por lo tanto, es bueno que los usuarios y el equipo de desarrollo estén involucrados en la fase de prueba, pero cada una de las pruebas requiere un nivel de compromiso adecuado por parte de los usuarios y el equipo de desarrollo, dependiendo de lo que se pruebe.

mauris
fuente
2

UNIT TESTING es imprescindible para todos los desarrolladores

Para obtener información sobre cómo se podría utilizar para su beneficio, lea los siguientes enlaces si está en desarrollo de C ++:

NO HAY MANERA DE QUE UNA PERSONA DE CONTROL DE CALIDAD PUEDA HACER ESTAS PRUEBAS. DE NINGUNA MANERA.

Fanático23
fuente
Estoy de acuerdo pero estaba haciendo la pregunta de otra manera. ¿Deberían participar los desarrolladores en las pruebas (excluyendo las pruebas unitarias) en las que generalmente solo participan personas de control de calidad
LudoMC
1

Suponiendo que el proyecto tiene un número significativo de desarrolladores, entonces, por supuesto, haga que los desarrolladores trabajen en las pruebas. Una advertencia sería que los desarrolladores no trabajan en las pruebas (esto no incluye pruebas unitarias) para su propio código.

John Percival Hackworth
fuente
+1 para desarrolladores que no prueban su propio código (o al menos no solo)
LudoMC
0

Prefiero ver al personal administrativo (o usuarios potenciales reales) haciendo la prueba de control de calidad que a los desarrolladores. Alguien que no sabe cómo se diseñó el producto para funcionar, debe intentar usarlo. Los desarrolladores tienden a ser muy limitados en la forma en que abordan las pruebas y, francamente, también son demasiado caros por hora para usar en las pruebas de control de calidad.

HLGEM
fuente
0

Usted escribe:

El problema es que, debido a problemas de recursos (*), las fases de prueba son demasiado largas y a menudo se acortan debido a limitaciones de tiempo. Esto se debe a que los desarrolladores no las están haciendo. Una de las compañías de Internet más grandes que ofrece los mejores productos más estables no utiliza probadores en absoluto. Solo usan pruebas automáticas, todas realizadas por los propios desarrolladores. Los resultados son x10 mejores productos que cuando el desarrollador deja las pruebas a "evaluadores".

Es como hacer que los trabajadores de la construcción construyan su casa, pero que un equipo diferente se asegure de que el edificio realmente esté en pie, que las puertas se abran y se cierren, que el aire acondicionado funcione, etc. siendo poco confiable

Chico
fuente