Tal vez por lo general es más difícil encontrar información sobre las pruebas de integración, ya que es mucho más específico a la aplicación real y su uso comercial. Sin embargo, aquí está mi opinión sobre esto.
Lo que se aplica a las pruebas unitarias también se aplica a las pruebas de integración: los módulos deben tener una forma fácil de simular sus entradas externas (archivos, DB, tiempo ...), para que puedan probarse junto con la otra unidad- pruebas.
Pero lo que he encontrado extremadamente útil, al menos para aplicaciones orientadas a datos, es poder crear una versión "consola" de la aplicación que toma archivos de entrada que determinan completamente su estado (sin dependencias en bases de datos, recursos de red ...) y genera el resultado como otro archivo. Entonces, uno puede mantener pares de entradas/archivos de resultados esperados, y probar regresiones como parte de construcciones nocturnas, por ejemplo. Tener esta versión de consola permite una creación de scripts más sencilla y hace que la depuración sea increíblemente más fácil ya que uno puede confiar en un entorno muy estable, donde es fácil reproducir errores y ejecutar el depurador.