Che cosa significa "superficie di prova" nel contesto della programmazione?

4

Ho incontrato il seguente testo in un articolo sul modello ModelViewPresenter e il mio cervello è stato schermato in blu:

Passive View usually provides a larger testing surface than Supervising Controller because all the view update logic is placed in the presenter.

Non mi sono mai imbattuto in questo particolare gergo e sono piuttosto perplesso su ciò che costituisce esattamente la "superficie di prova" di un modello di progettazione. Qualcuno potrebbe per favore illuminarmi riguardo a cosa significa il termine e anche cosa significa per un modello di progettazione avere una "superficie di prova" più grande (o più piccola) di un'altra?

    
posta Matt 18.11.2013 - 23:24
fonte

1 risposta

10

La superficie di prova di un oggetto è l'area collettiva che è racchiusa tra proprietà pubbliche, metodi e costruttori di quell'oggetto (la sua interfaccia di programmazione dell'applicazione o API). Il termine "superficie di prova" è essenzialmente un termine proxy per quanto sforzo di programmazione sarà richiesto per testare un oggetto.

Cose che possono aumentare la superficie di prova di un oggetto:

  • Gli oggetti che hanno un numero maggiore di membri pubblici hanno una superficie di test maggiore, perché ci sono più end-point da testare.

  • I membri che hanno una logica più complessa hanno una superficie di test maggiore, perché è richiesto un test per ogni "biforcazione" (ad esempio i due lati di un'istruzione if ).

  • I membri con un numero maggiore di parametri aumentano la superficie di test, perché aumenta il numero di diverse combinazioni di valori dei parametri utilizzati dal membro.

  • Le condizioni al contorno (come i valori nulli, la transizione tra numeri positivi e negativi e le condizioni fuori fase) aumentano la superficie di test, perché è necessario un numero maggiore di test per identificare e testare quelle condizioni al contorno).

  • Le eccezioni al normale flusso di controllo (come le eccezioni generate) aumentano la superficie di test, perché sono necessari test per assicurare che tali eccezioni siano contabilizzate e che funzionino correttamente nelle giuste condizioni.

Cose che possono ridurre la superficie di prova di un oggetto:

  • Buone pratiche di progettazione.

  • Un design API più semplice

  • La pratica di TDD (Test-Driven Design), che rende il tuo codice più verificabile in primo luogo, e diminuisce la necessità di test esotici.

  • Design by Contract, se il linguaggio di programmazione lo supporta direttamente, riduce la superficie di test, perché giustifica già le violazioni di input o contratto errate (supponendo che le condizioni del contratto siano specificate correttamente).

risposta data 18.11.2013 - 23:45
fonte

Leggi altre domande sui tag