Per prima cosa rispondere alla tua domanda: Sì, fanno sicuramente parte dell'integrazione continua se me lo stai chiedendo. Ma penso che dobbiamo chiarire quali sono i test di integrazione.
Martin Fowler stava parlando della consegna continua come un modo per automatizzare l'intero processo di compilazione da implementare rapidamente. Ciò richiede agli sviluppatori di ottenere un rapido feedback fornito dal processo di integrazione continua. Quindi definisce le fasi che la build dovrebbe attraversare :
- una build di commit
- test approfonditi
- distribuzione
La build di commit non dovrebbe richiedere più di 10 minuti, a causa del feedback rapido per gli sviluppatori.
Ecco come vedo le cose: nel primo passaggio, recupera l'ultimo commit e crealo. Se questo ha esito positivo, esegui i test unitari per scoprire se le tue classi / gruppi di classi funzionano come definito e previsto.
Quando questo ha esito positivo, si arriva alla parte del test di integrazione. Qui si verifica l'interazione delle unità appena testate con successo. Ciò implica alimentare le unità con input e guardare il loro stato / interazione / output. Ricorda che siamo ancora nella build di commit, quindi vogliamo che anche questo sia veloce. Quindi le interazioni con il file system, un database, i peer di rete e simili devono essere eliminate per una rapida esecuzione. Martin Fowler suggerisce anche l'uso di database in memoria se necessari, solo per mantenere veloce l'esecuzione sul server CI.
Dopo esserti assicurato che le unità funzionino e interagiscano come richiesto, di solito vuoi scoprire la copertura dei test (solo testare un piccolo sottosistema di solito non è abbastanza) e rendere disponibili gli artefatti testati per test funzionali / QA / implementazione ( leggi: test approfonditi) se ritieni che i test coprano abbastanza del tuo programma. Proprio in quel momento, si esegue il provisioning di un ambiente di test che rispecchia l'ambiente di produzione di destinazione e si eseguono test che coinvolgono un database reale, file reali, peer di rete reali, ecc.
Alla fine, i test di integrazione riguardano le modifiche al codice. Vuoi assicurarti che le modifiche apportate non stiano rompendo il sistema attuale, nel senso che si integrano bene. Per scoprire se lo sono, è necessario assicurarsi che si comportino correttamente in se stessi, quindi se interagiscono correttamente con le loro dipendenze e se sono stati testati. Puoi stare tranquillo con il tuo sistema dopo aver superato tutti questi test.
Se le fasi successive riscontrano problemi con il programma (come quando il database restituisce un determinato valore, la connessione di rete si interromperà), è necessario provare a superare questi test nei test di integrazione. La build di commit molto probabilmente è più veloce del QA;)