Automatizované testy uživatelského rozhraní Michael Juřek Software Architect Microsoft s.r.o.
Agenda Co je test UI a kdy ho použít? Anatomie testu UI Pokročilé možnosti Doporučení
Proč vytvářet testy UI? Šetří čas nutný pro funkční testování aplikace Brání regresním chybám: Pokud přestane něco fungovat, zjistíte to okamžitě Kdy se vyplatí? Pokud: PočetOpakováníTestu * DobaManuálníhoTestu > PracnostVytvořeníAutomatickéhoTestu
Vhodný příklad použití Controller Model View Integrační testy Unit testy Testy UI
Zapojení do životního cyklu Test UI je speciální unit test (C# nebo VB): Spravován a verzován spolu s kódem Vytvořen ve VS 2010 Premium nebo Ultimate Test Case je nový typ pracovní položky Přiřazením testu UI se stane automatizovaným Možnosti spouštění testu UI: Na vývojářské stanici (jako unit test) Během týmového buildu (jako test case), společně s nasazením aplikace do virtuálního prostředí Z nástroje Test Manager (jako test case)
Vytvoření testu UI Dva způsoby: Z manuálního test casu nahraného pomocí Test Manageru Nutno dodat kontroly výsledků Z Visual Studia 2010: Nástroj Coded UI Test Builder
demo Vytvoření testu UI
Agenda Co je test UI a kdy ho použít? Anatomie testu UI Pokročilé možnosti Doporučení
Architektura komponent Web Plug-ins (MSHTML/DOM) Interpreter Coded UI Test Code Generation Test Manager Playback Recorder Rich Client Plug-ins (UIA/MSAA) Filter/ Aggregation Rules API Property Provider 3rd Party Plug-ins Technology Abstraction Layer Browser Service
Podporované platformy Plně podporováno: WPF 3.5+ (pozor na ovládací prvky třetích stran) WinForms 2.0+ (pozor na ovládací prvky třetích stran) Webové aplikace v IE7 a IE8 Podporováno s omezeními: Silverlight 4.0 (nutný Feature Pack 2, pouze v prohlížeči, nutná reference na helper DLL) Webové aplikace ve Firefox 3.6+ (nutný Feature Pack 2, pouze přehrávání, ne nahrávání) Nepodporováno, ale rozumně funguje: C++ (MFC, Win32, …) Nefunguje: Ostatní prohlížeče, Office, Flash, Java na klientovi, SAP, …
Mapa uživatelského rozhraní Soubor s příponou .uitest Dvě části: Strom použitých (ne všech) ovládacích prvků Každý prvek je definován vyhledávacími kritérii Posloupnosti kroků – jsou volány z vlastního testu Akce (Actions) Kontroly (Assertions) Nástroje: Vytváření/Nahrávání – Coded UI Test Builder Editace – Coded UI Test Editor (součást Feature Pack 2)
Složky mapy UI Jmeno.uitest Jmeno.Designer.cs Jmeno.cs Deklarativní XML definice ovládacích prvků a akcí Vytvářen a upravován speciálními nástroji Jmeno.Designer.cs Generován při každé změně .uitest Nedotýkat se! Jmeno.cs Sem můžete doplňovat svůj kód (partial class) Sekvence akcí, kontroly podmínek, parametrizované metody apod. V editoru je části XML možné převádět do tohoto souboru
Mechanismus nahrávání/přehrávání Odfiltrování irelevantních akcí v UI Agregace na co nejvyšší úroveň abstrakce Click na textbox, stisky kláves -> vložení textu do textboxu Přehrávání: Vyhledání prvku podle definovaných vyhledávacích kritérií Wait for ready (WFR) – čeká se, dokud není připraven na vstup Kontrola viditelnosti ovládacího prvku Provedení akce Kontrola, zda prvek opravdu příslušnou akci provedl
demo Anatomie testu UI
Agenda Co je test UI a kdy ho použít? Anatomie testu UI Pokročilé možnosti Doporučení
Parametrizace Veškeré konstantní hodnoty jsou při nahrávce parametrizovány Výchozí (nahrané) hodnoty jsou nastaveny ve vlastnostech mapy UI: JmenoAkceParams JmenoKontrolyExpectedValues Možnost změny hodnot během testu: V kódu nastavte parametry prostřednictvím odpovídající vlastnosti mapy UI Zavolejte metodu mapy UI (bez parametrů)
Testy UI řízené daty Test UI lze běžet vícekrát pro různé kombinace vstupů a očekávaných výsledků Postup: Definování zdroje dat - .csv, .xml, databáze Nastavení vazby mezi testem a zdrojem dat Parametrizace s využitím TestContext.DataRow Viz http://msdn.microsoft.com/en-us/library/ee624082.aspx Možnost využít jako zdroj dat parametry zadané v definici test case: http://blogs.msdn.com/b/balagans/archive/2009/12/28/9941569.aspx
Parametrizace, testy řízené daty demo Parametrizace, testy řízené daty
Více map UI v jednom projektu Pro testování reálné složitější aplikace se jedna mapa UI stane brzo nepřehlednou Vytvoření více map umožňuje logické strukturování podle částí UI Viz http://msdn.microsoft.com/en-us/library/ff398056.aspx Je vhodné udržovat poměr 1:1 mezi mapami a testovacími třídami
PlaybackSettings Třída pro nastavování jemných parametrů přehrávání: http://blogs.msdn.com/b/vstsqualitytools/archive/2009/08/10/configuring-playback-in-vstt-2010.aspx Ve velké většině případů vyhovuje výchozí nastavení
Agenda Co je test UI a kdy ho použít? Anatomie testu UI Pokročilé možnosti Doporučení
Identifikace ovládacích prvků Prvek je možné identifkovat mnoha způsoby: TextBox s ID rovným txtLastName TextBox hned vedle popisky „Příjmení“ TextBox v pořadí 5. na formuláři Fungují v principu všechny způsoby Mají ale různou odolnost vůči budoucím změnám uživatelského rozhraní
Identifikace u webových aplikací Používejte ID u ovládacích prvků, které jsou: Jednoznačné Opakovatelé Co nejlépe lidsky čitelné V případě ASP.NET Web Forms aplikace vhodně využijete ClientIdMode http://www.thereforesystems.com/working-with-client-id-in-asp-net-4/
Identifikace u WPF/SL aplikací Jednoznačné, opakovatelné, lidsky čitelné identifikátory Databinding a návrhový vzor MVVM je ale nevyžadují Přesto je vhodné je používat - dvě možnosti: Name – zvětšuje množství vygenerovaného kódu AutomationProperties.Name – nezvyšuje množství kódu, ale je pouze ve WPF Objekty používané pro databinding v seznamech by měly mít jednoznačný a opakovatelný výsledek volání ToString() Viz http://blogs.msdn.com/b/gautamg/archive/2010/03/10/how-to-get-automation-working-properly-on-data-bound-wpf-list-or-combo-box.aspx
Další doporučení Používejte dobře čitelná jména u generovaných metod, kontrol i ovládacích prvků Každá mapa UI operuje nad jednou stránkou, formulářem, dialogem (použijte více map UI) Každá metoda operuje nad jednou stránkou, formulářem, dialogem Maximálně 10 akcí na vygenerovanou metodu Jedna kontrola na vygenerovanou metodu Využívejte co nejvíce definici v XML a co nejméně kód
Další informace Blog speciálně věnovaný testům UI http://blogs.msdn.com/b/mathew_aniyan Test and Lab Team’s Blog http://blogs.msdn.com/b/vstsqualitytools/ Demo / Trial VHD se cvičeními http://bit.ly/VS2010RTMVHD
9/8/2018 7:52 PM Závěrem Automatizované testování UI může ušetřit čas při testování aplikací Návratnost investice závisí na počtu budoucích provádění testu – vhodné zejména pro klíčové scénáře v aplikaci VS 2010 nabízí prostředky, díky kterým je vytváření automatických testů UI relativně snadné, s robustním výsledkem © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.