2011-09-15 12 views
6

Stiamo lavorando a un progetto Rails 3 e test utilizzando Capybara/RSpec. Il problema è che l'ambiente di staging e produzione differisce leggermente. A volte, i test funzioneranno correttamente e non ci saranno problemi di staging, ma si verificherà un break in produzione.Rails: test di produzione

Un esempio è quando abbiamo aggiunto un middleware che utilizza Rack :: File per inviare file. L'applicazione ha inviato l'intestazione 'X-Sendfile' che funziona con Apache, ma Nginx si aspetta 'X-Accel-Redirect'.

Sto cercando il modo migliore per eseguire una batteria di test quando spingiamo alla produzione. Qualcuno ha fatto questo? Idealmente i test non dovrebbero essere eseguiti sul server di produzione stesso.

I test sostanzialmente coprono le funzionalità principali del nostro prodotto e sarebbero diversi dai test attualmente in esecuzione.

Grazie mille

+2

Qualcosa che ho imparato nel modo più difficile è: codice e implementazione in ambienti identici alla produzione. Puoi cambiare il server Apache per Nginx? Di solito configuro una VM con la stessa configurazione di produzione (sistema operativo) e distribuisci/test/esegui l'app lì. – Augusto

+0

Sono d'accordo che questa sarebbe la situazione ideale, ma il nostro sysadmin non ha tempo per il prossimo futuro. Inoltre, non sono sicuro che possiamo essere esattamente come la produzione. – gmalette

+1

Puoi costruirlo? Installa VMware Player o BusyBox con la stessa versione di SO e livello di patch. Con 'identico' intendo il più simile possibile, in modo da poter testare questo tipo di scenari. Sono (abbastanza) sicuro che se chiedi al tuo sysadmin di darti una mano, con il vantaggio che non avrai bisogno del suo tempo così spesso, sarà d'accordo. Ti darà la libertà di testare alcuni casi 'edge' e libererà il sysadmin per fare del lavoro vero piuttosto che essere un help desk ... Sono sicuro che lo puoi convincere !! – Augusto

risposta

6

Quello che ho finito per fare è avere un altro set di prova RSpec in un ambiente production_test che ha accesso in sola lettura al database. Io uso il driver capybara-webkit e ogni test inizia visitando l'URL completo per quel test.

Problemi correlati