Uppsats

Testdriven utveckling och stora språkmodeller: Enhetstester som prompt till ChatGPT att generera kod

Kandidat-uppsats

KTH/Skolan för elektroteknik och datavetenskap (EECS)

Publicerad: 2024

Språk: Svenska

Sammanfattning

Artificiell intelligens (AI) har fått en ökad uppmärksamhet inom mjukvaruutveckling med automatiserad kodgenerering som ett ständigt eftertraktat mål. Denna rapport behandlar en specifik utmaning med generativa AI-modeller som ChatGPT, som i sig är icke-deterministiska: Även med identiska parameterinställningar och instruktioner i prompten kan svaren från GPT-modellen variera mellan olika förfrågningar. Testdriven utveckling (TDD) är en etablerad metod inom mjukvaruutveckling där tester skrivs tidigt i processen utifrån specifikationskrav, och kod implementeras för att möta dessa tester. För att använda genererad programkod i en TDD-miljö krävs en uppfattning om dess tillförlitlighet. Ett kvantitativt experiment utformades för att utforska GPT-modellens förmåga att generera funktionell Java-programkod när den promptats med enhetstester med full branchtäckning och publikt gränssnitt. Javametoder med varierande kodkomplexitet valdes ut. Ett system för automatiska API-anrop till OpenAi:s GPT-modell implementerades. Systemet kompilerade den generade koden och körde dess motsvarande testsvit. Statisk analys utfördes för att identifiera potentiella buggmönster i den genererade källkoden. Experimentet upprepades för att samla in mätpunkter för statistisk analys med både GPT-3.5 och GPT-4. Resultaten visar att GPT-4 uppnådde en högre andel av lyckade enhetstester jämfört med GPT-3.5. Däremot uppvisade GPT-4 fler mönster för potentiella buggar i den statiska analysen och orsakade fler syntaktiska fel och avvikelser från förväntade metodsignaturer. Ingen uppenbar relation mellan uppmätta värden och kodkomplexitet fastställdes för metoder med låg komplexitet medan en högre komplexitet ledde till fler misslyckade enhetstester och syntaktiska fel, särskilt med GPT-4.

Utforska vidare

Liknande uppsatser

Uppsatser med liknande ämnen och nyckelord.