Come devo gestire i dati dei test nei miei test funzionali?

2

Sto scrivendo test funzionali automatizzati per la mia applicazione. Per interagire con l'applicazione, utilizzo il database SQL per recuperare i dati e convalidare i dati.

La sfida principale che sto affrontando è la gestione dei dati di test per i miei test. Devo accedere al database per poter recuperare i dati del test, che possono essere aggiornati ogni build. Successivamente, utilizzo i dati di test per l'accesso o la navigazione verso una pagina specifica o per le convalide per assicurarmi che ciò che sto facendo sull'interfaccia utente sia opportunamente rappresentato nel back-end.

Potrei colpire il database più volte durante un test per essere in grado di eseguire un'azione specifica. Il problema è che alcune di queste query impiegano 5 minuti per essere eseguite, rallentando in modo significativo l'esecuzione del test e rendendolo inaccettabile.

Pertanto, gradirei consigli su come gestire una situazione del genere.

  • Esiste uno schema di progettazione appropriato che dovrei usare?
  • Devo eseguire tutte le mie domande in anticipo e memorizzare i loro risultati da qualche parte e quindi usarli per tutti i miei test?
  • Devo eseguire queste query esternamente, creare una tabella di test e utilizzarla invece per i miei test?
  • O c'è qualcosa di meglio che puoi suggerire?

Ulteriori dettagli in base alle domande:

La mia applicazione consente a un utente di sostenere un esame. Per poter testare correttamente una singola domanda nell'esame, ho bisogno di eseguire una query che trovi questa domanda nel DB. Successivamente, ho bisogno di trovare questa domanda in un opuscolo degli esami che viene assegnato a un numero di ID studenti falsi. Pertanto, ciò che devo fare è ottenere questo ID studente per poter accedere all'applicazione per testare questa particolare domanda. Ottenere questi dati per poter accedere alla domanda appropriata è la parte che richiede tempo.

    
posta Nikolay Advolodkin 02.08.2016 - 00:50
fonte

4 risposte

2

Ho delle classi di test che creano dati di test, vengono eliminati una volta completati i test.

In generale, devi comunque testare i metodi di creazione dei dati e le eliminazioni.

Detto questo, non ho idea di cosa stai facendo. Com'è che i tuoi test richiedono più tempo di un utente che lo fa? Ciò significa che i tuoi test non imitano correttamente i casi d'uso reali. O il rendimento è un vero problema con la tua app. Se entrambi sono vere, dovresti risolverlo.

    
risposta data 02.08.2016 - 01:16
fonte
0

Se possibile, cerca di utilizzare il partizionamento delle tabelle e / o indici aggiuntivi per velocizzare le query di test. Assicurati solo che non siano in produzione se non vengono utilizzati dal tuo codice principale. Ho visto buoni DBA trasformare una query di 24 ore in una query di 2 ore con l'uso appropriato degli indici e del partizionamento e altri strumenti / trucchi del database.

Per quanto riguarda la presenza o meno di un modello di progettazione per aiutare con questo: io non la penso così. Sembra che l'applicazione apporti aggiornamenti al database abbastanza complicati e per testare che lo faccia correttamente, è necessario interrogare il database.

    
risposta data 02.08.2016 - 01:28
fonte
0

È possibile impostare un database più piccolo, con solo i dati di test? Allora fallo e usa quel database. Dovrebbe essere più veloce dell'utilizzo del database completo.

Aggiorna i dati una volta ogni tanto, copiando dal database di produzione, per evitare test con dati obsoleti / obsoleti.

Cerca di ottimizzare le query, utilizzare meno query o ottenere meno dati, se possibile.

    
risposta data 02.08.2016 - 02:13
fonte
0

Se le query richiedono 5 minuti, dovresti vedere quali sono quelle lente e aggiungere indici / eliminare dati non necessari su quelle tabelle. Utilizza un clone di produzione e ritaglia le tabelle che causano query lente

    
risposta data 02.08.2016 - 21:33
fonte

Leggi altre domande sui tag