Alcune funzionalità linguistiche o linguistiche sono migliori per il test?

5

Sono, e mi piace essere, un programmatore VB.net. Ho un paio di programmi di grandi dimensioni in c # che devo mantenere e non mi piace scrivere codice C # durante lo sviluppo. Non è orribile ma preferisco di gran lunga l'ambiente VB.net per lo sviluppo.

Comunque recentemente ho iniziato a scrivere tutti i miei test in C #. Ho iniziato a fare questo in modo da poter utilizzare tutti i grandi strumenti, come le librerie finte, disponibili in C #.

Ma anche dopo aver trovato Teleriks estremamente capace justmock in edizione gratuita per VB.net ho scoperto che scrivo ancora quasi tutti i miei test in C # (che ora usa la versione C # di JustMock BTW). Anche quando non ho bisogno di questi strumenti di test, trovo che mi piace solo C # per scrivere i test.

Penso che mi piace VB.net per la codifica generale mentre risolvo i problemi mentre scrivo perché: 1. Come la dolcezza zuccherosa di cose come XML Literals. Inoltre, LINQ sembra più semplice e più espressivo in VB. 2. Non ho bisogno di preoccuparmi della sintassi quasi quanto (involucro, terminatori di linea, ecc.) Posso concentrarmi sulle mie idee. (La verbosità extra è gestita dal n. 3 in basso e da coderush e altri strumenti IDE) 3. Pensa che la stretta integrazione con IDE di Visual Studio e VB.net (la compilazione di background per esempio) sia solo per le api. (Anche se C # sta migliorando molto.)

Ma per i test non sto pensando al quadro generale o alla risoluzione dei problemi. Ogni metodo di prova è indipendente e la concisione di C # rafforza e facilita questo fatto.

Inizialmente ho trovato questo sorprendente perché ho sempre pensato che un linguaggio di tipo scripting sarebbe stato migliore per scrivere test. Ma dopo averne scritto molte migliaia, non vedo alcun vantaggio nell'usare un linguaggio di scripting. Infatti trovo Option Strict ed Explicit essere true (che trasforma la natura scripty di vb) ancora più utile nei progetti di test.

Ma forse ho torto e ci sono lingue ancora più adatte per scrivere test? Qualcosa come IronPython sarebbe buono per scrivere test? Forse BOO con i suoi macro? Non penserei così ma potrebbe un linguaggio funzionale portare qualcosa sul tavolo?

Più semplicemente, ci sono caratteristiche linguistiche che aiutano a scrivere buoni test? E se sì quale lingua ha il maggior numero di queste caratteristiche desiderabili?

    
posta ElGringoGrande 11.11.2011 - 05:10
fonte

2 risposte

3

Direi che è più importante scrivere i tuoi programmi in modo testabile piuttosto che cercare caratteristiche linguistiche specifiche che siano di aiuto in quel test. Puoi scrivere test in python o clojure con la stessa facilità con cui puoi in c # o Java, se scrivi i tuoi programmi in un modo che faciliti il test.

Come sviluppatore c # impegnato, posso dirti che ci sono indubbi vantaggi nell'avere un modo strutturato e strongmente tipizzato per scrivere programmi e test unitari. Ma c'è qualcosa da dire per lavorare in un linguaggio che ha più "immediatezza" come pitone. Utilizzando un REPL, puoi distillare più rapidamente le tue idee in parti di codice verificabili e, a lungo termine, potresti aver bisogno di un minor numero di test unitari, dal momento che stai costantemente testando il tuo codice mentre lo scrivi.

    
risposta data 11.11.2011 - 05:24
fonte
0

Penso che molto dipenda dal fatto che si parli di test integrati con il proprio codice o test come un'attività separata. Dipende da cosa stai facendo, da come è composta la tua squadra e così via - ma spesso una combinazione dei due è la più potente.

Per i test integrati (test delle unità, test di integrazione, specifiche eseguibili scritte dagli sviluppatori, ecc.) devi semplicemente assicurarti di codificare in un modo che faciliti il test - IMHO cosa significa che può variare da una lingua all'altra, sebbene esistano alcuni principi generali (accoppiamento lento, minimizzazione delle dipendenze da dipendenze esterne a cose come file system o database). In ogni caso il problema che stai cercando di risolvere dovrebbe determinare quale scegliere non i requisiti di test.

Per i test esterni (ad esempio le specifiche eseguibili scritte da tester o analisti) è possibile utilizzare lo stesso linguaggio che si sta utilizzando per scrivere il codice, ma spesso si vorrà qualcosa di un po 'più interattivo. Evitare una fase di compilazione e avere un REPL può essere una grande vittoria qui (ad esempio python).

    
risposta data 11.11.2011 - 10:03
fonte

Leggi altre domande sui tag