Generazione di dati di test per i database tramite generatori di dati
È possibile utilizzare Visual Studio Premium per creare i dati di test necessari per verificare il comportamento degli oggetti di database nel progetto di database. I dati generati sono appropriati per lo schema del database, ma non sono correlati ai dati di produzione. Questo approccio consente di salvaguardare la privacy o la sicurezza dei dati di produzione.
Si definisce un piano di generazione dati in cui vengono specificati i dettagli relativi alla modalità di generazione dei dati desiderata per tabelle e colonne specifiche. Per ogni colonna si indica un generatore di dati che consente di produrre dati di un determinato tipo.
Un piano di generazione dati creato in un progetto di database è basato sullo schema del progetto. Se si crea un piano di generazione dati e successivamente lo schema viene modificato, verrà richiesto di aggiornare il piano.
Importante |
---|
Se non si aggiorna il piano di generazione dati in base alle modifiche dello schema, non sarà possibile continuare a modificare il piano. Per visualizzare nuovamente la richiesta, è necessario chiudere e riaprire il piano di generazione dati. |
Quando si eseguono unit test del database, è possibile specificare un piano di generazione dati diverso per ogni progetto di test. È pertanto possibile inizializzare il database in uno stato diverso per ogni gruppo di test.
Generatori di dati
In Visual Studio Premium sono inclusi numerosi generatori di dati incorporati per la generazione di diversi tipi di dati. Il generatore di numeri interi consente ad esempio di produrre valori interi casuali, quello di stringhe di produrre stringhe casuali e quello di espressioni regolari di produrre stringhe corrispondenti a un criterio specificato dall'utente. Per ulteriori informazioni e per l'elenco completo dei generatori di dati standard, vedere Tipi di generatori di dati standard e Specificare i dettagli di generazione dati per una colonna.
Se i generatori inclusi in Visual Studio Premium non consentono di generare dati che soddisfino le proprie esigenze, è possibile creare generatori personalizzati. Potrebbe essere necessario creare un generatore di dati personalizzato se, ad esempio, nel database è presente una colonna con un vincolo CHECK che fa riferimento a un'altra colonna. Per ulteriori informazioni, vedere Generare dati di test specializzati con un generatore di dati personalizzato.
È possibile visualizzare errori se si tenta di generare dati per una tabella che contiene colonne SPARSE e un COLUMN_SET. Per ulteriori informazioni, vedere Risoluzione dei problemi relativi alla generazione dati.
Piani di generazione dati in un ambiente Team
Un piano di generazione dati è un file XML contenente informazioni sullo schema del database, nonché informazioni di configurazione che consentono di controllare la generazione dei dati per ogni colonna di ogni tabella specificata. Un piano di generazione dati per un database in cui sono incluse approssimativamente 40 tabelle può raggiungere circa 8 MB e oltre 100.000 righe.
Non è possibile unire automaticamente le modifiche in un file con estensione dgen tramite Controllo della versione di Team Foundation o un altro sistema di controllo delle versioni. Il processo richiesto per unire manualmente file XML di elevate dimensioni è difficile e soggetto a errori. È possibile ridurre al minimo i problemi correlati al piano di generazione dati utilizzando l'estrazione esclusiva sul piano quando è necessario apportarvi modifiche.
Sicurezza dei generatori di dati
È possibile condividere piani di generazione dati e generatori di dati personalizzati in un ambiente di collaborazione in team. Prima di condividere o di utilizzare file di generazione di dati condivisi, è opportuno considerare i seguenti rischi relativi alla sicurezza:
Informazioni sullo schema nei piani di generazione dati
Quando si crea un piano di generazione dati, nel file con estensione dgen è contenuto lo schema delle tabelle, che potrebbe rappresentare un segreto commerciale riservato. L'utente con cui si condivide un file con estensione dgen può infatti visualizzare lo schema. Si consiglia di condividere i piani di generazione dati solo con fonti attendibili.Codice dannoso in piani di generazione dati
Quando in un piano di generazione dati è incluso un generatore associato a dati, viene scritta una query Transact-SQL eseguita durante l'esecuzione del piano. Questo approccio consente l'esecuzione di codice Transact-SQL arbitrario in un piano di generazione dati. È opportuno che i piani di generazione dati provengano sempre da fonti attendibili e che venga inviato un avviso agli utenti finali affinché non eseguano piani di generazione dati ricevuti da fonti non attendibili.Informazioni di connessione e generatori di dati personalizzati
Tutti i generatori di dati personalizzati accedono alla stringa di connessione al database in fase di esecuzione. Un generatore personalizzato dannoso potrebbe esporre le informazioni sulla stringa di connessione. È opportuno che i generatori di dati personalizzati provengano sempre da fonti attendibili e che venga inviato un avviso agli utenti finali affinché non utilizzino generatori di dati personalizzati ricevuti da fonti non attendibili.Codice dannoso in generatori di dati personalizzati
I generatori di dati personalizzati sono classi che possono contenere codice arbitrario. Un generatore di dati personalizzato viene eseguito con le stesse autorizzazioni dell'utente attivo. In questo modo è possibile che venga eseguito codice dannoso in modalità FullTrust. È opportuno che i generatori di dati personalizzati provengano sempre da fonti attendibili e che venga inviato un avviso agli utenti finali affinché non utilizzino generatori di dati personalizzati ricevuti da fonti non attendibili.Codice dannoso in programmi di installazione di generatori di dati personalizzati
È possibile creare progetti di distribuzione per installare generatori di dati personalizzati. Tali progetti possono tuttavia contenere codice arbitrario. Per un programma di installazione eseguito per un generatore di dati personalizzato sono disponibili autorizzazioni elevate. Questo approccio con autorizzazioni elevate può implicare l'esecuzione di codice dannoso. È opportuno che i programmi di installazione dei generatori di dati personalizzati provengano sempre da fonti attendibili e che venga inviato un avviso agli utenti finali affinché non eseguano programmi di installazione di generatori di dati personalizzati ricevuti da fonti non attendibili.
Attività comuni
Attività comuni |
Contenuto di supporto |
---|---|
Fare pratica: è possibile eseguire una procedura dettagliata introduttiva per acquisire familiarità con le procedure di creazione ed esecuzione di un semplice unit test del database. |
|
Creare un piano di generazione dati: creare un piano di generazione dati per ogni progetto di unit test o per specifici test dell'applicazione. È possibile inoltre definire un piano di generazione dati in cui il riutilizzo dei dati da un altro database specificato per tutte le colonne viene impostato come valore predefinito. |
|
Aggiornare un piano di generazione dati da una versione precedente: è possibile utilizzare piani di generazione dati creati con una versione precedente di Visual Studio Premium. È tuttavia necessario aggiornare il piano non appena viene aperto. |
|
Specificare le tabelle che si desidera generare: è possibile generare dati per tutte le tabelle o solo per quelle specificate. Per ogni tabella è possibile specificare un numero di righe da generare. In alternativa è possibile indicare la quantità di righe come rapporto basato sul numero di righe generate per un'altra tabella. |
|
Configurare la modalità di generazione dei dati per ogni colonna nelle tabelle specificate: specificare il tipo di generatore di dati per ogni colonna. È possibile inoltre indicare dei vincoli sull'intervallo di valori dei dati. Per i generatori di dati più avanzati, è possibile fornire informazioni di configurazione aggiuntive per definire ulteriormente i dati generati. |
|
Visualizzare in anteprima i dati generati: è possibile visualizzare in anteprima i dati per qualsiasi tabella inclusa nel piano di generazione dati, prima di scriverli nel database. La visualizzazione in anteprima dei dati consente di regolare il piano di generazione dati evitando di generare dati in modo iterativo. |
|
Generare dati di test: dopo aver visualizzato in anteprima e verificato i dati che verranno generati, è possibile eseguire il piano di generazione dati per creare i dati di test. È possibile inoltre configurare il progetto di unit test in modo da generare i dati automaticamente all'esecuzione degli unit test. |
|
Archiviare i piani di generazione dati: come è necessario archiviare gli unit test nel controllo delle versioni per condividerli con il team, allo stesso modo è necessario archiviare i piani di generazione dati. |
|
Modificare le impostazioni predefinite e le opzioni del generatore di dati: è possibile specificare valori predefiniti per il valore di inizializzazione casuale e il numero di righe da inserire. È possibile inoltre specificare opzioni che consentano di controllare determinati aspetti dei generatori di dati, ad esempio il numero di righe da visualizzare nella finestra di anteprima e il numero massimo di errori accettabili che possono essere visualizzati mentre i dati vengono generati per una tabella singola prima dell'interruzione dell'operazione. |
|
Risolvere problemi: è possibile acquisire maggiori informazioni sulla risoluzione di problemi comuni relativi alla creazione e all'utilizzo di piani di generazione dati. |
Scenari correlati
Creazione e definizione di unit test del database
Vengono forniti informazioni e collegamenti agli argomenti aggiuntivi relativi alla definizione di unit test per verificare il comportamento degli oggetti di database. È possibile associare ogni progetto di test a un piano di generazione dati, una configurazione di distribuzione e una stringa di connessione diversi.Esecuzione di unit test del database
Viene descritto come eseguire gli unit test del database dopo averli creati, in modo da visualizzare i risultati.Definire condizioni personalizzate per gli unit test del database
Viene illustrato come eseguire il test per una particolare condizione che non è possibile verificare tramite le condizioni di test predefinite.