Consente di ottenere le priorità direttamente ...
Nel tuo ruolo di cliente la tua preoccupazione principale non è test unitario
Se utilizzi fornitori che producono software per te, non dovresti preoccuparti se utilizzano 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 ti dovresti preoccupare è che la soluzione sia accettabile o meno. Ecco perché abbiamo dei test di accettazione poiché è tua responsabilità assicurarti di ottenere ciò che desideri. È nel momento cruciale dell'accettazione del cliente che il denaro verrà trasferito dalle tasche della tua azienda nella tasca del fornitore.
Potresti richiedere test unitari come requisiti consegnabili ma ci sono molti problemi ereditari con essi, il più grave è che non esiste un modo sicuro per determinare le metriche:
- What is the acceptable amount of unit tests?
Dovrebbero esserci 10 test? Che ne dici di 100 test? Che ne dici di 1000 test? In realtà, è abbastanza difficile determinare all'inizio quanti test avrete bisogno. Il numero reale è indeterminabile in realtà ... come il problema dell'arresto ... ma non stiamo risolvendo il problema.
Vorresti solo un software con test unitari per 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.
- What is an acceptable level of code coverage?
"100%, ovviamente!" penseresti. Sfortunatamente quella metrica è fuorviante; anche se avessi il 100% di copertura del codice, sei veramente sicuro che le cose funzionino come previsto? È possibile avere una copertura del 100% ma non fare.
Quello che devi veramente fare è un test esplorativo, cioè trovare qualcuno che sia veramente bravo a rompere le cose e lasciare che facciano i test. Per trovare gli errori che nessuno sviluppatore ha mai pensato.
Anche il 100% a volte è irraggiungibile con i puri test unitari se si dispone di alcuni hack necessari alle prestazioni e si utilizzano schemi di progettazione difficili da testare (cercare "singleton" e "tdd" nel proprio motore di ricerca preferito e troverete alcuni esempi ).
Desideri che il software consegnato sia funzionante e che il documento delle specifiche sia l'unica garanzia che lo farà.
hai bisogno di un livello superiore di test
Il documento delle specifiche deve essere verificato in qualche modo. Ogni punto deve essere completato con i fornitori che hanno obiettivi chiari e criteri di accettazione. Un'organizzazione di QA ben funzionante (o un tester eccezionale se hai un budget limitato e uno scopo limitato) fornirebbe ai casi di test la verifica di questi criteri di accettazione. Hai anche bisogno di qualcuno per verificare quei criteri di accettazione.
Ci sono diversi modi per verificare i tuoi obiettivi, e se qualcuno mi dice che non puoi impostare obiettivi di qualità, prestazioni ed efficienza sani, li colpirò alla testa con libri grandi e pesanti su prove esplorative, prestazionali e di usabilità rispettivamente. Potrebbe essere facile eccedere 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 del progetto) che ho letto di solito hanno un criterio di rapporto di difetto che stabilisce su quanti bug sono considerati accettabili I bug sono generalmente determinati attraverso la severità, i bug di show-stop che vengono rilevati dal QA hanno una bassa tolleranza mentre le imperfezioni minori hanno un'elevata tolleranza. Nei progetti reali è difficile esigere che il software debba avere 0 difetti. Le scadenze di solito mettono fine a questa pratica. È in queste situazioni che devi iniziare a negoziare lo scope.
La maggior parte dei software in dotazione che ho visto di solito non vengono forniti con i test unitari. Si potrebbe obiettare che i fornitori dovrebbero essere abbastanza professionali da fornire questo, tuttavia il motivo principale per cui si vogliono fornire i test unitari è assicurarsi che non si ottengano bug di regressione e abilitare il refactoring. Nella vita reale con progetti con scadenze ravvicinate sia il fornitore che il cliente abbasseranno l'ambito e i test unitari di solito uscirebbero dalla finestra e sarebbero rimossi dall'elenco dei risultati richiesti.
È un po 'triste che il software open source di alto profilo venga fornito con i test unitari, ma uno sviluppatore di software professionale non può, giusto?
Quindi quando mi occupo, come cliente, dei test delle unità?
Direi che il tempo solo in cui veramente si preoccupano del test dell'unità è se il software consegnabile è un componente autosufficiente che non viene eseguito come programma stand-alone, 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 ai test unitari.