Quali standard fa il tuo team di applicare per una distribuzione di codice importante versione?

StackOverflow https://stackoverflow.com/questions/700833

  •  22-08-2019
  •  | 
  •  

Domanda

Sono curioso di sapere che tipo di standard di altre squadre assicurarsi che sia a posto prima che le navi di codice (o distribuisce) fuori dalla porta in versioni principali.

Io non sto cercando risposte specifiche a ciascuno, ma ecco un'idea di quello che sto cercando di avere un'idea di.

  • Per le applicazioni basate su server, si fa a garantire il monitoraggio è a posto? Fino a che punto ... solo che risponde al ping, che può colpire tutte le sue dipendenze in ogni momento, che la logica che l'applicazione servizi effettivamente è il suono (ad esempio, un servizio che calcola 2 + 2 restituisce in realtà "4 ")
  • Avete bisogno di script di compilazione automatica prima che il codice viene rilasciato? Significato, qualsiasi dev può camminare su una nuova scatola, tirare qualcosa dal controllo del codice sorgente, e iniziare a sviluppare? cose date come un sistema operativo e IDE, naturalmente.
  • Come su script di distribuzione automatizzati, per le applicazioni basate su server?
  • Quale livello di documentazione Avete bisogno per un progetto da "fatto?"
  • si fa a fare dang assicurarsi di avere un piano di backup a pieno titolo per tutte le principali componenti del sistema, se è basata su server?
  • Ti far rispettare gli standard di qualità del codice? Pensate StyleCop per valutazioni NET o la complessità ciclomatica.
  • Unità di test? test di integrazione? test di carico delle prestazioni?
  • Hai standard per come la registrazione degli errori dell'applicazione viene gestita? Che ne dite di notifica di errore?

Anche in questo caso, non è alla ricerca di un punchlist linea per linea di risposte a qualsiasi cosa sopra, necessariamente. In breve, che cosa non codificante gli articoli devono un codice di rilascio hanno completato prima che sia ufficialmente considerata "fatto" per la tua squadra?

È stato utile?

Soluzione

Il minimo:

  1. test di unità di lavoro
  2. test di integrazione lavorare
  3. distribuire sul palco di prova ok
  4. manuale breve controllo sulla fase di test

Meglio:

  1. test di unità di lavoro
  2. checkstyle ok
  3. test di integrazione lavorare
  4. jmeter e copertura dei test superato
  5. distribuire sul palco di prova ok
  6. alcuni test manuali sul palco test

, infine, distribuire sulla fase di produzione

Tutti i test di unità e di integrazione funzionano automaticamente, meglio su un server di integrazione continua come CruiseControl fatto da ant o Maven. Nello sviluppo di webservices, il test con SoapUI funziona bene.

Se utilizzato un database, l'aggiornamento automatico viene effettuato (con liquibase per esempio) prima della distribuzione. Quando si utilizzano servizi esterni, sono necessari test di configurazione addidional, al fine di garantire gli URL sono ok (richiesta testa da applicazioni, database connettersi, WSDL ottenere, ...). Quando si sviluppa webpps, un HTML convalida su alcune pagine sarà utile. Un controllo manuale del layout (uso BrowserShots per esempio) sarebbe utile.

(Tutti i link di esempio per lo sviluppo Java)

E per ultimo (ma non meno importante): sono tutte le prove di collaudo ancora passando? E 'il prodotto che il proprietario vuole? Fare una revisione a vivere con lui sul sistema di test prima di andare avanti!

Altri suggerimenti

Io per lo faccio lo sviluppo del web, così i miei articoli può essere differente dalla vostra. Appena fuori dalla parte superiore della mia testa ...

  • Assicurarsi che tutti i servizi web sono up-to-date
  • Assicurarsi che tutti i database di script / modifiche / migrazioni sono già schierati per il server di produzione
  • Min tutti js e file css.
  • Assicurarsi che tutte le unità / / integrazione / test Selenium funzionali stanno passando (Il nostro obiettivo per il 95% + copertura di test mentre stiamo sviluppando, quindi queste sono di solito abbastanza preciso nel determinare un problema)

C'è di più, so che c'è, ma non riesco a pensare di qualsiasi momento.

Ogni progetto è diverso, tuttavia, come regola generale qui sono le cose fondamentali che cerco di aver fatto prima di lasciare il codice uscire al selvaggio.

In nessun ordine particolare:

1) L'identificazione di versione nel luogo dove può essere trovato da un utente più tardi, questo deve essere univoco per questa versione. (Molto tipicamente un "numero di versione" associato al distribuibile, le librerie ed eseguibili, o utente visibile da una finestra di dialogo "Informazioni su". Potrebbe essere un numero in un registro ben noto o compensare nel firmware)

2) Uno snapshot dello codice esatto utilizzato per produrre il rilascio. (Un'etichetta o un ramo del rilascio nel sistema SCM è buono per questo)

3) Tutti gli strumenti necessari per ricreare la sorgente devono essere registrate e archiviate (fonte di passaggio 2 diventa di uso limitato senza questo)

4) Un archivio del rilascio effettivo (una copia del programma di installazione esatto rilasciato, chissà in 7 anni gli strumenti potrebbero non essere in grado di costruire, ma ora almeno hai il codice sorgente e una installabile al vostro fianco per scopi di indagine).

5) Una serie di cambiamenti documentati tra questa versione e quella precedente alias Note di rilascio (mi piace usare lo stile di aggiungendo alla lista in modo che tutte le modifiche di rilascio sono disponibili in un unico luogo per un utente).

6) ciclo di prova Release Candidate completa. Utilizzando il carico e prova distribuibile creata usando intero piano di test / controllati per essere sicuri funzionalità di base è operativo, tutte le nuove caratteristiche sono presenti e operanti come previsto.

7) il monitoraggio dei difetti mostra tutti gli elementi in sospeso sono contrassegnati come a) b fisso) non un difetto c) differito.

Potete cospargere in molti altri passaggi a seconda del dominio o di sviluppo di stile, ma vorrei precisare che la maggior parte del software "dovrebbe essere" eseguito la procedura di cui sopra ogni release. YMMV.

auguri per l'assalto al castello.

  • Codestyle (automatizzato)
  • Test automatici (Unit-& Integrationtests)
  • Test manuali (tra cui fasi di test e beta)
  • Whitebox strumento per il test di penetrazione (automatizzato)
  • strumento di Blackbox test di penetrazione (automatizzato)
  • Eccezione Manuale / Registrazione monitoraggio sui palchi di test / beta prima del lancio
  • capacità di tornare alla versione precedente in qualsiasi momento
  • la revisione del codice e 'checkin illegali'

Per web / applicazioni interne una cosa in aggiunta agli altri suggerimenti.

Assicurati di coinvolgere il team ops / deployment in modo da non consegnare il software che richiede più server poi hanno (non si assumono le persone spingendo i requisiti già).

  • Esaminare l'elenco di controllo:. Verificare che tutte le nuove funzionalità, richieste di modifica e correzioni di bug previste per la versione sono stati finiti
  • Crea (in macchina build) compila senza alcun avvertimento, né errore in modalità di rilascio.
  • Tutti i test di unità automatizzati eseguiti senza errori.
  • Tutti i messaggi e le immagini sono state approvate dal team di prodotto.
  • controlli delle prestazioni non sono peggio di versione precedente.
  • Il (manuale) piano di test completo è stato controllato dal team di test senza errori.
    • L'applicazione è testato in molti scenari possibili (OS diverso, motori di database, configurazioni e applicazioni di terze parti).
    • Tutte le caratteristiche dell'applicazione sono testati:. Tante volte è successo a noi che un cambiamento in una caratteristica ha rotto un altro pensiero non correlato, shit happens, quindi dobbiamo minimizzarlo
    • Il setup o distribuzione funziona in tutti gli scenari troppo
    • Il setup è in grado di aggiornare le versioni precedenti

Abbiamo fatto una major release di recente, quindi questo è ancora piuttosto fresco nella mia mente. Facciamo un'applicazione Windows con una GUI per il quale rilasciamo un binario eseguibile, quindi il mio elenco è necessariamente sarà sostanzialmente diversa da quella per un rilascio solo per il web.

  1. Stampa candidati escono alla squadra test. Hanno bisogno di almeno un paio di giorni per giocare con lui. Se trovano eventuali bug che consideriamo show-stopper, il rilascio viene interrotta. Questo presuppone di avere un team di testing. Abbiamo chiaro solo una release candidate, se almeno una settimana è passato da quando la sua data di costruzione.

  2. Tutti i test automatizzati deve lavorare e passare. test automatizzati è considerato un supplemento alle tester dal vivo.

  3. Le eventuali bugs marcati come "bloccanti" devono essere risolti per la build finale.

  4. Materiale pubblicitario deve essere pronto (nel nostro caso, un aggiornamento di pagina web e una newsletter via email). I rivenditori sono avvertiti che un rilascio è in arrivo diverse settimane di anticipo, in modo che possano preparare il loro materiale. Questo per lo più non è un problema programmatore, ma facciamo il check pretese di marketing per la precisione.

  5. Licensing deve essere aggiornato per riflettere qualunque di protezione dalla copia che stiamo usando. Le nostre versioni beta e le versioni di rilascio utilizzano diversi modelli di licenza, e questo cambiamento richiede sforzo di programmazione.

  6. Il programma di installazione e contratto di licenza devono essere aggiornati. Dal momento che le versioni beta hanno un programma di installazione, questo è di solito solo un cambiamento del testo, ma cade ancora ai programmatori per aggiornare in realtà lo script di installazione.

  7. I riferimenti alla versione beta devono essere rimossi dalla stessa applicazione. Abbiamo perso alcuni di questi, imbarazzante.

  8. file della Guida e manuali dovevano essere portato completamente up-to-date e rileggere, da quando erano parte del pacchetto di rilascio.

  9. Se non ci fossero bug che non poteva essere risolto in tempo, avremmo almeno cercare di mitigare il danno - per esempio, di rilevare che tale dei tali bug stava accadendo, e interrompere l'operazione con un messaggio di errore di scusa. Ciò contribuisce enormemente alla stabilità del prodotto percepita.

Di gran lunga, le difficoltà di una major release non erano programmavano problemi, erano problemi / di marketing amministrativi. Molte di queste cose necessarie programmatore attenzione - aiutando con gli installatori, correzione di bozze la lista delle caratteristiche per assicurarsi che nessuno di esso è stato senza senso, correzione di bozze sezioni tecniche del manuale, l'aggiornamento delle licenze, ecc La principale differenza tecnica era il passaggio da bug-fixing di bug-attenuante.

  1. nessun bug visibili? ok
  2. lavoro unit test? ok (un po 'ignorato) HA bene ok
  3. Configurazione ya sicuro. ok
  4. la registrazione degli errori? fuori rotta! :-) abbiamo bisogno di questo! per correggere i bug!
  5. tutto sul bel cruisecontrol.net.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top