Come contrassegnare i test di unità / integrazione quando non si applicano per la configurazione di test corrente - Inconclusivi o Passati?

0

Nel mio ambiente di test eseguiamo lo stesso insieme di test di integrazione (e talvolta di unità) su sistemi diversi che hanno capacità diverse.
Alcuni test non possono essere eseguiti su alcuni sistemi perché manca una funzionalità che abilita questo scenario o abbiamo bisogno di un comportamento completamente diverso.
Attualmente utilizziamo MSTest e abbiamo test con questo modello:

[TestMethod]
public void TestMethod1()
{
    if(targetSystem.SupportsFeatureX == false)
        Assert.Inconclusive("Not supported by underlying system");
    // the code for the actual test follows
}

Dovremmo contrassegnare il test come Inconclusive o lasciarlo Pass se il controllo della funzionalità non è soddisfatto?
Tieni presente che targetSystem è un sistema di terze parti su cui non abbiamo alcun controllo, quindi viviamo solo con le funzionalità che sono presenti.

    
posta ViktorZ 04.03.2014 - 13:15
fonte

1 risposta

4

Se il framework di test lo supporta, è necessario contrassegnare i test che non possono essere eseguiti a causa di dipendenze (esterne) mancanti come saltate. Ciò fornisce l'immagine più chiara nella panoramica.

Se il framework di test non supporta lo stato 'saltato', quindi 'inconcludente' è l'opzione migliore. Almeno, "inconcludente" non darà un risultato fuorviante.

L'uso di "pass" per test che non sono stati effettivamente eseguiti può dare un'impressione fuorviante sulla stabilità di una funzione. Immaginate solo le domande che otterreste se le statistiche mostrassero che i test per Feature X passano costantemente sui sistemi A, B e C, ma falliscono regolarmente sui sistemi Y e Z. Esiste un problema specifico per i sistemi Y e Z o per i sistemi A , B e C non hanno la caratteristica X e c'è un problema generico nella funzione?

    
risposta data 04.03.2014 - 15:03
fonte

Leggi altre domande sui tag