Así como un producto físico se prueba para verificar si cumple con el comportamiento y las especificaciones deseados, también se prueba el software. Las pruebas de software se pueden realizar manualmente por personas o mediante el uso de herramientas. Una herramienta de prueba automatizada es una pieza de software que se utiliza para probar el software de destino, es decir, el software que se está considerando. Dicha herramienta ejecuta varias pruebas en el software de destino y determina si las pruebas se superan con éxito.
Es necesario probar el software para garantizar que se generen resultados correctos, que se acepten y procesen correctamente las entradas válidas y que se rechacen las entradas no válidas. Es necesario realizar pruebas para determinar si los resultados se generan rápidamente, si el software funciona bien incluso si un gran número de personas accede a él simultáneamente, etc. Las pruebas manuales se utilizan a menudo, pero dependen de la minuciosidad de las personas que realizan las pruebas. Probar el software manualmente lleva tiempo y requiere un número significativo de personas para la mayoría de las aplicaciones no triviales, lo que aumenta el costo. Además, las pruebas para miles de usuarios simultáneos o grandes volúmenes de datos no se pueden realizar fácilmente de forma manual.
La automatización de pruebas es el uso de herramientas para probar software. Una herramienta de prueba automatizada es en sí misma un software que se puede desarrollar, comprar o adquirir. Por lo general, la herramienta comienza a ejecutar el software de destino y pasa varias entradas al software de destino para probar diversas condiciones. Evalúa las salidas correspondientes del software de destino y realiza un seguimiento del resultado de pasa / falla de cada prueba. Al final de una serie de pruebas, la herramienta suele ofrecer un resumen de los resultados para que se pueda determinar rápidamente el número y la gravedad de los defectos.
Una herramienta de prueba automatizada puede funcionar de dos formas. En primer lugar, puede estar controlado por código, es decir, la herramienta puede estar estrechamente relacionada con el código escrito para que verifique que los resultados de varias entradas sean correctos. En segundo lugar, puede basarse en una interfaz de usuario en la que se imitan las actividades de los usuarios, como movimientos del mouse, entradas de teclado, entradas de voz, etc., y se examinan las salidas proporcionadas a los usuarios para verificar su exactitud. En el último caso, las actividades reales de una persona podrían registrarse y luego reproducirse con la herramienta, o tales actividades podrían generarse a partir de un script de comandos enviados a la herramienta.
Las herramientas de prueba automatizadas de uso general están disponibles en el mercado. La mayoría son bastante caras, pero algunas herramientas están disponibles de forma gratuita. Si el software de destino es muy específico o único, es probable que el propio equipo de software deba desarrollar una herramienta de prueba a medida. Al igual que con todo el software, las herramientas en sí tienen limitaciones y funcionan correctamente solo cuando se proporcionan buenos datos de entrada. Si uno no alimenta un conjunto relativamente completo de pruebas, la herramienta no ayudará a determinar la calidad del software de destino.
Una herramienta de prueba automatizada tiene muchas ventajas. Una vez que se crea una serie de pruebas, las pruebas se pueden ejecutar más rápidamente de lo que una persona puede ejecutarlas. Las pruebas pueden realizarse durante la noche o en horas impares, dejando a las personas libres para concentrarse en lo que hacen mejor. Las pruebas se pueden ejecutar una y otra vez para determinar si los errores se han infiltrado en el software de destino a medida que se modifica con el tiempo.