I test software vengono effettivamente eseguiti su progetti professionali?


25

Sono stato coinvolto in molti progetti in diverse aziende perché sono uno sviluppatore da molto tempo e sono un appaltatore.

Stimo che meno del 20% dei progetti viene testato metodicamente. Con metodicamente testato intendo qualsiasi test oltre al test ad hoc senza piano.

Stimo anche che meno del 10% dei progetti viene accuratamente testato metodicamente laddove hanno tester dedicati come parte del team, documento del piano di test, in cui gli sviluppatori scrivono test automatici e quindi tengono traccia della copertura dei test e misurano i risultati.

Due domande

  1. Quali sono le tue stime percentuali su questo problema?
  2. Qual è la tua esperienza professionale in merito ai test del software?

Nota aggiuntiva

Poiché la domanda di test metodici può ottenere risposte piuttosto distorte (alla gente piace vantarsi di essere superiore agli altri), incoraggio anche altri sviluppatori (quelli che non sono esposti a test metodici) a fornire la loro risposta, perché altrimenti sembrerà che i test siano fatto ovunque ... tranne che nella tua azienda.


Ottima domanda, grazie per il tempo dedicato a riformulare!

@Mark Trapp: grazie. Penso che sia abbastanza semplice, ma potrei farne un po 'di più (basato su una serie di domande precedenti)
Robert Koritnik,

Risposte:


8

Lo schema che ho visto con i test durante la mia carriera mostra una forte corrispondenza con il rischio di fallimento in un progetto. I progetti di grandi dimensioni hanno maggiori probabilità di essere testati rispetto a quelli di piccole dimensioni, le applicazioni mission-critical hanno maggiori probabilità di essere testate rispetto ai siti web di marketing, nei sistemi interni hanno meno probabilità di essere testate rispetto a quelle rivolte al pubblico.

Detto questo, ci sono ancora progetti che sono stati testati eccessivamente e quelli che non sono stati testati abbastanza, ma questi sono la minoranza.


Ho modificato leggermente la mia domanda. Potresti fornire anche le tue stime?
Robert Koritnik,

Quasi tutti i progetti (80% +) con cui sono stato coinvolto sono stati testati metodicamente, ma poi ho fatto quasi esclusivamente applicazioni mission critical aziendali.
Martin Brown,

Lavoro per una società farmaceutica. Direi che l'80% delle applicazioni sono testate da tester e sviluppatori professionisti. Quel 20% sono applicazioni a basso rischio come la presentazione promozionale su iPad. ma anche questo è controllato ad hoc da qualcuno.
Yoosiba,

5

Tutto ciò che produciamo viene completamente testato. Se il nostro team interno di QA è sovraccarico, abbiamo un team offshore che verifica i progetti. Non sono buoni come il nostro team interno, ma questo è un argomento diverso.


Ho modificato leggermente la mia domanda. Potresti fornire le tue stime del mercato professionale dello sviluppo. Perché i tuoi progetti vengono esaminati. E i tuoi test sono automatizzati o no?
Robert Koritnik,

Chi è questa squadra offshore? Daresti loro una raccomandazione?
Martin Brown,

Di solito le grandi aziende hanno centri di ricerca e sviluppo in altri paesi (principalmente in Asia). Dove viene fatto lo sviluppo offshore. L'obiettivo dello sviluppo offshore è di ridurre i costi di sviluppo (in parte).
Nipuna,

2

Le tre società per cui ho lavorato negli ultimi 15 anni hanno avuto tutti test unitari che sono stati eseguiti automaticamente.

In due di quelle aziende ho spinto per presentarle.


Ho modificato leggermente la mia domanda. Potresti fornire le tue stime sui test del software anche sul mercato professionale?
Robert Koritnik,

@Robert: non ho fatto abbastanza lavoro per dare una stima generale. Da quel poco che so, le cose stanno migliorando. Ma poi ero stato io a spingere per i test automatici dell'unità in due dei tre casi di cui ti avevo parlato ...
sbi,

Ma parli con altri sviluppatori di altre società, vero?
Robert Koritnik,

2

Negli ultimi 9 anni, ho sostanzialmente incontrato solo test di accettazione / regressione. Ci sono stati solo alcuni test unitari.


Ho modificato leggermente la mia domanda. Potresti fornire le tue stime dei test software anche nel mercato professionale?
Robert Koritnik,

2

Sì.

La quantità di test è proporzionale all'affidabilità richiesta dall'app, nonché alla maturità della cultura del programmatore.

I siti web sono abbastanza spesso a piedi buche (i collegamenti interrotti sono un difetto).

I videogiochi sono spesso buggy.

Windows (finalmente) è abbastanza affidabile.

I router sono molto affidabili

I monitor dell'ospedale "non si rompono"

Si noti che anche il costo fiscale del fallimento è correlato all'affidabilità.


2
Non sono assolutamente d'accordo con te: non hai mai visto un router fallire? I giochi Xbox, Playstation e Wii si bloccano? Hai mai avuto una schermata blu o "L'applicazione non risponde" in Windows?
JBR Wilkinson,

@JBRWilkinson Penso che ti manchino i suoi modificatori di gravità, oltre a possibilmente ingenerare la stragrande maggioranza dei giochi per PC che, come dice Paul, sono spesso difettosi. Comunque, l'elenco potrebbe probabilmente usare qualche miglioramento, ma il sentimento è corretto: l'affidabilità spesso è correlata alle perdite fiscali associate al fallimento.
Jay Carr,

1

In 10 anni non ho mai lavorato a un progetto con test del codice formale.

Nel mio attuale lavoro abbiamo solo test funzionali.

Il problema è che nessuno nella direzione è a conoscenza del test del codice. Il reparto test non conosce nemmeno i test del codice, segue semplicemente le specifiche di alto livello e verifica se rispettiamo dal punto di vista comportamentale / funzionale.

Non abbiamo un leader software qualificato che ci costringe a programmare bene. Il risultato è un codice spaghetti, molte regressioni, orari persi e così via ...


Grazie per la tua onesta risposta. Quali sono le tue stime (controlla la mia domanda modificata)?
Robert Koritnik,

La mia stima per l'Italia è inferiore al 10% del test formale del codice. Forse quasi solo codice mission-critical.
Wizard79,

Ho lavorato in Irlanda, Inghilterra, Scozia e Slovenia e, a quanto pare, l'Italia non sembra affatto diversa.
Robert Koritnik,

1

Siamo una società offshore di medie dimensioni nell'Asia meridionale. Tuttavia, facciamo sempre progetti con sede negli Stati Uniti e lavoriamo direttamente con i requisiti inviati dalla società USA.

Applichiamo test metodici su ogni applicazione che costruiamo. Forse la qualità dei test non è all'altezza degli standard, ma li impieghiamo.


Tali prove sarebbero automatizzate o principalmente manuali? Ho modificato leggermente la mia domanda. Potresti fornire le tue stime dei test software anche nel mercato professionale?
Robert Koritnik,

La maggior parte dei nostri test viene eseguita manualmente.
Shamim Hafiz,

1

Per quanto il purista in me non voglia accettare che ci debba essere un po 'di gestione del rischio integrata nella decisione su quanto test rigorosamente o se si eseguono test formalizzati. Per le app interne, che sospetto siano una grande percentuale di progetti di programmazione, il costo di rilascio di un bug e di patching rapido dopo che è stato notato a volte può essere compensato dal costo di un team di test completo. Ovviamente dipende dall'app e dal costo potenziale dei guasti.

Detto questo, non credo che la pianificazione della gestione del rischio sia la ragione della mancanza di test formalizzati. Penso che sia più il risultato di manager non tecnici che non comprendono il valore che fornisce e vedono solo il costo.


2
Ho sentito quello che stai dicendo, ma è difficile da giustificare. Gli studi hanno dimostrato che più a lungo un bug passa inosservato più costa in modo esponenziale. Il costo dei bug che arrivano al cliente è enorme, e la loro correzione spesso causa nuovi bug, se non esiste un framework di test unitari (uno scenario probabile in cui è presente questo tipo di mentalità "patch and fix"). Di conseguenza, l'uso giudizioso di strumenti e metodologie di test può essere molto meno costoso di patch e fix.
Robert Harvey,

3
Sto diventando sempre più scettico su quel dogma, specialmente su come sia universalmente applicato. Sono sicuro che è vero qualche volta, ma non tutti i bug vengono creati allo stesso modo, né tutte le app. Trovo molto difficile ingoiare che un bug in un'app interna utilizzata da 10 persone è significativamente più costoso da risolvere se viene rilevato durante il test dell'unità rispetto a una versione di patch. Può essere esponenzialmente più imbarazzante, ma non più costoso a meno che non si ignori i costi reali del tempo che un tester impiega a trovare il bug.
JohnFx,

2
Mi chiedo anche se quelle statistiche non fossero più applicabili ai grandi progetti (es. Sistemi operativi) da cui sono state create e non traducono nelle app di tipo CRUD che la maggior parte di noi costruisce per vivere.
JohnFx,

Sono d'accordo con tutti e due e avete visto entrambi i casi. Ma di certo mi sembra che la mia parte dei costi esponenziali che Robert sta descrivendo, in particolare quando un bug è stato nel software così a lungo che altre funzionalità inizierebbero effettivamente a rompersi se fosse risolto. Con una programmazione abbastanza frenetica e frenetica con persone che risolvono i problemi abbastanza a lungo e bug che rimangono all'interno per un tempo abbastanza lungo, 1 + 1 non è 2. È 7. E se non è 7, tutto cadrà a pezzi.

1

Il mio campione è molto piccolo da cui dedurre le percentuali, ma qui va comunque.

Uno era una società di chip + firmware favolosa, che ha fatto test fanatici. Prove automatizzate 24 ore su 24, 7 giorni su 7, su decine di installazioni, ciascuna in parallelo su decine di unità. Team di software dedicati allo sviluppo di software di test. Team hardware dedicati alla costruzione di banchi prova. Test di compatibilità contro decine di concorrenti. Diamine, hanno persino acquistato un'installazione da molti milioni di tester per chip per sviluppare ed eseguire il debug di alcuni dei test eseguiti dai fab quando i chip lasciano la fonderia.

Un altro era una banca. Questo è un ambiente completamente diverso: nessun rilascio di prodotti, ma un sacco di software interno per continuare a funzionare continuamente. Questi ragazzi hanno testato il cr * p su ogni singola modifica apportata. Avevano una separazione molto rigorosa di ambienti DEV / QA / PROD, test di regressione automatizzati, test di QA obbligatori approvati dagli utenti finali prima di essere rilasciati in produzione, ecc.

Quindi sì, le persone fanno test metodici. Ma come puoi dire, non ho mai lavorato in un posto che spedisca il tuo tipico software GUI per l'utente tipico del computer.


1

Attualmente scrivo firmware incorporato per una piccola società di avvio che produce dispositivi medici wireless. Ci viene richiesto di eseguire test rigorosi e di avere un reparto qualità completamente separato guidato da qualcuno che riporta direttamente al CEO. Non ho mai avuto il mio codice così accuratamente testato prima da tester separati (l'unica volta che si confronta, è quando stavo lavorando su sistemi di TV satellitare circa 15 anni fa.)

I risultati dei nostri test vengono inviati alla FDA (finora abbiamo ottenuto due autorizzazioni FDA - ogni presentazione era lunga circa 500 pagine). Entrambe le nostre metodologie di sviluppo e test sono entrambe soggette a controlli periodici.

Quindi non sono solo le grandi aziende a fare molti test formali.

Nota: durante i miei oltre 25 anni di programmazione / consulenza contrattuale, ho anche lavorato per molte aziende che praticamente non hanno eseguito test formali. Molti di loro non sono più in giro.


Faccio anche parte di un'azienda produttrice di dispositivi medici e l'introduzione alla GMP (Good Manufacturing Practices, FDA-speak per un processo di progettazione / test controllato) è stata abbastanza aperta per me. Mi ha reso un ingegnere migliore (e sfortunatamente esperto di docbook)
Bill Gribble

0

Quasi tutte le aziende in cui sono stato sottoposto a test metodici. La mia attuale azienda ha alcuni test di base sullo stile delle unità e questo non è sufficiente. Abbiamo avuto alcuni problemi di qualità a causa di questo. Consiglio vivamente test approfonditi indipendenti su qualsiasi progetto che verrà utilizzato da chiunque oltre a te stesso. I soldi spesi ne varranno la pena. Le applicazioni che non funzionano non vengono utilizzate. Questo vale sia per il rivestimento interno che per quello esterno.


Ho modificato leggermente la mia domanda. Potresti fornire le tue stime dei test software anche nel mercato professionale?
Robert Koritnik,

@Robert: non capisco la tua domanda "stime dei test del software". Stai chiedendo la mia opinione su quante aziende testano? La mia stima sarebbe forse del 90% o più in base a ciò che ho visto con i miei occhi. I test sono una parte comune dello sviluppo professionale.
Bryan Oakley,

0

Negli ultimi venti anni circa della mia carriera in circa otto aziende, non ho mai lavorato a un progetto che non ha effettuato test. La quantità di test differiva in ogni azienda, ma ogni progetto di sviluppo professionale su cui io abbia mai lavorato faceva test formali. Ciò vale sia per le piccole che per le medie imprese (dove "piccola" significa meno di 10 dipendenti e "media" significa un paio di migliaia o meno).

Alcune aziende non avevano molti test automatici, alcuni non avevano molti test manuali, ma ne avevano almeno uno o l'altro.


0

Dipende dalle esigenze del cliente. In una situazione contrattuale ci sono probabilmente test di accettazione. In-house è di solito uno schiaffo con pochi test. Le cose di consumo sono di solito altamente coperte con funzionalità frequenti ma ruvide ai bordi.


0

Risposta breve: Sì

Risposta lunga:

  1. Non ho una buona stima per la prima categoria (è probabilmente una certa distanza da zero, ma quanto?), Ma la mia esperienza in realtà conferma la tua seconda stima. È difficile fornire percentuali significative poiché la quantità e il tipo di test dipendono dal tipo di applicazione sviluppata, dai tempi disponibili e dal set di competenze degli sviluppatori e da come viene eseguito il progetto. In pratica, l'ostacolo più importante per gli sviluppatori sarebbe il test di accettazione poiché si tratta di una pietra miliare importante ai fini della fatturazione. Ma è anche il momento in cui possono verificarsi imprevisti (più requisiti) e gli sviluppatori possono essere spinti a consegnare e cavarsela con qualsiasi test ad hoc possibile e tempestivo (in questa fase), oltre al tempo necessario per la risoluzione dei problemi e il superamento l'inaspettato.

  2. Ho partecipato a una varietà di progetti con una diversa combinazione di fattori sopra menzionati:

    • nessun test unitario formale, solo test di integrazione e per lo più test ad hoc

    • molto formale che va dai test unitari ai piani di test dettagliati che coinvolgono risorse di controllo qualità dedicate, test automatizzati (condotti dai tester con il proprio set di strumenti) e rapporti sulla copertura del codice. Ma questi non sono sempre significativi per gli sviluppatori tanto quanto per i gestori

A livello individuale cerco di mantenere una comprensione delle mie opzioni quando si tratta di scrivere test adeguati adeguati alla tecnologia con cui ho a che fare e di esercitarli a mia discrezione. Fondamentalmente le cose che sono in realtà significative e benefiche per il mio lavoro, e non così tanto da far uscire i numeri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.