¿Las pruebas de software se realizan realmente en proyectos profesionales?


25

He participado en muchos proyectos en varias compañías porque he sido desarrollador durante mucho tiempo y soy contratista.

Calculo que menos del 20% de los proyectos se prueban metódicamente. Con pruebas metódicas me refiero a cualquier prueba más allá de la prueba ad-hoc sin plan.

También calculo que menos del 10% de los proyectos se someten a pruebas metódicas exhaustivas cuando cuentan con evaluadores dedicados como parte del equipo, documento del plan de prueba, donde los desarrolladores escriben pruebas automatizadas y luego también realizan un seguimiento de la cobertura de la prueba y miden los resultados.

Dos preguntas

  1. ¿Cuáles son sus porcentajes estimados sobre este tema?
  2. ¿Cuál es su experiencia profesional con respecto a las pruebas de software?

Nota adicional

Dado que la pregunta de prueba metódica puede obtener respuestas bastante sesgadas (a la gente le gusta alardear de ser superior a los demás), aliento a otros desarrolladores (aquellos que no están expuestos a la prueba metódica) a que también brinden su respuesta, porque de lo contrario parecería que la prueba es se hace en todas partes ... excepto en su empresa.


Buena pregunta, ¡gracias por tomarse el tiempo para reformular!

@ Mark Trapp: Gracias. Creo que es bastante básico, pero puedo hacer algunas más (según el conjunto de preguntas anterior)
Robert Koritnik

Respuestas:


8

El patrón que he visto al probar durante mi carrera muestra una fuerte correspondencia con el riesgo de fracaso en un proyecto. Los proyectos grandes tienen más probabilidades de ser probados que los pequeños, las aplicaciones de misión crítica tienen más probabilidades de ser probadas que las de sitios web de marketing, los sistemas internos tienen menos probabilidades de ser probados que los públicos.

Dicho esto, todavía hay proyectos que se han probado en exceso y aquellos que no se han probado lo suficiente, pero estos son la minoría.


He editado mi pregunta un poco. ¿Podría proporcionar sus estimaciones también?
Robert Koritnik el

Casi todos los proyectos (más del 80%) en los que he estado involucrado han sido probados metódicamente, pero luego he hecho casi exclusivamente aplicaciones corporativas de misión crítica.
Martin Brown

Yo trabajo para la corporación farmacéutica. Diría que el 80% de las aplicaciones son probadas por probadores y desarrolladores profesionales. Ese 20% son aplicaciones de bajo riesgo, como presentaciones promocionales en iPad. pero incluso este es revisado ad-hoc por alguien.
yoosiba

5

Todo lo que producimos se prueba completamente. Si nuestro equipo interno de control de calidad está sobrecargado, tenemos un equipo offshore que prueba los proyectos. No son tan buenos como nuestro equipo interno, pero ese es un tema diferente.


He editado mi pregunta un poco. ¿Podría proporcionarnos sus estimaciones del mercado profesional de desarrollo? Porque tus proyectos se analizan. ¿Y sus pruebas están automatizadas o no?
Robert Koritnik el

¿Quién es este equipo offshore? ¿Les darías una recomendación?
Martin Brown

Por lo general, las grandes empresas tienen centros de I + D en otros países (principalmente en Asia). Donde se realiza el desarrollo offshore. El objetivo del desarrollo offshore es reducir el costo de desarrollo (una parte de él).
Nipuna

2

Las tres empresas para las que he trabajado durante los últimos 15 años tuvieron pruebas unitarias que se ejecutaron automáticamente.

En dos de esas compañías presioné para presentarlas.


Edité mi pregunta un poco. ¿Podría proporcionar sus estimaciones sobre las pruebas de software en el mercado profesional también?
Robert Koritnik el

@Robert: No he estado trabajando lo suficiente como para dar una estimación general. Por lo poco que sé, las cosas están mejorando. Pero entonces, era yo el que estaba presionando para pruebas unitarias automáticas había estado en dos de los tres casos que se acerca dije ...
OSE

Pero sí hablas con otros desarrolladores de otras compañías, ¿no?
Robert Koritnik

2

En los últimos 9 años, básicamente solo he cumplido con las pruebas de aceptación / regresión. Solo hubo unas pocas pruebas unitarias.


He editado mi pregunta un poco. ¿Podría proporcionar también sus estimaciones de pruebas de software en el mercado profesional?
Robert Koritnik el

2

Sí.

La cantidad de pruebas es proporcional a la confiabilidad requerida de la aplicación, así como a la madurez de la cultura del programador.

Con frecuencia, los sitios web caminan con agujeros de error (los enlaces rotos son un defecto).

Los videojuegos suelen tener errores.

Windows (finalmente) es bastante confiable.

Los enrutadores son muy confiables

Los monitores del hospital "no se rompen"

Tenga en cuenta que el costo fiscal de la falla también se correlaciona con la confiabilidad.


2
Estoy totalmente en desacuerdo con usted: ¿nunca ha visto fallar un enrutador? ¿Se bloquean los juegos de Xbox, Playstation y Wii? ¿Alguna vez tuvo una pantalla azul o 'La aplicación no responde' en Windows?
JBRWilkinson

@JBRWilkinson Creo que echas de menos sus modificadores de gravedad, así como posiblemente te estás metiendo en la gran mayoría de los juegos de PC que, como dice Paul, a menudo tienen errores. De todos modos, la lista probablemente podría usar alguna mejora, pero el sentimiento es correcto: la confiabilidad a menudo se correlaciona con las pérdidas fiscales asociadas con el fracaso.
Jay Carr

1

En 10 años nunca trabajé en un proyecto con pruebas formales de código.

En mi trabajo actual solo tenemos pruebas funcionales.

El problema es que nadie en la administración sabe siquiera sobre las pruebas de código. El departamento de pruebas ni siquiera sabe acerca de las pruebas de código, solo siguen las especificaciones de alto nivel y verifican si cumplimos desde un punto de vista conductual / funcional.

No tenemos un líder de software calificado que nos obligue a codificar bien. El resultado es un código de espagueti, muchas regresiones, horarios perdidos, etc.


Gracias por su respuesta honesta. ¿Cuáles son sus estimaciones (consulte mi pregunta editada)?
Robert Koritnik el

Mi estimación para Italia es inferior al 10% de las pruebas formales de código. Quizás casi solo código de misión crítica.
Wizard79

He trabajado en Irlanda, Inglaterra, Escocia y Eslovenia y, al parecer, Italia no parece ser diferente.
Robert Koritnik

1

Somos una empresa offshore de tamaño medio en el sur de Asia. Sin embargo, siempre realizamos proyectos basados ​​en EE. UU. Y trabajamos directamente con los requisitos enviados por la empresa estadounidense.

Aplicamos pruebas metódicas en cada aplicación que creamos. Quizás, la calidad de las pruebas no está a la altura, pero las empleamos.


¿Serían esas pruebas automatizadas o principalmente manuales? He editado mi pregunta un poco. ¿Podría proporcionar también sus estimaciones de pruebas de software en el mercado profesional?
Robert Koritnik el

La mayoría de nuestras pruebas se realizan manualmente.
Shamim Hafiz

1

Por mucho que el purista en mí no quiera aceptar que tiene que haber una gestión de riesgos incorporada en la decisión de cuán rigurosamente prueba o si realiza pruebas formales. Para las aplicaciones internas, que sospecho que son un gran porcentaje de proyectos de programación, el costo de liberar un error y luego repararlo rápidamente después de notarlo a veces puede ser compensado por el costo de un equipo de prueba completo. Por supuesto, depende de la aplicación y del costo potencial de las fallas.

Dicho esto, no creo que la planificación de la gestión de riesgos sea la razón de la falta de pruebas formalizadas. Creo que es más el resultado de que los gerentes no técnicos no entienden el valor que proporciona y solo ven el costo.


2
Escucho lo que dices, pero es difícil de justificar. Los estudios han demostrado que cuanto más tiempo pasa desapercibido un error, más cuesta, exponencialmente. El costo de los errores que llegan al cliente es enorme, y parchearlos a menudo causa nuevos errores, si no existe un marco de prueba de la unidad (un escenario probable cuando este tipo de mentalidad de "parche y arreglo" está presente). En consecuencia, se puede demostrar que el uso juicioso de las herramientas y metodologías de prueba es mucho menos costoso que parchear y reparar.
Robert Harvey

3
Estoy cada vez más escéptico sobre ese dogma, especialmente sobre cómo se aplica universalmente. Estoy seguro de que es cierto algunas veces, pero no todos los errores se crean por igual, ni todas las aplicaciones. Me resulta muy difícil tragar que un error en una aplicación interna utilizada por 10 personas es significativamente más costoso de solucionar si se encuentra durante la prueba de la unidad en comparación con la liberación de un parche. Puede ser exponencialmente más vergonzoso, pero no más costoso a menos que ignore los costos reales del tiempo que un probador pasa buscando el error.
JohnFx

2
También me pregunto si esas estadísticas no eran más aplicables a los proyectos masivos (por ejemplo, sistemas operativos) a partir de los cuales se crearon y no se traducen en las aplicaciones de tipo CRUD que la mayoría de nosotros construimos para vivir.
JohnFx

Estoy de acuerdo con ustedes y he visto ambos casos. Pero ciertamente parece que soy parte de los costos exponenciales que Robert describe, particularmente cuando un error ha estado en el software tanto tiempo que otras características realmente comenzarían a romperse si se solucionara. Con una codificación frenética lo suficientemente mala como para que la gente trabaje en torno a los problemas durante el tiempo suficiente y los errores que permanecen dentro por un tiempo lo suficientemente largo, 1 + 1 no es 2. Es 7. Y si no es 7, todo se vendrá abajo.

1

Mi muestra es muy pequeña para deducir porcentajes, pero aquí va de todos modos.

Una de ellas era una compañía de chips + firmware fabless, que realizó pruebas fanáticas. Pruebas automatizadas las 24 horas del día, los 7 días de la semana en decenas de instalaciones, cada una de las cuales prueba decenas de unidades en paralelo. Equipos de software dedicados al desarrollo de software de prueba. Equipos de hardware dedicados a la construcción de plataformas de prueba. Pruebas de compatibilidad contra decenas de competidores. Diablos, incluso compraron una instalación multimillonaria de probadores de chips para desarrollar y depurar algunas de las pruebas que los fabs ejecutan cuando los chips salen de la fundición.

Otro era un banco. Este es un entorno completamente diferente: no hay lanzamientos de productos, pero sí muchísimo software interno para seguir funcionando continuamente. Estos tipos probaron la cr * p de cada cambio que hicieron. Tenían una separación muy estricta de los entornos DEV / QA / PROD, pruebas de regresión automatizadas, pruebas de control de calidad obligatorias firmadas por los usuarios finales antes de su lanzamiento a producción, etc.

Entonces, sí, la gente hace pruebas metódicas. Pero como puede ver, nunca he trabajado en un lugar que envíe su software GUI típico para el usuario típico de la computadora.


1

Actualmente escribo firmware integrado para una pequeña empresa de inicio que fabrica dispositivos médicos inalámbricos. Estamos obligados a realizar pruebas rigurosas, y tenemos un departamento de calidad completamente separado dirigido por alguien que informa directamente al CEO. Nunca antes había probado mi código de manera tan exhaustiva por probadores separados (la única vez que se compara es cuando estaba trabajando en sistemas de televisión por satélite hace aproximadamente 15 años).

Los resultados de nuestras pruebas se envían a la FDA (hasta ahora hemos obtenido dos autorizaciones de la FDA: cada presentación tenía alrededor de 500 páginas). Nuestras metodologías de desarrollo y prueba están sujetas a auditorías periódicas.

Por lo tanto, no solo las grandes empresas hacen muchas pruebas formales.

Nota: en mis más de 25 años de programación / consultoría por contrato, también he trabajado para muchas compañías que prácticamente no realizaron pruebas formales. La mayoría de ellos ya no están.


También estoy en una empresa de dispositivos médicos, y la introducción de GMP (Buenas prácticas de fabricación, habla de la FDA para un proceso de diseño / prueba controlado) fue bastante reveladora para mí. Me ha hecho un mejor ingeniero (y un experto en docbook, desafortunadamente)
Bill Gribble

0

Casi todas las empresas en las que he estado hicieron pruebas metódicas. Mi compañía actual tiene algunas pruebas básicas de estilo de unidad y eso no es suficiente. Hemos tenido algunos problemas de calidad debido a esto. Recomiendo pruebas exhaustivas independientes en cualquier proyecto que sea utilizado por cualquier persona además de usted. El dinero gastado valdrá la pena. Las aplicaciones que no funcionan no se utilizan. Eso se aplica tanto para enfrentar internamente como para enfrentar externamente.


He editado mi pregunta un poco. ¿Podría proporcionar también sus estimaciones de pruebas de software en el mercado profesional?
Robert Koritnik el

@Robert: No entiendo su pregunta "estimaciones de pruebas de software". ¿Me preguntas mi opinión sobre cuántas empresas realizan pruebas? Mi estimación sería quizás del 90% o más según lo que he visto con mis propios ojos. Las pruebas son una parte común del desarrollo profesional.
Bryan Oakley

0

En los últimos veinte años de mi carrera en ocho o más compañías, nunca he trabajado en un proyecto que no haya realizado pruebas. La cantidad de pruebas fue diferente en cada empresa, pero cada proyecto de desarrollo profesional en el que he trabajado realizó pruebas formales. Esto se aplica igualmente a las pequeñas y medianas empresas (donde "pequeño" significa menos de 10 empleados y "mediano" significa un par de miles de empleados o menos).

Algunas compañías no tenían muchas pruebas automatizadas, algunas no tenían muchas pruebas manuales, pero tenían al menos una u otra.


0

Depende de las necesidades del cliente. En una situación contractual, probablemente haya pruebas de aceptación. En casa suele ser una bofetada con pocas pruebas. Los productos de consumo suelen estar muy cubiertos de funcionalidad frecuente, pero son toscos.


0

Respuesta corta: sí

Respuesta larga:

  1. No tengo una buena estimación para la primera categoría (probablemente esté a cierta distancia de cero, pero ¿cuánto?), Pero mi experiencia en realidad corrobora con su segunda estimación. Es difícil dar porcentajes significativos, ya que la cantidad y el tipo de pruebas dependen del tipo de aplicación que se desarrolle y del marco de tiempo disponible, así como del conjunto de habilidades de los desarrolladores y de cómo se ejecuta el proyecto. En la práctica, el obstáculo más importante para los desarrolladores sería la prueba de aceptación, ya que es un hito importante para fines de facturación. Pero también es el momento en que puede ocurrir lo inesperado (más requisitos) y los desarrolladores pueden verse presionados a entregar y superar cualquier prueba ad hoc que sea posible y oportuna (en esta etapa), además del tiempo necesario para la resolución de problemas y la superación lo inesperado.

  2. He pasado por una variedad de proyectos con diferentes combinaciones de factores mencionados anteriormente:

    • sin pruebas unitarias formales, solo pruebas de integración y principalmente pruebas ad hoc

    • muy formal, desde pruebas unitarias hasta planes de prueba detallados que involucran recursos de control de calidad dedicados, pruebas automatizadas (realizadas por los probadores con su propio conjunto de herramientas) e informes de cobertura de código. Pero esto no siempre es significativo tanto para los desarrolladores como para los gerentes

A nivel individual, trato de mantener una comprensión de mis opciones cuando se trata de escribir pruebas apropiadas y apropiadas para la tecnología con la que estoy trabajando, y ejercitarlas a mi propia discreción. Básicamente, las cosas que en realidad son significativas y beneficiosas para mi trabajo, y no tanto para obtener números.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.