Se la tua azienda spedisce più prodotti, ha senso utilizzare un repo mono per i test di integrazione?

3

Presupposti : ogni codebase di prodotti si trova in un repository separato. Se il codebase del prodotto fosse un repo mono, sarebbe un gioco da ragazzi semplicemente metterli insieme.

Presupposti : i test di integrazione in questo contesto includono test di livello UI end-to-end (ad esempio Selenium) e test di livello API end-to-end (ad esempio GraphQL / Rest). I test richiedono servizi di corsa reali.

Mono Test Repo Pros :

  • Framework di test condivisi (si applica sia ai test dell'interfaccia utente sia a quelli delle API)
  • Librerie di report condivise per test

  • File di configurazione condivisi (ad esempio vari set di configurazione del browser per i test dell'interfaccia utente)

  • L'installazione / rimozione dell'interfaccia utente può riutilizzare parti del framework di test dell'API (ad esempio, un test dell'interfaccia utente può utilizzare un / create endpoint per un'impostazione più rapida dei dati)

  • Facile da integrare in CI git clone monorepo && ./monorepo/run-test.sh --tags=[YourProduct] (questo è semplicistico, ma un'idea simile)

  • Facile ottenere report di test che aggregano tutti i tuoi prodotti (o combinazioni di essi), senza strumenti esterni (ad es. ./monorepo/run-test.sh --tags=* - di nuovo, anche eccessivamente semplificato)

  • Facile aggiungere nuovi prodotti. Basta creare una nuova cartella di prodotto, tag e utilizzare le variabili di contesto iniettate dipendenza nei test (ad esempio Browser Client, client API, ecc.)

Mono Test Rep Rep. :

  • Disaccoppiato dalla base di codice, non giace più vicino a codebase

  • Se costruito male, una modifica in un framework di test condiviso può influire sui test di altri prodotti

Sembra un disastro, ma ci sono molti più pro che contro. Quali sono altri Cons contro questo? Consiglieresti mai o addirittura prendere in considerazione questo approccio? Perché o perché no?

    
posta Jack T. 23.11.2018 - 20:28
fonte

1 risposta

5

No. Se il mio codice prodotto fosse in repository separati non avrei mai fatto i miei test su un monorepo. I test vivono il codice. Se si desidera disporre di un framework di test condiviso, crearlo come prodotto (interno) e assegnargli un repository.

Come ho detto nei commenti, il tuo secondo cono è un grande con. Mancano anche i consueti monorepo (più difficile trovare le cose, più lente operazioni di controllo del codice sorgente, più facile accoppiare elementi disparati, ecc.). E il tuo quinto Pro ha il Con associato che diventa veramente facile da eseguire accidentalmente tutti dei test. E con repository di prodotti / repository separati danneggia il refactoring, le revisioni del codice e la cultura di testing in generale, perché non è possibile eseguire il commit di codice e test in un changeset.

Non pensarci troppo. Se la tua azienda monorepos i test vanno nel repository. Se la tua azienda multirepos allora i test vanno con le cose che testano e le cose di testing comuni diventano i propri repository.

    
risposta data 23.11.2018 - 20:50
fonte