Una parte significativa dell'applicazione su cui lavoro ogni giorno è costituita da Javascript che emette molte (come potrebbe essere) le formule del foglio di calcolo di Excel. Sì, Excel è a malapena un linguaggio completo di Turing, ma le formule sono più che complesse da qualificarsi come "codice". Non sono pensati per essere leggibili o modificabili dall'uomo. Gli utenti non vedono mai queste formule, solo i valori valutati da quelle formule.
Il problema principale con il nostro codebase in questo momento è la mancanza di test automatici, e finora ho concentrato i miei sforzi sui test di integrazione che eseguono sia il Javascript che le formule, quindi asserisco sui valori finali. Dopotutto, non ci importa quali formule siano state usate per creare quei valori, quindi non vedo davvero il punto in un test unitario che asserisce sulle formule prodotte da ciascun pezzo di Javascript. Mi aspetto anche che tali test unitari siano estremamente fragili, poiché la maggior parte delle nostre modifiche al codice Javascript hanno lo scopo di modificare le formule in qualche modo (anche se in un modo che non dovrebbe influire sulla maggior parte di i valori finali).
Si noti che il codice che valuta le formule è di proprietà di un diverso team e su di esso hanno un sacco di test unitari. Sono interessato ai test per il nostro codice, la parte che genera le formule.
Si noti inoltre che la velocità è un non-problema; i test di integrazione che ho scritto finora sono così veloci da sembrare più come test unitari.
Per i motivi sopra riportati sono convinto che migliorare la copertura dei test di integrazione sia la priorità più alta, almeno per ora, ma onestamente non riesco a vedere alcun vantaggio alle unità che testano questo codice, che sembra un segno che potrebbe mancare qualcosa di importante.
Quindi, c'è qualche scopo di avere test unitari e test di integrazione per questo particolare tipo di codice, in cui l'unico obiettivo è generare "codice" in qualche altra lingua, e a nessuno importa quale "codice intermedio" sia usato per raggiungere il risultato finale?