Es la diferencia entre las pruebas de "caja negra" (donde sabe lo que se supone que debe hacer el código, pero no cómo funciona) y las pruebas de "caja blanca" (saber cómo funciona cómo lo prueba) . La prueba de "caja negra" es en lo que piensa la mayoría de la gente cuando menciona la garantía de calidad.
Trabajo para una empresa donde el equipo de QA también es desarrollador de software. (Eso reduce el campo mucho si le interesa adivinar la empresa.Conozco la opinión de Joel, y mi experiencia me lleva a estar parcialmente en desacuerdo: por la misma razón que un hacker de "sombrero blanco" es más efectivo para encontrar agujeros de seguridad, los verificadores de caja blanca encuentran ciertos tipos de errores de manera más efectiva que saben cómo escribir código (y, por lo tanto, cuáles son los errores más comunes, por ejemplo, problemas de administración de recursos como pérdidas de memoria).
Además, dado que los desarrolladores orientados a la GC son parte del proceso desde la fase de diseño inicial, teóricamente pueden ayudar a conducir un código de mayor calidad durante todo el proceso. Idealmente, para cada desarrollador que trabaje en el proyecto con un enfoque mental en la funcionalidad, usted tiene un desarrollador opuesto con un enfoque mental en romper el código (y hacerlo mejor).
Visto desde esa perspectiva, no se trata solo de utilizar desarrolladores para probadores, sino de una especie de programación de par desconectada en la que un desarrollador hace hincapié en controlar la calidad.
Por otro lado, muchas pruebas (como la funcionalidad básica de IU) francamente no necesitan ese tipo de habilidad. Ahí es donde Joel tiene un punto.
Para muchas empresas, podría ver un sistema en el que los equipos de programación se comprometan con la revisión del código y las tareas de prueba para el código de los demás. Los miembros del equipo de Business Logic, por ejemplo, podrían gastar ocasionalmente un código de prueba y revisión para el equipo de UI, y viceversa. De esta forma no estás "malgastando" talento de desarrollador en pruebas de tiempo completo, pero estás obteniendo las ventajas de exponer el código a (con suerte) el escrutinio y el castigo de expertos. Entonces, un equipo de control de calidad más tradicional puede tomar la prueba de "caja negra".
Esto pertenece a los programadores ... –