Relevancia de Caso de Test

Motivación

A veces, un caso de prueba solo es relevante para un entorno específico. La relevancia del caso de prueba permite filtrar los casos de prueba irrelevantes.

Implementación

La relevancia del caso de prueba es una función que toma parámetros de entorno y devuelve Cierto`o `Falso o una lista de variables de entorno.

Sintaxis

La relevancia del caso de prueba se define mediante una o más reglas de condición: decisión.

Los operadores permitidos son: = == != < <= > >= &&. Cualquier valor que vaya más allá del signo # se considera un comentario y será ignorado.

Todo distingue capitalinas. La primera regla coincidente prevalece (termina inmediatamente la evaluación de relevancia; las demás reglas serán ignoradas).

Por defecto

Si hay especificada una regla, el caso de pruebe relevante por defecto para True, esto es caso de prueba es relevante y sería ejecutado.

Entorno

Los parámetros aceptables definiendo el entorno son:

producto

nombre de producto (rhel rhel-5 rhel-5.6 rhdts rhscl)

distribución

distribución (rhel-6 rhel-6.3 rhscl-1.0.0 f-28)

variante

variante de distro (Estación de trabajo del servidor del escritorio del cliente)

arch

arquitectura (i386 ppc64 s390x x86_64)

colección

colección de software (python27 python33 perl516…​)

componente

componente a ser probado (php, apache, …)

Si bien distro siempre se usa para definir el sistema operativo en el que se supone que debe ejecutarse el software, product se usa para describir el producto de destino suscrito y consumido por el cliente (puede ser un producto en capas sobre RHEL, como RHSCL, o RHEL mismo si el componente está incluido directamente en el sistema operativo).

La comparación de distribuciones funciona en dos modos:

Modo mayor

Al comparar con una versión principal como distro < rhel-6 se consideran otras versiones principales (coincide con cualquiera de rhel-3 rhel-4 rhel-5).

Modo menor

Si también se proporciona una versión menor, por ejemplo, distro < rhel-6.3, la comparación se realiza solo dentro de la versión principal dada (coincide con rhel-6.0 rhel-6.1 rhel-6.2).

Se omitirán las reglas que contengan parámetros de entorno que no se conocen en el momento de la evaluación.

Decisión

La parte decision de la regla puede contener los siguientes valores:

Verdadero

el caso de prueba es relevante para el entorno dado

Falso

el caso de prueba no es relevante para este entorno

A=X B=Y C=Z

caso de prueba es relevante para el entorno modificado

La última opción anterior permite ajustar el entorno en el que se ejecutará el caso de prueba proporcionando la lista de variables de entorno que se pasarán a la prueba.

El valor de decisión puede omitirse. En tal caso, se usa True por defecto. Por lo tanto, estas dos líneas definen la misma relevancia:

distro > rhel-7: True
distro > rhel-7

Ejemplos

mod_wsgi relevante para RHEL6 y posterior:

distro < rhel-6: False

busybox no disponible para s390x en RHEL6:

arch = s390x && distro = rhel-6: Falso

perl-Config-General no presente en la variante Client:

variant = Client: False

Ejecuta pruebas unitarias de Python bajo valgrind solo en arquitecturas adecuadas:

arch = ia64: PHASES=novalgrind
arch = s390x && distro < rhel-6: PHASES=novalgrind

Nuevo componente python-ctypes agregado en rhel-5.8:

distro < rhel-5:   False
distro < rhel-5.8: False

Exim solo presente en RHEL5:

distro != rhel-5: False