Rilevanza dei casi di test

Motivazione

A volte un caso di test è rilevante solo per un ambiente specifico. La Rilevanza dei Casi di Test consente di filtrare ed escludere i casi di test non rilevanti.

Attuazione

La rilevanza dei casi di test è una funzione che accetta parametri di ambiente e restituisce True, False o un elenco di variabili d’ambiente.

Sintassi

La rilevanza dei casi di test è definita da una o più regole condizione: decisione.

Gli operatori consentiti sono: = == != < <= > >= &&. Tutto ciò che segue il simbolo # è considerato un commento e verrà ignorato.

Tutto è insensibile alle maiuscole/minuscole (case insensitive). La prima regola corrispondente prevale (termina immediatamente la valutazione della rilevanza, il resto delle regole verrà ignorato).

_Predefiniti

Se non viene specificata alcuna regola, la rilevanza del caso di test è impostata per impostazione predefinita su True, ovvero il caso di test è rilevante e deve essere eseguito.

Ambiente

I parametri accettabili che definiscono l’ambiente sono:

Prodotto

nome del prodotto (rhel rhel-5 rhel-5.6 rhdts rhscl)

Distro

nome del prodotto (rhel rhel-5 rhel-5.6 rhdts rhscl)

variante

variante della distro (Client Desktop Server Workstation)

Ricerca

architettura (i386 ppc64 s390x x86_64)

collezione

collezione software (python27 python33 perl516…​)

Componente

componente da testare (php, apache, …​)

Mentre distro viene sempre utilizzato per definire il sistema operativo su cui il software dovrebbe essere eseguito, product (prodotto) viene utilizzato per descrivere il prodotto di destinazione sottoscritto e consumato dal cliente (può essere un prodotto stratificato al di sopra di RHEL, come RHSCL, o RHEL stesso se il componente è incluso direttamente nel sistema operativo).

Il confronto tra le distribuzioni distro opera in due modalità:

Major mode

Quando si effettua un confronto con una versione principale (major version), come ad esempio distro < rhel-6, vengono prese in considerazione le altre versioni principali (corrisponde a una qualsiasi tra rhel-3 rhel-4 rhel-5).

Minor mode

Se viene fornita anche la versione secondaria (minor version), come ad esempio distro < rhel-6.3, il confronto viene eseguito esclusivamente all’interno della versione principale specificata (corrisponde a rhel-6.0 rhel-6.1 rhel-6.2).

Le regole che contengono parametri di ambiente non noti al momento della valutazione verranno ignorate.

Decisione

La parte decision della regola può contenere i seguenti valori:

TrueHD

il caso di test è rilevante per l’ambiente dato

falso

il caso di test non è rilevante per questo ambiente

A=X B=Y C=Z

il caso di test è rilevante per l’ambiente modificato

L’ultima opzione sopra indicata consente di adattare l’ambiente in cui il caso di test deve essere eseguito, fornendo l’elenco delle variabili d’ambiente che verranno passate al test stesso.

Il valore di decision (decisione) può essere omesso. In tal caso, viene utilizzato True come impostazione predefinita. Pertanto, queste due righe definiscono un’esattezza di pertinenza identica:

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

Esempi

mod_wsgi rilevante per RHEL6 e versioni successive:

distro < rhel-6: False

busybox non disponibile per s390x su RHEL6:

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

perl-Config-General non presente nella variante Client:

variant = Client: False

Eseguire gli unit test di Python sotto valgrind solo sulle architetture idonee:

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

Nuovo componente python-ctypes aggiunto in rhel-5.8:

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

Exim presente esclusivamente in RHEL5:

distro != rhel-5: False