Test e distribuzione di app di Windows Store: Hilo (C++ e XAML)

Applies to Windows only

Da: Sviluppo di un'app di Windows Store end-to-end con C++ e XAML: Hilo

Logo Patterns & Practices

Pagina precedente | Pagina successiva

Abbiamo progettato Hilo C++per la testabilità e ti consigliamo di fare lo stesso durante la progettazione delle tue app. Per Hilo C++ abbiamo creato e condotto unit test, test di integrazione, test dell'esperienza utente, test della sicurezza, test di localizzazione, test delle prestazioni e test sui dispositivi.

Download

Download dell'esempio Hilo
Download guida (PDF)

Dopo aver scaricato il codice, per le istruzioni vedi Introduzione a Hilo.

In questo articolo verranno illustrati gli argomenti seguenti

  • Come usare gli strumenti di testing disponibili in Microsoft Visual Studio.
  • In che modo le diverse modalità di testing contribuiscono all'affidabilità e alla correttezza di un'app.

Si applica a

  • Windows Runtime
  • Estensioni del componente di Visual C++ (C++/CX)
  • XAML

Modi per testare l'app

Puoi testare la tua app in diversi modi. Ecco che cosa abbiamo scelto per Hilo.

  • Unit test: esegue il test di singole funzioni in isolamento. L'obiettivo dello unit test è controllare che ogni unità di funzionalità funzioni come previsto in modo che gli errori non si propaghino in tutto il sistema. Rilevare un bug nel punto in cui si verifica è più efficiente che osservare l'effetto di un bug indirettamente in un punto di errore secondario.
  • Test di integrazione: verifica che i componenti dell'app funzionino correttamente insieme. I test di integrazione verificano le funzionalità dell'app in modo realistico. In Hilo puoi riconoscere questo tipo di test perché richiama i metodi del modello visualizzazione. La separazione delle visualizzazioni dal modello visualizzazione rende possibile l'esecuzione dei test di integrazione.
  • Test dell'esperienza utente: interagisce direttamente con l'interfaccia utente. Spesso, questo tipo di test richiede l'intervento umano. È possibile sostituire alcuni test dell'esperienza utente con test di integrazione automatizzati, ma non è possibile eliminare completamente l'intervento umano.
  • Test di sicurezza: verifica la presenza di potenziali vulnerabilità della sicurezza. È basato su un modello di rischio che identifica possibili classi di attacco.
  • Test di localizzazione: verifica che l'app funzioni in tutte le lingue.
  • Test delle prestazioni: verifica il modo in cui l'app usa il tempo durante l'esecuzione. In molti casi, il test delle prestazioni può individuare colli di bottiglia o routine che impiegano una percentuale elevata del tempo CPU dell'app.
  • Test dei dispositivi: verifica che l'app funzioni correttamente su tutti i dispositivi hardware supportati. È ad esempio importante verificare che l'app funzioni con diverse risoluzioni di schermo e funzionalità di tocco o input.

Nella parte rimanente della pagina sono descritti gli strumenti usati per il test di Hilo.

[Torna all'inizio]

Uso del framework unit test di Visual Studio

In Hilo abbiamo usato il framework unit test di Visual Studio per l'esecuzione degli unit test e dei test di integrazione. Il progetto HiloTests della soluzione Hilo in Visual Studio contiene tutto il codice necessario per supportare il test di Hilo.

Nota  La versione di Hilo contenente il progetto HiloTests è disponibile nella sezione dei modelli e procedure per lo sviluppo di app di Windows Store in C++ e XAML dedicata a Hilo.

Per esaminare gli unit test, apri la soluzione Hilo in Visual Studio. Sulla barra dei menu scegli Test > Windows > Esplora test. Nella finestra Esplora test è visualizzato l'elenco di tutti gli unit test di Hilo.

Ecco la soluzione Hilo in Visual Studio che mostra la finestra Esplora test.

Cattura di schermata degli unit test di Hilo come visualizzata nella finestra Esplora test in Visual Studio

Di seguito è riportato un esempio di test.

RotateImageViewModelTests.cpp


TEST_METHOD(RotateImageViewModelShouldSaveAndLoadRotationAngle)
{
    auto vm = std::make_shared<RotateImageViewModel^>(nullptr);
    auto newVm = std::make_shared<RotateImageViewModel^>(nullptr);

    TestHelper::RunUISynced([this, vm, newVm]() 
    {
        (*vm) = ref new RotateImageViewModel(m_repository, m_exceptionPolicy);
        (*vm)->RotationAngle = 90;
        auto state = ref new Platform::Collections::Map<String^, Object^>();
        (*vm)->SaveState(state);

        (*newVm) = ref new RotateImageViewModel(m_repository, m_exceptionPolicy);
        (*newVm)->LoadState(state);
    });

    Assert::AreEqual((*vm)->RotationAngle,  (*newVm)->RotationAngle);
}


Il codice verifica che i metodi SaveState e LoadState della classe RotateImageViewModel salvino e ripristinino il valore della proprietà RotationAngle. La funzione RunUISynced è definita nel progetto di test Hilo per consentire il test delle operazioni asincrone tramite gli unit test.

La macro del preprocessore TEST_METHOD è definita dal Framework unit test Microsoft per C++.

Per altre info sugli strumenti di unit test in Visual Studio, vedi Verifica del codice tramite unit test. Per le specifiche relative al test del codice C++, vedi Scrittura di unit test per C/C++ con il framework unit test di Microsoft per C++.

[Torna all'inizio]

Uso di Visual Studio per il test della sospensione e della ripresa dell'app

Quando esegui il debug di un'app di Windows Store, nella barra degli strumenti Posizione di debug è presente un menu a discesa che consente di sospendere, riprendere o sospendere e arrestare (terminare) l'app in esecuzione. Puoi usare questa funzionalità per verificare che l'app si comporti come previsto quando il sistema la sospende o la riprende o la attiva dopo una sequenza di sospensione/terminazione.

Cattura di schermata della barra degli strumenti Posizione di debug

Se desideri verificare la sospensione usando il debugger, esegui Hilo nel debugger di Visual Studio e imposta i punti di interruzione nei metodi App:OnSuspending e App::OnLaunched di Hilo. Seleziona quindi il pulsante di sospensione e arresto sulla barra degli strumenti Posizione di debug. L'app verrà chiusa. Riavvia l'app nel debugger. L'app seguirà quindi il percorso del codice per la ripresa dallo stato Terminated. In Hilo questa logica è disponibile nel metodo App::OnLaunched. Per altre info, vedi Gestione di sospensione, ripresa e attivazione.

[Torna all'inizio]

Uso del simulatore e del debugger remoto per il test dei dispositivi

In Visual Studio è incluso un simulatore che puoi usare per eseguire la tua app di Windows Store in diversi ambienti di dispositivi. Ad esempio, il simulatore ti consente di verificare che l'app funzioni correttamente con diverse risoluzioni di schermo e con numerosi dispositivi di input. Puoi simulare gesti tocco anche se per lo sviluppo dell'app stai usando un computer che non supporta il tocco.

Hilo in esecuzione nel simulatore.

Cattura di schermata di Hilo in esecuzione nel simulatore

Per avviare il simulatore, seleziona Simulatore dal menu a discesa sulla barra degli strumenti Debug in Visual Studio. Altre voci del menu a discesa sono Computer locale e Computer remoto.

Oltre a usare il simulatore, abbiamo testato Hilo su numerosi dispositivi hardware. Puoi usare il debug remoto per testare l'app su un computer in cui non è installato Visual Studio. Per altre info sul debug remoto, vedi Esecuzione di app Windows Store Windows in un computer remoto.

[Torna all'inizio]

Uso di versioni pseudo-localizzate per i test

Per i test di localizzazione abbiamo usato versioni pseudo-localizzate di Hilo. Per altre info, vedi Test di localizzabilità.

[Torna all'inizio]

Test di sicurezza

Per il test della sicurezza in Hilo, abbiamo usato la metodologia STRIDE per la modellazione del rischio. Per altre info su questa metodologia, vedi Individuare difetti di progettazione relativi alla sicurezza con l'approccio STRIDE.

[Torna all'inizio]

Uso di WinDbg per il debug

Per il debug durante lo sviluppo normale abbiamo usato il debugger di Visual Studio. Abbiamo inoltre usato Windows Debugger (WinDbg) per eseguire il debug in alcuni scenari di test.

[Torna all'inizio]

Uso del compilatore Visual C++ per i test

Per testare l'app, puoi anche usare il compilatore Visual C++. Ad esempio, puoi usare static_assert per verificare che determinate condizioni siano vere in fase di compilazione ed eseguire l'assert per condizioni che devono essere vere in fase di esecuzione. Le asserzioni ti consentono di limitare gli unit test a determinati tipi e input.

[Torna all'inizio]

Creazione di un'app per il mercato internazionale

La preparazione dell'app per i mercati internazionali ti consente di raggiungere un maggior numero di utenti. Nell'argomento relativo alla globalizzazione dell'app sono disponibili guide, elenchi di controllo e attività che di consentono di creare un'esperienza utente in grado di raggiungere un pubblico più ampio e ti supportano nella globalizzazione e nella localizzazione della tua app di Windows Store. Hilo supporta tutti i formati dei calendari internazionali. Le stringhe di risorsa sono state localizzate in quattro lingue: arabo (Arabia Saudita), inglese (Stati Uniti), tedesco (Germania) e giapponese.

Di seguito sono riportati alcuni problemi di cui abbiamo dovuto tenere conto durante lo sviluppo di Hilo.

  • Prevedere la localizzazione in anticipo. Abbiamo tenuto conto del modo in cui la direzione del flusso e altri elementi dell'esperienza utente influiscono sulle diverse impostazioni locali. Abbiamo inoltre incorporato la localizzazione delle stringhe sin dalle fasi iniziali per garantire la gestibilità semplificata dell'intero processo.
  • Separare le risorse per le diverse impostazioni locali. Abbiamo mantenuto cartelle di soluzioni separate per le diverse impostazioni locali. Ad esempio, Strings > en-US > Resources.resw definisce le stringhe per la versione en-US (Stati Uniti). Per altre info, vedi Guida introduttiva: Uso delle risorse stringa e Come assegnare nomi alle risorse con i qualificatori.
  • Localizzare il manifesto dell'app. Abbiamo seguito la procedura illustrata in Localizzazione del manifesto di pacchetto in cui viene spiegato come usare Progettazione manifesto per localizzare nome, descrizione e altre funzionalità di identificazione dell'app.
  • Verifica che tutto il testo visualizzato nell'interfaccia utente sia definito da una risorsa stringa. Abbiamo usato la direttiva x:Uid per fornire un nome univoco per il processo di localizzazione per associare le stringhe localizzate al testo visualizzato sullo schermo. Ad esempio, ecco l'XAML che definisce il titolo dell'app visualizzato nella pagina principale:

    MainHubView.xaml

    
    <TextBlock x:Name="PageTitle"
               x:Uid="AppName"
               Grid.Column="1"
               Style="{StaticResource PageHeaderTextStyle}"
               Text="{Binding AppName}"/>
    
    
    

    Per la versione en-US, nel file di risorse definiamo AppName.Text come "Hilo". Specifichiamo la parte .Text in modo che il runtime XAML possa associare la stringa alla proprietà Text del controllo TextBlock. Usiamo questa tecnica anche per impostare il testo delle descrizioni comando (ContentControl::Content).

  • Aggiungere commenti contestuali al file di risorse dell'app. I commenti nel file di risorse consentono ai localizzatori di tradurre le stringhe con maggiore precisione. Ad esempio, per la stringa DisplayNameProperty abbiamo fornito il commento "Valore della proprietà DisplayName per il manifesto di pacchetto." per fornire al localizzatore informazioni relative alla posizione in cui viene usata la stringa. Per altre informazioni, vedi Come prepararsi alla localizzazione.
  • Definire la direzione del flusso per tutte le pagine. Abbiamo definito Page.FlowDirection nel file di risorse delle stringhe per impostare la direzione del flusso per tutte le pagine. Per le lingue che usano un ordine di lettura da sinistra a destra, ad esempio l'inglese e il tedesco, abbiamo definito il valore "LeftToRight". Per le lingue che usano un ordine di lettura da destra a sinistra, ad esempio l'arabo e l'ebraico, devi definire questo valore come "RightToLeft". Abbiamo inoltre impostato la direzione del flusso per tutte le barre dell'app definendo AppBar.FlowDirection nel file di risorse.
  • Accertati che i messaggi di eccezione vengano letti dal file di risorse. È importante localizzare le stringhe dei messaggi di eccezione in quanto le stringhe per le eccezioni non gestite possono essere visualizzate dagli utenti. Hilo definisce l'interfaccia IResourceLoader per il caricamento delle risorse della stringa.

    IResourceLoader.h

    
    public interface class IResourceLoader
    {
        Platform::String^ GetString(Platform::String^ value);
    };
    
    
    

    La classe LocalResourceLoader deriva da IResourceLoader e usa la classe ResourceLoader per caricare le stringhe dal file di risorse.

    LocalResourceLoader.cpp

    
    String^ LocalResourceLoader::GetString(String^ value)
    {
        auto loader = ref new ResourceLoader();
        return loader->GetString(value);
    }
    
    
    

    Per fornire i messaggi generati da un'eccezione di Windows Runtime, usiamo la classe LocalResourceLoader per leggere il testo del messaggio. Ecco un esempio.

    WideFiveImageTile.cpp

    
    void WideFiveImageTile::SetImageFilePaths(const vector<wstring>& fileNames)
    {
        if (fileNames.size() > MaxTemplateImages)
        {
            throw ref new FailureException(m_loader->GetString("ErrorWideTileTooBig"));
        }
    
        m_fileNames = fileNames;
    }
    
    
    

    Per la versione en-US, abbiamo definito l'errore "ErrorWideTileTooBig" come "L'affiancamento largo può accettare un massimo di 5 immagini". Nelle altre impostazioni locali sono disponibili messaggi che comunicano lo stesso errore. Ad esempio, il file Strings/ja-JP/Resources.resw contiene una stringa giapponese equivalente, ovvero "ワイドタイルは5イメージまでしか".

    Nota  Abbiamo definito l'interfaccia IResourceLoader per i test. Nel progetto HiloTests abbiamo definito la classe StubResourceLoader che usa stringhe hardcoded anziché stringhe localizzate. L'uso di dati fittizi in questo modo semplifica l'isolamento dei test per concentrarsi su funzionalità specifiche.

  • Usare la classe Calendar per supportare i calendari internazionali. Hilo usa i metodi e le proprietà della classe Windows::Globalization::Calendar. Hilo ottiene ad esempio la proprietà Calendar::NumberOfMonthsInThisYear per determinare il numero di mesi nell'anno corrente anziché presumere che esistano sempre 12 mesi in ogni anno. La logica del calendario di Hilo è disponibile nel file CalendarExtensions.cpp.

Puoi testare la localizzazione dell'app configurando l'elenco delle lingue preferite nel Pannello di controllo. Per altre info sulla creazione di app adatte al mercato internazionale, vedi Come prepararsi alla localizzazione, Guidelines for app resourcese Guida introduttiva: Traduzione delle risorse dell'interfaccia utente.

Test dell'app con il Kit di certificazione app Windows

Per dare alla tua app la massima probabilità di ottenere la certificazione, convalidala usando il Kit di certificazione app Windows. Il kit esegue numerosi test per verificare che l'app soddisfi determinati requisiti di certificazione per Windows Store. Questi test includono:

  • Analisi del contenuto del manifesto dell'app per garantire che il contenuto sia corretto.
  • Controllo delle risorse definite nel manifesto dell'app per verificare che siano presenti e valide.
  • Test della resilienza e della stabilità dell'app.
  • Determinazione della velocità di avvio e di sospensione dell'app.
  • Controllo dell'app per verificare che chiami solo le API per app di Windows Store.
  • Verifica che l'app usi le funzionalità di sicurezza di Windows.

Devi eseguire il Kit di certificazione app Windows su una versione compilata dell'app, in caso contrario, la convalida ha esito negativo. Per altre informazioni, vedi How to: Impostare configurazioni di debug e rilascio.

Hai inoltre la possibilità di convalidare l'app ogni volta che la compili. Se stai eseguendo Team Foundation Build, puoi modificare le impostazioni nel tuo computer di compilazione in modo che il Kit di certificazione app Windows venga eseguito automaticamente ogni volta che la tua app viene compilata. Per altre informazioni, vedi Convalida di un pacchetto in compilazioni automatizzate.

Per altre informazioni, vedi Come testare l'app con il Kit di certificazione app Windows.

[Torna all'inizio]

Creazione di un elenco di controllo per la certificazione di Windows Store

Userai Windows Store come metodo principale per vendere o rendere disponibili le tue app al pubblico. Per informazioni su come preparare e inviare l'app, vedi Invio dell'app.

Durante la pianificazione dell'app, ti consigliamo di creare un elenco di controllo con i requisiti di pubblicazione da usare durante la fase di test dell'app. L'elenco di controllo può variare a seconda del tipo di app che stai compilando e dal modo in cui prevedi di monetizzarla. Ecco il nostro elenco di controllo:

  1. Aprire un account sviluppatore. Per caricare le app su Windows Store devi avere un account sviluppatore. Per altre informazioni, vedi Registrazione di un account sviluppatore Windows Store.
  2. Prenotare un nome di app. Puoi prenotare un nome di app per un anno e se non invii l'app entro l'anno, la prenotazione scade. Per altre informazioni vedi Denominazione e descrizione dell'app.
  3. Ottenere una licenza per sviluppatori. Per sviluppare un'app di Windows Store hai bisogno di una licenza per sviluppatori. Per altre informazioni, vedi Ottenere una licenza per sviluppatori per Windows 8.
  4. Modificare il manifesto dell'app. Modifica il manifesto dell'app per impostare le funzionalità dell'app e inserire elementi quali i logo. Per altre informazioni, vedi Progettazione manifesto.
  5. Associare l'app a Windows Store. Quando associ la tua app a Windows Store, il file manifesto dell'app viene aggiornato per includere dati specifici di Windows Store.
  6. Copiare una cattura di schermata dell'app su Windows Store.
  7. Creare il pacchetto dell'app. Il modo più facile per questa operazione è usare Visual Studio. Per altre informazioni, vedi Creazione del pacchetto dell'app mediante Visual Studio 2012. In alternativa, puoi creare il pacchetto dell'app al prompt dei comandi. Per altre informazioni, vedi Creazione del pacchetto dell'app a un prompt dei comandi.
  8. Caricare il pacchetto dell'app in Windows Store. Durante il processo di caricamento, i pacchetti della tua app vengono controllati per verificare la conformità tecnica con i requisiti di certificazione delle app. Se l'app supera i test, viene visualizzato un messaggio per segnalare che il caricamento ha avuto esito positivo. Se un pacchetto non supera un test di caricamento, visualizzerai un messaggio di errore. Per altre informazioni, vedi Risoluzione degli errori di caricamento dei pacchetti.

Sebbene Hilo non sia stato effettivamente caricato in Windows Store, abbiamo eseguito tutti i passaggi necessari per garantire che superasse la convalida.

Prima di creare il pacchetto dell'app per il caricamento in Windows Store, esegui le operazioni seguenti:

Se inoltre la tua app raccoglie dati personali o usa software fornito da altri, devi includere anche un'informativa sulla privacy o condizioni di licenza aggiuntive.

[Torna all'inizio]

 

 

Mostra:
© 2014 Microsoft