Sheet 1
Test
  Metodologia
    Test-after
    Test-first
    TDD
    Test di regressione
  Benefici
    Confidenza sul funzionamento del programma
    Riduce l'uso del debugger
    Consente il refactoring
    Forza il disaccoppiamento
      Estendibilità
      Configurabilità
    Documentazione (specifiche di funzionamento)
  Disaccoppiamento
    System Under Test (SUT)
    Dependend-On Component (DOC)
    Test Double Object (TDO)
      Dummy
      Stub
      Spy
      Fake
      Mock
  Test non funzionali
    Prestazioni
    Test di carico (stress-test)
    Rilascio delle risorse acquisite
    Resilienza
  Criterio
    White/black box
    Bottom up/top down
    Specification-based
    Input domain analysis
      Equivalence partitioning
      Boundary value analysis
  Metriche
    Test/production LOC
    Copertura
      Funzioni
      Istruzioni
    Velocità
  Artefatti
    Test case
    Test suite
    Test fixture
    Test harness
  Livello
    Unit-test
    Integration-test
    System-test
    Acceptance-test
  Continuous Integration
  Struttura
    Con fixture
      Set up
      Exercise
      Tear down
      Verify
    Senza fixture
      Arrange
      Act
      Assert
  Proprietà
    Ripetibile
    Indipendente
    Auto-validante
    Isolato
    Veloce
    unit-test
oggetto inutilizzato, la cui presenza è però indispensabile per il completamento del test (es. parametro di funzione obbligatorio)
oggetto con funzionamento pre-cablato per attivare particolari comportamenti del SUT
stub che registra le chiamate ricevute dal SUT
oggetto che sostituisce il DOC per ragioni di praticità (es. in-memory database)
stub che verifica l'ordine e la natura delle chiamate effettuate dal SUT
i test White-box sono più fragili, perché verificano anche l'implementazione, non solo il contratto
aka Component-test
test delle interazioni tra componenti
test delle funzionalità dell'intero sistema
verifica del soddisfacimento dei requisiti (effettuato dal committente) e dell'efficacia del sistema
deve fornire il risultato pass/fail - non dev'essere il programmatore a decidere se il test è passato o meno sulla base - ad esempio - del contenuto di un file di log