Stub y Driver son dos tipos diferentes de códigos que se utilizan en el desarrollo de software, específicamente en las pruebas de software. Hay momentos durante el desarrollo de software en los que se debe probar una parte del código. Esto permite que el desarrollador se asegure de que esta parte del código funciona bien antes de pasar a la siguiente parte. Sin embargo, puede no funcionar correctamente sin las entradas de las otras partes del código, que aún no se han escrito. Aquí es donde los códigos ficticios son útiles.
Los códigos ficticios son pseudocódigo, lo que básicamente significa que son códigos falsos que ayudan a estimular el comportamiento del código existente. Esto significa que el desarrollador puede usar estos códigos ficticios en lugar de las partes del código que aún no se han escrito para replicar las salidas que proporcionará el código original. Estas salidas se pueden usar para probar la parte del código que se ha escrito.
Los stubs y los drivers o controladores son dos tipos diferentes de códigos ficticios y, por lo tanto, se utilizan de manera diferente.
Los stubs se utilizan como funciones en la integración de arriba abajo, mientras que los drivers se utilizan como funciones en la integración de abajo a arriba. Los stubs y los controladores se utilizan comúnmente en la adaptación, la computación distribuida, así como en el desarrollo y las pruebas de software en general.
Supongamos que hay tres piezas de código: A, B y C, y se ejecutan en esa dirección, es decir, A-> B -> C. Ahora el código A se ha desarrollado y necesita ser probado, pero los códigos B y C todavía necesitan desarrollarse, el código A no se ejecutará sin la entrada de B y C. Por lo tanto, se usan stubs en lugar de B y C. Estos stubs imitan los códigos B y C e incluso dan una salida que es similar a la de B y C daría. Esto se denomina integración descendente, es decir, pruebas desde la parte superior a la inferior.
De manera similar, imagine ahora que los códigos B y C se han desarrollado y deben probarse, sin embargo, el código A aún debe desarrollarse, y de la misma manera los otros dos códigos no funcionarán sin las entradas del código A. Por lo tanto, un controlador puede ser usado en lugar del código A. Este controlador imitaría el código A y daría la entrada a B y C, de manera similar a como lo haría el código A real. Esto se denomina integración ascendente, es decir, pruebas desde abajo hacia arriba.
Los stubs y los drivers son básicamente rutinas que en realidad no hacen nada, excepto declararse a sí mismos y los parámetros que aceptan. El resto del código puede tomar estos parámetros y usarlos como entradas.
Los stubs y los drivers se usan comúnmente como marcadores de posición para las rutinas, es decir, los códigos que aún deben desarrollarse. Por lo tanto, los stubs y los drivers o controladores contienen solo el código suficiente para permitir que se compilen y vinculen con el resto del programa.