Dovresti prendere in giro negozi / aggregatori di valore-chiave

3

Mi è sempre stato insegnato che i test dovrebbero essere eseguiti separatamente e, a parte un db per ActiveRecord, ecc., i test non dovrebbero fare affidamento su alcun software / servizio esterno. per esempio. Mi prendono sempre in giro le mie altre risposte al servizio web, ma per quanto riguarda le risposte da archivi di valori-chiave basati sul web e aggregatori come elasticsearch, redis e statsd? La mia intuizione sarebbe quella di prendere in giro quelli così come non sto testando se funzionano, sto testando le mie app IO con loro. Tuttavia vedo esempi su dove le persone usano strategie namespace per testare il loro codice elasticsearch e statsd relativo.

Quanto dovrei prendere in giro quando si tratta di servizi basati sul web?

grazie!

    
posta kreek 02.12.2014 - 00:16
fonte

2 risposte

4

Trattali come un normale database.

Quando si verifica un codice aziendale che utilizza un database, si prende in giro il database per testare solo il codice aziendale (oltre a rendere i test leggermente più veloci). Lo stesso vale per i negozi con valore-chiave.

Ciò che potresti aver visto è:

  • Integrazione e test di sistema che, di fatto, usano raramente i mock. Di solito, un test di sistema verrà eseguito con un database pieno di dati di test. Alcuni test di sistema possono anche utilizzare servizi Web di terze parti (alcuni test di sistema potrebbero ancora prendere in giro quei servizi Web se si paga per richiesta).

  • O semplicemente test di unità scritti da una persona che non è a conoscenza delle tecniche di test appropriate.

risposta data 02.12.2014 - 02:47
fonte
1

Il mocking ha una serie di scopi:

  • velocizza il test
  • assicurati che tutti i servizi richiesti dal test siano sempre disponibili
  • assicurati che i difetti non rendano il debug del tuo modulo troppo complicato

Se nessuno di questi è un problema sostanziale nel tuo caso, non prendere in giro.

Perché no? Perché

  • creare mocking costa tempo
  • I mazzi
  • inducono ulteriore sforzo quando si cambiano i propri moduli interni (test white box)
  • il tuo mock potrebbe mentirti su ciò che il vero modulo effettivamente restituisce
risposta data 02.12.2014 - 17:06
fonte

Leggi altre domande sui tag