Salta al contenuto principale
CODICE 121621
ANNO ACCADEMICO 2026/2027
CFU
SETTORE SCIENTIFICO DISCIPLINARE INFO-01/A
LINGUA Inglese
SEDE
  • GENOVA
PERIODO 2° Semestre

PRESENTAZIONE

L'insegnamento introduce i fondamenti della qualità del software e delle pratiche di testing, con particolare attenzione all’automazione del test, all’integrazione nei moderni processi di sviluppo software e ad aspetti di sicurezza.
Gli studenti acquisiranno sia conoscenze teoriche sia competenze pratiche su tecniche di testing manuale e automatizzato, utilizzando strumenti e framework allo stato dell'arte. La qualità del software rappresenta infatti un elemento centrale per assicurare affidabilità, prestazioni e soddisfazione dell’utente finale

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

L’insegnamento si propone di fornire agli studenti una solida comprensione dei fondamenti della qualità del software e dell’automazione dei test, nonché di sviluppare familiarità con strumenti manuali e automatizzati a supporto delle pratiche di testing.
Al termine del corso, gli studenti saranno in grado di:
(a) comprendere i principi fondamentali della qualità del software e il loro ruolo nell’ingegneria del software moderna;
(b) progettare e applicare strategie di testing sistematiche;
(c) sviluppare e mantenere suite di test automatizzate utilizzando strumenti e framework standard;
(d) applicare pratiche a supporto dell’integrazione continua;
(e) valutare i sistemi software rispetto a caratteristiche di qualità quali prestazioni, affidabilità, sicurezza, modularità e usabilità.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Gli studenti apprenderanno i fondamenti del testing dei sistemi software, con particolare attenzione all’uso di strumenti di testing automatizzato.

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

Al termine dell'insegnamento, gli studenti saranno in grado di:

  • Comprendere i principi fondamentali della qualità del software
  • Progettare e applicare strategie sistematiche di testing
  • Realizzare e mantenere test automatizzati, anche con l'uso di AI
  • Integrare il testing nei processi di sviluppo
  • Valutare sistemi software rispetto a attributi di qualità (performance, affidabilità, sicurezza, usabilità

PREREQUISITI

  • Conoscenze di base di programmazione e scripting (Java, Python, Node, Bash)
  • Fondamenti di Ingegneria del Software

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.

Gli studenti con certificazioni valide per Disturbi Specifici dell’Apprendimento (DSA), per disabilità o altri bisogni educativi sono invitati a contattare il docente e il referente di Scuola per la disabilità all’inizio dell’insegnamento per concordare eventuali modalità didattiche che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali. 

I contatti del referente di Scuola per la disabilità sono disponibili al seguente link https://unige.it/commissioni/comitatoperlinclusionedeglistudenticondisabilita. 

PROGRAMMA/CONTENUTO

L'insegnamento è organizzato in alcuni moduli tematici principali che coprono l’intero processo di valutazione della qualità del software, dalla definizione degli attributi di qualità alla progettazione e automazione dei test, fino alla loro integrazione nei processi di sviluppo, al security testing, all’usabilità e all’uso dell’AI a supporto delle attività di testing.

  • Fondamenti di qualità del software e testing: concetti base di qualità del software, attributi di qualità, testing funzionale e di sicurezza, tecniche essenziali di testing, testing manuale e automatico, e ruolo del testing nel ciclo di sviluppo.
  • Strategie di testing e test automation: progettazione sistematica dei test, data-driven testing, test end-to-end, livelli di testing, buone pratiche di automazione, strumenti per unit testing e principali approcci all’automazione, tra cui capture/replay e test programmabili.
  • Web testing, UI automation e AI per il testing: testing di applicazioni web, automazione di test funzionali su interfacce utente, uso di Selenium IDE e Selenium WebDriver, cross-browser testing, uso dell’AI per la generazione, manutenzione e supporto all’esecuzione dei test.
  • Integrazione nei processi di sviluppo, Continuous Integration e Continuous Deployment: integrazione del testing nei processi di sviluppo software, automazione dell’esecuzione dei test, uso di pipeline di Continuous Integration e Continuous Deployment e monitoraggio della qualità durante l’evoluzione del sistema.
  • Security testing e strumenti automatizzati: fondamenti di cybersecurity, protocollo HTTP, vulnerabilità client-side, command injection, attacchi Denial of Service e uso di strumenti automatizzati per il security testing, tra cui Burp Suite, wpscan e sqlmap.
  • Valutazione della qualità: costruzione di test suite comprendenti test unitari, end-to-end e di sicurezza, analisi di attributi di qualità come performance, affidabilità, sicurezza e usabilità, e produzione di report di testing.

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

ENRICO CAMBIASO (Presidente)

FILIPPO RICCA (Presidente)

LEZIONI

INIZIO LEZIONI

https://easyacademy.unige.it/portalestudenti/index.php?view=easycourse&_lang=it&include=corso

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 formativi. 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 che verrà valutato, 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.

Indicazioni per studenti con certificazione di DSA, di disabilità o di altri bisogni educativi speciali sono disponibili a partire da https://corsi.unige.it/corsi/11964/studenti-disabilita-dsa

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.

ALTRE INFORMAZIONI

Gli studenti con certificazioni valide per Disturbi Specifici dell’Apprendimento (DSA) possono richiedere adattamenti in sede d'esame, con almeno 7 giorni di anticipo rispetto alla data dell’esame, compilando il "modulo richieste adattamenti" (dai servizi online https://modulionline.unige.it/richiesta-adattamenti#no-back) che verrà inviato in automatico dal sistema al/alla docente responsabile dell’insegnamento e al/alla docente referente per gli studenti con disabilità e con DSA della propria Scuola/Area. 

Lo studente riceverà una copia della sua richiesta.