3. Testy interfejsu oraz transmisji sieciowych na przykładzie narzędzia Rational
Robot
Narzędzie Rational Robot jest częścią pakietu Rational Suite Enterprise
dostarczanego przez firmę Rational Software(IBM). Rational Robot wspomaga
proces automatycznego testowania oprogramowania. Umożliwia nagrywanie
odpowiednich skryptów podczas pracy użytkownika z aplikacją oraz ich późniejsze
odtwarzanie w celu sprawdzenia, czy aplikacja wciąż zachowuje się
poprawnie.
Narzędzie to jest bardzo rozbudowane, posiada liczne funkcje,
których brak prostym programom testującym. Robot jest także zintegrowany z
innymi narzędziami z pakietu Rational Suite Enterprise, co znacznie zwiększa
jego możliwości.
Skrypty - praca z programem
Praca z narzędziem Rational Robot opiera się na tworzeniu skryptów, a następnie
ich odtwarzaniu. Skrypty składają się z dwóch części:
1) Plik z treścią skryptu, który może być uruchamiany przez
Robota. Treści skryptów GUI lub skryptów zapamiętujących informacje przesyłane
przez sieć są generowane automatycznie, gdy użytkownik pracuje z aplikacja.
Robot tłumaczy akcje wykonywane przez użytkownika na odpowiednie wpisy w
treści skryptów.
2) Zbiór właściwości skryptu - przykładowo: typ i cel
skryptu.
Rational Robot obsługuje dwa typy skryptów:
- Skrypty interfejsu użytkownika(ang. GUI scripts)
- Skrypty używane do zapamiętywania i odtwarzania zapytań odpowiedzi
odpowiednio klienta i serwera w trakcie sesji (ang. VU scripts)
GUI Scripts
Skrypty GUI służą do rejestrowania akcji, które wykonuje użytkownik pracując z
aplikacja. Rational Robot zapisuje wszystkie naciśnięcia klawiszy
(ang. keystrokes), czy kliknięcia myszą. Akcje te są następnie
umieszczane w pliku skryptu napisanym w języku SQABasic. Testy wykonywane za
pomocą tych skryptów mogą posłużyć zarówno jako testy funkcjonalne, jak i testy
wydajnościowe.
Tworzenie skryptów GUI za pomocą programu Rational Robot powinno składać się z
etapów:
- Oszacowanie prawdopodobnego punktu rozpoczęcia skryptu oraz
punktu jego zakończenia. Jeśli ustali się początek i koniec wszystkich
skryptów w jednym miejscu (przykładowo na pulpicie lub w głównym
oknie aplikacji) możliwe będzie odtwarzanie wszystkich napisanych
skryptów jeden po drugim w dowolnej kolejności bez konieczności
każdorazowego dostosowania środowiska testowego.
- Przygotowanie środowiska testowego. Wszystkie elementy
środowiska testowego obecne w momencie nagrywania skryptu powinny być
odtworzone w momencie jego późniejszego uruchamiania. Ważnym elementem jest więc
minimalizacja ilości działających aplikacji, tak aby późniejsze odtwarzanie
skryptu nie wymagało wielu dostosowań.
- Załadowanie rozszerzeń środowiska, w którym wykonana jest
aplikacja. Umożliwia to testowanie punktów weryfikacyjnych dla komponentów z
różnych środowisk - funkcjonalność ta zostanie omówiona w dalszej części
pracy.
-
- Ustalenie opcji zapisywania skryptów interfejsu użytkownika
(przykładowo zapisywanie czasów pracy aplikacji, sposobów rozpoznawania
kontrolek, ustalanie skrótów klawiszowych, czy zapisywanie dokładnych pozycji
testowanych okien).
- Rozpoczęcie nagrywania skryptu. Okno programu Rational Robot
jest automatycznie minimalizowane, od tego momentu wszystkie akcje wykonane
przez użytkownika są nagrywane.
- Zakończenie nagrywania skryptu i zapisanie utworzonego skryptu.
Możliwe jest tworzenie skryptów na dwóch poziomach abstrakcji:
- Nagrywanie zorientowane na obiekty(Object-Oriented Recording) -
Rational Robot używa zaawansowanych metod(jak identyfikacja wewnętrznych nazw
obiektów), często zależnych od środowiska, w jakim wykonano aplikacje, do
wykonywania akcji na konkretnych obiektach. Robot zapisuje tylko wykonywane
akcje, niezależnie od pozycji obiektów na ekranie. Tak wiec sytuacja, w której
twórca programu przesunie przycisk z jednego miejsca w drugie nie zmieni
działania testu - dalej będzie on zachowywał się poprawnie.
Poniżej przedstawiono przykładowy skrypt na poziomie zorientowania na obiekty.
Definiuje on akcję przechwycenia okna programu Gadu-gadu oraz przesuwania okna w
różne miejsca ekranu.
Sub Main
Dim Result As
Integer
'Initially Recorded: 2006-04-02
17:48:40
'Script Name: nowy
Window SetContext,
"Class=Shell_TrayWnd",
""
Toolbar Click, "Text=Obszar
powiadomień;\;ItemText=Głośność", "Coords=9,15"
Window SetContext, "Caption=Ja
(5924416)", ""
Window MoveTo, "", "Coords=135,140"
Window MoveTo, "", "Coords=344,253"
Window MoveTo, "", "Coords=482,178"
Window MoveTo, "", "Coords=526,121"
Window MoveTo, "", "Coords=592,181"
Window MoveTo, "", "Coords=432,209"
Window CloseWin, "", ""
End Sub
|
- Nagrywanie niskopoziomowe(Low-level Recording) - zapisuje
wszystkie ruchy myszy oraz wciśnięcia klawiszy i na ich podstawie buduje skrypt.
Funkcjonalność ta jest przydatna w testowaniu aplikacji graficznych, kiedy ważne
jest dokładne odtwarzanie ruchów wykonywanych przez użytkownika. Nagrywanie
niskopoziomowe jest bardzo wrażliwe na zmiany położenia obiektów w
aplikacji.
Poniżej przedstawiono fragment skryptu o funkcjonalności identycznej
jak skrypt z przykładu a), wykonanego jednak z użyciem nagrywania
niskopoziomowego.
Rational Robot-Windows Lowlevel Script File
Printed at 17:52:22 on 2006-04-02
Started Recording at 17:52:05 on 2006-04-02
Finished Recording at 17:52:11 on 2006-04-02
Message Message Parameters Delta Time
==========================================
===================
MOUSEMOVE x: 262 y: 256 0
MOUSEMOVE x: 264 y: 261 15
MOUSEMOVE x: 266 y: 264 15
MOUSEMOVE x: 269 y: 267 31
MOUSEMOVE x: 271 y: 272 31
MOUSEMOVE x: 274 y: 275 47
MOUSEMOVE x: 278 y: 280 47
MOUSEMOVE x: 280 y: 285 62
MOUSEMOVE x: 286 y: 293 78
MOUSEMOVE x: 293 y: 304 78
MOUSEMOVE x: 299 y: 316 93
LBUTTONDOWN x: 948 y: 746 1781
MOUSEMOVE x: 948 y: 746 1781
MOUSEMOVE x: 948 y: 746 1781
LBUTTONUP x: 948 y: 746 1859
MOUSEMOVE x: 948 y: 746 1859
MOUSEMOVE x: 945 y: 741 1922
MOUSEMOVE x: 488 y: 215 3140
MOUSEMOVE x: 492 y: 215 3140
MOUSEMOVE x: 494 y: 215 3156
MOUSEMOVE x: 495 y: 215 3218
LBUTTONUP x: 495 y: 215 3343
MOUSEMOVE x: 495 y: 215 3343
LBUTTONDOWN x: 495 y: 215 3531
MOUSEMOVE x: 497 y: 215 3547
MOUSEMOVE x: 500 y: 218 3547
MOUSEMOVE x: 500 y: 218 3547
|
Punkty weryfikacyjne
Do utworzonych przez Rational Robot skryptów GUI można manualnie dodawać
elementy użytkownika. Dostępne są proste funkcje służące do uruchamiania innych
aplikacji, operowanie na timerach, czy też sztuczne wprowadzanie opóźnień w
wykonywaniu skryptu. Najważniejszymi elementami są jednak punkty weryfikujące
poprawność stanu aplikacji w danym momencie wykonywania skryptu. To one
faktycznie sprawdzają poprawność aplikacji względem wykonywanego testu.
Dostępna jest spora gama predefiniowanych punktów weryfikacyjnych gotowych do
wykorzystania w skryptach:
- porównania parametrów obiektów aplikacji - najważniejszy z
punktów weryfikacyjnych narzędzia Rational Robot. Umożliwia odczytanie
parametrów praktycznie dowolnej kontrolki z dowolnej działającej aplikacji.
Wykorzystuje wywołania API do przechwytywania zdarzeń zachodzących w obiektach
oraz odczytuje ich atrybuty. Przykładowo po wybraniu okna użytkownik może
przejrzeć wszystkie elementy okna takie jak przyciski, menu, pola tekstowe itd.
- dla każdego elementu dostępne są jego podstawowe atrybuty wraz z możliwością
sprawdzania ich wartości. Narzędzie Rational Robot w prosty sposób umożliwia
tworzenie sprawdzeń, czy dany atrybut wybranego elementu spełnia podane
kryteria. Wydawałoby się, że można w ten sposób przetestować dowolną z kontrolek
widocznych na ekranie.
Niestety niektóre kontrolki nie są standardowymi kontrolkami Windows i ich
parametry nie mogą być odczytane w taki sposób. Podobnie dzieje się np. dla
aplikacji pisanych w Javie, czy też w HTML. Dlatego też, aby przetestować te
komponenty należy załadować dodatkowe rozszerzenia dla aplikacji napisanych w
konkretnym języku programowania, a także biblioteki dla komponentów tworzonych
przez użytkownika. Umożliwi to w efekcie przetestowanie wszystkich obiektów.
- sprawdzanie stanu schowka systemowego - porównywanie z innym
ciągiem znaków,
- porównywanie wartości alfanumerycznych znajdujących się w
aktywnej kontrolce,
- porównywanie zawartości plików - przykładowo do sprawdzania
poprawności danych zapisywanych przez aplikacje,
- porównywanie wyświetlanych obrazów - narzędzie daje możliwość
zaznaczenia wybranego fragmentu okna testowanej aplikacji - wycinek okna jest w
trakcie testu porównywany z odpowiednim wycinkiem okna testowanego. Idealnie
nadaje się to do testowania aplikacji graficznych.
- sprawdzanie istnienia pliku, okna lub modułu aplikacji
wykonywalnej,
- skanowanie strony internetowej - Rational Robot wyszukuje
wszystkie elementy dostępne pod podanym adresem internetowym, rozpoznaje
strukturę katalogów i istnienie plików.
Umożliwia następnie na porównanie stanu, który odczyta ze stanem podczas
testowania. Porównanie zawartości jest możliwe także dla pojedynczych stron
internetowych, nie jest wtedy wymagane skanowanie całego portalu.
|
Rys. 1. Rozpoznawanie komponentów wybranego oknat (Widok okna)
|
|
Rys. 2. Rozpoznawanie komponentów wybranego okna przez Rational
Robot (Widok Rational Robot)
|