Closed Model
En un modelo cerrado, el tiempo de ejecución de cada iteración dicta el número real de iteraciones ejecutadas en su prueba, ya que la siguiente iteración no se iniciará hasta que la anterior se haya completado.
Antes de la versión 0.27.0, k6 sólo admitía un modelo cerrado para la simulación de la llegada de nuevos VU. En este modelo cerrado, una nueva iteración del VU sólo comienza cuando la iteración anterior del VU ha completado su ejecución. Por lo tanto, en un modelo cerrado, la tasa de inicio, o tasa de llegada, de las nuevas iteraciones del VU está estrechamente vinculada a la duración de la iteración (es decir, el tiempo desde el inicio hasta el final de la función de ejecución del VU, por defecto la función de exportación por defecto):
La ejecución de este script daría como resultado algo así:
Inconvenientes de la utilización del modelo cerrado
Este estrecho vínculo entre la duración de la iteración del VU y el inicio de las nuevas iteraciones del VU significa, en efecto, que el sistema objetivo puede influir en el rendimiento de la prueba, a través de su tiempo de respuesta. Un tiempo de respuesta más lento significa iteraciones más largas y una menor tasa de llegada de nuevas iteraciones, y viceversa para tiempos de respuesta más rápidos.
En otras palabras, cuando el sistema objetivo está sometido a estrés y empieza a responder más lentamente, una prueba de carga de modelo cerrado se hará la "buena" y esperará, lo que dará lugar a un aumento de la duración de las iteraciones y a una disminución de la tasa de llegada (Arrival Rate) de nuevas iteraciones del VU.
Esto no es ideal cuando el objetivo es simular una determinada tasa de llegada de nuevas VUs, o más generalmente el rendimiento (por ejemplo, peticiones por segundo).
Open model
En comparación con el modelo cerrado, el modelo abierto desvincula las iteraciones de la VU de la duración real de la iteración. Los tiempos de respuesta del sistema objetivo ya no influyen en la carga que se aplica al sistema objetivo.
Para solucionar este problema utilizamos un modelo abierto, desvinculando el inicio de nuevas iteraciones de la VU de la duración de la iteración y de la influencia del tiempo de respuesta del sistema objetivo.
En k6, hemos implementado este modelo abierto con nuestros dos executors de "tasa de llegada (Arrival Rate)" constant-arrival-rate and ramping-arrival-rate:
La ejecución de este script daría como resultado algo así: