Python Doctest è una tecnica White-Box o Black-Box

-2

Ho letto molti articoli che spiegano la panoramica dei test in bianco e nero, inclusa questa domanda su Stack Overflow: link

Tuttavia, ho ancora un po 'di confusione tra i test black-box e white-box a livello base.

In termini di un esempio specifico che usa il modulo doctest di Python, voglio sapere se mi occupo di test in bianco e nero. Il mio codice è di sotto.

La mia ipotesi da quello che ho letto è che questo tipo di test è classificato come white-box, se scrivo il codice così come i test. Tuttavia, cosa succede se dovessi chiedere a qualcun altro di produrre la sezione dei commenti che produce i test e quindi di eseguire il codice - questo sarebbe quindi il test della black-box?

Forse la mia domanda è davvero se la categorizzazione black-box vs white-box sia inerente al codice stesso o al contesto in cui viene eseguito il codice?

La semplicità che sto cercando è cosa dire da studente che sta imparando sui diversi tipi di test se usare doctest è una tecnica white-box o black-box o nessuno dei due o "dipende".

Inoltre vorrei anche sapere se la risposta sarebbe la stessa per il tipo di test presenti su siti come Hacker Rank e Codewars che assomigliano a assert_equals(my_function(args), expected) .

import doctest

def fib(n):
    """ 
    Calculates the n-th Fibonacci number iteratively  

    >>> fib(0)
    0
    >>> fib(1)
    1
    >>> fib(10) 
    55
    >>> fib(15)
    610
    >>> 

    """
    a, b = 0, 1
    for i in range(n):
        a, b = b, a + b
    return a

if __name__ == "__main__": 
    doctest.testmod()
    
posta Robin 26.05.2018 - 17:07
fonte

1 risposta

3

The simplicity I am seeking is what to tell as student who is learning about different types of testing whether using doctest is a white-box or black-box technique or neither or "it depends."

La risposta è "dipende" . Black box vs white box non si distingue per lo strumento che si sta utilizzando. Sapete come sono implementate le funzioni e quindi testate in base all'implementazione (test white box - potete "vedere dentro la scatola"), o l'implementazione è irrilevante e state testando in base al comportamento della funzione (scatola nera) testing: non puoi "vedere all'interno della casella").

Nel tuo esempio specifico, il test è nero, poiché non considera come viene implementata la funzione, ma solo che restituisce i valori previsti per gli input dati. Anche se, in un caso così semplice, la distinzione non ha senso.

Pensa di testare un motore di un'auto. Il test della scatola nera chiede se il motore gira più velocemente quando viene premuto l'acceleratore. Il test della scatola bianca chiede se l'acceleratore si apre e fornisce più carburante al motore, e che quando viene erogato più carburante, i pistoni si muovono più velocemente e quando i pistoni si muovono più velocemente, l'albero motore si muove più velocemente.

    
risposta data 26.05.2018 - 17:40
fonte

Leggi altre domande sui tag