Menu Zamknij

Robot Framework – Arystokrata Automatyzacji

Testerzy manualni i nudne powtarzalne zadania — strzeżcie się, bo nadchodzi era automatyzacji!


Automatyzacja nigdy nie była tak prosta, bo na białym robo-koniu wjeżdża Robot Framework, narzędzie proste w obsłudze jak młotek, a zarazem potężne jak machina oblężnicza.

Pamiętam, jak w jednej firmie nie mogłem pogodzić się z faktem, że wiele nieskomplikowanych testów musiałem wykonywać ręcznie. Jeszcze gorszy był fakt, że musiałem to robić za każdym razem, gdy wychodziła nowa wersja naszego produktu. Nowych funkcjonalności przybywało, a więc i testowanie zajmowało coraz dłużej.

Nie będę ukrywał i szczerze przyznam, że stale przeszukuję rynek pracy w poszukiwaniu ciekawych ofert pracy. Dzięki temu orientuję się w zapotrzebowaniu na konkretnych specjalistów, ale też zauważam trendy technologiczne. Tak się złożyło, że w wielu ofertach zaczęła pojawiać się tajemnicza fraza — „Robot Framework”.

Zainteresowany wygooglałem i zacząłem czytać. Okazało się, że to może być moją maścią na ból, który przeżywałem, wykonując manualnie po raz setny ten sam test. W zaledwie kilka dni samodzielnie przygotowałem środowisko i napisałem pierwsze testy, którymi podzieliłem się z zespołem. Początki były trudne, bo musiałem ostudzić obawy współpracowników, ale w końcu się udało — nasze testy manualne sukcesywnie zaczęliśmy zastępować automatycznymi. To pozwoliło nam na oszczędzenie czasu na nudnych, żmudnych zadaniach i wykorzystanie go na poprawianie jakości produktu.

Narzędzie, którego się nauczyłem, pomogło mi też w zmianie pracy, bo okazało się, że moja przyszła firma również postawiła na tę technologię. Moja przygoda z Robot Framework trwa już ponad 2 lata, a ja wciąż znajduję dla niego nowe zastosowania. Teraz pewnie zastanawiasz się…

Co to jest Robot Framework i dlaczego jest taki super?

Robot Framework to narzędzie do automatyzacji testów i procesów zwanych RPA, czyli Robotic Process Automation. To pojęcie wciąż zyskujące na popularności, a oznacza zrobotyzowaną automatyzację procesów. Robotem może być zarówno maszyna, jak i oprogramowanie, natomiast omawiany proces jest czymś, co jeszcze do niedawna robił człowiek, ale nic nie stoi na przeszkodzie, aby wykonywał to ów robot.

Jak dobrze wiemy, komputery z każdym rokiem rosną w siłę (obliczeniową), a wraz z nimi rośnie także poziom skomplikowania oprogramowania. Dzisiejsze programy mają coraz więcej możliwości, ale aby zapewnić im stabilne działanie, należy sporo czasu poświęcić na ich testowanie, którego celem jest zapewnienie jakości produktu. Liczba testów potrzebnych do sprawdzenia poprawnego działania specjalistycznych programów przekracza już często możliwości ludzkie, jednak automatyzacja wymaga umiejętności programowania oraz ogromnych nakładów finansowych i drogich narzędzi. Czy aby na pewno? Na ratunek przybywa Robot Framework, który udowadnia, że nic z powyższych nie musi być prawdą. Dlaczego?

Jest darmowy

Robot Framework rozwijany jest na zasadzie open-source, czyli oprogramowania z upublicznionym kodem źródłowym. To oznacza, że każdy może wziąć udział w rozwoju narzędzia, ale też korzystać z niego zupełnie za darmo. Tak, za darmo. Chętne firmy mogą też zapisać się jako członkowie fundacji i, płacąc roczne opłaty, wspierać rozwój narzędzia.

Darmowy charakter oprogramowania zachęca do jego używania, ale też przyczynia się do powstania atmosfery wdzięczności, dzięki której ludzie chętnie i bez przymusu pomagają rozszerzać jego możliwości. Proponowane nowe funkcje i zmiany są sprawdzane przez członków społeczności i stopniowo wdrażane do kolejnych wersji.

Jeśli Twój szef kiedyś powie, że firma nie ma kasy na automatyzację, bo to kosztowny proces — pokaż mu Robot Framework.

Jest prosty w instalacji

Do działania na systemie potrzebny jest jedynie Python, którego instalacja jest prosta jak instalacja Simsów. Ściągnąć go można z oficjalnej strony. Python działa na dowolnym systemie operacyjnym, a Robot Framework jest tak naprawdę pewną „zaawansowaną nakładką” na ten język programowania, więc nic więcej nam nie trzeba.

Gdy już masz Pythona, wystarczy, że zainstalujesz Robot Framework komendą:

pip install robotframework

I już.
Teraz sprawdź, czy instalacja się powiodła i jaką wersję masz zainstalowaną:

robot --version

Prawda, że proste? Myślę, że niewiele trudniejsze od obsługi myszki. Dobra, ale co dalej?

Wystarczy tylko 1 plik, aby uruchomić automatyczne testy

Tam, gdzie jedne narzędzia wymagają magisterki z programowania, aby skonfigurować środowisko, Robot Framework galopuje na skróty. Wystarczy stworzyć dowolny plik tekstowy z rozszerzeniem .robot, wystukać kilka znaków, uruchomić jedną komendę i już możemy cieszyć się pierwszy testem automatycznym. Pokażę Ci, jak to zrobić.

Stwórz w nowym folderze plik o nazwie test.robot, otwórz go w dowolnym edytorze tekstu (np. Notatnik lub Notepad++, chociaż zdecydowanie bardziej polecam PyCharm) i wypełnij go poniższym kodem:

*** Test Cases ***
Basket Should Have 3 Vegetables
	${basket}				Create List	tomato		corn	lettuce
	Length Should Be		${basket}	${3}

Zapisz plik i uruchom komendę w wierszu poleceń, będąc w katalogu, w którym stworzono plik:

robot test.robot

Jeśli wszystko się udało, konsola powinna nas poinformować, że nasz test został wykonany i się powiódł. W naszym folderze powinny też powstać 3 nowe pliki wyjściowe: output.xml, report.html i log.html. Zaraz o nich opowiem 🙂

Gratulacje! ? Twój pierwszy test automatyczny już jest gotowy do pracy. Robot nigdy się nie męczy, więc test można modyfikować i odpalać w nieskończoność.

Ten artykuł nie ma na celu nauki narzędzia, a jedynie ukazać jego możliwości, a więc jeśli rozgrzałem w Tobie ciekawość, to poczekaj na kolejny artykuł z tej serii. Jeśli masz słabą cierpliwość i chcesz dowiedzieć się więcej TERAZ, to odwiedź oficjalną stronę, gdzie znajdziesz pełną dokumentację i proste przykłady.

Ma zrozumiałe i czytelne logi

Wróćmy do naszego testu.

W naszym folderze powinniśmy mieć 3 nowe pliki. Zajrzyjmy do log.html, który zawiera logi ze wszystkimi krokami, jakie zostały wykonane w teście. Widok powinien być mniej więcej taki:

Widok pliku log.html

Widzimy tu liczbę testów oraz jak wiele z nich skończyło się powodzeniem (zielony pasek), widzimy ile czasu trwały testy (tak, ten test jest tak krótki, że trwał nieco ponad 0.02 s, stąd wszędzie zera). Zielony kolor dla testera jest jak brak kolejki na poczcie — zawsze cieszy. Testy, które się nie powiodły, oznaczane są zwyczajowo kolorem czerwonym. Nie lubimy koloru czerwonego.

Bardzo wygodna jest możliwość rozwinięcia każdego testu i podejrzenia każdego kroku, jaki został wykonany. Klikając na nazwę testu, rozwinie się nam lista użytych keywordów (słów kluczowych), a jeśli ponownie na nie klikniemy, zobaczymy szczegóły dotyczące ich wykonania — krótki opis kroku, czasy rozpoczęcia, zakończenia i trwania oraz wynik:

Szczegóły konkretnych kroków testu w pliku log.html

Plik report.html jest mniej szczegółowym plikiem w formie raportu zdawanego swojemu przełożonemu (np. test managerowi), natomiast plik output.xml zawiera pełny zestaw informacji z danego uruchomienia testów i nie jest przeznaczony do czytania przez ludzi, a do przetwarzania danych, np. w celu dalszej automatyzacji procesu testowania.

Ma najprostszy do czytania kod na świecie

Ciężko wyobrazić sobie programowanie bez dziwnych nawiasów, niespodziewanych średników i wszechobecnych znaków równości. Coś, co wydaje się naturalne, tu zostało praktycznie wyeliminowane. Da się? Da się.

Liczba rozpraszaczy została ograniczona do minimum, a sam kod składa się głównie z tekstu, który można czytać jak wiersz. Czytelność kodu zależy oczywiście od programisty, ale wspierane przez Robot Framework podejście KDT (Keyword Driven Testing), opiera się na pisaniu keywordów, które odgrywają rolę funkcji wykonujących proste czynności. Łączenie ich w większe formacje pozwala uzyskać treść testu, którą może przeczytać każdy, włącznie z osobami nietechnicznymi. To daje ogromną przewagę nad innymi frameworkami do testowania, których kod jest często zrozumiały tylko dla programistów.

Zastosowanie Robot Framework do automatyzacji testów pozwala zacieśnić współpracę pomiędzy testerami a deweloperami, a nawet ludźmi z biznesu. Pomaga to lepiej zrozumieć siebie nawzajem i swoją pracę, ale przede wszystkim lepiej zrozumieć testowany produkt i efektywnie zwiększyć nasze zaufanie do jego jakości.

Zdarza się też, że niektóre firmy piszą testy w języku narodowym (np. po francusku czy niemiecku), aby móc jeszcze dokładniej zdefiniować ich kroki. Nic przecież tak dobrze nie wyjaśnimy, jak w naszym ojczystym języku. Ja jednak odradzam to podejście, gdyż bardzo ogranicza to możliwość podjęcia współpracy z osobami, które tego języka nie znają.

Nie wymaga znajomości Pythona i innych języków programowania

Język programowania, który nie wymaga umiejętności programowania? Robotowi chyba do tego najbliżej. Z pełną odpowiedzialnością mogę przyznać, że mogą go używać osoby, które nie znają się na programowaniu, ale też muszę mocno zaznaczyć, że zdecydowanie ta umiejętność się przydaje. Nawet jeśli tester jest w stanie stworzyć testy automatyczne, to mogą zaistnieć pewne sytuacje, w których ograniczenia języka nie pozwolą na uzyskanie zamierzonych wyników. W tej sytuacji przychodzi z pomocą Python, który można dowolnie łączyć z kodem Robotowym, zdecydowanie poszerzając jego możliwości.

Osobiście znam projekty, w których testerzy automatyzują testy przy użyciu RF, ale mają do pomocy doświadczonego programistę, który w razie przeszkód, pomaga im wprowadzić wymaganą funkcjonalność. Pojęcia zmiennych i zakresu ich widoczności, funkcji oraz parametrów są niezbędne, aby dobrze władać Robotem. Dobry tester jest w stanie wiele wyciągnąć z tego narzędzia, jednak specjalistyczna wiedza programistyczna pozwoli mu wydusić z niego naprawdę ogromne możliwości.

Posiada wiele bibliotek rozszerzających możliwości

Robot Framework posiada już ponad 300 wbudowanych i gotowych do użycia keywordów wykonujących najczęstsze i najbardziej przydatne operacje. Mimo wszystko społeczność szybko znalazła obszary, w których warto było dopisać nowe biblioteki, które zawierają w sobie dziesiątki kolejnych keywordów. Liczbę takich bibliotek ciężko dokładnie policzyć, gdyż wciąż powstają nowe, a wiele z nich jeszcze nie zostało upublicznionych.

Robota można bardzo łatwo wzbogacić o kolejne funkcjonalności, stąd jego potencjał wzrostowy jest naprawdę duży, co na pewno pomoże mu w podboju rynku.

Przykładowe biblioteki i ich zastosowanie:

  • SeleniumLibrary – testowanie aplikacji webowych i automatyzacja procesów wykonywanych w przeglądarkach
  • Database Library – sprawdzanie wyników zapytań do baz danych
  • HTTP Library – obsługuje mechanizmy zapytań HTTP wykorzystywane do testów REST API
  • Android / iOS Library – biblioteki umożliwiające testowanie urządzeń mobilnych
  • SSHLibrary – pozwala na testowanie maszyn w sposób zdalny

Ma czytelną strukturę plików

O tym, że bałagan nie pomaga w pracy, wie chyba każdy. Wagę porządku docenia na pewno Pekka Klärck, czyli twórca Robot Framework. Zaimplementował on kilka mechanizmów, które wspierają dobrą organizację testów.

Przede wszystkim Robot Framework nie tworzy dziesiątek dodatkowych plików, które są potrzebne do odpowiedniego działania. Tak naprawdę, to nie tworzy żadnych plików (oprócz tych 3 plików przechowujących wyniki, o których już wspomniałem).

Ponadto, testy związane z innym komponentem możemy przenieść do oddzielnego pliku, co automatycznie zostanie uznane za dwie różne suity testowe (ang. test suite), czyli zestawy testów. Tak samo możemy niektóre pliki przenieść do osobnych folderów, co również pozwoli nam je pogrupować (np. pod względem rodzaju testów).

Same pliki dzielą się na sekcje, które wydzielają nam obszary m.in.: zmiennych, keywordów i testów, co widać na poniższym przykładzie:

*** Variables ***
${NAME}	Mateusz

*** Test Cases ***
Introduce Yourself
	Say Hello		${NAME}

*** Keywords ***
Say Hello
	[Arguments] 	${name}
	Log				Hello, ${name}

Do dyspozycji jest także tagowanie, czyli oznaczanie testów konkretnym słowem. Pozwala nam to przede wszystkim na sterowanie wykonaniem testów, gdyż możemy uruchomić lub wykluczyć testy z konkretnym tagiem. Tagi są też uwzględnione w raporcie, dzięki czemu możemy podejrzeć statystyki dotyczące konkretnego obszaru testowania.

Jest też kilka sposobów na wydzielenie danych do zewnętrznych plików oraz oddzielenie zasobów, które nie są testami (keywordów, zmiennych, bibliotek) do tzw. resource files, ale o tym opowiem innym razem.

Jest łatwy w integracji z innymi narzędziami

Najpopularniejszy system do automatyzacji procesu budowania i wdrażania oprogramowania, czyli Jenkins, również posiada wtyczkę do Robot Frameworka. Z doświadczenia wiem, że integracja Robota z jakimkolwiek narzędziem jest dość prosta, gdyż jest on oparty o Pythona, czyli jeden z najpopularniejszych języków programowania na świecie, do którego już wiele zostało wymyślone.

Istnieją wtyczki podpowiadające składnię w najpopularniejszych środowiskach programistycznych (IDE), są lintery, które sprawdzają czytelność i zgodność kodu z ustalonymi zasadami, są agregatory pozwalające tworzyć przyjazną dokumentację.

Liczba narzędzi wspierających Robota stale rośnie, a to wszystko dzięki społeczności programistów, którzy sami integrują różne narzędzia i udostępniają to światu, aby pozwolić innym czerpać korzyści z ich wykonanej pracy.

Testy automatyczne to nie wszystko

Prosta składnia i łatwa konfiguracja sprawiają, że Robot Framework zyskuje popularność też w innym obszarze – RPA, czyli zrobotyzowanej automatyzacji procesów. Wyobraźmy sobie takie sytuacje…

W firmie jest kilkuset pracowników, do których trzeba co miesiąc wysyłać powiadomienie o zaktualizowanie listy wybranych benefitów? Nie trzeba już o tym pamiętać – Robot zrobi to za Ciebie. Twój zespół ma comiesięczne spotkanie, a zdarza się, że niektóre sale są zajęte? Robot sam wyszuka wolną, zarezerwuje i wszystkim wyśle przypomnienie. Prowadzisz arkusz Excela, w którym regularnie dokonujesz analogicznych zmian? To też możesz oddelegować Robotowi 🙂

Automatyzacja sięgnie (prawie) tak daleko, jak Twoja wyobraźnia. Oczywiście musisz zachować w tym pewien rozsądek i nie spędzać czasu na automatyzacji rzeczy, które są zbyt skomplikowane lub charakteryzują się zbyt dużą zmiennością. Może to być mało opłacalne.

Zawsze jest miejsce na poprawę

Robot Framework powstał w 2005 roku w fińskiej firmie Nokia, by po 3 latach zostać upublicznionym jako oprogramowanie open-source. Od tego czasu liczba jego użytkowników stale rośnie, a w ostatnich latach można zauważyć naprawdę duży przyrost popularności. Otwarte oprogramowanie jest tworzone głównie przez pasjonatów, a jego postęp przyspiesza wraz z wielkością społeczności. Fundacja Robot Framework zrzesza już ponad 40 firm i organizacji, a ostatnio przybywa ich nawet kilka miesięcznie!

Każda kolejna wersja oprogramowania przynosi coś nowego, ale wciąż jest jeszcze wiele miejsca na poprawę. Jednymi z najbardziej oczekiwanych ulepszeń są:

  • Pełne wsparcie dla instrukcji warunkowych (obecnie ten mechanizm obsługują keywordy) — funkcjonalność ma być wprowadzona wraz z wersją 3.3, ale bez problemu można to obejść stosując Pythona
  • Zagnieżdżone struktury (np. pętle) — teraz można je uzyskać przy pomocy Pythona, mają pojawić się w Robocie w wersji 3.3
  • Nieco mniej surowa dokumentacja — nie dla wszystkich jest to wada, jednak wbudowanie do dokumentacji możliwości sortowania lub wyszukiwania po nazwach keywordów byłyby na pewno użytecznymi udogodnieniami

Koniec wymówek

Istnieje wiele narzędzi do automatyzacji i każde cechuje się czymś innym, ale jak dotąd nie poznałem takiego, które mogłoby konkurować z Robot Framework. Może są takie, które są w stanie w niektórych obszarach wygrać bitwę, ale to Robot Framework ostatecznie wygrywa wojnę 🙂

Jestem w stanie sobie wyobrazić wiele wymówek, które mogą powstrzymywać firmy przed wprowadzeniem automatyzacji i Robot jest właśnie odpowiedzią na te wszystkie obawy. Jest darmowy, łatwy w konfiguracji, prosty w obsłudze (a jednocześnie potężny w możliwościach), szybki w działaniu, przystępny w nauce, wszechstronny i nieskomplikowany w integracji. To właśnie takie technologie sprawiają, że IT jest cool. ?

To koniec tego artykułu, ale już teraz zapraszam Cię na kolejne dawki Robot Framework w serii poświęconej automatyzacji. Zapisz się na newsletter, a nic Cię nie ominie 🙂

Dla osób głodnych wiedzy, chcących zobaczyć Robot Framework w akcji, zamieszczam wideo z webinaru, który prowadziłem 4 czerwca 2020. Link do webinaru.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *