Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Lipiec, 2012

Selenium

Autor: Piotr Karpiuk o 11. lipca 2012

Testowanie aplikacji webowych ma swoją specyfikę. Mam na myśli różnorodność systemów operacyjnych, typów przeglądarek i ich wersji, koncentrację na interfejsie użytkownika, a w przypadku samego środowiska JavaScript takie zagadnienia jak powszechne stosowanie asynchronicznego API czy funkcji anonimowych (co utrudnia pisanie testów jednostkowych, np. za pomocą środowiska QUnit). Znajomość obsługi deweloperskiego narzędzia do testowania integracyjnego dowolnej aplikacji webowej, w tym nagrywania i odtwarzania makr, pozwoliłaby na znaczącą poprawę jakości kodu, ale także przyspieszenie deweloperki – bo często zachodzi potrzeba nużącego „przeklikania się” do formatki którą właśnie oprogramowujemy, a perspektywa automatyzacji takiego klikania jest bardzo kusząca. Z mojego rozeznania wynika że takie narzędzie powstało, i jest nim Selenium.

To narzędzie testuje interfejs użytkownika przez symulowanie działań, które mogą być podejmowane przez użytkownika.

Pakiet Selenium jest złożony z dwóch części, które można używać niezależnie:

  • środowisko IDE w postaci wtyczki do Firefoksa,
  • serwer Javy seleniumrc, który potrafi otworzyć dowolną przeglądarkę i wykonać w niej dowolny test Selenium; serwer ten udostępnia też API.

Pojedynczy test Selenium jest zapisywany w pliku HTML w postaci tabeli HTML. Każdy krok testu odpowiada wierszowi tabeli. Wiersz składa się z 3 kolumn:

  • komendy do uruchomienia; można je podzielić na akcje (np. click, keydown itp.) i asercje (mogą zakończyć skrypt z błędem, ale nie modyfikują strony; mogą w szczególności poczekać na spełnienie warunku); podstawowe polecenia nie uwzględniają możliwości zastosowania instrukcji warunkowych ani pętli (ale patrz wtyczka goto_sel_ide)
  • elementu dla którego zostanie ona wykonana (można go określić za pomocą id, nazwy elementu formularza, wyrażenia XPath, selektora CSS, lub tekstu odsyłacza),
  • opcjonalnego dodatkowego parametru, np. tekstu do wpisania w elemencie danych wejściowych podczas testowania formularza.

Uwaga: za pomocą Selenium nie da się zasymulować przeciągania pliku z pulpitu do przeglądarki.
Czytaj więcej »

Napisany w WWW | Brak komentarzy »

Android Life

Autor: Piotr Karpiuk o 5. lipca 2012

Kolejne czasopismo dla użytkowników Androida: Android Life, tym razem związane z PC World, cena 24,90. Dla mnie wartościowych informacji jest tam niewiele:

Trendy

Najpopularniejsza rozdzielczość smartfonów z Androidem: 800×480, przeciętny rozmiar ekranu to ok. 4 cale. Dla tabletów jest to 10.1 cala, rozdzielczość ekranu osiąga już 1920×1200 (Transformer Prime), a nawet 2048×1536 (najnowszy iPad).
Według badań jedną z najważniejszych funkcji telefonu komórkowego jest aparat fotograficzny, a droższe smartfony są już dziś w stanie zastąpić tanie aparaty kompaktowe.
Rozwój smartfonów coraz bardziej zagraża pozycji konsoli, szczególnie przenośnych.
Na Zachodzie rozwijają się powoli serwisy, które umożliwiają grę uruchomioną na serwerze, gdy na ekran komputer-terminalu wysyłany jest jedynie przetworzony obraz.
Firma Canonical pracuje nad tym, aby przyszła wersja Linuksa Ubuntu dała się uruchomić na smartfonie, co w połączeniu z zewnętrznym ekranem i bezprzewodowo podłączonymi myszką i klawiaturą może zastąpić komputer.

Ciekawsze aplikacje

Sleep as Android
Gdy trzymamy smartfon w nocy na łóżku zaraz obok poduszki, aplikacja bada naszą fazę snu i budzi przyjemnymi, narastającymi odgłosami natury. Wybiera do tego najlepszy moment fazy płytkiego snu, w wyznaczonych widełkach czasowych, a po pewnym czasie pozwala na przeglądanie zapisanych statystyk. Na stronie autora czytamy, że program działa wykorzystując akcelerometr i czujnik orientacji, które są na tyle dokładne by wykrywać ruch na materacu. Autor zakłada, że więcej ruchu oznacza płytszy sen. Aplikacja ma ocenę 4.5/5 (przy ponad 20 tys. głosów).

Czytaj więcej »

Napisany w Android | Brak komentarzy »

IndexedDB

Autor: Piotr Karpiuk o 3. lipca 2012

W zakresie trwałego przechowywania danych po stronie klienta aplikacji webowych mamy obecnie sporo mechanizmów do wyboru: Web Storage, File API, jak również bazy danych. Co do baz danych, istnieją dwie alternatywy:

  • WebSQL, czyli relacyjna baza danych (w praktyce SQLite) i dostęp za pomocą SQLa – obecna we wszystkich liczących się przeglądarkach z wyjątkiem MSIE i FF, ale pod koniec 2010 roku wycofana ze standardu HTML5,
  • IndexedDB, czyli noSQLowa, obiektowa baza danych, dla odmiany ujęta w standardzie HTML5.

Niniejszy artykuł pozwoli sobie wyrobić zdanie na temat IndexedDB, technologii obecnej w przeglądarkach FF 4+, Chrome 11+ i MSIE 10+. Najpierw kilka akapitów ogólnego opisu, a na końcu przykład.

Twórcy IndexedDB postawili za cel stworzenie API do przechowywania (w szczególności offline) po stronie klienta dużych ilości danych dla celów wydajnego przeszukiwania z wykorzystaniem indeksów. Jedna aplikacja webowa (identyfikowana przez trójkę: protokół, domena, port – patrz zasada same origin policy) może tworzyć wiele baz danych różniących się nazwami. W obrębie bazy mamy magazyny (ang. object stores) – odpowiedniki tabel w relacyjnych bazach danych – gdzie trzymamy pary klucz/wartość. Kluczem może być łańcuch, data lub liczba, a wartością dowolny JSON (z dodatkowo dostępnymi typami date, regexp, undefined, a w FF nawet file i blob). W rzeczywistości klucz w parze klucz/wartość nie musi być osobnym ręcznie generowanym bytem (ang. out-of-line key), lecz może być generowany automatycznie (odpowiednik sekwencji w relacyjnych bazach danych), jak również może być częścią wartości (ang. in-line key), np. dla obiektu { pesel: '77061512654', imie: 'Jan', nazwisko: 'Kowalski' } możemy podczas tworzenia magazynu zdefiniować ścieżkę klucza (ang. key path) w postaci identyfikatora pesel, co spowoduje że kluczem dla wartości staje się jej pole pesel.

Czytaj więcej »

Tags: ,
Napisany w Uncategorized, WWW | Brak komentarzy »