Immaginate di avere un'architettura orientata ai servizi piuttosto complessa fatta da componenti diversi. I componenti sono scritti in diverse lingue (Java, PHP, Ruby) e comunicano tra loro in modi diversi (ad esempio UI, API REST, in alcuni casi condividono alcune tabelle DB, ecc.).Quadro di test di integrazione multi-lingua
Sto provando a progettare un framework di test di integrazione per alcuni test end-to-end. Abbiamo già test di unità/integrazione per i singoli componenti, ma vorremmo costruire qualcosa che collauda completamente il nostro sistema distribuito (in un ambiente reale) end-to-end per assicurarci le funzionalità (in termini di comportamenti attesi del singoli componenti) sono forniti correttamente e anche l'architettura è configurata correttamente.
I primi problemi che sto affrontando è che la maggior parte della nostra UI è scritta in PHP e test di integrazione dell'interfaccia utente sono già stati scritti per questo con Cucumber e un paio di plugin in cima. Il framework di test che sto scrivendo (in Java) dovrebbe attivare questi test di funzionalità e successivamente verificare che il comportamento dei componenti correlati sia come previsto.
Ovviamente, potrei riscrivere i test dell'interfaccia utente utilizzando un componente compatibile con Java come Selenium, ma non ha senso duplicare lo sforzo.
Un'altra soluzione è eseguire i test esistenti con una chiamata exec() all'interno di Java, attendere che vengano restituiti, eventualmente analizzare l'output e procedere con le altre azioni/verifiche da eseguire.
L'incorporamento del codice PHP esistente in Java non sembra una soluzione valida dato il modo in cui i progetti sono stati scritti.
Nessuna delle soluzioni descritte mi sembra convincente. Idealmente, sarebbe bello avere una sorta di framework di integrazione multi-lingua (e multi-tecnologia) che può essere inserito all'interno degli stessi test di test suite scritti in lingue diverse e per ambienti/componenti diversi.
Qualcuno conosce qualche strumento o framework che va in questa direzione? In caso contrario, quale può essere un buon approccio a questo tipo di problemi?
Grazie per l'idea, ma l'adozione di JMeter sarebbe (con il supporto di breakpoint!) significa riscrivere i test esistenti da zero. Inoltre, JMeter non interpreta Javascript e questo pone un grosso limite ai test dell'interfaccia utente. – kappolo
Io sono un po 'confuso, immagino, vuoi creare una struttura di test suite che chiami i tuoi test unitari esistenti? Questo ti fornirà informazioni al di sopra e al di là dei tuoi test esistenti? – mconlin
Scusa se non sono stato chiaro. Poiché voglio creare un test di integrazione completo (cioè, integrando tutti i componenti del mio sistema), voglio riutilizzare parte dei test di integrazione già esistenti e combinarli/integrarli con nuovi test. – kappolo