Języki skryptowe do automatyzacji testów

Początkujący adepci testowania automatycznego zastanawiają się czasem, jakie są języki skryptowe do automatyzacji testów?

Testy że mucha nie siada

W czym można automatyzować testy?

Z jednej strony można odpowiedzieć, że prawie we wszystkim. Większość języków oprogramowania nadaje się do automatyzacji testów, a to za sprawą wszechstronności bibliotek używanych do testów.

Np. Selenium, świetne do automatyzacji stron webowych, umożliwia pisanie testów interfejsowych w wielu językach, z czego najpopularniejsze to:

  • C# (wraz z NUnit w roli test runnera),
  • Java (tu do wyboru jUnit lub TestNG),
  • JavaScript (jak to w świecie JS – masa frameworków: WebdriverJS, WebdriverIO, NightwatchJS),
  • Ruby (RSpec, Test::Unit),
  • Python (Robot Framework, unittest, pyunit, py.test),
  • PHP (Behat, Mink).

Podobnie jest w innych narzędziach do automatyzacji, bazujących na driverze – np. Appium.

Języki skryptowe kontra kompilowane

Najlepszym wyborem dla testera będą jednak języki skryptowe. Omijają typowe problemy języków kompilowanych, oferując mnóstwo już zaimplementowanych, typowych funkcji.

Przykład? Wczytanie i sparsowanie pliku CSV do listy w Pythonie zajmuje cztery linijki. CZTERY LINIJKI:

Czytaj dalej

Czego nauczyła mnie praca w Scrumie?

Piszą i mówią o Scrumie wszyscy, od lat wydaje się być nieprzemijającą modą. Zanim zaczęłam pracować w jakiejkolwiek metodologii Agile, byłam wielką entuzjastką;) Po jakimś czasie okazało się, że nie jest jednak tak kolorowo. Nie przepadałam za pracą w systemie Scrum – zwłaszcza w nieco tępym wydaniu korporacyjnym, gdzie sporą część czasu przeznaczonego na pracę zajmuje „proces” – przeciągające się ponad miarę spotkania, z których nic nie wynika; rozproszenie odpowiedzialności; ciągłe kłótnie itd.). Nie mi oceniać, dlaczego system czasem tak bardzo nie działa, że aż zgrzyta. Na szczęście są i jasne strony, a sam Scrum wielu dobrych rzeczy mnie nauczył.

Retrospektywy

Weźmy takie retrospektywy – niby takie spotkanie-zapchajdziura, siądziemy i pogadamy, a potem się rozejdziemy i tyle. Jednak dobrze poprowadzone retro okazuje się być całkiem niezłym narzędziem. Pod warunkiem wprowadzenia pewnej dyscypliny: z każdego, nawet luźnego narzekania sporządzamy notatkę, a następnie wspólnie zastanawiamy się, co można zrobić, aby to ulepszyć? Gdy już wymyślimy rozwiązania i rozejdziemy się do biurek, nadchodzi druga, najważniejsza część – realizacja! Zatem działamy, najlepiej krok po kroku, z rozbiciem na mniejsze fragmenty. Szukamy w zakresie strefy własnego wpływu, a dopiero jeśli działania nie przyniosą skutku, pójdziemy dalej. Na następnych retrospektywach przeglądamy sporządzoną wcześniej listę – czy coś się poprawiło? A może w jakiś kwestiach jest gorzej? Czytaj dalej

Habitica

Czy znacie aplikację Habitica? Jeśli nie, to warto, abyście się z nią zapoznali 🙂

Lubię połączenie przyjemnego z pożytecznym. Nauka przez zabawę? Super połączenie. Habitica jest właśnie jedną z takich aplikacji. Stanowi całkiem ciekawe połączenie gry RPG z aplikacją do ćwiczenia nawyków. Trenuj bieganie, sprzątaj biurku i ubijaj potwory. Brzmi zabawnie? 😉 Elementy grywalizacji (zbieranie punktów, granie w ramach drużyny – uczestnicy otrzymują obrażenia, jeśli nie wypełnimy swoich codziennych zadań!) dodatkowo wzmacniają motywację do wykonywania zaplanowanych czynności.

Do dyspozycji mamy aplikację mobilną (iOS, Android) oraz dostęp przez przeglądarkę.

Habitica - screen z gry

Zastosowania

Osobiście używam Habitici jako: Czytaj dalej

Jak zrobić screenshot w Ubuntu

Nie wyobrażam sobie życia bez możliwości robienia screenshotów. Czasem po prostu chcę komuś coś pokazać, czasem dodać ilustrację do notki na bloga, czasem udokumentować jakąś akcję (na przykład… BUGA). Zazwyczaj naciskam w tym celu Print Screen, wklejam do programu graficznego, zapisuję i gotowe. Tymczasem okazało się, że w Ubuntu 12.04 (z Unity na pokładzie), którego aktualnie używam, wcale nie jest to takie proste… Pojawiło się pytanie: zatem jak zrobić screenshot w Ubuntu?Jak zrobić screenshot w Ubuntu - aplikacja Take Screenshot - screen

O ile sprawa dotyczy zwykłego zrzutu, problemu nie ma – zaraz po wciśnięciu przycisku Print Screen na ekranie pojawia się okno z pytaniem, czy zapisać obraz do pliku, czy skopiować do schowka. Problem pojawia się natomiast, gdy chce się wykonać zrzut ekranu, na którym widać… rozwinięte menu. Na szczęście jest na to sposób: Czytaj dalej

Szablon na bloga: 8 prostych motywów dla WordPressa

Podczas tegorocznego „odświeżania” WordPressa zastanawiałam się, jaki szablon nadałby się na mojego bloga. Samych darmowych motywów jest multum, ale wybór odpowiedniego zajmuje niestety nieco czasu. Zależało mi na czymś prostym i czytelnym, forma miała być klasyczna, tj. jeden sidebar, niewielkie menu w nagłówku, jak najmniej grafiki, prosta do bólu konfiguracja. Zależało mi też, aby szablony były na bieżąco łatane pod kątem potencjalnych dziur, częste update są zatem mile widziane.

Oto i lista kilku szablonów, które wytypowałam:

Twenty Twelve

Mój aktualny wybór. Wady to nieciekawe formatowanie obrazka wyróżniającego, wpis dlatego obecnie wyłączyłam go, wstawiam grafikę po prostu w treści wpisu (co jest średnim i mało przenośnym rozwiązaniem).

Szablon Twenty Twelve Czytaj dalej

Qt4: konwersja projektu qmake do CMake

Podczas tworzenia projekt w Qt4 z poziomu QtCreatora, do budowania projektu (generowania plików Makefile i tak dalej) QtCreator używa narzędzia qmake. Okazuje się jednak, że to nie wszystko:) QtCreator potrafi także używać CMake! Niestety nie ma póki co gotowego narzędzia, które automatycznie przekonwertuje projekt z qmake na CMake. Możemy jednak zrobić to sami. Jak? O tym jest właśnie ten tutorial.

Zagmatwane jak Qt4 i CMake!

Tworzymy CMakeLists.txt

Na sam początek warto wiedzieć, że sercem CMake jest plik CMakeLists.txt. To w nim definiowane są zasady, jakie biblioteki trzeba znaleźć i dołączyć, które pliki zbudować itd.

W pierwszym kroku trzeba zatem utworzyć plik CMakeLists.txt. Dodajemy go w głównym katalogu projektu. Natomiast folder wyżej (ponad źródłami i plikiem CMakeLists.txt) warto stworzyć dodatkowy folder, w którym będzie budowany nasz program.

Oto wersja pierwsza przykładowego pliku CMakeLists.txt – oferuje automatyczne wyszukiwanie plików ui i moc i generowanie na tej podstawie kodu. Odpowiadają za to zmienne: CMAKE_AUTOMOC i CMAKE_AUTOUIC.

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

PROJECT(V1)

set(QT_SRC ${QT_SRC} "${PROJECT_SOURCE_DIR}")
https://wiki.qt.io/Using_CMake_build_system
FIND_PACKAGE(Qt4 REQUIRED QtGui QtXml)
INCLUDE(${QT_USE_FILE})

QT4_WRAP_UI(UISrcs mainwindow.ui)
QT4_WRAP_CPP(MOCSrcs mainwindow.h)
 
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
INCLUDE_DIRECTORIES(${QT_SRC})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src/gui)

add_executable(DemoQt ${PROJECT_SOURCE_DIR}/main.cpp mainwindow)

TARGET_LINK_LIBRARIES(DemoQt Qt4::QtGui Qt4::QtXml) 

Aby wypisać wartości zmiennych, warto użyć polecenia MESSAGE, np.:

MESSAGE("MyProjectLib_src:\t\t${MyProjectLib_src}")

Moje wartości zmiennych są zatem następujące:

MOCSrcs /home/d9k/ProstyProjektQtCmake/qponiższytcreator-build/moc_mainwindow.cxx
MOCSrcs /home/d9k/ProstyProjektQtCmake/qtcreator-build/ui_mainwindow.h
QT_SRC /home/d9k/ProstyProjektQtCmake/zrodla
PROJECT_SOURCE_DIR /home/d9k/ProstyProjektQtCmake/zrodla
QT_USE_FILE /usr/share/cmake-2.8/Modules/UseQt4.cmake
CMAKE_CURRENT_SOURCE_DIR /home/d9k/ProstyProjektQtCmake/zrodla
CMAKE_CURRENT_BINARY_DIR /home/d9k/ProstyProjektQtCmake/qtcreator-build
QT_LIBRARIES /usr/lib/x86_64-linux-gnu/libQtGui.so;/usr/lib/x86_64-linux-gnu/libQtCore.so

Okazuje się jednak, że używanie automatu nie zawsze jest dobre – zwłaszcza, jeśli projekt jest rozbudowany i struktura katalogów jest drzewiasta. Wzorując się na poniższych wpisach w serwisie StackOverflow, udało mi się zmodyfikować poprzednią wersję, aby nie używała automatycznego przypisywania plików ui i moc.

Przechodzimy na sterowanie manualne

Usuwamy zatem fragment ze zmiennymi CMAKE_AUTOMOC i CMAKE_AUTOUIC, by zastąpić go własnym wskazaniem ścieżek: Czytaj dalej

Zanurkuj w Pythonie – recenzja podręcznika

Odważyłam się i zanurkowałam w paszczy Pythona 😉 A konkretnie to udało mi się przebrnąć przez „Zanurkuj w Pythonie” Marka Pilgrima. Podręcznik dostępny jest za darmo tu: https://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie (i to w dodatku po polsku).

Zanurkuj w Pythonie? Na początek polecam nurkowanie w chłodnym potoku!

Książka jest bardzo przekrojowa – obejmuje szerokie spektrum tematów: instalacja, sprint (dosłownie) przez składnię języka, operacje na plikach i strumieniach, parsowanie XML i HTML, obsługa usług sieciowych SOAP i HTTP, testy jednostkowe. Potem przychodzi czas na wyrażenia lambda, funkcje dynamiczne i optymalizację kodu.

Każdy rozdział jest zbudowany wg podobnego schematu: przedstawienie kompletnego kodu programu, a następnie tłumaczenie linijka po linijce. Co więcej, autor udostępnia na swojej stronie kody źródłowe, więc lekturę można uzupełnić własnymi doświadczeniami.

Gdy zabierałam się za lekturę, o Pythonie nie wiedziałam praktycznie nic (mając jednocześnie doświadczenia z Javy, Ruby czy innych języków) i nawet będąc już w połowie lektury nadal wydawało mi się, że ten stan rzeczy nie uległ zmianie. Początkowo irytowało mnie , że książka jedynie ogólnie nakreśla podstawy, nie opisuje wszystkich możliwych funkcji, tylko skupia się na kilku, użytych w programie. Tymczasem autor w każdym rozdziale pisze, aby wiedzę uzupełnić u źródła, tj. przeczytać odpowiedni fragment dokumentacji Pythona. Fajnie, ale wymaga to czytania podręcznika na komputerze, a nie na Kindlu… Na szczęście druga część książki poszła już z górki, możliwe że dlatego, że „opatrzyłam się” już ze składnią. Bardzo podobały mi się rozdziały o testach (bycie QA zobowiązuje 😉 ). Ciekawy był rozdział o optymalizacji, brakowało mi jednak lepszego podsumowania, jakiejś tabelki, które podejścia są zasobożerne, a które nie. Czytaj dalej

Jak zacząć z testowaniem – artykuł od Girls Who Test

Ilekroć zabieram się za wpis dla początkujących testerów opisujący jak zacząć z testowaniem, natrafiam w sieci na artykuł, który już temat opisuje! Jeszcze nie tak dawno w sieci mało można było znaleźć materiałów na ten temat, a teraz – proszę. Nic tylko czytać! 🙂

Tym razem w oko wpadła mi broszurka przygotowana przez Aleksandrę Kornecką z Girls Who Test.

Jak zacząć z testowaniem - artykuł od Girls who test

Dokument do przeczytania tutaj: https://docs.google.com/document/d/1e9IVt5x_W8FW24R-7BaQh3xf3jShHfJGzMEjm0E1sWg, a w nim:

  • co to jest oprogramowanie i co oznacza termin „testowanie oprogramowania”
  • kompetencje miękkie u testera
  • obowiązki testera
  • ścieżki rozwoju
  • skąd czerpać wiedzę
  • i inne.

Jeśli chodzi natomiast o same Girls Who Test, polecam śledzić ich stronę: http://www.girlswhotest.pl/events/, większość wydarzeń organizują w Warszawie lub Poznaniu. Dziewczyny, trzymam kciuki! 🙂

Kernel: Don’t panic – wrażenia z konferencji

W ubiegłym miesiącu, dla zabicia czasu w sobotni, deszczowy dzień, wybrałam się na studencką konferencję organizowaną przez Koło Naukowe Kernel, o nazwie Kernel: DON’T PANIC! Odbywała się ona 13 maja ’17, w dużej auli Wydziału Fizyki i Informatyki Stosowanej AGH, którą darzę dużym sentymentem:D

Logo Kernel: Don't panic

Organizacja na piątkę. Szatnia, ciasteczka, gorąca kawa, a nawet upominki dla uczestników: smyczki i elegancka torba z nadrukiem loga koła, a w środku pisadło i butelka wody (może na kaca, w końcu Juwenalia:D). Słowem profeska i szacunek dla organizatorów za ogarnięcie tematu (a dla sponsorów za sypnięcie groszem:))

Przechodząc jednak do merytoryki muszę powiedzieć, że wykłady trzymały poziom. Na scenie udało się zgromadzić naprawdę ciekawych prelegentów.

Wykłady na „Kernel: Don’t panic”

Na początek Piotr Konieczny, którego przedstawiać myślę nie trzeba (niebezpiecznik.pl), opowiedział o kulisach ataków socjotechnicznych. Okazuje się, że czasem nawet świadomość i wiedza pracowników nie wystarcza, by uchronić organizację przed przemyślanym atakiem socjotechnicznym. Bardzo często działamy automatycznie, nawykowo. Na na domiar złego w grupie myślenie i odpowiedzialność ulega rozproszeniu, skutkiem czego niestety, najsłabszym ogniwem zabezpieczeń bywa człowiek. Naprawdę warto było wstać przed ósmą (w sobotę!) i pomknąć przez deszczowy Kraków, by dotrzeć na ten wykład!

Wykład pt. „Metodologia tworzenia oprogramowania przez IBM spełniającego wymogi cyber-bezpieczeństwa” niestety ciut mnie rozczarował, więc przejdę od razu do kolejnego punktu, czyli wystąpienia naczelnika krakowskiego wydziału policji do walki z Cyberprzestępczością. Czytaj dalej

Catch-all czyli złap maile wysłane pod zły adres

Niestety ludzie czasem mylą się – popełniają literówki w imieniu albo przekręcają nazwisko. Wisniewski@onedaymail.com czy Wisniowski@onedaymail.com? Jak skonfigurować serwer pocztowy, żeby pobierał także wiadomości wysłane na niepoprawny adres? Odpowiedzią jest catch-all.

Jeśli mamy skrzynkę pocztową u usługodawcy typu Gmail, Poczta O2 itp. niestety nie mamy zbyt wielkiej możliwości manewru. Oczywiście mozna by założyć drugą skrzynkę z przekręconym nazwiskiem i ustawić przekierowanie, nie zawsze jednak jest to możliwe. Na szczęście skrzynkę pocztową można założyć na własnym serwerze – najczęściej kupując konto hostingowe (najlepiej z własną domeną) istnieje także możliwość założenia poczty w tej domenie.

Konfiguracja sprowadza się do włączenia usługi catch-all. W zależności od panelu administracyjnego konfiguracja może wyglądać nieco inaczej. Pokażę na przykładzie Direct Admin.

Jak skonfigurować catch-all?

  1. Zakładam skrzynkę, która będzie używana do zbierania wszystkich maili. Warto ustawić jej ograniczenie zajmowanej powierzchni (quota) ponieważ na takiej skrzynce może gromadzić się sporo spamu!
  2. Włączam catch-all, przekierowując wszystkie zabłąkane maile na stworzoną przed chwilą skrzynkę.
  3. Gotowe 🙂 Można przetestować wysyłając maila na adres cokolwiek@twojadomena.xx, blablabla@twojadomena.xx itd. 🙂

W panelu Direct Admin wygląda to tak:

Konfiguracja catch-all w Direct Admin

I konfiguracja przekierowania:
Konfiguracja catch-all w Direct Admin - przekierowanie poczty

Jeżeli nie chcemy logować się na tak stworzoną pocztę „serwerową”, można ustawić także, aby wszystkie maile były przekierowane do używanej przez nas na co dzień skrzynki (np. Gmail).