El testing es una actividad realizada para evaluar la calidad de un producto y mejorarlo a través de la identificación de defectos y problemas.
Como se menciona en varias bibliografías, el fracaso de un proyecto de software es a menudo consecuencia de la mala gestión. En general, el desarrollo de software es propenso a subestimar el esfuerzo que se requiere, incluso se deja de lado los procesos de testing. Esto ha revelado ser parte de los problemas o incluso ser la causa principal, sobre todo si se tiene en cuenta que algunas fallas se podrían haber evitado si el software hubiese sido testeado más a fondo.
Los testing de software, como una parte fundamental del proceso de desarrollo, son esenciales para el éxito de la producción de software de alta calidad. Los defectos y las fallas pueden deberse a diferentes causas, como a los problemas de comunicación entre el cliente y los diseñadores, a los procesos de diseño inmaduros -desde la recopilación de requerimientos hasta el diseño detallado y arquitectura- o incluso a los malentendidos o transcripciones incorrectas de los requerimientos.
Ahora bien, qué es testing? Se lo podría definir como un conjunto de actividades que tiene por objetivo identificar las fallas en un software y evaluar su nivel de calidad para obtener la satisfacción del usuario. Se trata de un conjunto de tareas con objetivos claramente definidos.
La visión de las pruebas de software o testing ha evolucionado hacia una postura más constructiva. La prueba ya no es vista como una actividad que se inicia sólo después de que termine la fase de codificación, con el propósito de detectar fallas. El testing es visto ahora como una actividad que debe abarcar todo el proceso de desarrollo y mantenimiento y es en sí mismo una parte importante en la construcción actual del producto.
Por tal motivo, las metodologías ágiles eligen testing como una técnica para aumentar la confiabilidad (reliability1) de sus productos de software.