Gamificazione nell'educazione ai test software
Rendere il testing del software coinvolgente per gli studenti attraverso la gamification.
― 7 leggere min
Indice
Il Testing del software è una parte fondamentale dello sviluppo software. Aiuta a garantire che i programmi funzionino correttamente e soddisfino le aspettative. Tuttavia, molti studenti faticano a imparare a testare il loro codice in modo efficace. Spesso trovano il testing noioso o difficile, il che rende difficile per loro impegnarsi in pratiche di testing importanti. Per affrontare questo problema, abbiamo cercato un modo per rendere il testing più divertente e motivante per gli studenti.
Un metodo che abbiamo esplorato è la gamification. Questo significa usare elementi simili ai giochi come punti, Sfide e classifiche in contesti non ludici per motivare le persone. Nel nostro caso, abbiamo integrato la gamification in un corso di testing del software per studenti combinandola con un sistema chiamato Integrazione Continua.
L'importanza del Testing del Software
Il testing è cruciale nell'ingegneria del software perché aiuta a identificare bug o problemi in un programma prima che venga messo in produzione. Quando il software non viene testato correttamente, può portare a seri problemi, inclusi crash del software e utenti scontenti. Nel mondo reale, le aziende possono perdere denaro e subire danni reputazionali se il loro software fallisce.
Nonostante i benefici noti, molti nuovi sviluppatori non scrivono abbastanza test. Spesso sentono che il testing richiede troppo tempo e non porta ricompense. Questo non è solo un problema per gli studenti; anche gli sviluppatori esperti a volte trascurano il testing. Una mancanza di istruzione sulle pratiche di testing può contribuire a questo problema.
Gamification nell'Istruzione
La gamification può aiutare a risolvere il problema della motivazione aggiungendo elementi divertenti e competitivi ai compiti. La gente di solito ama i giochi perché offrono obiettivi chiari, ricompense per i risultati e un senso di competizione. Usando questi principi nell'istruzione, possiamo incoraggiare gli studenti a impegnarsi in compiti che altrimenti eviterebbero, come il testing del software.
In questo corso, abbiamo integrato la gamification nel curriculum di testing del software usando uno strumento che funziona con Jenkins, una popolare piattaforma di integrazione continua. Questo strumento premia gli studenti per il completamento di sfide legate al testing e incoraggia l'impegno con le pratiche di testing.
Integrazione Continua
L'integrazione continua è una pratica che automatizza il processo di testing. Quando gli sviluppatori scrivono codice, viene testato automaticamente attraverso un sistema che esegue i test ogni volta che c'è una modifica. Questo aiuta a catturare i problemi prima nel processo di sviluppo. L'idea è mantenere il codice sano e assicurarsi che le nuove modifiche non rompano funzionalità esistenti.
Abbiamo usato un plugin specifico per aggiungere funzionalità di gamification in Jenkins. Questo plugin genera sfide e ricompense in base a quanto bene gli studenti testano il loro codice. L'obiettivo è integrare il testing e le attività correlate direttamente nel lavoro di sviluppo degli studenti.
Il Nostro Approccio
Per capire come la gamification possa migliorare l'istruzione nel testing del software, abbiamo sviluppato un programma che consente agli studenti di guadagnare punti e ricompense per attività di testing. Le funzionalità di gamification che abbiamo incluso sono:
- Sfide: Questi sono compiti specifici che gli studenti devono completare, come scrivere test aggiuntivi per il loro codice.
- Missioni: Queste raggruppano diverse sfide che gli studenti devono completare in ordine.
- Classifiche: Mostra i punteggi e le classifiche degli studenti in base alle loro attività di testing.
- Traguardi: Gli studenti li guadagnano raggiungendo traguardi specifici o completando determinati compiti.
Usando queste funzionalità, volevamo rendere il testing meno un lavoro noioso e più coinvolgente.
Struttura del Corso
Il corso di testing del software consiste in due ore di lezioni e due ore di esercizi pratici ogni settimana. Gli studenti devono completare cinque progetti di coding durante il corso. Ogni progetto è progettato per insegnare diversi concetti e pratiche di testing.
I progetti sono:
- Compito Iniziale: Gli studenti creano e testano una piccola classe usando un framework di testing.
- Sviluppo Guidato dai Test: Gli studenti sviluppano un'applicazione web in modo test-first, scrivendo i test prima di implementare le funzionalità.
- Sviluppo Guidato dal Comportamento: In questo progetto, gli studenti creano un'interfaccia utente grafica e la testano usando strumenti di testing web.
- Analizzatore di Copertura delle Linee: Gli studenti implementano uno strumento per tracciare quali righe di codice sono testate.
- Fuzzer Basato sulla Copertura: Nel progetto finale, gli studenti creano uno strumento che genera input per testare aree non testate del codice.
Per la nostra ricerca, ci siamo concentrati sugli ultimi due progetti, dove è stata applicata la gamification tramite il plugin.
Domande di Ricerca
Per valutare l'efficacia del nostro approccio gamificato, volevamo rispondere a tre domande principali:
- Come hanno usato gli studenti gli strumenti di gamification durante il corso?
- Quali cambiamenti nel comportamento di testing abbiamo osservato tra gli studenti?
- Come si sono sentiti gli studenti riguardo all'integrazione della gamification nel loro corso?
Impegno degli Studenti
Durante il corso, abbiamo raccolto dati su come gli studenti hanno interagito con le funzionalità di gamification. Complessivamente, 26 studenti hanno completato i progetti. Hanno affrontato varie sfide, missioni e traguardi usando lo strumento, e abbiamo analizzato quanti hanno completato, quanti hanno rifiutato e il loro coinvolgimento complessivo.
Abbiamo trovato che gli studenti hanno completato un gran numero di sfide e missioni. La maggior parte delle sfide che hanno completato erano relative all'aumento della copertura del codice o al miglioramento dei loro punteggi di mutazione. Tuttavia, hanno anche rifiutato molte sfide, spesso cercando alternative più facili.
Comportamento di Testing
In termini di comportamento di testing, abbiamo esaminato metriche chiave come il numero di test scritti, il numero di commit di codice, la copertura delle linee e i punteggi di mutazione. Queste metriche ci hanno aiutato a valutare l'efficacia dell'approccio di gamification.
Gli studenti hanno scritto in media 14.8 test per un progetto e 21.8 per un altro. La maggior parte degli studenti puntava a una copertura delle linee alta, raggiungendo quasi il 100% per entrambi i progetti. I risultati dai test di mutazione hanno mostrato che hanno lavorato duramente per identificare aree non testate nel loro codice. Questo suggerisce che l'integrazione della gamification ha influenzato positivamente le loro strategie di testing.
Abbiamo anche notato un aumento significativo negli output corretti dei programmi tra gli studenti che utilizzavano lo strumento di gamification, il che indica i suoi benefici per l'apprendimento.
Percezione degli Studenti
Dopo aver completato il corso, gli studenti hanno fornito feedback sulla loro esperienza con lo strumento di gamification. Molti hanno riferito di aver apprezzato l'uso dello strumento e di averlo trovato utile per imparare a scrivere test. Le sfide erano particolarmente popolari, mentre alcuni studenti hanno avuto difficoltà con le missioni.
Sebbene gli studenti abbiano apprezzato gli aspetti competitivi e come le funzionalità di gamification li abbiano motivati a testare di più, ci sono state alcune preoccupazioni. Alcuni hanno sentito di aver scritto test non necessari semplicemente per completare le sfide anziché concentrarsi su un testing significativo.
Nonostante alcune sfide, il feedback complessivo ha indicato un alto livello di soddisfazione per l'integrazione della gamification nel corso. Gli studenti hanno sentito che la struttura li rendeva più responsabili nel testare il loro codice e scoprire bug.
Conclusioni e Lavoro Futuro
La nostra ricerca ha dimostrato che gamificare l'istruzione sul testing del software può portare a un migliore coinvolgimento, pratiche di testing migliorate e risultati di apprendimento potenziati. Integrando lo strumento di gamification nei sistemi di integrazione continua, siamo riusciti a motivare gli studenti a scrivere test e migliorare la qualità del loro codice.
Sebbene i risultati siano stati promettenti, ci sono ancora aree da migliorare. Le future iterazioni dello strumento potrebbero affinare ulteriormente le sfide e le missioni per renderle più gestibili e rilevanti per il corso. Inoltre, incorporare lo strumento direttamente negli ambienti di sviluppo degli studenti potrebbe semplificare il processo e migliorare l'esperienza dell'utente.
Vogliamo anche esplorare l'efficacia dello strumento in contesti industriali reali, dove le pratiche di testing potrebbero differire da quelle nei contesti educativi. Valutando il suo impatto in vari ambienti e con diversi tipi di progetti, speriamo di imparare di più su come la gamification possa supportare il testing del software e l'assicurazione della qualità nel lungo periodo.
Concentrandoci sul miglioramento continuo, possiamo assicurarci che i nostri metodi di insegnamento evolvano insieme al panorama in rapida evoluzione dello sviluppo software, portando infine a laureati meglio preparati a affrontare le sfide reali nelle loro future carriere.
Titolo: Gamifying a Software Testing Course with Continuous Integration
Estratto: Testing plays a crucial role in software development, and it is essential for software engineering students to receive proper testing education. However, motivating students to write tests and use automated testing during software development can be challenging. To address this issue and enhance student engagement in testing when they write code, we propose to incentivize students to test more by gamifying continuous integration. For this we use Gamekins, a tool that is seamlessly integrated into the Jenkins continuous integration platform and uses game elements based on commits to the source code repository: Developers can earn points by completing test challenges and quests generated by Gamekins, compete with other developers or teams on a leaderboard, and receive achievements for their test-related accomplishments. In this paper, we present our integration of Gamekins into an undergraduate-level course on software testing. We observe a correlation between how students test their code and their use of Gamekins, as well as a significant improvement in the accuracy of their results compared to a previous iteration of the course without gamification. As a further indicator of how this approach improves testing behavior, the students reported enjoyment in writing tests with Gamekins.
Autori: Philipp Straubinger, Gordon Fraser
Ultimo aggiornamento: 2024-01-31 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2401.17740
Fonte PDF: https://arxiv.org/pdf/2401.17740
Licenza: https://creativecommons.org/licenses/by-sa/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.