Salta al contenuto principale
CODICE 101808
ANNO ACCADEMICO 2023/2024
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 2° Semestre
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

L'obbiettivo di questo insegnamento è introdurre il test funzionale e di sicurezza nello sviluppo del software. Il testing è un attività chiave per garantire la qualità del software. Durante la fase di testing devono essere considerati sia gli aspetti funzionali che quelli di sicurezza.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

Learning the fundamentals in functional and security testing of software systems, with special emphasis on challenges posed by Web and Mobile applications, and getting acquainted with automated tools used to practice testing techniques.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Gli studenti apprenderanno i fondamenti dei test funzionali e di sicurezza dei sistemi software, con particolare attenzione alle sfide poste dalle applicazioni Web e mobili e all'utilizzo di strumenti di test automatizzati.

Gli studenti vedranno le molteplici sfaccettature del problema e apprenderanno metodologie, approcci e tecniche per verificare la qualità di sistemi software complessi.

Dopo il completamento del corso, i partecipanti saranno in grado di:

  •     Comprendere e applicare le differenze tra test funzionale e di sicurezza
  •     Comprendere i concetti fondamentali del test del software (ad es. test manuale vs automatizzato)
  •     Utilizzare tecniche/approcci/strumenti consolidati per la progettazione e l'esecuzione di test funzionali
  •     Scoprire come gli aggressori riescono a violare le applicazioni
  •     Comprendere le possibilità di attacco delle app Web (ad es. SQL injection)
  •     Comprendere le vulnerabilità "Top Ten" proposte da OWASP
  •     Applicare tecniche di test delle applicazioni Web e mobili (sia funzionali che di sicurezza), utilizzando, ad es. il Framework Selenium, la suite Burp e altri strumenti di test automatizzati
  •     Incorporare il test del software come un processo continuo di sviluppo

PREREQUISITI

  • Fondamenti di programmazione Object Oriented e procedurale (in particolare, conoscenza di base dei linguaggi Java, Javascript, PHP e SQL)
  • conoscenza di base delle applicazioni Web e Mobile

MODALITA' DIDATTICHE

L'insegnamento è una combinazione tra presentazione di concetti teorici ed esercitazioni pratiche. È orientato al dialogo e con un approccio pratico.

Agli studenti verranno forniti compiti obbligatori che dovranno essere completati durante il corso.

PROGRAMMA/CONTENUTO

Testing funzionale:

  •     Introduzione al corso: fondamenti di test funzionali e di sicurezza
  •     Test manuali vs test automatizzati
    •  Tecniche essenziali di test del software
    •   Introduzione ai test continui (DevOps)
      •   Introduzione a una piattaforma CI/CD (ad es. Jenkins o GitHub Actions)
    •   Strumenti di automazione per test di unità (ad es. xUnit e TestNG)
  •     Test di app Web e dispositivi Mobili
    •   Approccio di test E2E
    •   Differenza tra test web e mobile
    •   Approcci per la generazione di casi di test E2E
    •   Introduzione a Selenium IDE e Selenium WebDriver
    •   Test cross-browser
    •   Best practice per l'automazione dei test
      •   Page Object Model
    •    Testing tools
      •   Cattura/riproduzione vs programmabile
      •   Basato su DOM rispetto a Visual
  •     Test dell'API
    •  Introduzione a POSTMAN
  •     Laboratorio
    •  Sviluppo di suite di test per app Web
    •  Selenium IDE, Selenium WebDriver, Appium, POSTMAN, Katalon, Jenkins (o altri strumenti simili)

Test di sicurezza:

  • Introduzione
    • Principi di sicurezza (e.g., CIA Triad)
    • Overview of 'common misconceptions' che portano a vulnerabilità
    • validazione Client-side
  • Approfondimenti su alcune tipologie di vulnerabilità
    • OS Command Injections
    • SQL Injections
    • Cross-Site Scripting
  • Laboratorio
    • Development of vulnerable-by-design web applications
    • Testing techniques for each vulnerability
    • Remediation

TESTI/BIBLIOGRAFIA

  • Web Application Security: Exploitation and Countermeasures for Modern Web Applications
    by Andrew Hoffman
  • Web Security Academy - https://portswigger.net/web-security/learning-path
  • Hands-On Selenium WebDriver with Java by Boni Garcia

DOCENTI E COMMISSIONI

Commissione d'esame

FILIPPO RICCA (Presidente)

MAURIZIO LEOTTA (Presidente Supplente)

ENRICO CAMBIASO (Supplente)

DARIO OLIANAS (Supplente)

LEZIONI

INIZIO LEZIONI

In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica e Computer Science.

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

L'esame consiste in una discussione delle esercitazioni pratiche svolte durante il corso. L'esercitazione pratica deve essere completata e approvata prima che uno studente possa presentarsi per l'esame finale. Gli elaborati sono valutati come superati o falliti e costituiranno il punto di partenza della discussione.

MODALITA' DI ACCERTAMENTO

Un esame orale consentirà di verificare che lo studente abbia compreso le problematiche relative ai test funzionali e di sicurezza, e le idee fondanti dei metodi e delle tecniche proposte. Gli esercizi pratici di laboratorio e la loro discussione consentiranno di valutare la capacità dello studente di applicare al meglio le tecniche e i metodi presentati.

Calendario appelli

Data appello Orario Luogo Tipologia Note
16/02/2024 09:00 GENOVA Esame su appuntamento
07/06/2024 09:00 GENOVA Esame su appuntamento
13/09/2024 09:00 GENOVA Esame su appuntamento
10/01/2025 09:00 GENOVA Esame su appuntamento