Vorrei andare per funzionalità. Prendi quindi ogni problema (modifiche collettive, modifiche in linea, azioni) come attività separata. Quindi installerei una nuova pagina, in modo che entrambi possano essere funzionali allo stesso tempo, con la nuova libreria.
Passaggi di base
Per problema, farei quanto segue:
-
Verifica i test end-to-end e controlla se sono completi, quindi tutte le funzionalità sono coperte.
-
Reindirizza i test end-to-end per questo problema nella nuova pagina (quindi ora sono danneggiati). Puoi farlo questo alla volta fuori rotta. Se lo desideri puoi persino duplicarli per continuare a eseguirli entrambi contemporaneamente per l'implementazione nuova e vecchia.
-
Trasforma la nuova funzione in modo che i test inizino a passare.
-
Rivedi i test delle unità pertinenti per questa funzione e duplicali per testare il nuovo codice. Ad esempio, se si sta testando un gestore eventi con i test delle unità: decidere dove deve vivere la logica di business, probabilmente in un oggetto. Quindi, copia la regola, ma ora prova l'oggetto. Anche in questo caso puoi mantenere in esecuzione i vecchi, ma contrassegnali in modo da sapere che hai integrato questa regola aziendale nella nuova soluzione.
In questo ci sono molte decisioni da prendere come:
Decisioni da prendere
-
Il codice lato client è implementato in un oggetto separato o solo in gestori di eventi inline? Se in linea li sposterei prima su un oggetto, quindi lascia che la nuova griglia chiami l'oggetto. Quindi ottieni responsabilità separate. Come un oggetto di modifica collettiva.
-
NON proverei a toccare tutti i livelli allo stesso tempo. Se i controllori stanno bene, lasciali per ora. Nel caso tu debba cambiarli, sei ancora sicuro perché i test end-to-end che hai controllato.
-
Se in linea è probabile che non sia ben testato. Crea (e riutilizza) i test per assicurarti che la funzionalità sia ora stabile.
-
Riesamina i problemi di layout / modifiche perché la nuova griglia potrebbe essere diversa.
-
Considera l'aggiornamento di manuali / schermate.
Quando hai finito puoi tornare al vecchio URL quando preferisci.
La prossima volta sarà più facile sostituire la griglia perché è abbastanza separata.
Esempio di test unitario:
Vecchio:
Test.add('Add row', function (test) {
var Grid = newGrid(3); // get grid with 3 rows
Grid.events.trigger('addRow'); // Old event handler call
// Can even be outside the object on a global, more ugly:
// Events.call('grid1', 'addRow');
test.equals(4, Grid.length);
});
Test.add('Add row', function (test) {
var Grid = newGrid(3);
Grid.addRow(); // new event handler call
test.equals(4, Grid.length);
});
Non è necessario rimuovere tutti i test di unità. Basta cambiare i pezzi rilevanti nella tua nuova copia dovrebbe essere sufficiente. Chiaramente avrai vecchi test che diventano irrilevanti e dovrai aggiungere nuovi test in cui scrivere il nuovo codice.