stringtranslate.com

Stub (computación distribuida)

En computación distribuida , un stub es un programa que actúa como reemplazo temporal de un servicio u objeto remoto. [1] Permite que la aplicación cliente acceda a un servicio como si fuera local, mientras oculta los detalles de la comunicación de red subyacente. Esto puede simplificar el proceso de desarrollo, ya que la aplicación cliente no necesita ser consciente de las complejidades de la computación distribuida. En cambio, puede confiar en el stub para manejar la comunicación remota, al tiempo que proporciona una interfaz familiar para que el desarrollador trabaje con ella.

Solicitud

El stub representa un objeto o servicio remoto en un sistema local. Actúa como un proxy para el servicio remoto y permite que el programa cliente realice llamadas a métodos en el objeto remoto como si fuera local. El proceso de generación de stubs implica la creación de un objeto proxy del lado del cliente que proporciona la misma interfaz que el servicio remoto, pero enruta las llamadas a métodos al objeto remoto real.

En computación distribuida , un stub es un fragmento de código que convierte los parámetros que se pasan entre el cliente y el servidor durante una llamada a procedimiento remoto (RPC). El objetivo principal de una RPC es permitir que una computadora local ( cliente ) invoque procedimientos en una computadora remota ( servidor ). Dado que el cliente y el servidor tienen diferentes espacios de direcciones , los parámetros utilizados en una llamada de función deben convertirse. De lo contrario, los valores de los parámetros serían inutilizables porque los punteros a los parámetros en la memoria de una computadora harían referencia a diferentes datos en la otra computadora. Además, el cliente y el servidor pueden tener diferentes representaciones de datos, incluso para parámetros simples como números enteros (por ejemplo, big-endian versus little-endian ). Los stubs manejan la conversión de parámetros, haciendo que una llamada a procedimiento remoto parezca una llamada a función local en la computadora remota.

Las bibliotecas stub son cruciales en la computación distribuida, ya que permiten realizar llamadas a procedimientos locales a objetos o servicios remotos. El stub o proxy del lado del cliente es responsable de convertir los parámetros utilizados en una llamada a una función y de deconvertir los resultados devueltos por el servidor después de ejecutar la función, un proceso conocido como marshalling . [2] Las bibliotecas stub deben instalarse tanto en el cliente como en el servidor, y el stub del lado del servidor, o esqueleto del servidor, es responsable de deconvertir los parámetros pasados ​​por el cliente y convertir los resultados después de ejecutar la función. En entornos de prueba virtuales, los stubs se utilizan para simular la computación distribuida, lo que permite una verificación más eficiente y efectiva de las actualizaciones de software en sistemas automotrices ricos en variantes. [4]

Pasos para escribir pruebas con stubs

Para escribir pruebas con stubs, siga estos pasos:

  1. Identifique los componentes o servicios externos de los que depende el componente que se está probando para funcionar correctamente. [2] o cree manualmente versiones de prueba de las dependencias que devuelven valores o respuestas predefinidos cuando los llama el componente bajo prueba. [3]
  2. Escriba casos de prueba para el componente, utilizando los stubs en lugar de las dependencias reales. [2]
  3. Configure el entorno de prueba inicializando el componente bajo prueba y sus stubs. [4]
  4. Ejecute las pruebas y analice los resultados. Si las pruebas fallan, revise el código y los fragmentos para determinar la causa del problema. [2]
  5. Refactorice el código y los stubs según sea necesario para mejorar la calidad de las pruebas y el componente. [3]

Es fundamental utilizar stubs solo cuando sea necesario, ya que pueden introducir complejidad adicional y sobrecarga de mantenimiento. Además, los stubs deben imitar con precisión el comportamiento de las dependencias reales para evitar introducir falsos positivos o negativos en las pruebas. [2]

Referencias

  1. ^ Coulouris, Dollimore y Kindberg (2011). Sistemas distribuidos: conceptos y diseño . Pearson Education, Inc.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  2. ^ H. Guissouma, A. Lauber, A. Mkadem, E. Sax (2019). Entorno de prueba virtual para la verificación eficiente de actualizaciones de software para sistemas automotrices ricos en variantes. IEEE.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  3. ^ Freeman, S., y Pryce, N. (2009). Desarrollo de software orientado a objetos, guiado por pruebas . Pearson Education, Inc.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  4. ^ Meszaros, G. (2003). Patrones de pruebas unitarias: refactorización del código de prueba . Pearson Education, Inc.