Lavoro per un'azienda produttrice di software. Abbiamo grandi clienti aziendali che implementano il nostro prodotto e forniamo loro supporto. Ad esempio, se c'è un difetto, forniamo patch, ecc. In altre parole, è una configurazione abbastanza tipica.
Di recente, un biglietto è stato emesso e assegnato a me per quanto riguarda un'eccezione rilevata da un cliente in un file di registro che ha a che fare con l'accesso simultaneo al database in un'implementazione cluster del nostro prodotto. Pertanto, la configurazione specifica di questo cliente potrebbe essere fondamentale per il verificarsi di questo errore. Tutto ciò che abbiamo ricevuto dal cliente era il loro file di registro.
L'approccio che ho proposto al mio team è stato quello di tentare di riprodurre il bug in un'impostazione di configurazione simile a quella del cliente e ottenere un registro comparabile. Tuttavia, non sono d'accordo con il mio approccio affermando che non ho bisogno di riprodurre il bug in quanto richiede troppo tempo e richiederà la simulazione di un cluster di server su VM. Il mio team mi suggerisce di semplicemente "seguire il codice" per vedere dove si trova il codice thread e / o non sicuro della transazione e inserire la modifica lavorando fuori da un semplice sviluppo locale, che non è un'implementazione del cluster come l'ambiente da cui si verifica l'occorrenza del bug ha origine.
Per me, elaborare un progetto astratto (codice programma) piuttosto che una manifestazione tangibile e visibile (riproduzione runtime) sembra difficile, quindi volevo porre una domanda generale:
È ragionevole insistere sulla riproduzione di ogni difetto ed eseguirne il debug prima di diagnosticare e correggere?
O:
Se sono uno sviluppatore senior, dovrei essere in grado di leggere il codice multithread e creare un'immagine mentale di ciò che fa in tutti gli scenari di casi d'uso piuttosto che richiedere l'esecuzione dell'applicazione, testare diversi scenari di casi d'uso in modo pratico e passare attraverso codice riga per riga? O sono uno sviluppatore povero per esigere quel tipo di ambiente di lavoro?
Il debug per femminucce?
A mio avviso, qualsiasi correzione presentata in risposta a un ticket di incidente dovrebbe essere testata in un ambiente simulato per essere il più vicino possibile all'ambiente originale. In quale altro modo puoi sapere che risolverà davvero il problema? È come rilasciare un nuovo modello di un veicolo senza crash test con un manichino per dimostrare che gli air bag funzionano davvero.
Ultimo ma non meno importante, se sei d'accordo con me:
Come dovrei parlare con il mio team per convincerli che il mio approccio è ragionevole, conservatore e più a prova di proiettile?
new
. E questi bug non sono garantiti per essere riproducibili in modo affidabile, in conformità con le specifiche del modello di memoria Java