Condividi tramite


Procedura dettagliata: creazione di una linea di base per l'ambiente di sviluppo isolato

Aggiornamento: novembre 2007

In questa procedura dettagliata viene illustrato come creare un progetto di database da sottoporre successivamente al controllo delle versioni. Il progetto di database contiene una definizione di schema che corrisponde a quella di un server di produzione. Prima di avviare il lavoro di sviluppo su questo progetto di database, si desidera creare una linea di base di qualità mediante l'impostazione di unit test del database, la definizione di un piano di generazione dati, la generazione di dati di test e l'esecuzione di tali test. Tramite l'esecuzione di test è possibile generare e distribuire il database nell'ambiente di sviluppo isolato, inserire nel database dati generati ed eseguire unit test per presentare i risultati.

Di seguito sono elencate le attività illustrate nella procedura dettagliata:

  • Personalizzazione delle impostazioni di generazione per l'ambiente di sviluppo isolato

  • Generazione e distribuzione del database nell'ambiente di sviluppo isolato

  • Definizione di uno unit test per una stored procedure contenuta nel progetto di database

  • Generazione di dati di test e creazione ed esecuzione degli unit test

  • Condivisione degli unit test con il team di sviluppo tramite l'inserimento degli unit test nel controllo delle versioni come parte della soluzione

Prerequisiti

È necessario avere installato Visual Studio Team System Database Edition e disporre dell'accesso al database di esempio AdventureWorks per Microsoft SQL Server 2005. È inoltre necessario avere completato i passaggi in Procedura dettagliata: creazione di un ambiente di sviluppo isolato.

Per personalizzare le impostazioni di generazione per l'ambiente di sviluppo isolato

  1. Se la soluzione AdvWorksSandbox è aperta in Esplora soluzioni, andare al passaggio 4.

  2. Scegliere Apri dal menu File e quindi Progetto/Soluzione.

    Verrà visualizzata la finestra di dialogo Apri progetto.

  3. Selezionare la soluzione AdvWorksSandbox e quindi scegliere Apri. Per impostazione predefinita, questa soluzione si trova in Documenti\Visual Studio 2005\Projects\AdvWorksSandbox.

    La soluzione AdvWorksSandbox verrà aperta in Esplora soluzioni.

  4. In Esplora soluzioni fare clic sul nodo AdvWorksSandbox.

  5. Scegliere Proprietà AdvWorksSandbox dal menu Progetto.

  6. Fare clic sulla scheda Genera.

  7. Fare clic su Modifica accanto a Connessione di destinazione.

    Verrà visualizzata la finestra di dialogo Proprietà connessione.

    A questo punto è possibile personalizzare la stringa di connessione per l'ambiente di sviluppo isolato locale. È consigliabile che ogni sviluppatore del database utilizzi la propria copia del database, in modo da poter apportare modifiche senza effetti negativi sul resto del team. Quando lo sviluppatore ha eseguito il test delle modifiche ed è pronto a condividerle con il team, le modifiche vengono condivise tramite il sistema di controllo delle versioni centrale. In Procedura dettagliata: creazione di un ambiente di sviluppo isolato è stato impostato il nome del database di destinazione, ma non la connessione.

  8. Digitare o scegliere il nome del server da utilizzare per l'ambiente di sviluppo isolato. Per utilizzare ad esempio l'istanza locale, digitare (local).

  9. Scegliere il tipo di autenticazione da utilizzare per connettersi al server di database.

    Per impostazione predefinita, viene specificata l'autenticazione di Windows.

  10. Scegliere OK.

    Nella connessione di destinazione vengono visualizzate le informazioni di connessione.

  11. Scegliere Salva elementi selezionati dal menu File per salvare le modifiche apportate alle proprietà del progetto di database.

Per generare e distribuire il database nell'ambiente di sviluppo isolato

  1. Scegliere Genera soluzione dal menu Genera.

    Viene generato il progetto di database e i risultati vengono visualizzati nella finestra Output.

  2. In Esplora soluzioni fare clic sul nodo AdvWorksSandbox.

  3. Scegliere DistribuisciNomeProgetto dal menu Compilazione. È inoltre possibile fare clic con il pulsante destro del mouse sul nodo AdvWorksSandbox e scegliere Distribuisci.

    Il progetto di database viene generato, insieme a uno script di generazione, che successivamente viene distribuito nel server di sviluppo del database isolato specificato nelle proprietà del progetto di database. In seguito, verranno generati i dati di test per l'ambiente di sviluppo isolato.

Definisci unit test

In genere vengono definiti unit test per tutte le stored procedure, le funzioni e i trigger. In questa procedura dettagliata viene illustrato come definire solo uno unit test come esempio. Viene definito un test per la funzione ufnLeadingZeros e per la stored procedure dbo.uspGetManagerEmployees.

La funzione ufnLeadingZeros accetta un valore integer e restituisce una rappresentazione di stringa VARCHAR(8) di tale valore integer al quale vengono aggiunti zeri iniziali. Per eseguire il test di questa funzione, è possibile passare un valore e verificare che il risultato ottenuto sia quello previsto.

La stored procedure uspGetManagerEmployees viene passata come identificatore di dipendenti e restituisce tutti i dipendenti che fanno riferimento al dirigente di cui è stato specificato l'identificatore (gerarchia completa). Poiché il generatore di dati produce gli stessi dati di test se viene fornito lo stesso valore di inizializzazione, è possibile conoscere il numero di righe che devono essere restituite. Questo test è molto semplice. In un progetto reale, sarebbe opportuno creare test più dettagliati per garantire che vengano restituiti i dipendenti corretti.

Per creare unit test

  1. Scegliere Visualizzazione schema dal menu Visualizza.

    Se non è già visualizzata, verrà visualizzata la finestra Visualizzazione schema.

  2. Nella finestra Visualizzazione schema fare clic con il pulsante destro del mouse sulla cartella Stored procedure e quindi scegliere Crea unit test.

    Verrà visualizzata la finestra di dialogo Crea unit test.

  3. Espandere la struttura di selezione corrente e selezionare le caselle di controllo per la stored procedure dbo.uspGetManagerEmployees e la funzione dbo.ufnLeadingZeros. Deselezionare le caselle di controllo per qualsiasi altra stored procedure o funzione selezionata.

    Nota:

    Per creare una linea di base reale per il progetto, è necessario creare unit test per tutte le funzioni, le stored procedure e i trigger presenti nel database. In questa procedura dettagliata questo processo viene illustrato prendendo in considerazione una stored procedure e una funzione.

  4. In Progetto scegliere "Crea nuovo progetto di test Visual C#…".

  5. In Nuovo nome progetto digitare AWSandboxTestProject e quindi scegliere OK.

    Verrà creato il progetto di unit test e verrà visualizzata la finestra di dialogo Configurazione progetto per gli unit test.

  6. In Connessioni database fare clic sulla connessione per AdvWorksSandbox.

  7. In Distribuzione selezionare la casella di controllo Distribuisci automaticamente il progetto di database prima di eseguire test.

  8. In Progetto di databas fare clic su AdvWorksSandbox.dbproj.

  9. In Stato database selezionare la casella di controllo Genera dati di test prima di eseguire unit test.

  10. Nell'elenco Stato database selezionare AWGenPlan.dgen.

  11. Se non è già selezionata, selezionare la casella di controllo Cancella il database prima di generare dati di test e quindi scegliere OK.

    Il progetto di unit test del database verrà creato e aggiunto alla soluzione. Verrà aperta la finestra di progettazione unit test del database dove è possibile modificare le condizioni di test e creare test.

    Nota:

    Se è necessario modificare la configurazione di test, scegliere Configurazione test di database dal menu Test. Verrà visualizzata la finestra di dialogo Configurazione progetto dove è possibile modificare le configurazioni.

    Vengono quindi specificate le condizioni di test e scritti i test.

Per definire uno unit test per la funzione ufnLeadingZeros

  1. Scegliere dbo.ufnLeadingZeros nell'elenco dei test nella finestra di progettazione unit test del database.

  2. Verificare che nel secondo elenco venga visualizzato "Test".

  3. Sostituire le istruzioni T-SQL (Transact-SQL) nel riquadro superiore della finestra di progettazione con il codice seguente:

    -- db unit test for dbo.ufnLeadingZeros
    DECLARE @RC VARCHAR (8),
    @Value INT
    
    SELECT @RC = NULL,
    @Value = 27
    
    SELECT @RC = [dbo].[ufnLeadingZeros]( @Value)
    
    IF @RC <> '00000027' 
    RAISERROR(N'ufnLeadingZero: expected "00000027" but got %s.', 16, 1, @RC)
    
    SELECT RC=@RC
    
  4. Nel riquadro Condizioni di test selezionare la condizione di test di tipo Senza risultati ed eliminarla facendo clic su Elimina condizione di test (x).

  5. Aggiungere una condizione di test di conteggio righe selezionando Conteggio righe nell'elenco nel riquadro Condizioni di test e facendo clic su Aggiungi condizione di test (+).

  6. Nella finestra Proprietà impostare la proprietà Conteggio righe su 1.

    Se si desidera imporre l'esito negativo del test, modificare @Value da 27 in un altro valore.

Per definire uno unit test per la stored procedure uspGetManagerEmployees

  1. Scegliere dbo.uspGetManagerEmployees nell'elenco di test nella finestra di progettazione unit test del database.

  2. Verificare che nel secondo elenco venga visualizzato "Test".

    Nel riquadro superiore della finestra di progettazione devono essere presenti le istruzioni T-SQL (Transact-SQL) seguenti:

    -- db unit test for dbo.uspManagerEmployees
    DECLARE @RC VARCHAR (8),
    @ManagerID INT
    
    SELECT @RC = NULL,
    @ManagerID = 1
    
    EXEC @RC = [dbo].[uspGetManagerEmployees]( @ManagerID )
    
    SELECT RC=@RC
    
  3. Nel riquadro Condizioni di test selezionare la condizione di test di tipo Senza risultati ed eliminarla facendo clic su Elimina condizione di test (x).

  4. Aggiungere una condizione di test di conteggio righe selezionando Conteggio righe nell'elenco nel riquadro Condizioni di test e facendo clic su Aggiungi condizione di test (+).

  5. Nella finestra Proprietà impostare la proprietà Conteggio righe su 11.

    Nota:

    Per determinare il valore di parametro per la stored procedure e il risultato previsto, è possibile utilizzare l'Editor T-SQL (Transact-SQL) ed esaminare il contenuto della tabella [HumanResources].[Employee] dopo la generazione dei dati. In questo caso, il dipendente il cui valore EmpoyeeID è pari a 1 si trova all'inizio di una gerarchia di 11 persone. La stored procedure, pertanto, deve restituire 11 righe di dati. Generando dati di test con lo stesso valore di inizializzazione si ottengono gli stessi dati in ogni esecuzione.

    A questo punto è possibile eseguire gli unit test.

Generare ed eseguire unit test

Dopo avere definito gli unit test, è possibile generarli ed eseguirli.

Per generare ed eseguire gli unit test

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione e quindi scegliere Rigenera soluzione.

    Tramite questo passaggio viene imposta una rigenerazione del progetto di database e del progetto di unit test per garantire che tutti gli elementi siano aggiornati.

  2. Scegliere Finestre dal menu Test e quindi Visualizzazione test.

    Nella finestra Visualizzazione test sono elencati numerosi test. I test denominati ManualTest1 e TestMethod1 vengono creati per impostazione predefinita. I test denominati dbo_uspGetManagerEmployeesTest e dbo_ufpLeadingZeroTest sono stati creati in questa procedura dettagliata.

  3. Selezionare le caselle di controllo per dbo_uspGetManagerEmployeesTest e dbo_ufpLeadingZeroTest, fare clic con il pulsante destro del mouse su entrambi e quindi scegliere Esegui selezione.

  4. I risultati verranno visualizzati nella finestra Risultati del test.

    Il progetto di database viene distribuito nell'ambiente di sviluppo isolato, i dati di test vengono generati e i test vengono eseguiti e superati.

Archivia modifiche in sospeso

Dopo avere definito gli unit test per stabilire se le modifiche impediscono il corretto funzionamento del database, è possibile archiviarli e condividere la soluzione con il team.

Per condividere la soluzione con il team

  1. Scegliere Altre finestre dal menu Visualizza e quindi Modifiche in sospeso.

    Verrà visualizzata la finestra Modifiche in sospeso.

  2. In Commenti digitare Piano di generazione e unit test della linea di base definiti.

  3. Nella finestra Modifiche in sospeso fare clic su Archivia sulla barra degli strumenti.

    Quando il progetto di database e i file in esso contenuti vengono sottoposti al controllo delle versioni, viene visualizzata la finestra di dialogo Stato archiviazione. Le icone in Esplora soluzioni vengono aggiornate per indicare che i file sono archiviati nel controllo delle versioni.

Passaggi successivi

Dopo avere archiviato la soluzione nel controllo delle versioni, ogni membro del team può dedicarsi alle attività assegnate. Ogni persona può lavorare nel proprio ambiente di sviluppo del database isolato finché le modifiche non sono pronte per essere condivise. In Procedura dettagliata: esecuzione dello sviluppo iterativo di database in un ambiente di sviluppo isolato viene illustrato come utilizzare il refactoring per rinominare gli oggetti di database nell'ambiente di sviluppo isolato. Le modifiche vengono generate, distribuite e sottoposte a test prima di essere archiviate per consentire ad altri membri del team di eseguire la sincronizzazione su di esse.

Vedere anche

Attività

Procedura dettagliata: esecuzione dello sviluppo iterativo di database in un ambiente di sviluppo isolato

Concetti

Panoramica delle impostazioni del progetto di database

Cenni preliminari sui processi di generazione e distribuzione di database

Panoramica sulla terminologia di Database Edition

Altre risorse

Cenni preliminari sulla generazione di dati

Cenni preliminari sull'esecuzione di unit test del database