Quanto più ti avvicini a un'applicazione senza bug, tanto più costosa. È come puntare al 100% di copertura del codice: passi la stessa quantità di tempo e denaro dallo 0% al 95%, dal 95% al 99% e dal 99% al 99,9%.
Ti serve questo extra 0,1% di copertura o qualità del codice? Probabilmente sì, se stai lavorando a un prodotto software che controlla il sistema di raffreddamento di un reattore nucleare. Probabilmente no se stai lavorando su una applicazione aziendale.
Inoltre, la realizzazione di software di alta qualità richiede un approccio molto diverso . Non puoi chiedere a un team di sviluppatori che hanno passato la vita a scrivere app di business per creare un'applicazione quasi priva di bug. Il software di alta qualità richiede tecniche diverse, ad esempio prova formale , qualcosa che certamente non fai " t voglio usare in un'app business, a causa del costo estremamente elevato che rappresenta.
Come ho spiegato in uno dei miei articoli :
-
Le app aziendali non dovrebbero mirare alla qualità richiesta per il software vitale, perché se queste app di business falliscono di volta in volta, non importa. Ho visto bug e tempi di fermo nei siti Web di probabilmente ogni grande azienda, Amazon è l'unica eccezione. Questi tempi di inattività e questi bug sono fastidiosi e forse costano all'azienda alcune migliaia di dollari al mese, ma sistemarli sarebbe molto più costoso.
-
Il costo dovrebbe essere l'obiettivo principale e dovrebbe essere studiato pragmaticamente. Immaginiamo un bug che interessa 5 000 clienti ed è così importante che quei clienti se ne andranno per sempre. È importante? Sì? Pensa di più. Che cosa succede se dico che ognuno di questi clienti paga $ 10 all'anno e che costerà quasi $ 100 000 per correggere l'errore? La correzione dei bug ora sembra molto meno interessante.
Ora rispondi in modo specifico alle tue domande:
why do bugs get reported even after going through so much testing? Is it our requirements issue? Our client doesn't seem happy for anything we provide? are we doing something incorrect?
Molte cose possono andare storte. Testando, intendi test automatici effettivi? In caso contrario, questo è un enorme problema su se stesso. I tester comprendono i requisiti? Comunica regolarmente con il cliente, almeno una volta per iterazione, nella migliore delle ipotesi il rappresentante del cliente è immediatamente raggiungibile sul posto da qualsiasi membro del tuo team ? Le tue iterazioni sono abbastanza brevi? Gli sviluppatori stanno testando il proprio codice?
Analogamente a Scrivono l'articolo giusto linkato sopra, prendi un bug report e studia perché questo bug è apparso in primo luogo e perché è stato perso da ogni tester . Questo potrebbe darti qualche idea sulle lacune nel processo del tuo team.
In un punto importante da considerare: il cliente paga per le correzioni dei bug? In caso contrario, potrebbe essere incoraggiato a considerare molte cose come un bug. Farlo pagare per il tempo che dedichi ai bug ridurrà considerevolmente il numero di segnalazioni di bug.
Has anyone developed any application that were totally bug free? What is the process? Why can't we deploy the application with minor bugs? Are we supposed to be perfectionist?
Me. Ho scritto un'app per me lo scorso fine settimana e finora non ho trovato alcun bug.
I bug sono solo bug quando vengono segnalati. Quindi, in teoria, avere un'applicazione senza bug è totalmente possibile: se non è usato da nessuno, non ci sarà nessuno a segnalare bug.
Ora, scrivere un'applicazione su larga scala che corrisponda perfettamente alle specifiche e che si è dimostrato corretto (vedere la prova formale sopra menzionata) è una storia diversa. Se questo è un progetto vitale, questo dovrebbe essere il tuo obiettivo (che non significa che la tua applicazione sarà priva di errori).
Is the current scenario the correct process of development and testing? If not what is an efficient way where developers,testers and client gets the maximum benefit together?
-
Per capirsi, devono comunicare. Questo non è quello che succede nella maggior parte delle aziende che ho visto. Nella maggior parte delle aziende, il project manager è l'unico che parla con il cliente (a volte con un rappresentante). Quindi condivide (a volte in parte) la sua comprensione dei requisiti con sviluppatori, designer di interazione, architetti, amministratori di database e tester.
Questo è il motivo per cui è essenziale che il cliente (o il rappresentante del cliente) sia raggiungibile da chiunque nel team (approccio Agile) o che disponga di mezzi di comunicazione formale che autorizzano una persona a comunicare solo con poche altre persone su un squadra e farlo in modo che le informazioni possano essere condivise con tutto il team, assicurando che tutti abbiano le stesse informazioni.
-
Esistono molti processi per lo sviluppo e il test. Senza conoscere precisamente l'azienda e il team, non è possibile stabilire quale debba essere applicato nel tuo caso. Prendi in considerazione l'assunzione di un consulente o l'assunzione di un project manager abbastanza abile.