Testen und Bereitstellen von Windows Store-Apps: Hilo (C++ und XAML)

Applies to Windows only

Aus: Umfassende Entwicklung einer Windows Store-App mit C++ und XAML: Hilo

Leitfaden-Logo

Vorherige Seite | Nächste Seite

Wir haben Hilo C++ im Hinblick auf Testbarkeit entworfen und empfehlen Ihnen, beim Entwurf Ihrer Apps genauso vorzugehen. Für Hilo C++ wurden Komponententest, Integrationstests, Tests der Benutzeroberfläche, Sicherheitstests, Lokalisierungstests, Leistungstests und Gerätetests entwickelt und durchgeführt.

Download

Herunterladen des Hilo-Beispiels
Buch herunterladen (PDF)

Anweisungen zu dem heruntergeladenen Code finden Sie unter Erste Schritte mit Hilo.

Sie erfahren Folgendes:

  • So verwenden Sie die in Microsoft Visual Studio verfügbaren Testtools.
  • Einfluss der verschiedenen Testmodi auf die Zuverlässigkeit und Korrektheit einer App

Betrifft

  • Windows-Runtime
  • Visual C++-Komponentenerweiterungen (C++/CX)
  • XAML

Möglichkeiten zum Testen Ihrer App

Sie können eine App auf unterschiedlichste Weise testen. Für Hilo haben wir die folgenden Verfahren gewählt.

  • Mit Komponententests werden einzelne isolierte Funktionen getestet. Mit Komponententests wird überprüft, ob jede Funktionseinheit den Erwartungen entsprechend ausgeführt wird, sodass Fehler nicht im gesamten System verbreitet werden. Wenn ein Fehler an der Stelle erkannt wird, an der er auftritt, ist dies effizienter, als lediglich die Auswirkungen des Fehlers an einer zweiten Fehlerstelle zu beobachten.
  • Mit Integrationstests wird überprüft, ob die Komponenten der App ordnungsgemäß interagieren. Mit Integrationstests werden die App-Funktionen wirklichkeitsgetreu ausgeführt. In Hilo erkennen Sie diese Art von Test daran, dass dabei Methoden des Ansichtsmodells aufgerufen werden. Integrationstests werden durch die Trennung der Ansichten vom Ansichtsmodell ermöglicht.
  • UX (User Experience)-Tests erfolgen durch direkte Interaktion mit der Benutzeroberfläche. Diese Art von Tests erfordert häufig manuellen Eingriff. Einige UX-Tests können durch automatisierte Integrationstests ersetzt werden, jedoch bleibt manueller Eingriff in gewissem Umfang erforderlich.
  • Sicherheitstests sind auf potenzielle Sicherheitslücken ausgerichtet. Sie basieren auf einem Bedrohungsmodell, mit dem mögliche Angriffsklassen bestimmt werden.
  • Lokalisierungstests stellen sicher, dass die App in allen Sprachumgebungen ausgeführt wird.
  • Leistungstests bestimmen, welche Aufgaben die App ausführt. Mit Leistungstests lassen sich häufig Engpässe erkennen oder Routinen bestimmen, die einen großen Prozentsatz der CPU-Zeit der App beanspruchen.
  • Gerätetests überprüfen, ob die App in dem Bereich der von ihr unterstützten Hardware ordnungsgemäß ausgeführt wird. Beispielsweise sollte getestet werden, ob die App mit unterschiedlichen Bildschirmauflösungen und Fingereingabefunktionen ordnungsgemäß ausgeführt wird.

Auf dem Rest dieser Seite werden die Tools beschrieben, mit denen wir Hilo getestet haben.

[Oben]

Verwenden des Visual Studio-Frameworks für Komponententests

Wir verwenden in Hilo das Komponententestframework von Visual Studio für Komponententests und Integrationstests. Das Projekt "HiloTests" in der Visual Studio-Projektmappe "Hilo" enthält sämtlichen Code, der Hilo-Tests unterstützt.

Hinweis  Die Hilo-Version, die das HiloTests-Projekt enthält, ist unter Leitfaden – Entwickeln von Windows Store-Apps mit C++ und XAML: Hilo verfügbar.

Sie können sich die Komponententests anschauen, indem Sie die Visual Studio-Projektmappe "Hilo" öffnen. Wählen Sie auf der Menüleiste Test > Windows > Test-Explorer. Im Fenster Test-Explorer werden alle Komponententests von Hilo aufgeführt.

Dies ist die Projektmappe "Hilo" in Visual Studio mit dem Fenster Test-Explorer.

Screenshot von Hilo-Komponententests im Visual Studio-Test-Explorer

Hier ist ein Beispiel für einen 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);
}


Der Code überprüft, ob die SaveState-Methode und die LoadState-Methode der RotateImageViewModel-Klasse den Wert der RotationAngle-Eigenschaft speichern und wiederherstellen. Im Hilo-Testprojekt ist die RunUISynced-Funktion definiert, um das Testen von asynchronen Vorgängen mit Komponententests zu ermöglichen.

Vom Microsoft-Komponententestframework für C++ ist das TEST_METHOD-Präprozessormakro definiert.

Weitere Informationen zu den Tools für Komponententests in Visual Studio finden Sie unter Überprüfen von Code mithilfe von Komponententests. Ausführliche Informationen zum Testen von C++-Code finden Sie unter Schreiben von Komponententests für C/C++ mit dem Microsoft-Komponententestframework für C++.

[Oben]

Verwenden von Visual Studio zum Testen des Anhaltens und Fortsetzens der App

Wenn Sie eine Windows Store-App debuggen, enthält die Symbolleiste Debugspeicherort ein Dropdownmenü, mit dem Sie die App anhalten, fortsetzen oder anhalten und herunterfahren (beenden) können. Mit diesem Feature können Sie testen, ob sich die App erwartungsgemäß verhält, wenn sie vom System angehalten oder fortgesetzt wird oder wenn sie nach einer Anhalten/Beenden-Sequenz vom System aktiviert wird.

Screenshot der Symbolleiste "Debugspeicherort"

Wenn Sie im Debugger das Anhalten der App vorführen möchten, führen Sie Hilo im Visual Studio-Debugger aus, und legen Sie in der App:OnSuspending-Methode und der App::OnLaunched-Methode von Hilo Haltepunkte fest. Wählen Sie anschließend auf der Symbolleiste Debugspeicherort die Option Anhalten und herunterfahren aus. Die App wird beendet.. Starten Sie die App im Debugger neu, und die App folgt dem Codepfad zum Fortsetzen ab dem Status Terminated. Diese Logik befindet sich in Hilo in der App::OnLaunched-Methode. Weitere Informationen finden Sie unter Behandeln von Anhalten, Fortsetzen und Aktivierung.

[Oben]

Testen von Geräten mit dem Simulator und Remotedebugger

Visual Studio enthält einen Simulator, mit Sie die Windows Store-App in verschiedenen Geräteumgebungen ausführen können. Beispielsweise können Sie mit dem Simulator überprüfen, ob die App mit verschiedenen Bildschirmauflösungen und einer Vielzahl unterschiedlicher Eingabehardware ordnungsgemäß ausgeführt wird. Sie können Fingereingabegesten simulieren, auch wenn Sie die App auf einem Computer entwickeln, der Fingereingabe nicht unterstützt

Dies ist die im Simulator ausgeführte App Hilo.

Screenshot der im Simulator ausgeführten App Hilo.

Wählen Sie zum Starten des Simulators in Visual Studio auf der Symbolleiste Debuggen im Dropdownmenü die Option Simulator aus. Weitere Optionen im Dropdownmenü lauten Lokaler Computer und Remotecomputer.

Wir testeten Hilo nicht nur im Simulator, sondern auch auf verschiedener Hardware. Sie können die App mithilfe von Remotedebuggen auf einem Computer testen, auf dem Visual Studio nicht installiert. ist. Weitere Informationen über Remotedebuggen finden Sie unter Ausführen von Windows Store-Apps auf einem Remotecomputer.

[Oben]

Verwenden pseudo-lokalisierter Versionen für Tests

Für die Lokalisierungstests wurden pseudo-lokalisierte Versionen von Hilo verwendet. Weitere Informationen finden Sie unter Testen im Hinblick auf Lokalisierbarkeit.

[Oben]

Sicherheitstests

Als Grundlage für Sicherheitstests in Hilo verwendeten wir die STRIDE-Methodik zum Erstellen von Bedrohungsmodellen. Weitere Informationen über diese Methodik finden Sie unter Aufdecken von Fehlern im Sicherheitsentwurf mithilfe des STRIDE-Ansatzes.

[Oben]

Verwenden von WinDbg zum Debuggen

Zum Debuggen während der normalen Entwicklung verwendeten wir den Visual Studio- Debugger. Zum Debuggen in einigen Testszenarien verwendeten wir außerdem den Windows Debugger (WinDbg).

[Oben]

Verwenden des Visual C++-Compilers für Tests

Zur Unterstützung des Testens der App können Sie auch den Visual C++-Compiler verwenden. Überprüfen Sie beispielsweise mit static_assert, ob bestimmte Bedingungen zur Kompilierzeit zutreffen, und überprüfen Sie mit assert auf Bedingungen, die zur Laufzeit zutreffen müssen. Mit Assertionen können Sie die Komponententests auf angegebene Typen und Eingaben beschränken.

[Oben]

Vorbereiten der App für den weltweiten Markt

Durch das Vorbereiten der App für internationale Märkte können Sie mehr Benutzer erreichen. Globalisieren Ihrer App bietet Ihnen Anleitungen, Prüflisten und Aufgaben, die Sie beim Globalisieren und Lokalisieren der App unterstützen, damit Sie eine Benutzererfahrung für Benutzer in internationalen Märkten erzeugen können. Hilo unterstützt alle internationalen Kalenderformate. Die Ressourcenzeichenfolgen von Hilo wurden in 4 Sprachen lokalisiert: Arabisch (Saudi-Arabien), Englisch (USA), Deutsch (Deutschland) und Japanisch.

Dies sind einige der Aspekte, die wir beim Entwickeln von Hilo berücksichtigen mussten.

  • Machen Sie sich frühzeitig Gedanken über die Lokalisierung. Wir überlegten, wie sich die Leserichtung und andere UX-Elemente auf Benutzer mit unterschiedlichen Gebietsschemas auswirken. Wir integrierten außerdem die Zeichenfolgenlokalisierung zu einem frühen Zeitpunkt, um den gesamten Prozess besser steuern zu können.
  • Trennen Sie Ressourcen für die einzelnen Gebietsschemas. Wir verwenden für jedes Gebietsschema einen eigenen Projektmappenordner. Beispielsweise sind in Strings > en-US > Resources.resw die Zeichenfolgen für das Gebietsschema "en-US" definiert. Weitere Informationen finden Sie unter Schnellstart: Verwenden von Zeichenfolgenressourcen und So wird's gemacht: Benennen von Ressourcen mithilfe von Qualifizierern.
  • Lokalisieren Sie das App-Manifest. Wir führten die Schritte in Lokalisieren des Paketmanifests aus. In diesem Abschnitt wird beschrieben, wie mit dem Manifest-Designer der Name, die Beschreibung und weitere kennzeichnende Features der App lokalisiert werden.
  • Stellen Sie sicher, dass jeder Text der UI durch eine Zeichenfolgenressource definiert ist. Wir stellen mit der x:Uid-Direktive einen eindeutigen Namen für den Lokalisierungsvorgang bereit, um dem auf dem Bildschirm angezeigten Text lokalisierte Zeichenfolgen zuzuordnen. Dies ist beispielsweise das XAML zum Definieren des App-Titels, der auf der Hauptseite angezeigt wird:

    MainHubView.xaml

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

    Für das Gebietsschema "en-US" definieren wir AppName.Text in der Ressourcendatei als "Hilo". Wir geben den .Text-Teil an, damit die XAML-Laufzeit der Text-Eigenschaft des TextBlock-Steuerelements die Zeichenfolge zuordnen kann. Diese Technik wird auch zum Festlegen von QuickInfo-Text (ContentControl::Content) verwendet.

  • Fügen Sie der App-Ressourcendatei kontextbezogene Kommentare hinzu. Mithilfe von Kommentaren in der Ressourcendatei können Lokalisierer Zeichenfolgen präziser übersetzen. Beispielsweise stellten wir für die Zeichenfolge DisplayNameProperty den Kommentar "DisplayName property value for the package manifest" bereit, um dem Lokalisierer mitzuteilen, wo die Zeichenfolge verwendet wird. Weitere Informationen finden Sie unter So wird's gemacht: Vorbereiten für die Lokalisierung.
  • Legen Sie die Leserichtung für alle Seiten fest. Wir definieren in der Zeichenfolgenressourcendatei Page.FlowDirection, um die Leserichtung für alle Seiten festzulegen. Für Sprachen mit der Leserichtung von links nach rechts, z. B. Englisch und Deutsch, legen wir "LeftToRight" als Wert der Eigenschaft fest. Für Sprachen mit der Leserichtung von rechts nach links, z. B. Arabisch und Hebräisch, legen wir "RightToLeft" als Wert fest. Wir legten außerdem in den Ressourcendateien AppBar.FlowDirection fest, um die Leserichtung für alle App-Leisten zu definieren.
  • Stellen Sie sicher, dass Ausnahmemeldungen aus der Ressourcendatei gelesen werden. Es ist wichtig, Zeichenfolgen für Ausnahmemeldungen zu lokalisieren, da diese Zeichenfolgen für nicht behandelte Ausnahmen für den Benutzer angezeigt werden können. In Hilo ist die IResourceLoader-Schnittstelle zum Laden von Zeichenfolgeressourcen definiert.

    IResourceLoader.h

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

    Die von IResourceLoader abgeleitete LocalResourceLoader-Klasse lädt mithilfe der ResourceLoader-Klasse Zeichenfolgen aus der Ressourcendatei.

    LocalResourceLoader.cpp

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

    Wenn beim Auslösen einer Windows-Laufzeit-Ausnahme eine Meldung bereitgestellt wird, wird die LocalResourceLoader-Klasse zum Lesen des Meldungstexts verwendet. Hier ist ein Beispiel.

    WideFiveImageTile.cpp

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

    Für das Gebietsschema "en-US" legen wir "ErrorWideTileTooBig" auf "Wide tile can only take up to 5 images." fest. Für andere Gebietsschemas gibt es entsprechende Meldungen, die den gleichen Fehler mitteilen. Beispielsweise enthält die Datei "Strings/ja-JP/Resources.resw" die entsprechende japanische Zeichenfolge "ワイドタイルは5イメージまでしか".

    Hinweis  Wir legen die IResourceLoader-Schnittstelle für Tests fest.. Im Projekt "HiloTests" definieren wir die StubResourceLoader-Klasse, die statt lokalisierter Zeichenfolgen hartcodierte Zeichenfolgen verwendet. Eine derartige Verwendung von Pseudodaten kann das Isolieren von Tests erleichtern, um sich auf eine bestimmte Funktion zu konzentrieren.

  • Verwenden Sie die Calendar-Klasse für die Unterstützung von internationalen Kalendern. In Hilo werden Methoden und Eigenschaften der Windows::Globalization::Calendar-Klasse verwendet. Beispielsweise wird in Hilo die Calendar::NumberOfMonthsInThisYear-Eigenschaft abgerufen, um die Anzahl der Monate im aktuellen Jahr zu bestimmen, statt davon auszugehen, dass jedes Jahr immer aus 12 Monaten besteht. Die Kalenderlogik von Hilo ist in der Datei "CalendarExtensions.cpp" enthalten.

Sie können die Lokalisierung Ihrer App testen, indem Sie die Liste der bevorzugten Sprachen in der Systemsteuerung konfigurieren. Weitere Informationen dazu, wie Sie die App für den weltweiten Einsatz vorbereiten, finden Sie unter So wird's gemacht: Vorbereiten für die Lokalisierung, Guidelines for app resources und Schnellstart: Übersetzen von UI-Ressourcen.

Testen der App mit dem Zertifizierungskit für Windows-Apps

Um optimale Voraussetzungen zum Zertifizieren der App zu schaffen, überprüfen Sie die App mit dem Zertifizierungskit für Windows-Apps. Das Kit führt eine Reihe von Tests aus, um zu überprüfen, ob die App bestimmte Zertifizierungsanforderungen für den Windows Store erfüllt. Dieses Tests umfassen folgende Aufgaben:

  • Untersuchen des App-Manifests, um sicherzustellen, dass sein Inhalt richtig ist.
  • Untersuchen der im App-Manifest definierten Ressourcen, um sicherzustellen, dass sie vorhanden und gültig sind.
  • Testen der Flexibilität und Stabilität der App.
  • Bestimmen, wie schnell die App gestartet und wie schnell sie angehalten wird.
  • Überprüfen, ob die App nur APIs für Windows Store-Apps lädt.
  • Überprüfen, ob die App Windows-Sicherheitsfeatures verwendet.

Sie müssen das Zertifizierungskit für Windows-Apps für ein Releasebuild der App ausführen, andernfalls schlägt die Validierung fehl. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Debug- und Releasekonfigurationen.

Sie können zudem die App jedes Mal überprüfen, wenn Sie sie erstellen. Wenn Sie Team Foundation Build ausführen, können Sie Einstellungen auf dem Buildcomputer ändern, damit das Zertifizierungskit für Windows Apps bei jedem Erstellen der App automatisch ausgeführt wird. Weitere Informationen finden Sie unter Überprüfen eines Pakets in automatisierten Builds.

Weitere Informationen finden Sie unter So wird's gemacht: Testen Ihrer App mit dem Zertifizierungskit für Windows-Apps.

[Oben]

Erstellen einer Prüfliste für die Windows Store-Zertifizierung

Sie verwenden den Windows Store als primäre Methode, um Ihre Apps zu verkaufen oder verfügbar zu machen. Informationen zum Vorbereiten und Übermitteln der App finden Sie unter Übermitteln der App.

Wir empfehlen, dass Sie beim Planen der App eine Prüfliste für Veröffentlichungsanforderungen erstellen, die Sie später beim Testen der App verwenden können. Diese Prüfliste kann je nach Art der von Ihnen erstellten App und der geplanten Monetarisierung der App variieren. Dies ist die Prüfliste:

  1. Eröffnen Sie ein Entwicklerkonto. Sie benötigen ein Entwicklerkonto, um Apps in den Windows Store hochzuladen. Weitere Informationen finden Sie unter Registrieren für ein Windows Store-Entwicklerkonto.
  2. Reservieren Sie einen App-Namen. Sie können einen App-Namen für die Dauer eines Jahrs reservieren. Wenn Sie die App nicht innerhalb des Jahrs übermitteln, erlischt die Reservierung. Weitere Informationen finden Sie unter Benennen und Beschreiben Ihrer App.
  3. Erwerben Sie eine Entwicklerlizenz. Sie benötigen zum Entwickeln einer Windows Store-App eine Entwicklerlizenz. Weitere Informationen finden Sie unter Anfordern einer Entwicklerlizenz für Windows 8.
  4. Bearbeiten Sie das App-Manifest. Ändern Sie das App-Manifest, um die Funktionen der App festzulegen, und stellen Sie Elemente wie z. B. Logos bereit. Weitere Informationen finden Sie im Thema zum Manifest-Designer.
  5. Verknüpfen Sie die App mit dem Windows-Store. Wenn Sie die App mit dem Windows Store verknüpfen, wird die App-Manifestdatei mit den Store-spezifischen Daten aktualisiert.
  6. Kopieren Sie einen Screenshot der App in den Windows Store.
  7. Erstellen Sie das App-Paket. Dies erfolgt am einfachsten mit Visual Studio. Weitere Informationen finden Sie unter Packen einer App mit Visual Studio 2012. Alternativ können Sie das App-Paket an der Eingabeaufforderung erstellen. Weitere Informationen finden Sie unter Erstellen eines App-Pakets an einer Eingabeaufforderung.
  8. Laden Sie das App-Paket in den Windows Store hoch. Während des Uploads werden die Pakete Ihrer App auf die Einhaltung der technischen Aspekte aus den App-Zertifizierungsanforderungen überprüft. Wenn die App diese Tests besteht, wird eine Meldung angezeigt, die den erfolgreichen Upload angibt. Wenn ein Paket den Uploadtest nicht besteht, wird eine Fehlermeldung angezeigt. Weitere Informationen finden Sie unter Beheben von Fehlern beim Paketupload.

Wir haben Hilo zwar nicht in den Windows Store hochgeladen, jedoch die erforderlichen Schritte ausgeführt, um sicherzustellen, dass sie die Validierung besteht.

Bevor Sie das App-Paket für den Upload in den Windows Store erstellen, führen Sie die folgenden Schritte aus:

  • Lesen Sie die Prüfliste für die App-Übermittlung. In dieser Prüfliste werden die Informationen angegeben, die Sie bereitstellen müssen, wenn Sie die App hochladen. Weitere Informationen finden Sie in der Prüfliste für die App-Übermittlung.
  • Stellen Sie sicher, dass Sie mit dem Zertifizierungskit für Windows-Apps einen Releasebuild der App überprüft haben. Weitere Informationen finden Sie unter Testen der App mit dem Zertifizierungskit für Windows-Apps.
  • Erstellen Sie Screenshots, die die wichtigsten Features der App zeigen.
  • Lassen Sie Ihre App von anderen Entwicklern testen. Weitere Informationen finden Sie unter Lokales Freigeben eines App-Pakets.

Wenn die App persönliche Daten erfasst oder Software von Dritten verwendet, müssen Sie außerdem Datenschutzbestimmungen oder zusätzliche Lizenzbedingungen einschließen.

[Oben]

 

 

Anzeigen:
© 2014 Microsoft