Lekcja 3: Testowanie aplikacji webowych

Autor:Tomasz Stelmach ©Wszelkie prawa zastrzeżone.

 

Często korzystamy z Internetu, chętnie opieramy na nim swoje działania, także w rutynowym posługiwaniu się telefonem komórkowym, jednak czy aby na pewno potrafimy jasno zdefiniować niektóre elementy, jakie są jego środowiskiem? Okazuje się, że jest to wiedza wręcz niezbędna dla testerów automatyzujących, którzy chcą się zajmować automatyzacją testów aplikacji webowych.

Tym razem chcę Wam przybliżyć podstawowe informacje dotyczące tego, czym jest aplikacja internetowa zwana –  aplikacją webową. Przedstawię także różnice pomiędzy aplikacją internetową a stroną internetową. W tej części zapoznacie się też z zaletami samych aplikacji oraz różnymi ich typami. Wszystko to będzie prowadziło do testów automatycznych, jakimi można poddawać  aplikacje webowe. Zamknę zaś temat przypomnieniem informacji dotyczących konkretnej listy najpopularniejszych kodów odpowiedzi HTTP wraz z ich wyjaśnieniem. Jestem przekonany, że te wiadomości okażą się niezwykle przydatne podczas nabywania wiedzy o automatyzacji testów.

Jako, że kurs będzie się skupiał na testowaniu aplikacji i stron internetowych, to na początek chciałbym trochę przybliżyć specyfikę oraz budowę tego typu oprogramowania. Będzie nam znacznie łatwiej przyswajać kolejne tematy, jeśli teraz poznamy najważniejsze założenia tych rozwiązań.

Czym jest aplikacja internetowa?

Aplikacja internetowa (aplikacja webowa) – to aplikacja przechowywana na zdalnym serwerze, dostarczana przez Internet za pośrednictwem interfejsu przeglądarki i bezpośrednio na niej funkcjonująca.

Aplikacje internetowe mogą być zaprojektowane do wielu różnych zastosowań. Zadaniem każdej z nich (nie tylko webowej) jest dostarczenie pewnej usługi skierowanej dla określonych odbiorców. Istotną kwestią, w przypadku aplikacji webowych, jest dostęp do Internetu – bez niego większość aplikacji nie mogłyby świadczyć swoich usługi. Zwracam tu uwagę na określenie „większość”, gdyż są oczywiście aplikacje, które potrafią działać całościowo bądź modułowo w trybie offline.

Czy aplikacja internetowa równa się stronie internetowej?

Aplikacje webowe oraz strony internetowe nie są tym samym! Prawdą jest, że na pierwszy rzut oka trudno je od siebie odróżnić, ale jednak posiadają istotne różnice.

Aplikacje webowe VS strony internetowe

  • Strony internetowe budowane są w celach informacyjnych

Przeznaczenie stron internetowych jest jasne: prezentacja informacji (najczęściej o firmie, produktach czy  usługach). Cel ten ma wpływ na architekturę i budowę stron www, które są stosunkowo proste, pozbawione skomplikowanej logiki i skupiają się tylko na kilku podstawowych funkcjonalnościach, takich jak: wyświetlanie tekstu, nawigacja po stronie itp.

  • Aplikacje internetowe są zaprogramowane na udostępnianie konkretnych usług

Oferowane usługi mają zwykle rozbudowaną logikę i realizują rozmaite funkcjonalności. W związku z tym aplikacja internetowa jest dużo bardziej interaktywna, pozwalająca użytkownikowi na takie interakcje, jak: pobieranie plików, transfer pieniędzy, przesyłanie plików, wyszukiwanie elementów itp.

Budowa i architektura jest więc znacznie bardziej skomplikowana, w dużej mierze skupia się na pracy po stronie serwera, a nie samej przeglądarki.

Zalety aplikacji internetowych

Aplikacja internetowa VS inne typy aplikacji

Aplikacje natywne – aplikacje zaprojektowane i zbudowane na konkretne, określone platformy czy urządzenia, np. różnego rodzaju aplikacje bankowości elektronicznej. Aplikacje natywne, jako że są budowane pod określone platformy, korzystają ze specyfiki urządzenia czy środowiska, np. mobilne natywne aplikacje bankowości internetowej, które do logowania wykorzystują mechanizm rozpoznawania twarzy –  wykorzystują kamerę urządzenia mobilnego.

Aplikacje hybrydowe – jak sama nazwa wskazuje są hybrydą, czyli połączeniem dwóch wcześniej omawianych typów aplikacji. Działanie jest podobne, jak w przypadku aplikacji webowych, jednak mają one swoje instalatory i są instalowane na dyskach  urządzeń. Często korzystają też ze specyfiki środowiska czy urządzenia – tak jak aplikacje natywne.

Przykład aplikacji natywnej : IKO – mobilna aplikacja bankowa, największego polskiego banku – PKO BP.

Przykład aplikacji webowejwww.booking.com – aplikacja webowa powszechnego serwisu z usługami hotelowymi. Booking.com ma również swoją aplikację natywną, którą można pobrać np. ze sklepu Google.

Przykład strony internetowejwww.odlaikadoautomatyka.pl

Rodzaje testów, którymi możemy poddać aplikacje webowe

  • Testy funkcjonalne 

Weryfikacja systemu bez wnikania w kody źródłowe (wewnętrzną strukturę oprogramowania). Testy oparte na specyfikacji i wymaganiach. Testowanie takich elementów systemu, jak np. weryfikacja poprawności wyświetlanych elementów aplikacji (menu, grafika, tekst), komunikacja pomiędzy aplikacją a serwerem.

  • Testy niefunkcjonalne

Testowanie systemu w oderwaniu od jego zbudowanych funkcjonalności. Testowanie niefunkcjonalne daje nam odpowiedź na pytanie „Jak działa system?” Celem jest uzyskanie informacji o konkretnych właściwościach systemu lub określonego modułu. Testowanie niefunkcjonalne może być wykonywane na wszystkich poziomach testów.

  • Testy użyteczności

Testy koncentrują się na sprawdzeniu, czy wytworzony produkt spełnia założone cele i wymagania. Dają one bezpośrednią informację na temat tego, w jaki sposób użytkownicy eksploatują system. Przykładami oprogramowania, które najczęściej wykorzystują testy użyteczności są właśnie: strony i aplikacje internetowe.

  • Testy wydajnościowe

Rodzaj testów oprogramowania skupionych na zapewnieniu aplikacji poprawnego działania pod ich oczekiwanym obciążeniem.

  • Testy przeciążeniowe

Weryfikacja dotycząca zachowania systemu, kiedy działa na granicy swoich zasobów, takich jak pamięć czy procesor.

  • Testy obciążeniowe

Weryfikacja dotycząca oprogramowania, podczas gdy potęguje się jego obciążenie. Przykładem może być test, w którym zwiększamy liczbę zalogowanych do aplikacji użytkowników – sprawdzając jak reaguje aplikacja.

  • Testy przenaszalności

Weryfikacja tego, w jaki sposób i z jakim poziomem trudności można przenieść system na inne środowisko.

   

  • Testy bezpieczeństwa

Weryfikacja systemu pod kątem osłony i mechanizmów bezpieczeństwa, które mają chronić system przez niepożądanymi zachowaniami osób z wewnątrz i z zewnątrz.

      

  • Testy pielęgnowalności

Weryfikacja pielęgnowalności, czyli tego jak łatwo można dostosować system do nowych wymagań oraz czy jest możliwość jego prostej modyfikacji do planowanych i nieplanowanych zmian.


Kody odpowiedzi HTTP

Z pewnością niejednokrotnie zdarzyło Wam się wpisać adres poszukiwanej strony www lub kliknąć w jakiś odnośnik, np. do formularza kontaktowego, a zamiast oczekiwanego efektu w postaci wyświetlenia konkretnej strony www – dostaliście komunikat błędu strony www zawierającej kody odpowiedzi HTTP.

Przykładowo wygląda to tak:

Co tak naprawdę oznacza komunikat z liczbą 404 bądź 500 czy 502 ?

Poniżej prezentuję listę najpopularniejszych kodów odpowiedzi HTTP – wraz z ich wyjaśnieniem:

  • 500  – (Internal server error) wewnętrzny błąd serwera

Najczęstszy błąd występujący w sieci. Jest to błąd ogólnego przeznaczenia, który pojawia  się, gdy serwer www jest przeciążony i chwilowo jego zasoby są nieosiągalne dla użytkownika.

  • 401  (Unauthorized) – Nieautoryzowane dostęp

Ten komunikat błędu występuje zwykle w przypadku nieudanego logowania. Oznacza, że użytkownik próbował uzyskać dostęp do witryny bądź zasobu, do której nie miał udzielonego dostępu.

  • 403 (Forbidden)- Zabronione dostęp

Komunikat błędu  403 może się pojawić, gdy spróbujesz uzyskać dostęp do zabronionego katalogu na stronie internetowej.

  • 404 (Not found) – Nie Znaleziono

Próba uzyskania dostępu do strony internetowej, która nie istnieje. Zwykle jest wynikiem niedziałającego linku, który został przeniesiony na inny zasób sieciowy. Użytkownik błędnie wpisał adres URL lub po prostu strona już nie istnieje.

  • 408 – (Request timeout)Timeout

Serwer przekroczył limit czasu oczekiwania na pełne żądanie przeglądarki (np. poprzez problemy z wydajnością łącza internetowego).

  • 501 (Not implemented)-Brak implementacji

Błąd pojawiający się w sytuacji, gdy użytkownik zażądał funkcji, której przeglądarka nie obsługuje.

  • 502 (Bad gateway)- Usługa tymczasowo przeciążona

Błąd 502 pojawia się, gdy występuje przeciążenie serwera. Zwykle sam się koryguje, gdy  ruch w sieci maleje i możliwe staje się płynne połączenie między serwerami.

  • 503 (Service unavailable) – Usługa niedostępna

Błąd pojawia się w przypadku, gdy witryna jest zajęta lub serwer nie działa.

Kategorie odpowiedzi HTTP

Wyróżniamy 5 kategorii kodów odpowiedzi HTTP:

  • 100: kody informacyjne -> kody informujące, że żądanie jest wciąż procesowane.

  • 200: kody powodzenia -> tę kategorię kodów otrzymujemy, gdy żądanie przeglądarki zostało przetworzone w prawidłowy sposób.

  • 300: kody przekierowań -> otrzymujemy, gdy zawartość została zastąpiona innym zasobem.

  • 400:kody błędów klienta -> pojawia się w przypadku wystąpienia problemów z zadanym żądaniem.

  • 500: kody błędów -> zwracane w przypadku, gdy żądanie zostało przetworzone i zaakceptowane, lecz wystąpił problem na serwerze, który zablokował końcowe prawidłowe procesowanie wysłanego żądania.


Po zapoznaniu się z rozdziałem dotyczącym aplikacji webowych z pewnością wiesz już, jak je rozróżniać. Czym charakteryzują się konkretne aplikacje webowe, a czym w istocie jest strona internetowa? Będziesz też potrafić rozróżniać wyskakujące nierzadko na stronie komunikaty błędów, co pozwoli uniknąć problemów związanych z korzystaniem z konkretnych narzędzi dostępnych w Internecie.

Te podstawowe informacje są elementem rozbudowanej wiedzy o automatyzacji testów. Każdy, kto chce rzetelnie zająć się tą tematyką musi je dobrze opanować, ponieważ mogą się okazać bardzo cenne. Będziesz przecież musiał wiedzieć, jakim rodzajom testów poddać konkretne aplikacje webowe. Rozpoznawanie ich typów jest bowiem konieczne, żeby móc pracować w obszarze automatyzacji testów. Jeśli jednak miałeś już świadomość, czym są poszczególne elementy, to cieszę się, że mogłem Ci je przypomnieć, gdyż jesteś już o krok bliżej docelowej wiedzy, jaką przekazuje ten kurs.


ZAPAMIĘTAJ!

  • Aplikacja internetowa (aplikacja webowa) – to aplikacja przechowywana na zdalnym serwerze i dostarczana przez Internet, za pośrednictwem interfejsu przeglądarki i bezpośrednio na niej funkcjonująca.
  • Aplikacje webowe i strony internetowe to nie to samo!
  • Strony internetowe budowane są w celach informacyjnych
  •  Aplikacje internetowe są zaprogramowane na udostępnianie konkretnych usług
  • Aplikacje natywne – aplikacje zaprojektowane i zbudowane na konkretne, określone platformy czy urządzenia – np. różnego rodzaju aplikacje bankowości elektronicznej.
  • Aplikacje hybrydowe – jak sama nazwa wskazuje są hybrydą, czyli połączeniem dwóch typów aplikacji. Działanie jest podobne, jak w przypadku aplikacji webowych, jednak aplikacje mają swoje instalatory i są instalowane na dyskach  urządzeń.

  • Rodzaje testów, którymi możemy poddać aplikacje webowe:
    • Testy funkcjonalne
    • Testy niefunkcjonalne
    • Testy użyteczności
    • Testy wydajnościowe
    • Testy przeciążeniowe
    • Testy obciążeniowe
    • Testy przenaszalności
    • Testy bezpieczeństwa
    • Testy pielęgnowalności
  • Kategorie kodów odpowiedzi:
    • 100: kody informacyjne
    • 200: kody powodzenia
    • 300: kody przekierowań
    • 400: kody błędów klienta
    • 500: kody błędów serwera


  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Status  -> obszerne zestawienie kodów odpowiedzi HTTP
  • https://sjsi.org/ist-qb/do-pobrania/ -> Link do syllabusa ISTQB Poziom Podstawowy. Polecam poczytać więcej o wspomnianych w lekcji rodzajach testów (testy funkcjonalne, testy niefunkcjonalne, testy użyteczności, testy wydajnościowe, testy przeciążeniowe, testy obciążeniowe, testy przenaszalności, testy bezpieczeństwa, testy pielęgnowalności)

Notatka o autorze:

Zajmuję się testowaniem, zabezpieczaniem i zapewnianiem jakości oprogramowania od ponad 13 lat. Rozpocząłem swoją karierę od testów manualnych i analizy biznesowo-technicznej. Obecnie prowadzę firmę Quality Island, która zajmuje się szeroko pojętym testowaniem oprogramowania oraz szkoleniami dla przyszłych i obecnych testerów oprogramowania. Moją specjalnością są testy automatyczne aplikacji webowych oraz budowa procesów automatyzacji i robotyzacji. Od 8 lat prowadzę aktywnie szkolenia oraz konsultacje z tych tematów i wykonuję zlecenia dla firm trzecich jako konsultant, ekspert oraz audytor. Współpracuję również z firmami jako osoba do rekrutacji i weryfikacji technicznych. Interesują mnie głównie tematy związane z architekturą IT oraz zagadnienia DevOps/TestOps, ponieważ ściśle wiążą się z zapewnianiem jakości oprogramowania.

 

Tomasz Stelmach

CEO&Founder

 

0 komentarzy

Wyślij komentarz

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