Serwery stanowią kręgosłup nowoczesnej infrastruktury IT, umożliwiając funkcjonowanie zarówno małych i dużych firm. Poznaj sposoby łączenia się z serwerami!
Wyobraź sobie, że Twoja firma od kilku lat ciężko pracowała nad nowym produktem technologicznym – np. aplikacją mobilną. Wszyscy są podekscytowani – moment, kiedy jej pierwsza wersja ujrzy światło dzienne zbliża się wielkimi krokami. Gdy jednak nadchodzi ten długo wyczekiwany dzień, okazuje się, że premiera aplikacji to jedna, wielka klapa… Część funkcji nie działa tak jak powinna, aplikacja się zacina i nie da się z niej swobodnie korzystać. Użytkownicy są niezadowoleni, a Twoi pracownicy zamiast świętować zwycięstwo, muszą mierzyć się z kolejnymi zgłaszanymi błędami.
Ta historia nie musi się wcale tak skończyć. Niech będzie tylko przestrogą, która skłoni Cię do refleksji nad tym, dlaczego tak ważne jest wykonywanie testów oprogramowania aplikacji internetowych i mobilnych. Błędy są rzeczą ludzką i zdarzają się nawet największym profesjonalistom. Jednak dbając o wizerunek i dobre prosperowanie firmy, należy zrobić wszystko, co możliwe, aby zminimalizować ich liczbę i ewentualne negatywne skutki.
Jeśli chcesz zapewnić produkt najwyższej jakości, testowanie aplikacji powinno być obowiązkowym elementem jej tworzenia. Dzięki temu można sprawdzić, czy dane oprogramowanie jest wolne od wad, a także ocenić i zweryfikować, czy spełnia zakładane cele.
Testowanie oprogramowania to proces, który ma na celu identyfikację wszelkiego rodzaju błędów i niedociągnięć, uniemożliwiających prawidłowe działanie danego oprogramowania – aplikacji webowej, mobilnej, PWA, strony internetowej czy sklepu e-commerce.
Jest to przedostatni krok przed wprowadzeniem produktu na rynek. Obejmuje badanie, analizę, obserwację i ocenę jego różnych aspektów – zgodność ze specyfikacją techniczną, funkcjonalność, wydajność, szybkość, przyjazność UI/UX i inne. Wszystko po to, aby oprogramowanie poprawnie działało i spełniało wszystkie zakładane cele. Testerzy po sprawdzeniu wszystkich istotnych czynników, raportują wyniki do zespołu programistycznego. Developerzy naprawiają znalezione przez nich defekty i ulepszają aplikację, aby była w pełni zgodna z wymaganiami funkcjonalnymi. Dopiero, gdy ten warunek będzie spełniony, oprogramowanie może być wypuszczone na rynek, dla użytkownika.
Ważną kwestią, oprócz samego wykonania rzetelnych i wyczerpujących testów, jest ich sposób udokumentowania. Wszystkie informacje o przeprowadzonych procesach, wynikających z nich wnioskach i rekomendacjach powinny być przedstawione możliwie prostym i zrozumiałym językiem. Tak, aby osoby nie znające fachowej terminologii technicznej też mogły je zrozumieć.
Testowanie jest ważne, ponieważ skutecznie zapobiega wszelkim błędom, zmniejsza nakłady finansowe na dalszy rozwój i poprawia wydajność oprogramowania. Tym samym pozytywnie wpływa na doświadczenia użytkownika końcowego. Wady w aplikacji mogą mieć dla firm wiele negatywnych skutków. Szkodzą reputacji marki, powodują frustrację, a nawet utratę klientów, a także niosą za sobą szereg kosztów i niebezpieczeństw. Historia jest pełna takich przykładów…
W samochodach Nissana wykryto awarię oprogramowania w czujnikach poduszek powietrznych. Zgłoszono dwa wypadki, które spowodowane były tą wadą. W związku z tym niedopatrzeniem, firma musiała wycofać ponad milion aut z rynku.
Starbucks napotkał awarię oprogramowania w swoim systemie POS (Point of Sale – narzędzie do przyjmowania i obsługi zamówień). Ze względu na brak możliwości przetworzenia transakcji, kawiarnia wydawała klientom kawę za darmo i musiała zamknąć ok. 60% swoich placówek w Kanadzie i USA.
W 2016 r. Yahoo! ujawnił, że padł ofiarą jednego z największych w historii wycieków danych, który dotyczył ponad 3,5 miliardów kont użytkowników. Firma stała się przez to podmiotem wielkiej krytyki za niedopatrzenia w zakresie bezpieczeństwa. Ponadto musiała zmierzyć się z kilkoma procesami sądowymi, a jej wartość w transakcji przejęcia przez Verizon Communications spadła o 350 milionów dolarów.
26 kwietnia 1994 r. samolot China Airlines rozbił się w Japonii podczas podejścia do lądowania. Z powodu błędu oprogramowania, w katastrofie śmierć poniosły 264 osoby, a 7 w stanie ciężkim trafiło do szpitala.
W 2018 roku doszło do wycieku danych ponad 2 milionów użytkowników sklepu internetowego Morele. UODO nałożyło na firmę rekordową karę 2,8 milionów złotych za brak właściwych zabezpieczeń sklepu przed atakiem hakerów.
W 1996 r. w dużym banku amerykańskim wystąpił błąd oprogramowania. W wyniku tego na konta ponad 800 klientów wpłynęło po 920 mln dolarów amerykańskich.
Chcąc zagłębić się w temat testowania aplikacji, na początku warto rozróżnić podstawowy podział na testy ręczne i automatyczne.
W przypadku manualnego testowania oprogramowania, analiza i sprawdzanie jakości kodu wykonywane są ręcznie przez testera. Sprawdza on wszystkie istotne cechy aplikacji lub strony, wchodząc z nią w interakcje bez użycia jakichkolwiek zautomatyzowanych narzędzi czy skryptów. Kontrola jakości dokonywana jest na podstawie unikalnych scenariuszy testowych z perspektywy użytkownika końcowego.
I chociaż wiadomo, że automatyzacja oszczędza czas, testowanie ręczne jest bardzo istotną częścią tworzenia oprogramowania. Testerzy przyjmują wtedy rolę tych, którzy z aplikacji lub strony będą ostatecznie korzystać. Dzięki temu mogą myśleć jak użytkownicy końcowi i wyobrażać sobie wiele możliwych do zaistnienia scenariuszy dla aplikacji lub funkcji.
Testowanie ręczne ma wiele zastosowań. Szczególnie przydatne okazuje się przy ocenie dostępności, funkcjonalności i użyteczności oprogramowania. Dla przykładu weźmy uruchomienie nowego sklepu internetowego. Zanim zostanie on opublikowany, należy sprawdzić m.in., czy:
To wszystko można zbadać ręcznie. Testerzy weryfikują kody odpowiedzialne za każdą z tych funkcji i dokładnie przeklikują się przez sklep, oceniając go z perspektywy użytkownika. Jeśli okaże się, że jakaś funkcjonalność nie działa zgodnie z zamierzeniami lub ma nieprawidłowy wygląd, zgłaszane jest to do programisty, który to naprawia.
Testy automatyczne są wykonywane również przez testerów z tą różnicą, że wspierają się oni specjalnymi narzędziami i skryptami, które pomagają zautomatyzować część procesów. Mogą one obejmować zarówno jakąś pojedynczą funkcję oprogramowania, jak i całą sekwencję zdarzeń w interfejsie użytkownika. Uwzględniając przygotowany scenariusz, testy automatyczne porównują otrzymane wyniki z tymi, które zostały w nim założone.
Testy automatyczne są bardziej niezawodne od testów ręcznych, jednak ich jakość zależy od tego, jak dobrze zostały napisane skrypty. Są odpowiednie w przypadku dużych projektów, które wymagają stałej weryfikacji tych samych obszarów oraz aplikacji, które przeszły już wstępny etap testowania ręcznego.
Automatyzacja testów oprogramowania może zaoszczędzić czas i pieniądze, ale nigdy nie zastąpi cząstki ludzkiej w znajdowaniu błędów. Zwłaszcza, jeśli chodzi o testowanie użyteczności oprogramowania, które ma być przeznaczone dla prawdziwych użytkowników końcowych.
Testowanie oprogramowania dzieli się na dwie główne kategorie: testowanie funkcjonalne i niefunkcjonalne. To rozróżnienie ze względu na to, jaki aspekt aplikacji sprawdzają – biznesowy czy operacyjny. Nie jest to jednak jedyny podział. Wśród testów funkcjonalnych i niefunkcjonalnych wyróżnia się bowiem kolejne, bardziej szczegółowe typy testów. Zobacz, jakie obszary możesz dzięki nimi zweryfikować w swojej aplikacji lub na stronie.
Testy funkcjonalne koncentrują się na wymaganiach biznesowych aplikacji lub strony. Dzięki nim można sprawdzić, czy wszystkie jej funkcje i cechy są zgodne z określonymi wcześniej kryteriami. Co za tym idzie – czy produkt końcowy spełnia zakładane oczekiwania klienta.
Poszczególne testy funkcjonalne są zwykle przeprowadzane w określonej kolejności. Wśród nich wyróżnia się 4 poziomy, a każdy z nich dotyczy innej fazy wytwarzania oprogramowania.
Po przetestowaniu poszczególnych jednostek są one integrowane z innymi. Tworzą wtedy moduły lub komponenty, które mają wykonywać określone funkcje. Wtedy testuje się je jako całe segmenty w celu zweryfikowania, czy zachowują się zgodnie z założeniami, a interakcja jest płynna. Dzięki tym testom można np. sprawdzić, czy połączenie między aplikacją a bazą danych działa właściwie lub zbadać integrację z systemami zewnętrznymi.
Testy niefunkcjonalne sprawdzają takie aspekty aplikacji jak jej wydajność, niezawodność, skalowalność, bezpieczeństwo, użyteczność itd. Ich celem jest poprawienie jakości i ulepszenie oprogramowania. Testy niefunkcjonalne wykonywane są po wcześniejszych testach funkcjonalnych.
Niektórzy przypisują je do rodzaju testów funkcjonalnych, jednak tak naprawdę często odnoszą się one zarówno do testów jednostkowych, jak i testów wydajności czy API, które są już przykładami testów niefunkcjonalnych.
Testy regresyjne są wykonywane są za każdym razem, gdy do oprogramowania dodawany jest nowy moduł. Sprawdzają, czy wprowadzone lub zmienione elementy nie wpływają negatywnie na funkcjonalność całej aplikacji.
Oprócz podziału na funkcjonalne i niefunkcjonalne typy testowania, możemy rozróżnić także 3 podejścia do testowania aplikacji. Są to:
Dobrze przetestowany produkt zapewnia optymalne wyniki, które przekładają się na sukces biznesu. Warto to zadanie powierzyć profesjonalistom, którzy są w stanie tworzyć w pełni dopasowane do potrzeb rozwiązania technologiczne. Dzięki wiedzy i bogatemu doświadczeniu pomogą ocenić słabe punkty i zaproponują działania ulepszające Twoje oprogramowanie.
Mamy nadzieję, że nauczyłeś się czegoś ważnego, jeśli chodzi o świat testowania oprogramowania. Pamiętaj jednak, że tworząc swoją aplikację lub stronę nie musisz wykonywać wszystkich wymienionych rodzajów testów. Każdy projekt, w zależności od rodzaju i specyfikacji, będzie wymagał innego zestawu metod badawczych.
Najważniejsze, aby nie pominąć tego etapu tworzenia oprogramowania. Wypuszczając produkt na rynek, musisz mieć pewność, że jest on funkcjonalny i spełnia wszystkie swoje najważniejsze zastosowania. W końcu po co tworzyć sklep internetowy, w którym użytkownik nie może założyć konta lub wrzucić produktów do koszyka? To kluczowe zadania, których się od niego oczekuje. Biznes opiera się na zaufaniu klientów. Aby je zdobyć i później sukcesywnie monetyzować, musisz dostarczać spójne i niezawodne rozwiązania.