title: Test metamorfico
text: # Test metamorfico
  
  Il test metamorfico (MT) è una tecnica di test software basata su proprietà, che può essere un approccio efficace per affrontare il test dell'oracolo e il problema della generazione del caso di test. Il problema dell'oracolo del test è la difficoltà di determinare i risultati attesi dei casi di test selezionati o di determinare se i risultati effettivi concordano con i risultati previsti.
  
  Le relazioni metamorfiche (MR) sono proprietà necessarie della funzionalità prevista del software e devono comportare esecuzioni multiple del software. Si consideri, ad esempio, un programma che implementa sen x corretto a 100 cifre significative; una relazione metamorfica per le funzioni sinusoidali è "sen (π - x) = sen x". Pertanto, anche se il valore atteso di sin $x_1$ per il caso di test sorgente $x_1$ = 1.234 corretto con l'accuratezza richiesta non è noto, è possibile costruire un caso di test di follow-up $x_2$ = π - 1.234. Siamo in grado di verificare se gli output effettivi prodotti dal programma in prova dal caso di test di origine e il caso di test di follow-up sono coerenti con l'MR in questione. Qualsiasi incoerenza (dopo aver preso in considerazione gli errori di arrotondamento) indica un fallimento dell'implementazione.
  
  Le MR non si limitano ai programmi con input numerici o relazioni di uguaglianza. Ad esempio, durante il test di un sito Web di prenotazione, una ricerca Web di alloggi a Sydney, in Australia, restituisce 1.671 risultati; i risultati di questa ricerca sono corretti e completi? Questo è un problema dell'oracolo di prova. Sulla base di una relazione metamorfica, possiamo filtrare la fascia di prezzo o la valutazione a stelle e applicare nuovamente la ricerca; dovrebbe restituire un sottoinsieme dei risultati precedenti. Una violazione di questa aspettativa sarebbe sospetta e rivelerebbe un possibile bug nel sistema.
  
  I test metamorfici sono stati inventati da T.Y. Chen nel rapporto tecnico del 1998. Da allora, più di 150 ricercatori e professionisti internazionali hanno applicato la tecnica alle applicazioni della vita reale. Alcuni esempi includono servizi web, computer grafica, sistemi integrati, simulazione e modellazione, apprendimento automatico, supporto decisionale, bioinformatica, componenti, analisi numerica e compilatori. Il primo importante sondaggio nel settore della MT è stato condotto nel 2016. È stato seguito da un altro importante sondaggio nel 2018, che evidenzia le sfide e le opportunità e chiarisce i malintesi comuni.
  
  Sebbene MT sia stato inizialmente proposto come tecnica di verifica del software, è stato successivamente sviluppato in un paradigma che copre la verifica, la convalida e altri tipi di valutazione della qualità del software. MT può essere applicato in modo indipendente e può anche essere combinato con altre tecniche di analisi software statiche e dinamiche come il proving e il debug.
  
  Nell'agosto 2018, Google ha acquisito GraphicsFuzz, una startup dell'Imperial College di Londra, per applicare test metamorfici ai driver di dispositivi grafici per smartphone Android.
  
  