La copertura del codice ha senso quando si eseguono test end-to-end?

1

Ho una situazione in cui sto eseguendo principalmente test end-to-end sul mio framework:

  • Inizio con semplici dispositivi (che sono file CSV).
  • Questi sono importati dalla mia applicazione (che considero una scatola nera nella mia situazione).
  • Una volta completata l'importazione, controllo con le classi di repository se restituiscono ciò che mi aspetto di essere restituito e, in alcuni casi, indirizzo le query al database per vedere se le cose sono come previsto.

Ora penso che la copertura del codice sia ottima, ma in questa situazione (PHP / PHPUnit / XDebug) rende l'esecuzione del mio codice più lento del 50-80% (perché XDebug è in mezzo per l'aspetto della copertura del codice).

Quindi cosa ha più senso in questo caso?

  • Disattiva la copertura del codice e disponi di una suite di test più rapida che collauda effettivamente con scenari reali, ma senza sapere se tutto è coperto da codice?
  • Hai un test più lento ma più informazioni su ciò che viene testato (e cosa no?)

Per mettere le cose in prospettiva: ora ho solo qualcosa come 6 test end-to-end che possono richiedere fino a 12 minuti quando la copertura del codice è attiva e circa 2-3 minuti senza copertura del codice.

Che cosa pensi di questo?

    
posta Giel Berkers 26.03.2018 - 15:25
fonte

3 risposte

0

Durante i test non dovresti concentrarti su copertura del codice ma su copertura dei requisiti .

La copertura del codice ti dice se c'è un caso di test che impiega una particolare linea di codice. non ti dice se quella linea di codice contribuisce effettivamente alla funzionalità testata o meno. Ciò significa che puoi avere un "codice coperto" che è essenzialmente inutile.

D'altro canto, specialmente quando si fanno test end-to-end, non è possibile testare tutto perché il tempo a disposizione è scaduto. Pertanto, la copertura del codice end-to-end non ha assolutamente senso.

Infine, non vendi codice ai tuoi clienti, vendi funzionalità .

Dopotutto la copertura del codice ti dà la sensazione di quanto siano affidabili i tuoi test unitari. Ma non dovrebbe avere una grande importanza.

    
risposta data 26.03.2018 - 16:16
fonte
5

Puoi attivare e disattivare i test di copertura? In tal caso, potresti eseguire test di copertura saltuari, ma esegui la maggior parte dei test funzionali senza.

I test di copertura del codice sono validi se puoi eseguirli, poiché rivelano parti della funzionalità del codice che non stai testando. Se non lo stai testando, non sai se quel codice funziona o meno.

    
risposta data 26.03.2018 - 15:37
fonte
0

La copertura del codice è in genere utile solo quando si riceve un feedback sui test delle unità. I test unitari sono dove si desidera testare ogni caso limite e gestire i minimi dettagli di mantenere ogni unità corretta.

Con i test end-to-end, in genere non stai esercitando i minimi dettagli finali della tua applicazione. Non è così informativo. Sono incline a raccomandare di disattivarlo nei test end-to-end, supponendo che tu abbia dei test unitari per i quali lo stai facendo.

    
risposta data 26.03.2018 - 15:41
fonte

Leggi altre domande sui tag