Podcast
Questions and Answers
Qual è l'obiettivo del design by contract?
Qual è l'obiettivo del design by contract?
Qual è la caratteristica principale del property-based testing (PBT)?
Qual è la caratteristica principale del property-based testing (PBT)?
Qual è una caratteristica fondamentale del Test-Driven Development (TDD)?
Qual è una caratteristica fondamentale del Test-Driven Development (TDD)?
Cosa rappresentano i Page Objects (POs) nel contesto dei test?
Cosa rappresentano i Page Objects (POs) nel contesto dei test?
Signup and view all the answers
Quali sono le caratteristiche che devono avere i test di qualità secondo i principi di testing?
Quali sono le caratteristiche che devono avere i test di qualità secondo i principi di testing?
Signup and view all the answers
Quale affermazione sulla classe di test è corretta?
Quale affermazione sulla classe di test è corretta?
Signup and view all the answers
Qual è la funzione del mutation testing?
Qual è la funzione del mutation testing?
Signup and view all the answers
Cosa rappresenta la code coverage?
Cosa rappresenta la code coverage?
Signup and view all the answers
Quale dei seguenti è un tipo di asserzione in JUnit?
Quale dei seguenti è un tipo di asserzione in JUnit?
Signup and view all the answers
Qual è lo scopo di un test parameterizzato?
Qual è lo scopo di un test parameterizzato?
Signup and view all the answers
Qual è l'obiettivo del functional testing?
Qual è l'obiettivo del functional testing?
Signup and view all the answers
Cosa fa l'annotazione @BeforeEach in un test?
Cosa fa l'annotazione @BeforeEach in un test?
Signup and view all the answers
Quali sono i criteri di coverage menzionati?
Quali sono i criteri di coverage menzionati?
Signup and view all the answers
Qual è la definizione corretta di un bug?
Qual è la definizione corretta di un bug?
Signup and view all the answers
Cosa si intende per testing funzionale?
Cosa si intende per testing funzionale?
Signup and view all the answers
Qual è l'obiettivo principale di un caso di test?
Qual è l'obiettivo principale di un caso di test?
Signup and view all the answers
Quale dei seguenti rappresenta un livello di test?
Quale dei seguenti rappresenta un livello di test?
Signup and view all the answers
In cosa consiste il testing strutturale?
In cosa consiste il testing strutturale?
Signup and view all the answers
Cosa rappresenta un incidente nel contesto del testing del software?
Cosa rappresenta un incidente nel contesto del testing del software?
Signup and view all the answers
Qual è la funzione di una test suite?
Qual è la funzione di una test suite?
Signup and view all the answers
Qual è coinvolta nella pianificazione del testing del software?
Qual è coinvolta nella pianificazione del testing del software?
Signup and view all the answers
Study Notes
Giorno 1: Introduzione al Testing e Terminologia di Base
- Il testing del software è un processo che comprende pianificazione, preparazione e valutazione del software per verificarne la conformità ai requisiti, l'idoneità allo scopo e l'individuazione di difetti.
- È fondamentale comprendere la terminologia specifica del testing per evitare confusione.
- Un errore è una svista di una persona, che provoca un bug.
- Un bug (o difetto) è il risultato di un errore.
- Un fallimento si verifica quando il codice con un bug viene eseguito.
- Un incidente è un sintomo di un fallimento, che richiede un'indagine.
- Un test è l'azione di esercitare un sistema software con uno o più casi di test.
- L'obiettivo di un test è quello di "rompere" il sistema o dimostrarne il corretto funzionamento.
- Un caso di test è un prodotto di lavoro che descrive un comportamento del sistema, con input, output attesi, precondizioni, postcondizioni e cronologia di esecuzione.
- Una test suite è un insieme di casi di test.
- Le fonti dei bug possono essere introdotte in fase di sviluppo o durante la risoluzione di un difetto.
Giorno 2: Strategie di Testing e Livelli di Test
- Due principali strategie per identificare i casi di test: testing funzionale (black-box) e testing strutturale (white-box).
- Il testing funzionale considera il sistema come scatola nera, basandosi sui requisiti.
- Il testing strutturale considera l'implementazione del sistema nota e utilizza il codice per generare casi di test.
- Nessuna strategia da sola è sufficiente; è necessaria una combinazione di approcci.
- Livelli di test: test unitari, test di integrazione, test di sistema e test di accettazione, corrispondenti alle fasi del modello a cascata.
- I test unitari verificano singolarmente le parti più piccole di un sistema (unità). In sistemi procedurali sono procedure o funzioni, in quelli orientati agli oggetti sono classi o metodi.
Giorno 3: Automazione dei Test e JUnit
- L'esecuzione dei test dovrebbe essere automatizzata, riducendo costi, errori umani e supportando il regression testing.
- JUnit è un framework per l'automazione dei test, in particolare per i test unitari.
- Esiste il JUnit e framework simili (xUnit) per altri linguaggi.
- Un'asserzione verifica un singolo risultato atteso.
- Esistono diversi tipi di asserzioni (ad es., assertTrue, assertEquals).
- Un metodo test verifica un singolo comportamento del sistema, corrispondente a un caso di test, annotato con @Test e con almeno un'asserzione.
- Una classe di test contiene tutti i metodi di test per una data classe.
- Maven è uno strumento per automatizzare la build, che aiuta a creare un'applicazione eseguibile dal codice sorgente.
- L'annotazione @BeforeEach permette di inizializzare una nuova istanza della classe di test prima di ogni test, evitando problemi di dipendenza.
Giorno 4: Specification-Based Testing e Test Parameterizzati
- Lo specification-based testing (o functional testing) si basa sui requisiti del software.
- Si parte dall'analisi dei requisiti per derivare i test.
- Un test deve verificare il corretto funzionamento del software, gli input e output, tipi di variabili coinvolte e domini di input.
- Le partizioni di input e output, i casi limite e le combinazioni di input sono importanti nel testing funzionale.
- I casi limite sono punti di potenziale errore.
- I test parameterizzati consentono di eseguire lo stesso test con diversi argomenti.
Giorno 5: Structural Testing, Code Coverage e Altre Tecniche
- Il structural testing (o code-based testing) utilizza la struttura del codice per creare test.
- Il code coverage è una metrica che indica quanto del codice è stato coperto dai test.
- Strumenti di code coverage identificano parti di codice non coperte dai test.
- Criteri di copertura includono line coverage, branch coverage, condition coverage e MC/DC coverage.
- Mutation testing valuta la qualità dei test introducendo mutazioni nel codice e verificando se i test le rilevano.
- Design by contract definisce precondizioni, postcondizioni e invarianti per i metodi e le classi.
- Property-based testing (PBT) definisce proprietà per il programma e lascia al framework generare input casuali.
- Test doubles (stub, fake, mock) sostituiscono dipendenze reali per semplificare i test.
- Static testing (riviste codice) include revisioni del codice senza l'esecuzione del codice stesso.
- System test copre l'intera interazione utente con il sistema per raggiungere un obiettivo.
- Page Object (PO) sono modelli che rappresentano pagine web e le loro interazioni.
- Integration test verificano l'interazione dei componenti di sistema (es. DAO e database).
- Test-Driven Development (TDD) prevede la scrittura dei test prima del codice di produzione.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Scopri i concetti fondamentali del testing del software attraverso questa quiz. Comprendi la terminologia essenziale come errori, bug, fallimenti e test suite. Questo quiz è un ottimo punto di partenza per chi desidera esplorare il mondo del testing software.