Zaawansowany monitoring aplikacji internetowych
op5 Monitor, Selenium, Nagios
Monitoring aplikacji WWW realizujemy na kilka sposobów. Sprawdzamy połączenia telnet, nawiązujemy połączenie http, weryfikujemy poprawną pracę procesów serwera, a jednak zdarza się, że pomimo poprawnej weryfikacji tych elementów użytkownik zgłasza błąd. Aktywny użytkownik portalu to najlepszy test działania systemu. Chcemy wykonywać monitoring w taki sposób jak pracuje użytkownik danej aplikacji www.
Monitoring oczami użytkownika
Nasi klienci, dyrektorzy wewnętrznych departamentów biznesu nie są zainteresowani poprawną pracą poszczególnych składników systemu informatycznego. Najważniejszym produktem systemu jest obsługa użytkownika, a on sam pracuje poprzez przeglądarkę, wykonując zaawansowane operacje których skutek trudno jest interpretować na poziomie systemu operacyjnego czy bazy danych. A dlaczego nie zapamiętać wszystkich operacji które wykonuje użytkownik i nie stworzyć odpowiednich testów aplikacji WWW podłączonych do op5 Monitora ? Taką możliwość daje integracja monitoringu IT z projektem Selenium.
Selenium – symulator użytkownika
Selenium to kolejny bardzo zaawansowany projekt OpenSource. Narzędzie to jest przeznaczone do automatycznego testowania aplikacji internetowych. Rozwiązanie składa się z kilku elementów z czego my wykorzystamy:
- Selenium IDE firefox plugin
- Selenium Server
- Selenium Java client
- JUnit
Op5 Monitor z Selenium – jak to działa ?
Monitoring w oparciu o projekt Selenium to wyjątkowo silne narzędzie. Utworzone testy są wykonywane po stronie serwera monitorującego op5 za pomocą pełnej instancji przeglądarki internetowej np. firefox pracującej w tle. Nagrany test za pomocą serwera Selenium przekazywany jest do przeglądarki gdzie interpretowane są wszelkie kroki zawarte w scenariuszu. Poprzez wykorzystanie pełnej przeglądarki mamy pewność, że test jest wykonywany dokładnie w taki sposób jakby to robił użytkownik przy swoim stanowisku pracy. Błąd podczas wykonywania testów będzie widoczny w op5 Monitorze a operatorzy otrzymają odpowiednie informacje o awarii poprzez email oraz sms.
Nagraj pracę użytkownika
Selenium IDE firefox plugin to dodatek do przeglądarki internetowej lokalnego PC umożliwiający nagranie dowolnej pracy użytkownika na stronie WWW. Proste wciśnięcie klawisza nagrania rozpoczyna rejestrację kolejnych kroków, które później posłużą nam w aplikacji monitorującej.
Nagranie umożliwia zapamiętanie wprowadzonych danych użytkownika podczas logowania, wyboru linków oraz klawiszy a na dodatek weryfikuje napotkane elementy tekstowe na poszczególnych witrynach. W bardzo łatwy sposób możemy zatem utworzyć scenariusz testowy zawierający dla przykładu symulację pracy w sklepie internetowym, gdzie po zalogowaniu wyszukujemy towar, sprawdzamy jego opis, kupujemy, rezygnujemy z zakupu i opuszczamy aplikację. Utworzone nagranie zapisujemy a następnie exportujemy do formatu JUnit 3 (Remote Control) np. pod nazwą portaltest.java . Tym sposobem otrzymujemy plik w języku Java z opisem naszego testu użytkownika. Ten plik przenosimy na serwer monitorujący op5.
Przygotowanie serwera op5 Monitor / Nagios
Testy w projekcie Selenium wykonywane są poprzez przeglądarkę internetową (np. firefox) uruchamianą na serwerze op5 Monitor. Do tego celu musimy wzbogacić nasza standardową instalację o pakiety:
- Dowolny X Server np. pakiet „GNOME Desktop Environment”
- Przeglądarka firefox
- Środowisko Java
- Xvfb – wirtualny serwer X
Start servera Selenium: /opt/java/bin/java -jar ./selenium-server-standalone-2.0.0.jar
Start wirtualnego X servera: /etc/init.d/xvfb start
Test Selenium IDE wymaga kompilacji:
/opt/jdk1.6.0_26/bin/javac -cp /opt/plugins/selenium/junit-4.8.1.jar:/opt/plugins/selenium/selenium-server-standalone-2.0.0.jar portaltest.java
Po kompilacji otrzymujemy plik portaltest.class który jest już gotowym testem do uruchomienia poprzez serwer Selenium. Poniższe polecenie uruchamia test:
/opt/java/bin/java -cp /opt/plugins/lib/selenium-java-client-driver.jar:/opt/plugins/lib/junit-4.8.1.jar:/com/example/tests/.: CallSeleniumTest „com.example.tests.portaltest” „https://it.emca.pl” „*firefox”
Przykład wykorzystania
Nagramy test pracy użytkownika na stronie internetowej. W pierwszym kroku uruchamiamy dodatek do przeglądarki firefox Selenium IDE i rozpoczynamy nagranie.
Na stronie it.emca.pl użytkownik podaje swój login i hasło co zapamiętujemy wybierając odpowiednią opcją we właściwościach:
Po zalogowaniu weryfikujemy fragment wyświetlanego tekstu „Witaj, janek”
W kolejnym kroku przechodzimy do zakładki „Download” i sprawdzamy dostępność wybranych pozycji – sekcja Download, archiwum op5 Monitor:
Ostatni krok to wciśnięcie klawisza Wyloguj.
Exportujemy zapisane scenariusz do formatu Javy – Junit 3 (Remote Control). Otrzymany kod to:
package com.example.tests;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class Itemcapl extends SeleneseTestCase {
public void setUp() throws Exception {
setUp(„https://it.emca.pl/„, „*chrome”);
}
public void testItemcapl() throws Exception {
selenium.open(„/”);
selenium.type(„mod_login_username”, „janek”);
selenium.type(„mod_login_password”, „wwqq”);
selenium.click(„Submit”);
selenium.waitForPageToLoad(„30000”);
verifyTrue(selenium.isTextPresent(„Witaj, janek”));
selenium.open(„/pl/download.html”);
verifyTrue(selenium.isTextPresent(„op5 Monitor”));
selenium.click(„Submit”);
selenium.waitForPageToLoad(„30000”);
}
}
Plik przenosimy na serwer op5 i kompilujemy:
/opt/jdk1.6.0_26/bin/javac -cp /opt/plugins/selenium/junit-4.8.1.jar:/opt/plugins/selenium/selenium-server-standalone-2.0.0.jar Itemcapl.java
Po stronie op5 test uruchamiamy poprzez komendę:
/opt/java/bin/java -cp /opt/plugins/selenium/selenium-java-client-driver.jar:/opt/plugins/selenium/junit-4.8.1.jar:/com/example/tests/.: CallSeleniumTest „com.example.tests.Itemcapl” „https://it.emca.pl” „*firefox”
Wynik: OK – com.example.tests.Itemcapl Test passed | ExecTime=19604ms;;;;
Tak przygotowany test dodajemy do aplikacji op5 Monitor:
System będzie sam wykonywał scenariusz testowy odpowiednio informując operatora o błędach oraz zapisując czas wykonania w postaci grafiki.
Informacje dodatkowe:
Strona projektu http://seleniumhq.org/
Integracja z monitoringiem http://devops-abyss.blogspot.com/2010/06/selenium-and-nagios.html