Come risolvere o testare in modo efficiente il nuovo codice quando l'installazione dell'hardware per riprodurre bug è difficile o impossibile da ottenere?

30

Lavoro in un'azienda di medie dimensioni (150 dipendenti, un team di ingegneri di dimensioni pari a 10) e la maggior parte dei miei progetti riguarda l'interfaccia con apparecchiature di laboratorio (oscilloscopi, analizzatori di spettro ottico, ecc.) ai fini di applicazioni di test semi-automatizzate . Ho riscontrato diversi scenari in cui non sono in grado di risolvere o testare efficacemente il nuovo codice perché non ho più o non ho mai avuto a disposizione la configurazione dell'hardware.

Esempio 1: Un'impostazione in cui i processi da 10-20 "burn-in" vengono eseguiti in modo indipendente utilizzando un sensore di tipo da banco: sono riuscito a ottenere uno di questi sensori per testare e talvolta a rubare un in secondo luogo per simulare tutte le sfaccettature dell'interfacciamento a più dispositivi (ricerca, connessione, streaming, ecc.).

Alla fine è apparso un bug (e alla fine si è ritrovato nei firmware e driver del dispositivo) che era molto difficile da riprodurre con precisione con una sola unità, ma colpire vicino ai livelli "show stopper" quando 10-20 di questi dispositivi erano in uso contemporaneamente. Questo è ancora non risolto ed è in corso.

Esempio 2: un test che richiede un costoso analizzatore di spettro ottico come componente principale. Il dispositivo è piuttosto vecchio, legacy secondo il produttore che è stato acquisito da una società più grande e sostanzialmente disciolto, e la sua unica documentazione era un documento lungo e disinformato che sembra tradotto male. Durante lo sviluppo iniziale sono stato in grado di tenere il dispositivo alla mia scrivania, ma ora è legato, sia fisicamente che in programma durante i suoi test di 24 ore su 24, 7 giorni alla settimana.

Quando i bug si presentano correlati o non correlati al dispositivo, spesso ho bisogno di passare attraverso il problema di testare il codice esterno all'applicazione e installarlo, o scrivere codice alla cieca e tentare di spremere un po 'di tempo tra un test e l'altro, la maggior parte della logica del programma richiede che l'OSA e il resto dell'hardware di test siano installati.

Credo che la mia domanda sia come dovrei approcciarmi a questo? Potrei potenzialmente passare del tempo a sviluppare simulatori di dispositivi, ma capire che nella stima di sviluppo si gonfierà più di quanto la maggior parte probabilmente apprezzerebbe. Potrebbe non riprodurre accuratamente tutti i problemi, ed è piuttosto raro vedere la stessa attrezzatura utilizzata due volte qui. Potrei migliorare al test unitario ... ecc ... Potrei anche essere rumoroso riguardo al problema e far capire agli altri che saranno necessari ritardi temporanei, non molto più di un mal di testa per la ricerca e lo sviluppo, ma di solito percepito come uno scherzo quando presentato alla produzione.

    
posta plast1k 19.05.2014 - 17:56
fonte

4 risposte

35

Il management comprende che ci vorrà più tempo per sviluppare e mantenere il software quando non si ha pieno accesso all'hardware di test. È necessario tenerne conto quando si effettuano le stime. Parte dei criteri di accettazione per mettere in produzione il tuo software dovrebbe essere la possibilità di mantenere il software nella maggior parte dei casi senza interrompere la produzione. Se stai praticando TDD, questo dovrebbe accadere in modo abbastanza naturale.

Ero solito scrivere software per $ 60 milioni di aerei. Ovviamente, c'è un alto grado di affidabilità richiesto, e sono riluttanti a dare a ogni sviluppatore uno per la propria scrivania. Fondamentalmente avevamo 5 livelli di ambienti di test, con più hardware reale a ciascun livello, fino a un aereo completo. Stimo che il 95% del nostro software possa essere sviluppato ed eseguito il debug solo con emulatori e test di unità. Il 95% delle funzionalità rimanenti potrebbe essere elaborato al livello successivo e così via.

Prova ad impostare livelli simili di ambienti di test per te stesso. Non ci si può aspettare di non aver mai bisogno di accedere all'hardware reale, ma se lo hai impostato in modo da non poter lavorare sulla GUI del tuo software senza l'hardware disponibile, stai sprecando tempo prezioso su una risorsa costosa (non per menziona alcuni problemi di accoppiamento con la tua architettura). Considera che altri sviluppatori probabilmente hanno gli stessi problemi che hai. Vorrei chiedere al fornitore di hardware se hanno già emulatori o altre risorse di test disponibili.

Devi anche cambiare un po 'la tua mentalità se hai solo un accesso limitato all'hardware. Piuttosto che cercare di eseguire il debug dell'applicazione nel normale modo seriale, è spesso necessario scrivere codice in modo specifico allo scopo di raccogliere informazioni il più rapidamente possibile.

Ad esempio, forse hai un bug e puoi pensare a 10 possibili cause. Se l'unica volta che puoi salire su una macchina è 15 minuti mentre l'operatore è in pausa, scrivi un breve, autonomo, corretto (compilabile), Esempio che attiva il bug e scrive 10 test automatizzati usando quel SSCCE per testare le tue teorie e registrare una serie di dati. Dopo il ritorno alla tua scrivania puoi impiegare tutto il tempo necessario per setacciare i dati per il tuo prossimo tentativo. L'idea è di massimizzare l'utilità del tuo tempo limitato con l'hardware.

    
risposta data 19.05.2014 - 19:17
fonte
15

Stai cercando di risolvere un problema che non è tuo da risolvere.

La gestione deve dare la priorità all'accesso all'apparecchiatura. Ciò potrebbe significare che si ottiene un accesso maggiore, ma potrebbe anche significare che si finisce con meno.

Mostra le sfide che hai in un formato obiettivo al tuo team di gestione e chiedi loro una guida. La tua presentazione sarebbe molto più strong se collaborassi con gli altri che hanno anche bisogno di accesso, in modo che tutti possano presentare il tuo caso allo stesso tempo.

Da lì, la società (gestione) deve dare la priorità a chi ottiene l'accesso e quando. È una decisione aziendale che devono prendere in considerazione in quanto la (mancanza di) disponibilità delle risorse ha un impatto sullo sviluppo del business.

    
risposta data 19.05.2014 - 18:01
fonte
4

Sei effettivamente un codice cieco.

Se la gestione non paga per i dispositivi di test, allora c'è un'alta probabilità di bug, o anche lo sviluppo impiega più tempo di quanto sarebbe se avessi dei dispositivi reali da usare.

Il costo dei dispositivi non deve essere completamente assegnato al ciclo di "sviluppo". Forse potrebbero essere trasformati in uso in produzione o come backup. Potrebbero essere rivenduti anche di seconda mano altrove?

Prova e costa le fasi di risoluzione dei bug, sia in termini di tempo che di denaro e mostra il costo complessivo alla tua squadra / azienda.

    
risposta data 19.05.2014 - 18:05
fonte
4

Litigare con i tuoi capi è molto più facile quando hai alcuni numeri, o almeno alcuni pro e contro a portata di mano, quindi il mio suggerimento sta tentando di fare un'analisi costi-contro-benfici. L'idea approssimativa va così:

  • quanti sforzi di sviluppo ti aspetti per scrivere un simulatore di dispositivo? (Si noti che un simulatore di dispositivo non può sostituire l'hardware originale al 100%, specialmente quando l'hardware ha alcune stranezze inaspettate).

  • quanto sforzo di test / debug ti aspetti senza uno strumento del genere? Includi i costi per i tuoi colleghi di laboratorio perché devi bloccare l'hardware a scopo di test. Includi anche i costi per il tempo in cui il sistema non può essere utilizzato a causa di bug e hai problemi a trovare la causa principale.

  • quanto costa l'hardware aggiuntivo per i test?

  • quanto tempo ti aspetti che occorra bloccare l'hardware a scopo di test?

Naturalmente, la realtà potrebbe non essere così semplice, e ci sono molte variabili sconosciute in questa equazione, ma prova a fare qualche stima e dove non sei sicuro, chiedi ad altre persone dal tuo ambiente.

Presenta i risultati alla tua gestione, discuti le alternative e poi lascia che decidano.

    
risposta data 19.05.2014 - 18:15
fonte