Test dell'unità di JavaScript - Stiamo testando la logica del codice o il comportamento di un browser

4

[Avvertimento]: Sono nuovo per l'intera unità di test e ho cercato di imparare il più possibile.

Sto lavorando a un progetto MS CRM 2011 e ho cercato di introdurre test delle unità nella mia azienda. Per unità testate risorse web JavaScript, ho trovato questo link su blog MSDN .

L'architetto delle soluzioni della mia azienda suggerisce che si tratta di un approccio errato poiché non stiamo nemmeno testando il motore JS di IE ma testando utilizzando CScript (host di Windows) e mentre sono d'accordo su questo punto, non è l'intera idea di Test unitario tutto sul test delle funzionalità della singola funzione e non sulla dipendenza.

Per verificare se funzionerà all'interno di IE, uno strumento di test come Selenium non sarà migliore?

O mi manca qualcosa?

    
posta Kanini 16.10.2013 - 11:06
fonte

2 risposte

4

Secondo Wikipedia , "JScript" in IE si basa sullo stesso motore di scripting di JScript in Windows Scripting Host. Quindi, in generale, l'approccio per utilizzare WSH / CScript per il test dell'unità delle funzioni JScript di targeting su IE va bene. Tuttavia, dovresti assicurarti che la versione di IE (o la versione di JS che è supportata nelle versioni di IE correlate) corrisponda alla versione di WSH che stai usando per i tuoi test.

In effetti, ciò che non è possibile testare con l'approccio CScript è il modo in cui il codice si comporta all'interno del browser, specialmente quando si hanno funzioni che utilizzano il motore di rendering dell'IE o che si basano su eventi del browser. Per quelle parti del tuo codice, uno strumento di automazione del browser come Selenium potrebbe essere più appropriato. Tuttavia, con il selenio si creano in genere test integrazione automatizzata , non test unitari.

Per una buona suite di test, probabilmente sono necessari entrambi i test unitari per i test di integrazione e (automatizzati) delle funzioni indipendenti dal browser per le funzioni dipendenti dal browser. Quindi non dovrebbe essere una decisione di "questo o quello", utilizzare entrambi e ogni strumento per il tipo specifico di test.

    
risposta data 16.10.2013 - 12:52
fonte
0

Se hai bisogno di Unit Test nel browser, ti consiglio vivamente di consultare Karma . Puoi eseguire il test contemporaneamente su qualsiasi numero di browser, su qualsiasi numero di dispositivi.

E il tuo architetto ha ragione: devi testare nel runtime corretto. In caso contrario, si potrebbe finire per utilizzare qualcosa che non funziona correttamente su un browser supportato (ad esempio la mappa # di matrice che non funziona su IE8). Allo stesso modo si dovrebbero eseguire i test delle unità .NET4.0 in un runtime .NET4.0. Con JavaScript, specialmente con IE più vecchi, supponiamo che anche le cose di base possano rompersi e che dovrebbero essere testate.

Se stai cercando un buon tutorial per il test delle unità di JavaScript, ti consigliamo di consultare TDD JavaScript di James Shore . Spiega in realtà non solo come eseguire il test unitario, ma anche come eseguire uno sviluppo di test guidato e come strutturare l'applicazione e lo sviluppo per i test. È un po 'biasciato verso node.js ma puoi saltare la parte server. La prima settimana è gratis! Se sei nuovo al test delle unità, probabilmente imparerai molto.

    
risposta data 16.10.2013 - 16:29
fonte