Perché viene data così tanta attenzione al test unitario (TDD) e così poco ai test a livello di componente

1

Questo grandi articoli spiega la differenza tra test unitario, test a livello di componenti e test dell'interfaccia utente. In tutte le mie precedenti società è stata data molta attenzione ai test unitari e meno ai test UI automatizzati (test di integrazione end-to-end). Non ho mai visto il test dei componenti praticato in queste aziende.

È interessante perché come lo vedo nelle grandi applicazioni è il test dei componenti che aiuta di più durante il refactoring dell'architettura o garantisce contro i difetti dagli sviluppatori alle prime armi. Eppure, non c'è quasi nessuna informazione sul web su questo argomento, quasi nessun libro su Amazon, mentre ci sono un sacco di informazioni sia sul test unitario che sul test automatico dell'interfaccia utente. Perché è così?

    
posta Max Koretskyi aka Wizard 13.09.2016 - 18:54
fonte

2 risposte

14

I termini "test unitario" e "test dei componenti" non sono definiti universalmente, e diverse persone hanno nozioni diverse su cosa significano precisamente questi termini. Tuttavia, sono generalmente considerati la stessa cosa . L'ISTQB (un'organizzazione di qualificazione dei test) non sembra differenziare tra questi termini, preferendo i "test dei componenti" nella loro letteratura.

L'ISTQB vede i seguenti principali livelli di test:

  • Test di accettazione, eseguiti dal cliente.
  • Test di sistema, che verificano i requisiti sul sistema completo
  • Test di integrazione, che coprono l'interazione dei componenti.
  • Test dei componenti, che testano i componenti separatamente. I test unitari sono test dei componenti.

L'articolo che hai citato traccia una linea a livello di granularità: secondo l'autore, l'oggetto del test dei test unitari sarebbe costituito da singoli metodi, mentre i test dei componenti riguarderebbero interi moduli. Inoltre, l'attenzione passerebbe dalla verifica del contratto del componente alla convalida nel contesto dell'applicazione / dell'intero sistema. Queste differenze trovate da quell'articolo non sono universalmente riconosciute . Quanto è grande la "unità" di un test unitario dipende. Spesso, l'unità è un'intera classe.

Altre fonti vedono la differenza nel ruolo che esegue i test: mentre i test unitari sarebbero eseguiti da sviluppatori, test di componenti e test di integrazione sarebbero eseguiti da tester dedicati. Ancora una volta, questa differenza non è universalmente riconosciuta. In pratica, i test di integrazione richiedono sempre l'assistenza degli sviluppatori, in modo che i driver di test e gli stub di test possano essere creati per sostituire i componenti mancanti.

    
risposta data 13.09.2016 - 19:36
fonte
0

Anche se sono d'accordo sul fatto che parte del problema è che le persone sembrano non essere d'accordo su cosa chiamare diversi "livelli" di test e quindi questo complica un po 'le cose. L'altro punto che penso dovrebbe essere fatto è che dare consigli sui test unitari (con cui intendo le singole funzioni) o sul test dell'interfaccia utente sia molto più facile da fare.

Ci sono alcune persone che non amano i test di livello "medio" ( I test integrati sono una truffa ).

    
risposta data 14.09.2016 - 00:42
fonte

Leggi altre domande sui tag