Test dell'unità come strumento di apprendimento: una buona idea? [chiuso]

4

Sono interessato a modi e mezzi per l'apprendimento (a) dei linguaggi di programmazione in modo efficiente. Credo che utilizzare concetti e infrastrutture di Unit Test all'inizio di questo processo sia una buona cosa, anche meglio che iniziare con "Hello world".

Perché: per scrivere un programma decente anche per un problema giocattolo / limitato in una nuova lingua, dovrai padroneggiare molti concetti eterogenei (flusso di controllo e variabili e IO ...), sei tentato di dare un'occhiata sui dettagli solo per far funzionare il tuo programma. Mettendo (la vostra comprensione di) i fatti sulla nuova lingua in asserzioni con buone descrizioni (= messaggi di successo) applica il pensiero attraverso / chiarezza / precisione. Raggruppare argomenti e aggiungere asserzioni a tali gruppi è molto più semplice rispetto alle funzioni di incorporazione del 2. capitolo del tuo libro "Apprendimento X" al tuo programma capitolo 1.

Perché no: i test delle unità "reali" sono destinati all'output "1234 test ok; 1 fallimento: saveWorld () induttanze sull'ingresso negativo"; I test di unità "didattici" dovrebbero fornire informazioni rilevanti sulla nuova lingua come

perl6 10-string.t
# ### p5chop
...
ok 13 - p5chop( "cbä" ) returns "ä"
ok 14 - after that, victim is changed to "cb"
# ### (p6) chop
...
ok 27 - (p6) chop( "cbä" ) returns chopped copy: "cb"
ok 18 - after that, victim is unchanged: "cbä"
# ### chomp
...

Quindi (mis?) usare Test unitari può essere controproducente: esercitarsi in azioni mentre si impara a non usarlo professionalmente.

Come: scrivere unità didattiche "Test" in lingue con sistemi di test leggeri (Perl 5/6) è facile; (mis?) usare sistemi più elaborati (JUnit, CppUnit) potrebbe non valerne la pena o non essere adatto a una persona che inizia appena con una nuova lingua.

  1. Usare l'unità Test come strumento di apprendimento è una cattiva idea?
  2. È possibile utilizzare gli strumenti di test unitario della / e tua lingua preferita in modo didattico?
  3. I dettagli di implementazione (eventualmente) dovrebbero essere discussi qui o sopra a stackoverflow.com?
posta Ekkehard.Horner 05.03.2011 - 19:52
fonte

2 risposte

3

Questo concetto di apprendimento attraverso i test unitari esiste già. Nelle implementazioni ho visto una serie di test unitari con valori mancanti e l'utente deve inserirli per far passare il test.

Due di questi con cui ho esperienza personale sono:

link

e

link

Sono sicuro che puoi trovare gli altri per il tuo particolare ambiente o semplicemente creare una suite da solo.

Sono un ottimo metodo di apprendimento.

    
risposta data 05.03.2011 - 20:31
fonte
3

Il capitolo 8 di questo libro ( "Codice pulito" di Robert C. Martin ) descrive come lavorare con un limite di due sistemi e (tra le altre cose) introduce il concetto di Test di apprendimento .

L'idea principale è, quando si ha il sottosistema A dipendente dal sottosistema B, di scrivere test automatici contro varie funzioni del sottosistema B per apprendere come utilizzarlo esattamente per ottenere i risultati desiderati. Finisci con una suite di test automatici del sottosistema B e le future modifiche del sottosistema B non ti colgono di sorpresa.

Penso che tu abbia in mente qualcosa con la tua idea di applicare il concetto di test di apprendimento al linguaggio di programmazione stesso.

    
risposta data 06.03.2011 - 13:58
fonte

Leggi altre domande sui tag