Consente di ottenere subito le priorità ...
Nel tuo ruolo di cliente, la tua preoccupazione principale non è il test unitario
Se stai usando fornitori che producono software per te, allora non dovresti preoccuparti se stanno usando una metodologia o un'altra. La tua posta in gioco è acquisire una sorta di soluzione che ti aiuterà a raggiungere i tuoi obiettivi. L'unica cosa di cui dovresti preoccuparti è che la soluzione sia accettabile o meno. Ecco perché abbiamo i test di accettazione in quanto è responsabilità dell'utente assicurarsi di ottenere ciò che si desidera. È nel momento cruciale dell'accettazione da parte del cliente che il denaro verrà trasferito dalle tasche della tua azienda nella tasca del fornitore.
Potresti richiedere unit test come requisito consegnabile ma ci sono diversi problemi ereditari con essi, il più grave è che non esiste un modo sicuro per determinare in anticipo le metriche:
- Qual è la quantità accettabile di test unitari?
Dovrebbero esserci 10 test? Che ne dici di 100 test? Che ne dici di 1000 test? In realtà, è abbastanza difficile determinare all'inizio di quanti test avrai bisogno. Il numero effettivo è davvero indeterminabile ... come il problema di arresto ... ma non stiamo risolvendo quel problema.
Volete solo un software con test unitari in modo da poter continuare lo sviluppo. I test unitari non dicono ancora cosa hai rotto, ma sono incredibilmente adatti a dirti quando il codice ha un bug di regressione.
- Qual è un livello accettabile di copertura del codice?
"100%, ovviamente!" penseresti. Sfortunatamente questa metrica è fuorviante; anche se avevi una copertura del codice del 100%, sei davvero sicuro che le cose funzionino come previsto? È possibile avere una copertura del 100% ma non farlo.
Quello che devi davvero fare è il test esplorativo, cioè trovare qualcuno che è veramente bravo a rompere le cose e lasciargli fare il test. Per trovare i bug che nessuno sviluppatore ha mai pensato.
Inoltre, il 100% è talvolta irraggiungibile con test unitari puri se si dispone di alcuni hack di prestazioni necessari e si utilizzano modelli di progettazione che sono difficili da testare (cercare "singleton" e "tdd" nel proprio motore di ricerca preferito e troverete alcuni esempi).
Volete che il software consegnato funzioni e il documento delle specifiche è la vostra unica garanzia che lo farà.
Avrai bisogno di un livello superiore di test
Il documento di specifica deve essere verificato in qualche modo. Ogni punto deve essere esaminato con i fornitori che hanno obiettivi chiari e criteri di accettazione. Un'organizzazione di QA ben funzionante (o un fantastico tester se hai un budget limitato e un ambito limitato) fornirebbe i casi di test per verificare questi criteri di accettazione. È inoltre necessario qualcuno per verificare tali criteri di accettazione.
Esistono diversi modi per verificare i tuoi obiettivi e se qualcuno mi dice che non puoi fissare obiettivi di qualità, prestazioni ed efficienza sani, li colpirò in testa con libri pesanti e pesanti rispettivamente sui test di esplorazione, prestazioni e usabilità. Può essere facile esagerare con gli obiettivi, ma la conoscenza e la comunicazione ti aiuteranno a stabilire obiettivi realistici.
Non sono un avvocato ma la maggior parte dei contratti di progetto (che è fondamentalmente la madre di tutte le specifiche per il progetto) che ho letto di solito hanno un criterio di rapporto di difetto che stabilisce su quanti bug ritenuti accettabili. I bug vengono generalmente determinati in base alla gravità, i bug che bloccano lo spettacolo rilevati dal QA hanno una bassa tolleranza mentre le imperfezioni minori hanno un'alta tolleranza. Nei progetti reali è difficile richiedere che il software debba presentare 0 difetti. Le scadenze di solito mettono fine a quella pratica. È in queste situazioni che devi iniziare a contrattare l'ambito.
La maggior parte dei software forniti che ho visto di solito non vengono forniti con test unitari. Si potrebbe sostenere che i fornitori dovrebbero essere abbastanza professionali da fornire questo, tuttavia il motivo principale per cui si desidera che vengano consegnati i test unitari è assicurarsi che non si ottengano bug di regressione e anche abilitare il refactoring. Nella vita reale, con progetti in tempi stretti, sia il fornitore che il cliente ridurranno il campo di applicazione e le unit test andrebbero di solito fuori dalla finestra e rimosse dall'elenco dei risultati richiesti.
È un po 'triste che un software open source di alto profilo venga consegnato con unit test ma uno sviluppatore di software professionale non può, giusto?
Quindi, quando cliente, mi occupo dei test unitari?
Direi che l' unica volta che ti interesserà veramente dei test unitari è se il software consegnabile è un componente autosufficiente che non viene eseguito come programma autonomo, per il quale il test più grossolano che puoi fare è un test unitario . Le librerie di classi sarebbero un tipo di prodotto che può essere consegnato insieme a unit test.