ZTAI UI1 (Testowanie aplikacji internetowych)

    Celem przedmiotu jest zapoznanie studenta z teorią testowania systemów informatycznych ze szczególnym uwzględnieniem aplikacji internetowych. Omówione zostaną rodzaje i poziomy testów, metodologie i techniki testowania oraz podstawy automatyzacji testów.

    Kontakt: josinski@amu.edu.pl

    Dyżury: po wcześniejszym uzgodnieniu e-mailem.

    Wybrane uwagi organizacyjne:

    1. Prowadzący nie będzie udostępniał prezentacji z wykładu. Na niniejszej stronie umieszczony zostanie plan każdego wykładu.

    Literatura dodatkowa:

    • ISTQB Foundation level syllabus (po polsku, po angielsku),
    • D. Graham et al.: Foundations of Software testing. ISTQB certification,
    • J. Whittaker: How to Break Software,
    • E. Hendrickson: Explore It! Reduce Risk and Increase Confidence with Exploratory Testing.

    Wykład 1.

    • Tester vs QA
    • Zawód testera
    • Środowisko (ISTQB, SJSI, TestWarez, TestingCup, PTaQ)
    • Błąd, usterka, awaria
    • Przyczyny usterek
    • Cele testowania
    • Postawowe zasady testowania
    • Proces testowy
    • Tester w klasycznych modelach wytwarzania oprogramowania
      • Model kaskadowy
      • Model "V"
    • Poziomy testów
      • Testy jednostkowe (także Sonar)
      • Testy integracyjne
      • Testy systemowe
      • Testy akceptacyjne (także testy Alfa, Beta, A/B)
    • Tester w zwinnych modelach wytwarzania oprogramowania (Agile)
      • Scrum (pojęcia: backlog, sprint, planning, demo, retro)

    Wykład 2. i 3.

    • Cynefin - klasyfikacja problemów
      • Metody postępowania (sekwencja)
      • Proste szacowanie (1. "Wiem, jak to zrobić", 2. ...)
      • Nauka i rozwój osobisty, firmy a bawura (reprezentacja w modelu)
    • Testy statyczne vs. testy dynamiczne
    • Techniki czarnoskrzynkowe projektowania testów
      • Podział na klasy równoważności
      • Analiza wartości brzegowych (BVA oraz Full BVA)
      • Techniki oparte na tablicach decyzyjnych (w tym redukcja)
      • Technika przejść między stanami (w tym pokrycie 0, 1 - przełącznikowe)
      • Analiza przypadków użycia
    • Techniki białoskrzynkowe projektowania testów
      • Pokrycie instrukcji
      • Pokrycie decyzji
      • Pokrycie gałęzi
    • Techniki oparte na doświadczeniu
    • Zgadywanie błędów, atak usterkowy
    • Testy eksploracyjne
    • Sanity tests vs. smoke tests
    • Testy oparte na sesjach
      • Przegląd sesji testowych (debrief)
      • PROOF
    • Ryzyko projektowe - QA
    • Ryzyko produktowe - tester
    • Ryzyko = Wpływ * Prawdopodobieństwo
    • ROAM
    • Zarządzanie poziomami ryzyka
    • Zgłaszanie usterki
    • Wyrocznia testowa
    • Heurystyki testowe
      • Heuristics Cheat Sheet (Quality Tree Software)

    Wykład 4.

    • Heurystyki testowe
      • FCC CUTS VIDS (Michael Kelly)
    • Rodzaje testów niefunkcjonalnych
      • Testy wydajnościowe po stronie użytkownika
      • Testy wydajnościowe po stronie serwera
      • Testy bezpieczeństwa
      • Testy użyteczności
      • Testy dostępności
      • Testy niezawodności
      • Testy pielęgnowalności
      • Testy przenoszalności
    • Testy wydajnościowe
      • Pomiar czasu odpowiedzi
      • Testy obciążeniowe
      • Testy przeciążeniowe
      • Testy soak
    • Internet a testy przenośności
    • Testy bezpieczeństwa - OWASP
      • Top 10
      • Testing Guide
      • Przykłady
        • Blind SQL Injection
        • Cross-site Scripting (XSS)
        • Brute Force Attack (m.in. 404 vs. 403)
    • Użyteczność (usability)
    • UX (User Experience)
    • Usability vs. UX
    • Sukces = Usability + UX
    • Testy użyteczności
      • Heurystyki Jakoba Nielsena

    Wykład 5.

    • Testy użyteczności
      • Klasyfikacja Weinschenka i Barkera
    • Testy dostępności
      • Standard WCAG 2.0
      • Poziomy dostępności - A-AAA
    • Automatyzacja testów
      • Zalety
      • Wady
      • Cechy dobrej automatyzacji
      • Narzędzia "Record & Playback"
      • Selenium Webdriver
      • Cucumber




    Ćwiczenia 1.

    • Testowanie poprawności
      • Walidatory W3C
      • FireFox (Ctrl+Shift+n) i Firebug (F12) - konsola błędów, widok 3D, badanie i modyfikowanie elementu, zarządzanie ciasteczkami
      • Spell Checker - dodatek FireFox
      • Check My Links - dodatek Chrome
    • Testownie przenośności
    • Testownie wydajności (po stronie klienta)
    • Testowanie lokalizacji geograficznej

    Ćwiczenia 2.

    • Techniki czarnoskrzynkowe projektowania testów
    • Testowanie a logika
    • Praca nad zadaniem (część I)

    Ćwiczenia 3.

    • Testownie dostępności
    • Fiddler
    • Praca nad zadaniem (część II)

    Ćwiczenia 4.

    • Postawy automatyzacji
    • Nightwatch.js
    • Selenium:
      1. Uruchomić cmd
      2. Utworzyć katalog dla Selenium: mkdir p:\selenium
      3. Przejść do katalogu: cd /d p:\selenium
      4. Pobrać Selenium: wget http://selenium-release.storage.googleapis.com/3.8/selenium-server-standalone-3.8.1.jar
      5. Pobrać sterowniki dla przeglądarek:
        • wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-win64.zip
        • wget https://chromedriver.storage.googleapis.com/2.33/chromedriver_win32.zip
      6. Rozpakować sterowniki: unzip *.zip
      7. Uruchomić Selenium: java -jar selenium-server-standalone-3.8.1.jar
    • Użycie nightwatch.js:
      1. Uruchomić cmd
      2. Utworzyć katalog dla nightwatch: mkdir j:\nightwatch
      3. Przejść do katalogu: cd /d j:\nightwatch
      4. Zainstalować nightwatch.js: npm install nightwatch
      5. Utworzyć katalogi: mkdir j:\nightwatch\examples\tests j:\nightwatch\examples\custom-commands j:\nightwatch\examples\pages
      6. Pobrać przykładowy test: wget https://raw.githubusercontent.com/nightwatchjs/nightwatch/master/examples/tests/google.js
      7. Dodać katalog npm do zmiennej środowiskowej PATH: set PATH=node_modules\.bin;%PATH%
      8. Uruchomić test: nightwatch google.js
    • Praca nad zadaniem (część III)

    Ćwiczenia 5.

    • Kończenie raportu podsumowującego zajęcia
    • Prezentacja raportu i wniosków z testów (obowiązkowa obecność wszystkich członków zespołu)




    Zadanie zaliczeniowe

    • Zadanie do realizacji w grupach 2-3 osobowych. Na potrzeby testów proszę wybrać złożony serwis, którego nazwa zaczyna się od pierwszej litery nazwiska jednej z osób w zespole. Należy przygotować raport z testów zawierający następujące elementy:
      • CZĘŚĆ I
      • Testy poprawności - wynik validatora, omówienie dwóch wybranych błędów
      • Testy wydajności (po stronie klienta) - wynik dowolnego skanera, omówienie dwóch parametrów
      • Testowanie lokalizacji geograficznej
        • GeoPeeker - wynik (screenshot)
        • GeoProxy (lub inny podobny dodatek) - dwie lokalizacje (screenshot)
      • Testowanie przenośności - należy przetestować serwis na 2 z 3 poniższych środowisk, a następnie dla każdej załaczyć screenshot oraz krótko ocenić jakość:
        • Desktop + IE 9 lub IE 8,
        • Tablet (dowolny) + Android Browser (dowolna wersja)
        • iPhone (dowolny) + Safari (dowolna wersja)
      • Raport z przebiegu sesji testowych (liczba sesji = liczebność zespołu)
        • Obszar testów - uzasadnienie wyboru (analiza ryzyka)
        • Należy wykorzystać poznane techniki czarnoskrzynkowe projektowania testów (wskazać)
        • Szczegółowy opis - kroki testera
        • Lista zidentyfikowanych usterek
        • PROOF
      • CZĘŚĆ II
      • Testy dostępności (WCAG 2.0 AA)
        • Wynik validatora, omówienie dwóch wybranych błędów
        • Wynik pomiaru kontrastu
      • Fiddler - podmiana obrazka, proszę załączyć po 2 screenshoty:
        • Konfiguracji Fiddlera (autoresponder) + zmienionej strony dla komputera stacjonarnego
        • Konfiguracji Fiddlera (dostęp zewnętrzny i porty) + zmienionej strony na telefonie
      • CZĘŚĆ III
      • Selenium IDE - przygotowac suite zawierający 3 nietrywialne testy - proszę załączyć "kod" testów (Działanie testów należy zaprezentować w ramach zaliczenia)
      • Nightwatch.js
        • Test 1: wyszukanie strony serwisu w przeglądarce Google
        • Test 2: otworzyć stronę serwisu i sprawdzić dostępność 3 elementów
        • Proszę załączyć kod obu testów
        • Proszę załączyć sreenshot konsoli prezentujący uruchomienie obu testów sekwencyjnie
        • Działanie testów należy zaprezentować w ramach zaliczenia
    • Deadline: Dokument należy zaprezentować w czasie ostatnich zajęć (obowiązkowa obecność wszystkich członków zespołu).