¿Cuál es la diferencia entre stubs y drivers en las pruebas de software?

Los stubs y los drivers son dos tipos de arneses de pruebas. El arnés de pruebas es la colección de software y datos de prueba que se configura para que podamos probar una unidad de programa mediante la simulación de diferentes conjuntos de condiciones, mientras que el seguimiento del comportamiento y las salidas.

Los splits y los controladores son módulos ficticios y sólo se crean con fines de prueba.

Los stubs se utilizan en el enfoque de pruebas descendente, cuando se tiene el módulo principal listo para probar, pero los submódulos aún no están listos. Así que en un lenguaje simple los stubs son programas "llamados", que son llamados para probar la funcionalidad del módulo principal.

Por ejemplo, suponga que tiene tres módulos diferentes : Login, Home, User. Supongamos que el módulo de inicio de sesión está listo para la prueba, pero los dos módulos menores Home y User, que son llamados por el módulo de inicio de sesión no están listos todavía para la prueba.
En este momento, escribimos un trozo de código ficticio, que simula los métodos llamados de Home y User. Estos trozos de código ficticio son los stubs.

Por otro lado, los Drivers son los que son los programas "llamantes". Los controladores se utilizan en el enfoque de pruebas de abajo hacia arriba. Los drivers son código ficticio, que se utiliza cuando los submódulos están listos pero el módulo principal aún no lo está.

Tomando el mismo ejemplo anterior, supongamos que esta vez los módulos User y Home están listos, pero el módulo Login no está listo para ser probado. Ahora bien, como Home y User devuelven valores del módulo Login, entonces escribimos un trozo de código ficticio, que simula el módulo Login. Este código ficticio se llama entonces Driver.

Aquí hay un enlace que explica esto usando diagramas de bloques : Diferencia entre stub y driver