Kategorie
Uncategorized

Jak uczyć się po mistrzowsku automatyzacji oprogramowania?

0 Ćwicz to, czego się nauczyłeś

1 Staraj się stosować zasadę Pareto podczas nauki, tj. 80 % praktyki i 20 % teorii.

2 Ucz ludzi tego, czego właśnie się nauczyłeś lub co już wiesz
Jest to zasada w życiu, która dotyczy wielu aspektów, pamiętaj: kto zabiera drugą osobę łodzią, na drugą stronę jeziora… również tam dopływa. Pamiętaj o tym, jak będziesz uczył inne osoby.

3 Wyznacz sobie cel nauki oraz styl, który najbardziej Ci odpowiada
Bardzo ważne jest, aby określić cel nauki, dlaczego chcesz się czegoś nauczyć. Jednocześnie pamiętaj, że nie warto uczyć się z wyprzedzeniem – wykorzystuj mądrze zasoby (czas i pieniądze) i ucz się ze źródeł z których lubisz się uczyć. Jedni lepiej uczą się z książek, video tutoriali, a inni ze słuchu poprzez przykładowo podcasty.

4 Pisz własne notatki
Zapisanie ważnych informacji zwiększa szanse na ich zapamiętanie.

5 Powtarzaj, to co już umiesz
Mistrzostwo w każdej dziedzinie można osiągnąć tylko dzięki wielu próbom i „małym krokom” powtarzanym regularnie. Należy o tym pamiętać podczas nauki.

6 Rób przerwy
Przerwy to indywidualna sprawa, mi osobiście po kilku godzinach pracy wystarczy przerwa na kawę i coś do jedzenia. Inna osoba potrzebuje więcej lub mniej przerw podczas nauki lub pracy. Staraj się cały czas podnosić poprzeczkę i skracać czas spędzony na przerwach lub staraj się ją lepiej zoptymalizować lub produktywnie wykorzystać 🙂

Kategorie
Uncategorized

Jak skutecznie wybierać narzędzia do projektów IT / Jak wybrać najlepsze narzędzie do automatyzacji oprogramowania

Cześć! To będzie całkiem oryginalny wpis… Jak wiesz, zajmuję się szeroko pojętą automatyzacją testów w świecie IT. Nie raz miałem dylemat rozpoczynając projekt lub szukając sposobu na zautomatyzowanie i skuteczne „przetestowanie” już wdrożonego systemu informatycznego.
W taki sposób, aby w dłuższym okresie czasu można było łatwo dodawać do systemu nowe funkcjonalności, bez obniżania jakości oraz mając pewność, że obecny system zadziała u klienta w pełni poprawnie po wprowadzonych zmianach.

Nie będę doradzał Ci bezpośrednio, w jaki sposób możesz dobrać narzędzia do swojego projektu -> zależy to od wielu zmiennych, które musisz zdefiniować i ustalić priorytety przy wyborze „Narzędzi”. Chciałbym Cię zainspirować i inaczej spojrzeć na „cyfrowy świat”.
Zobacz, przez setki lat w branży budowlanej budynki były budowane przy użyciu różnych narzędzi i na wiele różnych sposobów. Opracowanie skutecznych rozwiązań, które są stosowane do dziś, zajęło dużo czasu.
Jednak metodologia i potrzeba nie zmieniły się wiele na przestrzeni dziejów, najważniejsze jest to, co można osiągnąć za pomocą tego narzędzia. Odpowiedni dobór narzędzi może zaoszczędzić czas, ale ma również wpływ na efekt końcowy. Doskonałym przykładem takiego rozwiązania może być poniższa konstrukcja kościoła Wang w Karpaczu:

Kościół Wang w Karpaczu

Czy wiesz, że ten Kościół został pierwotnie zbudowany bez użycia gwoździa? Zastanów się ile czasu i pracy musieli zainwestować budowniczy w tą konstrukcję. Niewiarygodne.

Kiedy patrzę przez ten pryzmat, jestem przekonany, że narzędzia zawsze będą się zmieniać i ewoluować w branży inżynierii oprogramowania, ale cele i efekty, do których będziemy dążyć, są niezmienne i ponadczasowe.

Miej to na uwadze, przy wyborze narzędzi w swoich kolejnych projektach.

Kategorie
Uncategorized

Top 5 rutyn koniecznych do skutecznej nauki inżynierii oprogramowania. Zacznij od dziś!

0 Ćwicz po godzinach na Hackerrank!
Nie słyszałeś o tej stronie? Powinieneś sprawdzić! – zdecydowanie polecam do poznania dowolnego języka programowania, dodatkowo zostawia ślad, że nad sobą pracujesz w postaci „archivmentów”.

1 Zrób darmowy kurs online na YouTube
Spróbuj przerabiać materiał na swoim IDE, który Cię interesuje. Pamiętaj, aby wrzucić zmiany na swoje konto GitHuba -> nigdy nie wiesz kiedy Ci się one przydadzą w pracy :)… potrzebujemy wielu małych kroków, aby robić wielkie rzeczy.

2. Zaktualizuj swoje portfolio!
Ok, tej czynności nie polecam robić codziennie ale miej to na uwadze i zawsze staraj się mieć aktualne portfolio swoich projektów. Zawsze jest dobry czas, aby zrobić lub zaktualizować swoje osobiste portfolio.

3 Usprawnij swoją komunikację online!
Dołącz do grupy na Slacku lub Facebooku z ludźmi, który zajmują się ta samą tematyką co Ty. Jeżeli jesteś programistą, testerem lub menagerem poszukaj odpowiedniej dla siebie grupy i po prostu do niej dołącz. 

4 Podążaj za aktualnymi trendami technologicznymi!
Dobra, ale rób to z umiarem, zalecam nie poświęcać więcej niż 2 godziny tygodniowo na śledzenie nowych rozwiązań i technologii… jeśli nowa technologia jest warta uwagi, na pewno prędzej czy później dowiesz się o tym.

Bądźcie skoncentrowani na rozwoju małymi kroczkami ale systematycznie.

Miłego dnia i owocnej nauki! 🙂

Kategorie
Uncategorized

Jeśli jeszcze nie rozpocząłeś nauki automatyzacji oprogramowania, to… musisz sprawdzić ten artykuł

„Jak automatyzacja wpłynie na pracę?” artykuł napisany przez PWC.

Źródło: https://www.pwc.co.uk/services/economics/insights/the-impact-of-automation-on-jobs.html

„Przeanalizowano prawie 200 000 miejsc pracy w 29 krajach w celu zbadania korzyści ekonomicznych i potencjalnych wyzwań związanych z automatyzacją.” Sztuczna inteligencja, robotyka i inne formy automatyzacji mogą potencjalnie przynieść ogromne korzyści ekonomiczne, przyczyniając się do 15 bilionów dolarów światowego PKB do 2030 roku, jak wynika z analizy PwC. Do połowy 2030 r. około 44% pracowników z niskim wykształceniem jest zagrożonych automatyzacją. Tak więc, jeśli dopiero zaczynasz swoją karierę i nie rozwijasz umiejętności cyfrowych, istnieje duża szansa że Twoje miejsce pracy jest zagrożone.

W szczególności, spójrz na poniższy wykres i wyciągnij wnioski:

Miłego dnia!

Kategorie
Uncategorized

Idealny przykład intuicyjnego interfejsu użytkownika w aplikacji mobilnej

Kategorie
Uncategorized

Dlaczego powinieneś uczyć się chmury AWSa? – 5 Faktów

Cześć! Dzisiaj będę Cię zachęcał do zapoznania się z chmurą AWS (choćby nawet w niewielkim stopniu), poniżej zestawiłem 5 faktów, dlaczego powinieneś znać tą konkretną chmurę.

1 AWS jest liderem rynku dostawców chmury i coraz więcej najbogatszych firm na świecie z niej korzysta.

2 Certyfikacja AWS staje się coraz bardziej pożądana przez pracodawców z branży IT, a wiele nowych ofert pracy na rynku wymaga znajomości AWS (często dodana w ofertach pracy jako „Nice to have”). Ścieżki certyfikacji AWS przygotowane przez twórców są bardzo dobrze przemyślane, zatem świetnym pomysłem jest rozważenie certyfikacji w interesującym nas kierunku.

3 Chcesz zachować swoje dotychczasowe stanowisko pracy.
Chmura rozszerza Twoje kompetencje, czyni Cię jeszcze bardziej pożądaną osobą na rynku pracy. Oczywiście wpływa to również na Twój wizerunek jako eksperta w dziedzinie inżynierii oprogramowania.

4 Nie chcesz pozostawać w tyle za technologią.
Nowe technologie są seksowne, a ucząc się AWS’a zdobędziesz ogólne umiejętności i poszerzysz swoje horyzonty, zresztą nigdy nie wiesz co Ci się przyda w karierze :P. Próg wejścia do nauki AWS jest bardzo mały, każdy może założyć konto i zacząć korzystać z architektury AWS. Po zalogowaniu się do konsoli otrzymujesz dostęp do wszystkich usług oferowanych przez platformę.

5 Chcesz zwiększyć swoje zarobki.
Technologia chmury jest stosunkowo młoda i może dać Ci przewagę na drodze do kolejnych awansów i podwyżek. Oczywiście, jeśli nauczysz się efektywnie korzystać z chmury AWSa.

Podsumowanie:
Zacznij od dzisiaj w małych krokach. Poniższe video przedstawia przegląd najważniejszych funkcji chmury AWSa:

Kategorie
Uncategorized

Na co zwrócić szczególną uwagę podczas testów aplikacji webowej? (czyli porady dla nie testerów w pigułce)


Cześć!

Dzisaj pokażę Ci na co w szczególności powinno się zwrócić uwagę podczas testowania aplikacji webowej.

Jeżeli nie jesteś doświadczonym testerem oprogramowania, a chciałbyś mieć pewność że Twoja strona lub aplikacja WWW jest wykonana poprawnie powinieneś sprawdzić następujące funkcjonalności (możesz to zrobić w formie checklisty):

  • Testuj aplikację na najpopularniejszych przeglądarkach
  • Sprawdź czy aplikacja jest responsywna -> zwróć uwagę na użycie na różnych urządzeniach mobilnych -> z roku na rok popularność tych urządzeń wzrasta
  • Testuj zgodność ze standardami oraz normami
  • Testuj dostępność dla użytkowników
  • Testuj pod kątem SEO
  • Testuj poprawność treści
  • Testuj pod względem bezpieczeństwa
  • Testuj pod kątem prawidłowej instalacji i działania Google Analytics
  • Monitoruj wydajność aplikacji
Rodzaje testów, które należy mieć na uwadze podczas sprawdzania aplikacji webowej

Testowanie aplikacji internetowych można ogólnie podzielić na poszczególne elementy:

  • Testy funkcjonalności – Sprawdź czy aplikacja działa zgodnie ze specyfikacją wymagań
  • Testowanie zgodności działania różnych przeglądarek
  • Test użyteczności – Twoja witryna powinna być łatwa w obsłudze dla użytkowników
  • Testowanie dostępności – warto pamiętać o sprawdzeniu czy aplikacja może być używana przez osoby niepełnosprawne
  • Test wydajności i obciążenia – Testy wydajnościowe aplikacji internetowej są wykonywane w celu sprawdzenia stabilności pod określonym obciążeniem. Warto również poznać jak działa aplikacja przy dużym obciążeniu użytkownikami
  • Testowanie współczynnika konwersji – czyli testowanie sposobów przekształcania większej liczby odwiedzających w klientów
  • Testowanie bezpieczeństwa – witryny internetowe są podatne na ataki hakerów
  • Sprawdzanie pisowni i gramatyki – powinieneś unikać błędów ortograficznych i gramatycznych bez względu na rodzaj aplikacji

W celu uzyskania możliwie najlepszych rezultatów testów:

  • Zintegruj testowanie eksploracyjne z konwencjonalnymi technikami testowania
  • Staraj się nie pomijać Sanity testów przy release’ie nowej wersji
  • Sprawdź poprawność wszystkich aplikacji, wtyczek i rozszerzeń od zewnętrznych dostawców
  • Postaraj się zautomatyzować testowanie chatbota – o ile go używasz
  • Testuj jak hacker i myśl krytycznie, co można popsuć w aplikacji
  • Bądź częścią zespołu deweloperskiego -> wraz z rosnącą adaptacją metodologii Agile ucz się współpracować z programistami, analitykami biznesowymi i klientami, jeżeli Twoja aplikacja jest złożona i skomplikowana.
Kategorie
Uncategorized

“Epic automation burger” czyli o poziomach w automatyzacji testów oprogramowania

Cześć!

Przy lekturze kilku zagranicznych blogów o tematyce automatyzacji oprogramowania, zauważyłem że dość często jest poruszana koncepcja “piramidy automatyzacji testów”, która opisuje trzy poziomy automatyzacji testów, ich relacje oraz względne znaczenie. Zdecydowanie podoba mi się to podejście, dlatego chciałbym się nim z Tobą podzielić!

Żeby być oryginalnym zrezygnuję z schematu piramidy na rzecz smakowitego burgera 🙂 zobacz poniżej:

Warstwa podstawowa: testy jednostkowe

Testy jednostkowe stanowią podstawę każdego solidnego podejścia do testowania automatycznego. Można je napisać stosunkowo szybko z porównaniem do raportu o błędzie (otrzymanym np. od testera), który zwykle brzmi „funkcja X i Y nie działa, kiedy wpisuję A lub B, napraw to proszę itd. itp.” Często taka forma wymaga większej analizy (odtworzenie, debugowanie), zatem wymaga więcej czasu od programisty na naprawienie problemu. Zaletą testów jednostkowych jest to, że nie tylko można je szybko napisać, ale także wykonanie testów jest bardzo szybkie, co w rezultacie daje deweloperowi natychmiastową informację zwrotną.

Wady testów jednostkowych polegają na tym, że koncentrują się głównie na małych fragmentach kodu (metodach, klasach) i dlatego nie są w stanie wykryć błędów na poziomie integracji lub systemu.

Warstwa środkowa: testy integracyjne/API

Większość współczesnych aplikacji oferuje pewnego rodzaju API (poprzez rzeczywisty interfejs programistyczny lub przez usługę sieciową udostępniającą funkcjonalność na zewnątrz), może ono być użyte przez testera do testowania aplikacji. Testy te są często znacznie “stabilniejsze”, ponieważ interfejsy API zmieniają się znacznie rzadziej niż testy interfejsu użytkownika i są wykonywane znacznie szybciej z mniejszą liczbą fałszywie negatywnych wyników.

Górna warstwa: testy na poziomie interfejsu użytkownika

Najlepiej jest minimalizować testy w tej warstwie, ponieważ często są one najbardziej “kruche” i zajmują najwięcej czasu zarówno podczas tworzenia przypadków testowych, jak i wykonywania testów. Uważam, że ta forma automatyzacji testów powinna być używana tylko wtedy, gdy faktycznie testowany jest interfejs użytkownika, a nie podstawowa funkcjonalność systemu, lub wtedy gdy nie ma innej alternatywy.

Podsumowanie:

Spróbuj zrozumieć mechanizm stosowania poszczególnych testów i ich praktyczne wykorzystanie, przyglądaj się innym deweloperom -> co testują i jakie pokrycie jest osiągane w pisanych testach jednostkowych. Co do testów, które nie są objęte testami jednostkowymi, spróbuj dowiedzieć się -> czy testowana aplikacja oferuje interfejs API, na którym można wdrożyć testy automatyczne. Początkowo testowanie „pod maską” bez interfejsu użytkownika do przeprowadzania testów może wydawać się trudne, ale korzyści dla projektu są warte włożonego trudu.

Pomimo, że kształt burgera automatyzacji testów powinien być mniej więcej zachowany, to pamiętaj składniki i proporcje burgera muszą być dobrane odpowiednio dla gustów zamawiających klientów -> dokładnie tak jak w przypadku proporcji stosowania odpowiednich testów w zależności od projektu informatycznego (indywidualne podejście).

Przestrzeganie powyższych sugestii znacznie pomoże Ci w uzyskaniu idealnego burgera automatyzacji testów. 🙂

Kategorie
Uncategorized

Najważniejsze zasady testowania oprogramowania – każdy powinien to wiedzieć! :)

Główne zasady testowania są również podstawą programu nauczania ISTQB. W poniższym wpisie przedstawię Ci tę wiedzę w krótkiej, zwięzłej formie – zaczynajmy!

0 Testowanie ujawnia usterki, ale nie może dowieść ich braku

Jasna sprawa. Każda szczegółowa weryfikacja błędów nie dowodzi, że nie można znaleźć ich więcej w aplikacji – zawsze jest to tylko kwestia czasu i budżetu poświęconego na testy.

W tym miejscu poruszę jeszcze jedną kwestię – warto poprosić innego testera o przetestowanie tego, co sami testowaliśmy. Dodatkowa para oczu na pewno jeszcze dokładniej wychwyci pozornie niewidoczne dla nas błędy.

1 Dokładne testowanie (gruntowne) nie jest możliwe

Zasada wskazuje, że żadna aplikacja nie może być w pełni przetestowana (wszystkie funkcje złożonej aplikacji lub systemu), wyjątkiem od reguły są bardzo proste aplikacje.

2 Wczesne testowanie oszczędza czas i pieniądze

Gdy we wczesnym etapie pracy znajdziemy błędy, znacznie łatwiej i taniej jest je usunąć.

3 Nagromadzenie (kumulacja) defektów

Zasada kumulacji błędów polega na tym, że w niektórych modułach aplikacji może występować więcej błędów – tą wiedzę zdobywamy wraz z doświadczeniem podczas przeprowadzenia testów w aplikacji.

4 Paradoks pestycydów

Ta zasada odnosi się do sytuacji, w której zawsze testujemy te same scenariusze w aplikacji. Prowadzi to do sytuacji, w której przestajemy znajdować błędy.

5 Błędem jest założenie, że nie ma żadnych błędów w aplikacji

Krótko i zwięźle – musisz założyć, że aplikacja zawsze zawiera jakieś błędy lub problemy. Czasami w trudniejszych i złożonych projektach IT akceptowalna jest pewna liczba drobnych usterek.

Podsumowanie:
Powyższa treść to tylko schemat, zasady są ponadczasowe i warto o nich pamiętać podczas testów zarówno prostej aplikacji, jak i skomplikowanego systemu informatycznego. 

Kategorie
Uncategorized

Najlepsze praktyki przy testowaniu funkcjonalnym

Cześć!

Opowiem Ci dzisiaj trochę o dobrych praktykach przy przeprowadzaniu testów funkcjonalnych. Testy funkcjonalne są wykonywane w celu przetestowania podstawowej funkcjonalności danej aplikacji lub oprogramowania bez ingerencji w jego budowę (jest to też często określane terminem czarnej skrzynki). Każda funkcjonalność jest testowana poprzez dostarczenie danych wejściowych, a następnie obserwację i porównanie otrzymanych wyników z oczekiwanymi. Poniżej przedstawię Ci kilka skutecznych procedur, które mogą Ci się przydać podczas przeprowadzania testów funkcjonalnych.

0 Przygotuj wcześniej plan testów i przypadki testowe

Planowanie tego, co należy zrobić, aby poprawnie przeprowadzić testowanie obejmuje:
– cel i zakres testów,
– ludzi potrzebnych do przeprowadzenia testów,
– potrzebny sprzęt,
– narzędzia oraz harmonogram testów,
– sporządzenie przypadków testowych.

1 Zbierz informacje wymagane do wykonania testów

Zbierz wszelkie potrzebne informacje i najpierw przetestuj krytyczne funkcjonalności pod względem ryzyka (ustal priorytety).

2 Wykonanie testów

Plany testów i rzeczywista funkcjonalność powinny być zgodne, aby test został wykonany poprawnie.

3 Zarządzaj defektami

Korzystaj z oprogramowania i standardowych szablonów do zgłaszania i weryfikacji defektów.

4 Przedstawiaj wyniki

Raport z wyników testu powinien być przedstawiony w jasny i prosty sposób, aby umożliwić łatwe zrozumienie przez zespół programistów.

5 Analizuj

Podczas analizy można wykryć problemy i nieścisłości zarówno podczas testowania, jak i programowania. Analiza przyczynia się do ulepszania procedur stosowanych w rozwoju produktu.

6 Rozważ testy automatyczne

Testowanie automatyczne ma na celu poprawę jakości produktu lub oprogramowania, a także oszczędność czasu -> o ile podejdziesz do tego jak do inwestycji. Testowanie automatyczne jest droższe w krótkim okresie czasu, natomiast w dłuższej perspektywie dobrze zaprojektowane testy automatyczne mogą być bardzo korzystne dla jakości finalnego projektu
i docelowo produktu.