Domanda

Io sono l'introduzione di integrazione automatica di test per un maturo applicazione che fino ad ora è stato solo testato manualmente.

L'app è basata su Windows, e parla di un database MySQL.

Qual è il modo migliore (compresi i dettagli di eventuali strumenti raccomandato) per mantenere i test indipendenti di ogni altro in termini di transazioni di database che si verificano?

(Modifiche al sorgente dell'applicazione per questo scopo particolare, non sono un'opzione.)

È stato utile?

Soluzione

Come potete verificare i risultati?

Se avete bisogno di interrogare il DB (e suona come probabilmente fai) per i risultati poi sono d'accordo con Kris K, tranne vorrei impegna a ricostruire il DB dopo ogni test, non solo ogni suite.

Questo consente di evitare pericolosi interagire test

Come per gli strumenti, mi sento di raccomandare CppUnit.Non siete realmente facendo test di unità, ma non importa come la xUnit quadro dovrebbe dare il set up e la demolizione quadro è necessario impostare automaticamente la apparecchiatura di prova

Ovviamente questo può rallentare-l'esecuzione di prove, a seconda della dimensione del database, popolazione etc.Si può essere in grado di collegare/scollegare i database piuttosto che cadere/ricostruzione.

Se siete interessati a ulteriori ricerche, check-out XUnit Di Pattern Di Test.È un buon libro e un buon sito per questo genere di cose.

E grazie per l'automazione :)

Nick

Altri suggerimenti

È possibile eseguire il dump/restore del database per ogni suite di test, etc.Dal momento che si sta automatizzando questo, può essere qualcosa nell'installazione/teardown funzionalità.

Ho usato per ripristinare il database in funzione di Impostazione della banca dati relativa classe di unit test.In questo modo è stato accertato che ogni test viene eseguito con le stesse condizioni.

Si può prendere in considerazione per preparare speciali il contenuto del database per i test, vale a direcon meno di dati che la versione di produzione corrente (per mantenere il ripristino in tempi ragionevoli).

L'ambiente migliore per tali prove, credo, è VMWare o equivalente.Costruire il vostro database di log delle transazioni e così via, quindi registrare il lotto intero database di configurazione.Poi di re-test, ricaricare l'immagine del database e di dare il via alle prove.Questo richiede ancora la manutenzione del test, in quanto i cambiamenti del sistema, ma almeno i test sono ripetibili, che è uno dei vostri più grandi sfide nel test di integrazione.

Per l'automazione di test, molte persone usano il Perl, ma abbiamo trovato che i programmi Perl crescere come Topsy e diventare contorta.L'uso di Python come linguaggio di scripting (abbiamo eseguito C++ test) è utile se si sta cercando di costruire una serie di prove strutturate.

Come @Kris K. dice di dumping e il ripristino del database tra ogni prova sarà probabilmente la strada da percorrere.

Dal momento che si sta guardando, facendo il test esterni all'App vorrei cercare di costruire il quadro di test in una lingua in cui è possibile sfruttare al meglio gli strumenti di test.

Se hai costruito il quadro di test in Java che si potrebbe approfittare di JUnit e, potenzialmente, anche qualcosa di simile FitNesse.

Non credo che solo perché l'applicazione in esame è C++ che significa che si sono bloccati utilizzando C++ per il test automatico.

Si prega di provare AnyDbTest, penso che sia il tool che si stanno trovando.(www.anydbtest.com).

Caratteristiche:

  • 1.La scrittura test case con Xml, non Java/C++/C#/VB codice.Non hanno necessità di costosi strumenti di programmazione.

  • 2.Supporta tutti i più diffusi database come Oracle/SQL Server/SQL

  • 3.Così tanti tipi di affermazione supportata, come StrictEqual, SetEqual, IsSupersetOf, Sovrapposizioni, e RecordCountEqual etc.Inoltre, la maggior parte delle affermazioni possibile anteporre la logica non operatore.

  • 4.Permette di utilizzare un foglio di calcolo di Excel/Xml come fonte di dati per il test.Come sapete, il foglio di calcolo di Excel è facilmente creare/modificare e gestire i dati di test.

  • 5.Supporta sandbox modello di test, se uno di questi test sarà fatto in sandbox, tutte le operazioni di database su ogni DB verrà eseguito il rollback significato eventuali modifiche verranno annullate.

  • 6.Permette di eseguire pump di dati da un database/Excel nel database di destinazione in fase di test di inizializzazione e fase di finalizzazione.Questo è un modo semplice per preparare i dati di test.

  • 7.Unico cross-diverso-tipo-database di test, il che significa che il target di riferimento e set di risultati possono provenire da due basi di dati, anche se è SQL Server, un altro è Oracle.

  • 8.Impostare lo stile di confronto per recordset.AnyDbTest vi dirà che cosa è l'intersezione, o in eccedenza o assenza tra i due set di record.

  • 9.Sequenziale stile di confronto per recordset o valori scalari.Significa che le due set di risultati saranno confrontati nella loro sequenza originale.

  • 10.Permette di esportare i set di risultati di una istruzione SQL in Xml/file di Excel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top