Per i manager non tecnologici sono tornato indietro su un'analogia con la costruzione di una casa. Ne avrebbero costruito uno senza progetti, semplicemente prendendo mattoni da una pila e mettendone uno sull'altro con una vaga idea a forma di casa in mente? In caso contrario, perché non accetteranno la documentazione adeguata prima della codifica, delle revisioni dei progetti, ecc.?
Per test di unità, si potrebbe provare a confronto la qualità test dei vari componenti della casa singolarmente prima di mettere insieme (mattoni, cemento, porte, finestre, impianto idraulico)
Per quelli con qualsiasi presa tecnologia a tutti, mi menzioni che il 30% al 50% gestisce le condizioni di errore e il ripristino (nei sistemi embedded mission-critical) e che non è possibile testarlo senza test dell'unità. Ad esempio, se si esegue solo il test di integrazione blackbox, come è possibile - in modo controllato e ripetibile - testare cosa accade quando il modulo A non può allocare memoria in un dato punto o un timeout scade nel modulo C in attesa di un messaggio di risposta da qualche parte, o una lettura del database che normalmente avrà successo. Spiega che nascondendo moduli di interfaccia puoi simulare il loro comportamento errato a volontà.
E, naturalmente, disegno il mio grafico di favouriite con un simbolo $ su un asse e un orologio sull'altro. Ho battuto il management in testa con questo in ogni occasione per dimostrare che il costo di ottenere bug fuori aumenta più tardi vengono scoperti (cambia una riga in una specifica dei requisiti - 5 minuti; alcuni paras in un documento di progettazione - ore; linee di codice (alla revisione del codice o fase di test unitario) - giorni, trovare l'ago in un bug di pagliaio e correggerlo al test di sistema - settimane).
Non è solo un test di unità - devi convincere il management - e gli altri sviluppatori - che il "sovraccarico superfluo" di documentazione, recensioni, test ... s/w Processi in generale (e che include l'apprendimento di nuovi strumenti) ... consente di risparmiare tempo anziché aggiungere tempo a un progetto. In altre parole, richiede più tempo e costa di più per sbagliare. Misura due volte, taglia una volta, ecc.
Per il test dell'unità, digli di continuous integration. Consiglio vivamente Jenkins, ma usa quello che funziona per te. Spiega che una build regolare, sia notturna che con ogni check-in, può estrarre automaticamente i test unitari dal tuo VCS ed eseguirli, inviando e-mail o in altro modo avvisando di un nuovo codice che ha interrotto i test esistenti quasi subito.
Se nessuna di queste opere, cercare un nuovo posto di lavoro (se si è a Singapore, o vuole essere, parlare con me ;-)
Come per tutti la persuasione - mostrare loro il motivo per cui quello che suggeriscono è in * il loro * inetrest. – Mawg