Salta al contenuto principale
CODICE 101808
ANNO ACCADEMICO 2024/2025
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 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 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, gli studenti 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 applicazioni Web
  •     Imparare a proteggere un'applicazione web dalle minacce conosciute
  •     Comprendere le vulnerabilità "Top Ten" proposte da OWASP
  •     Comprendere il funzionamento dei protocolli di rete e i relativi aspetti di sicurezza
  •     Applicare tecniche di test delle applicazioni Web (sia funzionali che di sicurezza), utilizzando, ad es. il Framework selenium, burp suite, wpscan, sqlmape e altri strumenti di test automatizzati
  •     Incorporare il test del software come un processo continuo di sviluppo

PREREQUISITI

L'insegnamento ha i seguenti prerequisiti:

  • Fondamenti di programmazione Object Oriented e procedurale/imperativa (in particolare, conoscenza di base dei linguaggi Java, Javascript, PHP, Node.js e SQL)
  • Conoscenza di base delle applicazioni Web
  • Conoscenza di base di Bash
  • Conoscenza di base di Docker e degli ambienti containerizzati

MODALITA' DIDATTICHE

L'insegnamento è una combinazione tra presentazione di concetti teorici ed esercitazioni pratiche. È orientato al dialogo e con un approccio pratico. Il corso include attività di laboratorio che potranno anche essere svolte in gruppo.

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

PROGRAMMA/CONTENUTO

Questo insegamento fornisce le basi per il testing funzionale e di sicurezza di applicazioni software. Le pratiche attuali di testing richiedono un grande sforzo poiché si basano pesantemente su attività manuali. L'automazione del test mira a ridurre i costi del testing automatizzando diverse delle attività coinvolte.

Il laboratorio, che costituisce parte integrante del corso, offrirà agli studenti l'opportunità pratica di vedere le tecniche di analisi e testing (sia funzionale che di sicurezza) applicate a casi studio reali.

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. GitHub Actions)
    •   Strumenti di automazione per test di unità (ad es. xUnit o TestNG)
  •     Test di applicazioni Web
    •   Approccio di test E2E
    •   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
      •   Capture/replay vs programmabile
      •   Basato su DOM rispetto a Visual

Testing di sicurezza:

  • Introduzione alla sicurezza informatica

  • Strumenti di sicurezza automatizzati

    • Burp Suite, wpscan, sqlmap

  • Il protocollo HTTP

  • Injection di comandi

  • Vulnerabilità lato client

  • Attacco Denial of Service

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'obiettivo della procedura di verifica è quantificare, per ogni studente, il livello di raggiungimento degli obiettivi educativi. La procedura di verifica consiste nell'valutare determinati laboratori guidati e in un test scritto.

ESAME

L'esame consiste nelle seguenti attività:

  • Attività di laboratorio
  • Test scritto

Attività di laboratorio

Il corso include attività di laboratorio da completare. Per alcune di queste attività sarà richiesta la consegna del lavoro svolto, mentre per altre sarà monitorata semplicemente la partecipazione degli studenti. Saranno proposte attività alternative da sottoporre tramite AulaWeb per coloro (ad esempio, studenti lavoratori) che non sono in grado di partecipare alle sessioni di laboratorio.

Test scritto

Il test scritto consisterà in domande a risposta multipla che copriranno aspetti sia teorici che pratici, focalizzandosi sugli argomenti e gli strumenti discussi in classe. Durante il corso, verranno affrontati esempi di possibili domande ed esercizi per ciascun argomento, garantendo chiarezza riguardo al formato del test entro la fine del corso.

MODALITA' DI ACCERTAMENTO

Le attività di laboratorio mirano a valutare la comprensione degli strumenti e delle tecniche proposte. Il test scritto ha il duplice obiettivo di verificare la conoscenza degli aspetti fondamentali della disciplina e valutare la partecipazione degli studenti ai laboratori guidati.

Agenda 2030

Agenda 2030
Istruzione di qualità
Istruzione di qualità