Zaawansowany monitoring www

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.

selenium_ide

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” „http://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:

login_janek

 

Po zalogowaniu weryfikujemy fragment wyświetlanego tekstu „Witaj, janek”

verify

W kolejnym kroku przechodzimy do zakładki „Download” i sprawdzamy dostępność wybranych pozycji – sekcja Download, archiwum op5 Monitor:

download

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(„http://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” „http://it.emca.pl” „*firefox”

Wynik: OK – com.example.tests.Itemcapl Test passed | ExecTime=19604ms;;;;

 

Tak przygotowany test dodajemy do aplikacji op5 Monitor:

check_sel

System będzie sam wykonywał scenariusz testowy odpowiednio informując operatora o błędach oraz zapisując czas wykonania w postaci grafiki.

op5_selenium

 

 

Informacje dodatkowe:

Strona projektu http://seleniumhq.org/

Integracja z monitoringiem http://devops-abyss.blogspot.com/2010/06/selenium-and-nagios.html