Qual è la percentuale del tuo corso universitario che funziona con codice unit-tested? [chiuso]

-1

Come studente universitario scrivi un test unitario per il codice del progetto che scrivi? Sai come usare correttamente TDD? Ti è stato insegnato a usare framework di test (jUnit per esempio)?

Recentemente ho sentito che il team di progetto di un'importante azienda stava fornendo software al gruppo di test di accettazione degli utenti che aveva solo il 7% di copertura del codice di linea per il test delle unità. Mentre questo mi sconvolge, mi dice solo che la pratica di ingegneria del software di questa azienda è immatura. Tuttavia, mi chiedo se potrebbero assumere solo alcuni neolaureati e alzare il livello delle pratiche dei team, supponendo che questi programmatori appena coniati siano stati addestrati nelle migliori pratiche.

Siete tra i diplomati CS 2008 - 2010 utilizzando le migliori pratiche di test delle unità del vostro codice?

    
posta 05.12.2010 - 06:44
fonte

7 risposte

6

Non scrivo test unitari per il software che scrivo per incarichi, di solito faccio solo alcuni test e debug.

Onestamente, CS alla mia università è abbastanza rotto, metà degli studenti sono programmatori appassionati e duri che hanno imparato quasi tutto da soli. L'altra metà riesce a malapena a scrivere un mondo ciao in Java, e non conosce altre lingue e ha problemi estremi anche con programmi banali. Gli studenti ottengono a malapena molta esperienza di programmazione, la maggior parte riesce a cigolare per copia e amp; incollare il codice in forma di libri e Internet senza realmente capirlo.

Come parte del piano di laurea, devi seguire corsi di architettura e gestione che coinvolgono l'agilità e i concetti di test del software e sviluppo guidato dai test. Tuttavia, questi corsi sono presi piuttosto tardi (anno senior) e non sono certamente utilizzati in altri corsi.

Se avessi più tempo, probabilmente testare unitamente il mio codice in modo corretto; sfortunatamente sto lavorando e impiegando 19 ore, quindi ho un sacco di incarichi e di solito riesco a batterli abbastanza velocemente e testarli abbastanza. Però ho ottenuto un paio di punti per un bug qua e là, e il test del mio codice per l'unità sarebbe sicuramente utile per ottenere voti migliori sui compiti.

Purtroppo, la mia esperienza è che qualsiasi sviluppo di software REALE, qualsiasi tipo di standard di programmazione o codifica di sistemi reali o best practice è fatto da coloro che scrivono codice nei fine settimana e ne leggono da soli, e cercano da solo Gli studenti che vanno solo a lezione, non riesco a immaginare come verranno assunti. Ti viene mostrato ciò che esiste e devi conoscerlo in classe, ma non abbastanza implementazione.

I professori non possono classificare 50 incarichi di programmazione per studenti ogni settimana, quindi se vogliono avere molta pratica, ci fanno fare lavori di gruppo. Ciò si traduce in uno o due bravi programmatori che eseguono quasi tutto il lavoro, e il resto segue e prova a leggere e modificare il loro codice. Forse le altre università sono migliori e credo che affermino di esserlo; ma penso che in pratica non siano affatto diversi.

    
risposta data 05.12.2010 - 08:22
fonte
3

Come studente universitario scrivi un test unitario per il codice del progetto che scrivi?

Progetto tesi di laurea; sorta. Faccio test interattivi con Lisp / Slime. Alcune cose vengono sottoposte a test unitari, altre no.

Sai come usare correttamente TDD?

Meh, ci ho provato, non ho capito il punto. Piuttosto prova durante rispetto a prima.

Ti è stato insegnato a usare framework di test (jUnit per esempio)?

Perché un professore dovrebbe sprecare il proprio tempo insegnandomi un'API? Se non riesco a imparare un'API, devo lasciare il campo.

    
risposta data 29.08.2011 - 22:44
fonte
1

(Mi sono laureato nel 2008)

Abbiamo appreso i test delle unità e abbiamo dovuto farlo per alcuni compiti in una classe chiamata "Team Software Project". La lezione riguardava le pratiche di ingegneria del software. Oltre a quella classe, non è stato menzionato, ma quella classe era richiesta per ottenere una laurea in Informatica. Il dipartimento di Informatica ha anche offerto una concentrazione di ingegneria del software più basata sui progetti, con lezioni dedicate a test, HCI, gestione dei progetti, ecc. Ma con un core teorico di CS.

    
risposta data 29.08.2011 - 19:01
fonte
1

Il tempo è un fattore importante in questo. Si potrebbe fare un incarico di programmazione al mese con il tempo per TDD, oppure si potrebbe fare uno ogni due settimane con qualche altro metodo di test. Nel posto di lavoro, il mese è valsa la pena perché vivrai con quel codice per mesi / anni / decenni e forse anche per fare soldi da esso. Nell'aula in cui è scritto e subito gettato via (se non immediatamente all'ultimo check-in, almeno alla fine del semestre, forse alla fine del secondo per una classe di progetti speciali), non ha alcun senso educativo . Il tuo professore preferisce che tu impari il doppio dei concetti di programmazione attraverso l'esperienza personale (un progetto), che impari un concetto e passi settimane a rendere il codice a prova di bomba.

Gli obiettivi sono diversi. Ad eccezione di un corso di ingegneria del software, il TDD richiesto su tutti i progetti potrebbe effettivamente essere un segnale di avvertimento di un istruttore non ottimamente efficace a livello di progetto del college (imparerai di meno).

E per ridere, c'è sempre il caso sciocco di scrivere un test unitario per Hello World prima di sapere come programmare ... perché stai imparando a scrivere il tuo primo programma :) Ridi. Non prendere sul serio l'esempio del mondo ciao.

    
risposta data 30.08.2011 - 00:37
fonte
0

Nella mia università non è possibile completare una laurea in Ingegneria del software senza aver affrontato una particolare materia che si concentra sull'insegnamento delle metodologie di sviluppo del software Agile. In tale argomento non è possibile rivendicare funzionalità implementate senza test ragionevoli tramite JUnit e Selenium.

Tuttavia: il TDD è stato insegnato ma non applicato e, a causa del lavoro di gruppo, alcuni studenti potrebbero evitare di esporsi a Selenium e / o JUnit.

    
risposta data 05.12.2010 - 08:03
fonte
0

Generalmente quando la copertura è così bassa non ha nulla a che fare con il livello di abilità degli sviluppatori o quanto recentemente si sono laureati.

Di solito due cose hanno causato questo, il vecchio codice che è stato scritto prima di TDD era comune (quando gran parte della tua base di codice è stata scritta dieci anni fa, sarebbe estremamente improbabile che tu avessi una copertura di prova) e stretta (spesso impossibile) scadenze. Il test è una delle prime vittime della scadenza impossibile.

Quindi è improbabile che l'aggiunta di nuove persone più familiari con i test cambi le due condizioni e la convergenza dei test probabilmente migliorerà lentamente.

Detto questo, personalmente ho visto solo raramente un neolaureato che si preoccupava molto dei test. Questo perché i progetti a cui lavorano a scuola sono sia piccoli che non necessitano di manutenzione nel tempo. Quindi le ragioni critiche per la converizione dei test non sono presenti e la maggior parte dei studnets non fa abitualmente il TDD. Spesso i laureati devono anche essere istruiti sull'utilizzo del controllo del codice sorgente. C'è un'enorme differenza tra il lavoro sul software aziendale e le assegnazioni di classe e quindi queste cose non sono realmente sul loro radar fino a quando non vengono lasciate cadere in un progetto ampio e continuo.

    
risposta data 29.08.2011 - 21:05
fonte
0

Appena laureato di recente con una laurea in CS. Posso dire onestamente che oltre al materiale incentrato sui test, ero mai richiesto per trasformare i test. Ciò non significa che non li ho scritti però. Vorrei che la mia scuola avesse discusso di testare di più. Test e controllo del codice sorgente.

    
risposta data 30.08.2011 - 02:48
fonte

Leggi altre domande sui tag