Introduzione al Testing e Terminologia di Base
21 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual è l'obiettivo del design by contract?

  • Ridurre il tempo di esecuzione del software.
  • Definire il comportamento dell'algoritmo in fase di esecuzione.
  • Aumentare la complessità dell'architettura software.
  • Garantire la corretta interazione tra oggetti attraverso precondizioni, postcondizioni e invarianti. (correct)
  • Qual è la caratteristica principale del property-based testing (PBT)?

  • Richiede che gli sviluppatori scrivano prima il codice.
  • Utilizza solo test di integrazione.
  • Genera input casuali per testare le proprietà del programma. (correct)
  • Si concentra solo su test manuali.
  • Qual è una caratteristica fondamentale del Test-Driven Development (TDD)?

  • Incoraggia la scrittura di codice complesso senza test.
  • Si concentra esclusivamente sui test manuali.
  • Prevede la scrittura di un test prima della scrittura del codice di produzione. (correct)
  • Mira a scrivere tutti i test dopo aver completato il codice.
  • Cosa rappresentano i Page Objects (POs) nel contesto dei test?

    <p>Rappresentazioni delle pagine web e delle loro interazioni.</p> Signup and view all the answers

    Quali sono le caratteristiche che devono avere i test di qualità secondo i principi di testing?

    <p>Veloci, coesivi, indipendenti, ripetibili, facili da scrivere e leggere con una singola ragione di fallimento.</p> Signup and view all the answers

    Quale affermazione sulla classe di test è corretta?

    <p>Include tutti i metodi di test per una specifica classe.</p> Signup and view all the answers

    Qual è la funzione del mutation testing?

    <p>Valutare la qualità dei test tramite l'introduzione di modifiche nel codice.</p> Signup and view all the answers

    Cosa rappresenta la code coverage?

    <p>Una metrica che indica quanto codice è stato testato.</p> Signup and view all the answers

    Quale dei seguenti è un tipo di asserzione in JUnit?

    <p>assertEquals</p> Signup and view all the answers

    Qual è lo scopo di un test parameterizzato?

    <p>Eseguire lo stesso test con argomenti diversi.</p> Signup and view all the answers

    Qual è l'obiettivo del functional testing?

    <p>Verificare che il software funzioni secondo i requisiti.</p> Signup and view all the answers

    Cosa fa l'annotazione @BeforeEach in un test?

    <p>Inizializza lo stato prima di ogni test.</p> Signup and view all the answers

    Quali sono i criteri di coverage menzionati?

    <p>Branch coverage e condition coverage.</p> Signup and view all the answers

    Qual è la definizione corretta di un bug?

    <p>Il risultato di un errore che causa un difetto nel software.</p> Signup and view all the answers

    Cosa si intende per testing funzionale?

    <p>Un test che considera il sistema come una 'scatola nera'.</p> Signup and view all the answers

    Qual è l'obiettivo principale di un caso di test?

    <p>Verificare la conformità del software ai requisiti.</p> Signup and view all the answers

    Quale dei seguenti rappresenta un livello di test?

    <p>Unit test</p> Signup and view all the answers

    In cosa consiste il testing strutturale?

    <p>Utilizzare l'implementazione conosciuta per creare casi di test.</p> Signup and view all the answers

    Cosa rappresenta un incidente nel contesto del testing del software?

    <p>Un sintomo che indica un fallimento e richiede indagine.</p> Signup and view all the answers

    Qual è la funzione di una test suite?

    <p>Raccogliere diversi test insieme per l'esecuzione.</p> Signup and view all the answers

    Qual è coinvolta nella pianificazione del testing del software?

    <p>Preparazione, pianificazione e valutazione del software.</p> 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.

    Quiz Team

    Related Documents

    Riassunto Reti PDF

    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.

    More Like This

    Use Quizgecko on...
    Browser
    Browser