Wyślij zapytanie Dołącz do Sii

„Czy narzędzi do automatyzacji testów możemy nauczyć interfejsu aplikacji, w taki sam sposób, jak uczmy tego realnych użytkowników?” – to pytanie postawił sobie Tricentis, zaczynając pracę nad Vision AI.

Vision AI możemy zdefiniować jako „inteligentny” silnik do automatyzacji testów interfejsu użytkownika (UI), pozwalający na automatyzację skryptów testowych bez użycia kodu.  Będą to m.in.: sytuacje, w których definiowanie selektorów na potrzeby automatyzacji jest niemożliwe ze względu na wczesną fazę developmentu aplikacji (dostępność jedynie mockupów) lub wymagana jest weryfikacja skomplikowanych struktur i elementów graficznych na stronie (np.: map, diagramów). Narzędzie to pozwoli także na zaangażowanie w proces testowania osób nietechnicznych, ale posiadających kluczową w procesie wiedzę domenową.

Przy tworzeniu Vision AI Tricentis wykorzystał jako metodę analizy danych uczenie maszynowe, dzięki czemu silnik narzędzia, podobnie jak użytkownik końcowy, ma zdolność interpretowania różnych ekranów i obiektów dostępnych w aplikacji. Ponadto, dzięki modułowi „Vision AI Self Healing”, w przypadku zmian w aplikacji, które w tradycyjnych testach spowodowałyby niepowodzenie egzekucji, Vision AI podejmie próbę „samonaprawy” skryptu, bazując na swojej wyuczonej „inteligencji”.

Silnik Vision AI jest zintegrowany z narzędziem Tricentis Tosca, o czym dowiesz się więcej z artykułu: Czy Tosca i podobne rozwiązania codeless są przyszłością testowania?

W niniejszym artykule postaramy się szerzej omówić wymienione na wstępie przypadki użycia Vision AI w projektach informatycznych, zwracając szczególną uwagę na aspekty wyróżniające to narzędzie na tle „klasycznych” frameworków do automatyzacji testów. 

Konfiguracja

Jak z każdym narzędziem – pracę z Vision AI należy rozpocząć od konfiguracji. Przygotowanie do pracy należy poprzedzić kilkoma etapami:

  • rejestracją,
  • logowaniem,
  • instalacją,
  • konfiguracją połączenia.

Rejestracja

Dla danej firmy/instytucji/projektu powinno zostać założone środowisko – Nexus Server. Dostępu do niego udziela administrator na prośbę przyszłego użytkownika. Po otrzymaniu informacji o przyznaniu dostępu możemy się zalogować.

Logowanie

Aby się zalogować korzystamy z adresu: https://authentication.app.tricentis.com/ . W pierwszym kroku podajemy Account Name (jest to nazwa zarejestrowanej firmy), np.: SII i klikamy „Continue”.

Widok strony logowania – pole „Wpisz nazwę swojej firmy”
Ryc. 1 Widok strony logowania – pole „Wpisz nazwę swojej firmy”

W kolejnym kroku uzupełniamy nasz adres e-mail i hasło, dodatkowo możemy zaznaczyć opcję „Remember me”, a na końcu klikamy „Login”.

Widok strony logowania dla usera
Ryc. 2 Widok strony logowania dla usera

Po zalogowaniu, warto przygotować Token, który będzie potrzebny do połączenia z Vision AI agent – zapewni to nam stabilność połączenia podczas skanowania modułów z Vision AI oraz egzekucji testów.

Widok konta użytkownika z sekcją dla Tokenów
Ryc. 3 Widok konta użytkownika z sekcją dla Tokenów

Pamiętajmy, że dane Tokena są widoczne tylko w momencie wygenerowania, więc warto zapisać je w notatniku na przyszłe potrzeby. Jeśli tego nie zrobimy – nie będziemy mogli użyć Tokena i zaistnieje konieczność wygenerowania nowego oraz zapisania jego danych od początku. Pamiętajmy też, że Token ma swój czas przydatności i po wygaśnięciu musimy utworzyć nowy oraz ustanowić połączenie z usługami na nowo. Jest to i tak o wiele mniejsza niedogodność w porównaniu z wpisywaniem codziennie loginu i hasła w ramach autentykacji 😉

Poniżej poglądowo screen z Tokenem „test” i informacjami, jakie dane są generowane – te dane należy skopiować (ułatwia to ikona „kopiuj” przy każdej wartości) i zapisać na potrzeby dalszego użytku.

Token “test” – przykład
Ryc. 4 Token “test” – przykład

Instalacja

Jeśli nie instalowaliśmy komponentu Vision AI podczas instalacji Tosca Commander, to powinniśmy ponownie ściągnąć plik instalacyjny dla Tosca Commander (zgodny z naszą wersją) i go uruchomić. Następnie, wybrać opcję „Modify” > „Custom Instalation” oraz „Next”, a na kolejnym ekranie zaznaczyć checkbox dla Vision AI:

Tricentis Tosca Setup – instalacja Vision AI
Ryc. 5 Tricentis Tosca Setup – instalacja Vision AI

Kolejno klikamy przycisk „Next” oraz potwierdzamy chęć zmiany przyciskiem „Modify”. Po zakończeniu procesu instalacji Vision AI otrzymamy stosowny komunikat.

Konfiguracja połączenia

Uruchamiamy Vision AI agent, który został dodany do Tosca Commander – jest to również samodzielna aplikacja, która będzie się włączać w każdym momencie uruchamiania skanowania aplikacji przez silnik Vision AI, jak również podczas egzekucji testów z modułami przygotowanymi dla Vision AI/przez Vision AI.

Vision AI jest dla nas dostępny z zasobnika systemowego – aby ustanowić stabilne połączenie, klikamy prawym przyciskiem myszy na ikonę Vision AI i wybieramy „Settings”:

Widok Vision AI agent menu z zasobnika systemowego
Ryc. 6 Widok Vision AI agent menu z zasobnika systemowego

Ustawiamy odpowiedni Nexus Server Endpoint. Dla stabilnego działania podczas egzekucji testów warto połączyć się z przygotowanym wcześniej Tokenem. Możemy to zrobić za pomocą przycisku „Set Token”. Dalsze etapy są intuicyjne i polecenia wyświetlane są na ekranie – jeśli Token został wcześniej przygotowany, a dane do niego zapisane, to podłączenie nie powinno stanowić żadnego problemu.

Widok Vision AI agent – widok ustawień wraz z połączeniem Tokena
Ryc. 7 Widok Vision AI agent – widok ustawień wraz z połączeniem Tokena

Po konfiguracji połączenia za pomocą Tokena nasz Vision AI Agent powinien zostać zamknięty i uruchomiony ponownie.

Jeśli planujemy uruchamiać testy na DEX-ie, powinniśmy dla usera, na którym testy będą uruchamiane, również założyć konto dla Vision AI (poprosić o to administratora), wygenerować Token oraz zainstalować Vision AI agenta w lokalizacji, gdzie będą uruchamiane testy. Następnie połączyć z Tokenem – tak jak dla każdego innego użytkownika. Musimy też pamiętać o tym, aby Vision AI agent był uruchamiany tuż po uruchomieniu systemu Windows na tej lokalizacji.

Ważna informacja – Vision AI będzie działał tylko jeśli mamy połączenie z Internetem.

Jeśli chcemy zgłębić dodatkowe warunki konfiguracji, to zapraszamy do zapoznania się z dokumentacją źródłową od Tricentis: Vision AI documentation.

Vision AI – sposoby użycia

Wyróżniamy 3 główne sposoby użycia Vision AI:

  • Budowanie stepów poprzez moduł Run Vision Script.
  • Skanowanie mockupów UI – w celu przygotowania wstępnych testów, zanim napisany będzie kod aplikacji, ale kiedy dostępny jest projekt UI.
  • Skanowanie obrazów, grafów, aplikacji trudnych do klasycznej automatyzacji – Vision AI przydaje się wszędzie tam, gdzie standardowe metody uzyskiwania/weryfikacji danych nie są stabilne (np.: odczytywanie danych z wykresów zapisanych w pliku graficznym).

Moduł Run Vision Script

Moduł „Run VisionScript”, który znajdziemy w Standard Modules w Tosce, pozwala na sterowanie aplikacją przy użyciu słów kluczowych, wykorzystując konstrukcje bardzo zbliżone do „języka naturalnego”.

Poniższy przykład (wypełnianie formularza kontaktowego na stronie Sii w celu weryfikacji poprawności walidacji) ilustruje prosty przypadek użycia modułu „Run VisionScript” w Tosce.

Widok przykładowego testu z wykorzystanym modułem „Run VisionScript”
Ryc. 8 Widok przykładowego testu z wykorzystanym modułem „Run VisionScript”

Po uruchomieniu skryptu nastąpi wypełnienie wskazanych pól formularza, wybranie kategorii z listy oraz kliknięcie przycisku wysłania wiadomości. Na końcu skrypt zweryfikuje treść i kolor komunikatu o błędnym wypełnieniu formularza.

Widok testowanego formularza kontaktowego
Ryc. 9 Widok testowanego formularza kontaktowego

Struktura modułu Run VisionScript

Prześledźmy szczegółowo strukturę użytego modułu „Run VisionScript”. Każdorazowo, w module, musimy wskazać nazwę testowanej aplikacji. Następnie, używając słów kluczowych, wykonujemy określone kroki testowe na stronie. Przeanalizujmy przykładowe:

  • TYPE „Daria” IN the 'First name’ input– pozwala na wpisanie frazy „Daria” w pole typu input, przy którym widnieje etykieta „First name”.
  • CLICK IN the 'Subject’ dropdown – umożliwia kliknięcie (w tym przypadku rozwinięcie) elementu typu dropdown o nazwie 'Subject’.
  • CLICK the 'Send messange’ button – klika w przycisk 'Send message’.
  • VERIFY color >  25% „red” FOR the 'The field is required’ text – słowo kluczowe „VERIFY” umożliwia weryfikację. W tym przykładzie weryfikujemy, czy w wyświetlanym tekście, więcej niż 25% pixeli jest koloru czerwonego.

Szczegółowe omówienie wszystkich słów kluczowych jest dostępne w dokumentacji Vision AI.

Skanowanie mockupów

W świecie IT, coraz większą popularność zdobywa koncepcja „Shift Left”, polegająca na przesunięciu zadań związanych z zapewnieniem jakości do początkowych etapów procesu wytwarzania oprogramowania. Dzięki takiemu działaniu, możemy wcześniej wykrywać i rozwiązywać problemy wynikające np.: z niespójności wymagań. A jak wiemy, im szybciej odnaleziony i zaadresowany błąd, tym tańsza jego naprawa.

Silnik narzędzia Vision AI, dzięki możliwości interpretacji obiektów graficznych, pozwala nam na stworzenie testów, jeszcze zanim gotowa jest realna aplikacja i jej kod, ponieważ do stworzenia pierwszych testów wystarczą nam mockupy.

W celu zademonstrowania działania silnika Vision AI, wykorzystałyśmy grafikę ze strony freepik.com („Gradient ui/ux elements collection„).

Widok XScan podczas skanowania mockup’a z wykorzystaniem silnika Vision AI
Ryc. 10 Widok XScan podczas skanowania mockup’a z wykorzystaniem silnika Vision AI

Na powyższym zrzucie ekranu widzimy, jak skutecznie Vision AI poradził sobie z mockupem, bazując jedynie na pliku graficznym. Rozważmy przedstawiony przykład – XScan w Tosce poprawnie rozpoznał elementy takie, jak:

  • przycisk „button” widziany w lewym górnym rogu,
  • nagłówek sekcji „highlight update”,
  • nagłówek sekcji „user profile”,
  • grafiki: zdjęcie „Rossy” w kontenerze „highlight update” oraz „Adam Suley” widoczne w „user profile”,
  • pole typu input “search something”,
  • przycisk „message” do wysłania wiadomości do Adama Suley.

Korzystając z silnika Vision AI, zeskanowano przykładową sekcję – „user profile” i utworzono moduł w Tosce, a następnie, korzystając z modułu, utworzono krok testowy.

Przykładowy krok testowy – weryfikacja sekcji User Profile
Ryc. 11 Przykładowy krok testowy – weryfikacja sekcji User Profile

Przeprowadzono weryfikację widoczności wszystkich elementów graficznych i tekstów oraz sprawdzono, czy możliwe jest kliknięcie przycisków „follow” oraz „message”. Poniższy zrzut ekranu przedstawia wyniki wykonania testu zestawione na Execution Liście w Tosce.

Widok przykładowego kroku testowego z poziomu Execution List
Ryc. 12 Widok przykładowego kroku testowego z poziomu Execution List

Przygotowane w ten sposób pre-testy, mogą znacznie ułatwić proces komunikacji z analitykami i biznesem, a w kolejnych etapach powstawania aplikacji znacznie przyspieszyć proces budowy docelowych testów.

Skanowanie obrazów, grafów, aplikacji trudnych do klasycznej automatyzacji

Vision AI może pomóc w automatyzacji niestandardowych elementów, np.: w przypadku, jeśli potrzebujemy uzyskać dane z mapy bądź z grafiki, na której mamy wykresy z danymi.

Jedynym warunkiem jest to, aby grafika była wyraźna – Vision AI opiera się na rozpoznawaniu obiektów „wzrokowo”, więc tak jak w przypadku rozpoznawania obiektów ludzkim okiem – jeśli obiekt będzie rozmazany, to narażamy się na niemożność odczytania danych. Tego typu sytuacji nie jesteśmy w stanie obsłużyć, nawet wspomagając się najnowszą technologią wspierającą testy.

Vision AI zdecydowanie sprawdzi się również w przypadku aplikacji, które, co tu dużo mówić, są źle napisane, ich konstrukcja jest zawiła, nie mają powtarzalnych schematów bądź standardowych elementów i są przez to trudne do automatyzacji pod warstwą ładnego UI.

Działanie w praktyce

Poniżej przykład test case’a z weryfikacją danych z grafiki:

Środowisko:

Przeglądarka Chrome (wersja 124.0.6367.62), tryb incognito

Dane testowe:

Kategoria artykułu: Development na miękko

Subkategoria artykułu: Salesforce

Tytuł artykułu: Odkrywanie potencjału Salesforce Maps – przegląd narzędzia

Autor artykułu: Michał Najdora

Data publikacji: 23 lutego 2024

Miasto: Gdańsk (na mapie Gdansk)

Stepy:

  1. Otwórz stronę https://sii.pl/ w przeglądarce.
  2. Zaakceptuj ciasteczka na stronie.
  3. Zweryfikuj, czy link prowadzący do Bloga jest widoczny.
  4. Kliknij w link prowadzący do Bloga.
  5. Wybierz odpowiednią Kategorię artykułu.
  6. Kliknij „Zobacz więcej” dla sekcji Subkategorii artykułów.
  7. Wybierz odpowiednią Subkategorię artykułu.
  8. Zweryfikuj, czy oczekiwany artykuł jest na liście.
  9. Kliknij link artykułu.
  10. Wyszukaj obraz o odpowiednim opisie.
  11. Zweryfikuj, czy obraz jest widoczny.
  12. Zweryfikuj elementy na obrazie: ikona przycisku „Layers” jest widoczna, ikona przycisku „Save Changes” jest widoczna oraz najedź kursorem myszy na podane miasto w buforze.
  13. Zamknij przeglądarkę.
  14. Usuń wszystkie użyte bufory.

Step 12 ma być wykonany podczas egzekucji za pomocą modułu przygotowanego z silnikiem Vision AI.

Moduł stworzony z pomocą silnika Vision AI
Ryc. 13 Moduł stworzony z pomocą silnika Vision AI

Podczas skanowania obrazu z pomocą Vision AI jesteśmy w stanie rozpoznać nie tylko stałe elementy, jak na przykład przyciski (o czym było już wspomniane w poprzednim podrozdziale), ale również obiekty na mapie. Z racji tego, iż na naszym obiekcie możemy odczytać kilka nazw miast, stąd nie korelowano nazwy miasta z parametrem „na sztywno”, ale zastosowano bufor – dzięki czemu możemy podać inną nazwę miasta – np. „Wroclaw” i również zostanie ona odnaleziona na mapie.

Poniżej możecie obejrzeć nagranie opisanego testu.

Egzekucja test case’a ze stepami Vision AI

Vision AI Self-Healing

Dzięki temu, że Vision AI wykorzystuje jako metodę analizy danych uczenie maszynowe i potrafi interpretować elementy UI, tak jak „prawdziwy” użytkownik aplikacji, możliwe było wprowadzenie do testów funkcjonalności „samonaprawiania”. Aby włączyć mechanizm Vision AI Self-Healing, należy zezwolić aplikacji na przechowywanie historii testów w chmurze. Pozwoli to Vision AI na analizę obrazów z uruchomień testów, „naukę” interfejsu i stworzenie kilku stabilnych alternatyw dla odnalezienia elementów aplikacji używanych w teście.

Kolejnym krokiem jest wyszukanie modułu „Vision AI Self-Healing” i dodanie go jako Test Step w Recovery Scenario w Tosce, co zilustrowano na poniższym zrzucie ekranu.

Dodanie kroku „Vision AI Self-Healing” do Recovery Scenario
Ryc. 15 Dodanie kroku „Vision AI Self-Healing” do Recovery Scenario

Na przykładzie przycisku wysyłania formularza, przedstawionego we wcześniejszej części artykułu, rozważmy sytuację, w której może zadziałać mechanizm „samo-naprawy” testu. Jeśli przycisk ten zmieni kolor lub jego położenie ulegnie zmianie, Vision AI w dalszym ciągu będzie w stanie poprawnie rozpoznać element. Dynamiczne id, czy zmieniające się nazwy klas również nie będą stanowiły przeszkody dla narzędzia, aby poprawnie zidentyfikować przycisk.

W celu zademonstrowania działania mechanizmu „samo-naprawiania” wprowadziliśmy zmiany w wyglądzie przycisku znajdującego się na dole formularza, zgodnie z poniższym zrzutem ekranu.

Wprowadzenie zmian w kodzie HTML formularza kontaktowego
Ryc. 16 Wprowadzenie zmian w kodzie HTML formularza kontaktowego

Zmianie uległy:

  • id,
  • nazwa,
  • klasy odpowiedzialne za rozmiar i kolor elementu,
  • etykieta przycisku.

W pierwszej iteracji Tosca nie mogła odszukać przycisku i doszło do uruchomienia mechanizmu „samo-naprawiania”. Moduł „Vision AI Self-Healing” zadziałał poprawnie i pomimo wprowadzonych zmian, w drugiej iteracji Tosce udało się kliknąć w przycisk.

Widok Execution Listy – przykład zadziałania mechanizmu samo-naprawy testu
Ryc. 17 Widok Execution Listy – przykład zadziałania mechanizmu samo-naprawy testu

Sandbox (VisionAI assistant)

Jeśli nie jesteśmy zaznajomieni z możliwościami Vision AI, to Tricentis wychodzi nam naprzeciw, oferując Sandbox – VisionAI assistant, dzięki któremu możemy wypróbować różne dostępne opcje i rozwiązania. Do środowiska mamy dostęp tak samo, jak do innych elementów Vision AI – po założeniu nam konta przez administratora (link do środowiska).

Po wejściu w link klikamy w „Start Assistant”:

Vision AI assistant – strona początkowa
Ryc. 18 Vision AI assistant – strona początkowa

Następnie wybieramy Vision AI agenta z listy (będzie skorelowany z nazwą naszego komputera).

Po uruchomieniu odpowiedniego Vision AI agenta zostają zaczytane wszystkie okna z uruchomionymi aplikacjami, wszystkie „widzialne” elementy dla Vision AI – możemy wybrać jedno z nich i na podstawie danego okna i wyświetlanych zawartości budować skrypt.

Widok Vision AI agenta – przykład widoczności okien aplikacji przez silnik Vision AI
Ryc. 19 Widok Vision AI agenta – przykład widoczności okien aplikacji przez silnik Vision AI

Po wyborze interesującego nas elementu możemy edytować zaczytane wartości, możemy również dodać stepy przed, jak i po danym stepie. Mamy dostępne opcje takie jak:

  • wybierz okno,
  • przeładuj widok,
  • skanuj obraz,
  • importuj skrypt,
  • ustaw tryb interaktywny dla elementu (kliknij, wpisz, zaznacz),
  • weryfikuj,
  • a także uruchom skrypt i zapisz skrypt.

Do naszego Sandboxa (VisionAI assistant) możemy wrócić w każdej chwili. Przygotowane stepy nie znikną.

Każdy dodany step możemy:

  • edytować,
  • usunąć,
  • skopiować,
  • wyciąć,
  • przesunąć wyżej/niżej.

Możemy dodawać różne typy stepów jak pętle:

  • IF,
  • WHILE,
  • REPEAT UNTIL,
  • WAIT UNTIL,
  • TRY FAILURE,
  • WITH.

Mamy możliwość również importu gotowego skryptu w formacie “.vs” jako stepu. Możliwości jest wiele – warto się z nimi zapoznać samodzielnie poprzez eksplorację narzędzia, aby bardziej zrozumieć ideę Vision AI.

Przykład rozpoznawania elementów na stronie przez Vision AI
Ryc. 20 Przykład rozpoznawania elementów na stronie przez Vision AI

Ograniczenia dla Vision AI

Jak każde narzędzie – również Vision AI ma swoje ograniczenia. Tricentis wyróżnia ich kilka:

  • Rozpoznawanie tekstu współpracuje najlepiej z językiem angielskim – w związku z tym znaki nietypowe dla języka angielskiego niekoniecznie będą interpretowane prawidłowo: przykładem są polskie: ą, ę, ł, ó, ś, ć, ż, ź, dź, dż. Znaki całkiem inne niż łacińskie (np.: arabskie, cyrylica, kanji, hanji) – nie będą w ogóle czytane.
  • Za pomocą Vision AI nie możemy sterować oknami zarezerwowanymi dla administratora Windows.
  • Elementy poza widokiem strony nie będą również widoczne dla Vision AI – należy najpierw przeskrolować stronę, aby Vision AI miał szansę zweryfikować elementy, lub wspomóc się tradycyjnymi metodami automatyzacji, aby obrać punkt na stronie, gdzie zostanie wycentrowany obraz na potrzeby dalszych stepów dla Vision AI.
  • Vision AI może mieć problem z sterowaniem tabelą – zwłaszcza jeśli nie wszystkie jej kolumny/wiersze są widoczne na jednym widoku.
  • Vision AI uczy się na podstawie podawanych mu danych, stąd na początku może częściej rozpoznawać obiekty nieprawidłowo i trzeba mieć to na uwadze – im więcej egzekucji będzie wykonywanych – tym rezultaty rozpoznawania ulegną poprawie.

Podsumowanie

Vision AI jest obiecującym narzędziem, które pomaga w budowaniu testów tam, gdzie jest to utrudnione. Oczywiście, że nie wszędzie się sprawdzi i nie zastąpi testera, ponieważ kroki testowe oparte na pozostałych silnikach dostępnych w Tosca Commander (lub klasycznych frameworkach testowych) są szybsze i pewniejsze w przypadku „standardowych” sytuacji. Vision AI stanowi raczej formę wsparcia dla tych rozwiązań, które daje nam możliwości automatyzacji niektórych obszarów, gdzie do tej pory testowanie manualne pozostawało jedyną opcją.

Również dzięki Vision AI budowanie testów staje się realne w momencie, kiedy UI aplikacji nie jest jeszcze skończony, ale projekt graficzny już tak. Owszem – możliwe, że moduły przygotowane na mockupach będą do poprawy w kolejnych iteracjach procesu wytwarzania oprogramowania, ale dużo czasu zostanie zaoszczędzone. W niektórych projektach tego typu narzędzie będzie wybawieniem i game-changerem dla testera.

Warto sprawdzić możliwości Vision AI – i przekonać się na własnej skórze, że AI może być oswojonym przyjacielem, który wspiera w codziennej pracy.

4.6/5 ( głosy: 7)
Ocena:
4.6/5 ( głosy: 7)
Autorzy
Avatar
Daria Ciurko

Test Development Engineer w Sii. Zajmuje się automatyzacją testów z użyciem Tricentis Tosca oraz wdrażaniem tego narzędzia u klientów. Uważa, że największą wartością w każdym projekcie są ludzie – dlatego została mentorem i wspiera pracowników Sii w ramach wewnętrznej „Szkółki Tosca”. Po pracy współorganizuje spotkania meetupu testerskiego ŁuczniczQA, obmyśla wakacyjne trasy i hoduje pomidory

Avatar
Małgorzata Janowska-Kaczmarek

Test Development Engineer w Sii ze specjalizacją automatyzacji testów w Tricentis Tosca/certyfikowana Test Architect. Mentorka oraz współkoordynatorka “Szkółki Tosca” w Sii. Po pracy konstruktorka, ogrodniczka, podróżniczka. Również nie pogardzi dobrą herbatą i starą książką w wolniejsze dni, bądź świeżym płótnem i kilkoma farbami. Udziela się charytatywnie w tematach związanych z ochroną przyrody i zwierząt

Zostaw komentarz

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

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?