Udostępnij za pośrednictwem


Używanie automatyzacji interfejsu użytkownika do testowania automatycznego

W tym omówieniu opisano, jak automatyzacja interfejsu użytkownika firmy Microsoft może być przydatna jako struktura dostępu programowego w scenariuszach zautomatyzowanego testowania.

Automatyzacja interfejsu użytkownika udostępnia ujednolicony model obiektów, który umożliwia wszystkim strukturom interfejsu użytkownika uwidacznianie złożonych i bogatych funkcji w sposób dostępny i łatwy w zautomatyzowany sposób.

Automatyzacja interfejsu użytkownika została opracowana jako następca usługi Microsoft Active Accessibility— struktura zaprojektowana w celu zapewnienia rozwiązania do udostępniania kontrolek i aplikacji. Microsoft Active Accessibility nie została zaprojektowana z myślą o automatyzacji testów, chociaż rozwinęła się do tej roli ze względu na podobne wymagania dotyczące ułatwień dostępu i automatyzacji. Automatyzacja interfejsu użytkownika została specjalnie zaprojektowana w celu zapewnienia niezawodnych funkcji do testowania automatycznego, a także zapewnia bardziej wyrafinowane rozwiązania dla ułatwień dostępu. Na przykład usługa Microsoft Active Accessibility opiera się na jednym interfejsie, aby uwidocznić informacje o interfejsie użytkownika i zebrać informacje potrzebne przez produkty technologii pomocniczej; Automatyzacja interfejsu użytkownika oddziela dwa modele.

Zarówno dostawca, jak i klient są zobowiązani do zaimplementowania automatyzacji interfejsu użytkownika, aby była przydatna jako narzędzie do testowania automatycznego. Dostawcy automatyzacji interfejsu użytkownika to aplikacje, takie jak Microsoft Word, Microsoft Excel i inne aplikacje lub kontrolki innych firm oparte na systemie operacyjnym Windows. Klienci automatyzacji interfejsu użytkownika obejmują zautomatyzowane skrypty testowe i aplikacje technologii pomocniczej.

Ten temat zawiera następujące sekcje.

Automatyzacja interfejsu użytkownika w dostawcach

Aby zautomatyzować element interfejsu użytkownika, deweloper musi sprawdzić, jakie działania użytkownik końcowy może wykonać w obiekcie interfejsu użytkownika przy użyciu standardowej interakcji za pomocą klawiatury i myszy. Po zidentyfikowaniu tych kluczowych akcji, wzorce sterowania automatyzacją interfejsu użytkownika, które odzwierciedlają funkcje i zachowanie elementu interfejsu użytkownika, powinny zostać zaimplementowane w kontrolce. Na przykład interakcja użytkownika z kontrolką pola kombi zwykle polega na rozwinięciu i zwijaniu pola kombi w celu wyświetlenia lub ukrycia listy elementów, wybrania elementu z listy lub dodania nowej wartości za pomocą wprowadzania za pomocą klawiatury.

W przypadku innych modeli ułatwień dostępu deweloperzy muszą zbierać informacje bezpośrednio z poszczególnych przycisków, menu lub innych kontrolek. Każdy typ kontrolki zawiera dziesiątki drobnych odmian. Innymi słowy, mimo że 10 odmian przycisków działa w ten sam sposób i spełnia tę samą funkcję, wszystkie muszą być traktowane jako unikalne przyciski. Nie ma możliwości, aby wiedzieć, że te kontrolki są funkcjonalnie równoważne. Wzorce automatyzacji interfejsu użytkownika zostały opracowane w celu reprezentowania tych typowych zachowań elementów sterujących. Aby uzyskać więcej informacji, zobacz Przegląd wzorców kontrolek automatyzacji interfejsu użytkownika.

Bez ujednoliconego modelu wzorców sterowania udostępnianych przez automatyzację interfejsu użytkownika narzędzia testowe i deweloperzy muszą mieć informacje specyficzne dla platformy, aby uwidocznić właściwości i zachowania sterowania w tej strukturze. Ponieważ w systemach operacyjnych Windows może być jednocześnie obecnych kilka różnych struktur interfejsu użytkownika, w tym Microsoft Win32, Windows Forms i Windows Presentation Foundation (WPF), może to być trudne zadanie do testowania wielu aplikacji z kontrolkami, które wydają się podobne. Na przykład w poniższej tabeli wymieniono nazwy właściwości specyficzne dla platformy wymagane do pobrania nazwy lub tekstu skojarzonego z kontrolką przycisku i przedstawiono równoważną właściwość automatyzacji interfejsu użytkownika.

Typ kontrolki Struktura interfejsu użytkownika Właściwość specyficzna dla struktury Właściwość automatyzacji interfejsu użytkownika
Przycisk WPF Zawartość Właściwość Nazwa
Przycisk Win32 Podpis Właściwość Name
Obraz HTML Alt Właściwość Name

 

Dostawcy automatyzacji interfejsu użytkownika są odpowiedzialni za mapowanie właściwości kontrolek specyficznych dla platformy na równoważne właściwości automatyzacji interfejsu użytkownika. Aby uzyskać informacje na temat implementowania automatyzacji interfejsu użytkownika u dostawcy, zobacz Przewodnik programisty dostawcy automatyzacji interfejsu użytkownika. Aby uzyskać informacje na temat implementowania wzorców kontrolek, zobacz Implementowanie wzorców kontrolek automatyzacji interfejsu użytkownika.

Automatyzacja interfejsu użytkownika na klientach

Celem zautomatyzowanych narzędzi do testowania i scenariuszy jest spójne i powtarzalne manipulowanie interfejsem użytkownika. Na przykład może to obejmować testowanie jednostkowe określonych kontrolek oraz rejestrowanie i uruchamianie skryptów testowych, które iterują przez serię akcji ogólnych w grupie kontrolek.

Komplikacją w zautomatyzowanych aplikacjach jest trudności z synchronizacją testu z dynamicznym celem, na przykład kontrolką pola listy, taką jak Menedżer zadań systemu Windows, która wyświetla listę aktualnie uruchomionych aplikacji. Ponieważ elementy w polu listy są dynamicznie aktualizowane poza kontrolą aplikacji testowej, próba powtórzenia zaznaczenia określonego elementu w polu listy z dowolną spójnością jest niemożliwa. Podobne problemy mogą wystąpić podczas próby powtórzenia prostych zmian fokusu w interfejsie użytkownika, który znajduje się poza kontrolą aplikacji testowej.

Dostęp programowy

Dostęp programistyczny zapewnia możliwość naśladowania za pomocą kodu wszelkich interakcji i doświadczeń dostępnych poprzez tradycyjne wprowadzanie myszy i klawiatury. Automatyzacja interfejsu użytkownika umożliwia dostęp programowy za pośrednictwem pięciu składników:

  • Drzewo automatyzacji interfejsu użytkownika ułatwia nawigację za pośrednictwem struktury interfejsu użytkownika. Drzewo jest tworzone na podstawie kolekcji HWNDs. Aby uzyskać więcej informacji, zobacz Omówienie drzewa automatyzacji interfejsu użytkownika.
  • Elementy automatyzacji są poszczególnymi składnikami w interfejsie użytkownika. Często mogą one być bardziej szczegółowe niż HWND.
  • Właściwości automatyzacji zawierają określone informacje o elementach interfejsu użytkownika. Aby uzyskać więcej informacji, zobacz omówienie właściwości automatyzacji interfejsu użytkownika .
  • Wzorce kontrolek definiują konkretny aspekt funkcjonalności kontrolki; Mogą one składać się z informacji o właściwości, metodzie, zdarzeniu i strukturze. Aby uzyskać więcej informacji, zobacz Przegląd wzorców kontrolek automatyzacji interfejsu użytkownika.
  • Zdarzenia automatyzacji zapewniają powiadomienia o zdarzeniach i informacje. Aby uzyskać więcej informacji, zobacz Omówienie zdarzeń automatyzacji interfejsu użytkownika.

Kluczowe właściwości automatyzacji testów

Możliwość unikatowego identyfikowania, a następnie lokalizowania dowolnej kontrolki w interfejsie użytkownika, zapewnia podstawę dla zautomatyzowanych aplikacji testowych do działania w tym interfejsie użytkownika. Właściwości automatyzacji interfejsu użytkownika używane przez klientów i dostawców do identyfikowania i lokalizowania kontrolek opisano w poniższej tabeli.

Własność Opis
Identyfikator automatyzacji Jednoznacznie odróżnia element automatyzacji od swoich rówieśników. Obsługa właściwości AutomationId nie jest wymagana. Gdy jest dostępna, właściwość AutomationId elementu jest taka sama w dowolnym wystąpieniu aplikacji, niezależnie od języka lokalnego. Mimo że właściwość AutomationId jest unikatowa wśród elementów równorzędnych, może nie być unikatowa na całym pulpicie. Na przykład wiele wystąpień aplikacji lub wielu widoków folderów w Eksploratorze Microsoft Windows może zawierać elementy z tą samą właściwością AutomationIdProperty, taką jak "SystemMenuBar". Klienci nie powinni podejmować żadnych założeń dotyczących identyfikatorów AutomationId uwidocznionych przez inne aplikacje. Identyfikator AutomationId nie ma gwarancji, że będzie stabilny w różnych wersjach lub kompilacjach aplikacji.
Typ kontrolki Określa typ kontrolki reprezentowany przez element automatyzacji. Istotne informacje można wywnioskować na podstawie wiedzy o typie kontrolki. Aby uzyskać więcej informacji, zobacz Typy kontrolek automatyzacji interfejsu użytkownika — omówienie.
Nazwa Ciąg tekstowy, który identyfikuje lub wyjaśnia przeznaczenie elementu automatyzacji. Należy go używać ostrożnie, ponieważ może wywierać lokalne efekty. Właściwość Name nie jest unikatowym identyfikatorem wśród równorzędnych elementów. W przypadku automatyzacji testów klienci powinni zamiast tego używać właściwości AutomationId lub właściwości RuntimeId.
Identyfikator środowiska uruchomieniowego Tablica liczb całkowitych reprezentujących identyfikator elementu automatyzacji. Identyfikator jest unikatowy na pulpicie, ale musi być unikatowy tylko dla interfejsu użytkownika pulpitu, na którym został wygenerowany. Identyfikatory mogą być ponownie używane w czasie. Użyj IUIAutomation::CompareElements, aby określić, czy element, który obecnie ma określony identyfikator środowiska uruchomieniowego, jest tym samym elementem, który wcześniej miał ten identyfikator. Ponadto format właściwości RuntimeId może ulec zmianie. Powinna być traktowana jako nieprzezroczysta wartość i używana tylko do porównania; na przykład w celu określenia, czy element automatyzacji znajduje się w pamięci podręcznej.

 

Inspect (Inspect.exe) to narzędzie oparte na systemie Windows, którego można użyć do zbierania informacji automatyzacji interfejsu użytkownika na potrzeby programowania i debugowania klientów. Narzędzie Inspect jest uwzględnione w zestawie narzędzi programistycznych Windows (SDK).

Zagadnienia dotyczące zabezpieczeń automatyzacji interfejsu użytkownika