Programowanie


Automatyzacja procesu testowania oprogramowania cz. II

"Testowanie jest jednym z najważniejszych etapów cyklu życia oprogramowania. Finalna jakość aplikacji w bardzo dużym stopniu zależy od sposobów oraz jakości wykonywanych testów. Proces testowania jest bardzo czasochłonny oraz monotonny, łatwo tutaj o przeoczenia i pomyłki. [...]" - ciąg dalszy...

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.

Rational Robot
Rys. 1. Rozpoznawanie komponentów wybranego oknat
(Widok okna)

Widok Rational Robot
Rys. 2. Rozpoznawanie komponentów wybranego okna przez Rational Robot
(Widok Rational Robot)

Dodał: Marcin​Apostoluk
Dział: Programowanie


 

ComputerSun.pl na FaceBooku
Polecamy lekturę:

Po prostu Mac OS X 10.5 Leopard PL



X

Zapisz się na biuletyn serwisu ComputerSun.pl, aby otrzymać poradnik:

Zabezpieczanie sieci bezprzewodowych. Przydatne wskazówki jak chronić sieć domową przed intruzami

Imię:  
Email:
Tak, akceptuję Politykę Prywatności