Testdata genereren met ChatGPT: versie 3.5 vs 4
In de wereld van softwareontwikkeling is het vaak essentieel om testdata te hebben om applicaties te testen. Of het nu gaat om het valideren van de functionaliteit van een programma of het testen van de prestaties ervan. Het creëren van grote datasets kan echter tijdrovend en lastig zijn, vooral wanneer je dataset moet voldoen aan flexibele of juist specifieke eisen. In hoeverre kan het krachtige taalmodel dat de basis vormt van ChatGPT deze requirements (input) verwerken in de (semi-)random gegenereerde testdata?
Door: Robert van de Vorst, Business Intelligence Consultant bij Heeyoo

Testdata genereren met ChatGPT
In deze blogpost nemen we een kleine proef op de som. Het doel is het generen van een Python script waarmee op haar beurt weer een fictieve HR-dataset kan worden gegenereerd. Als uitgangspunt voor de (synthetische) dataset is een IT-gerelateerd bedrijf genomen van 500 records met informatie over werknemers (naam, email, adres, salaris, functie, tevredenheid, performance, absentie, etc.). Aan de hand de volgende prompt vergelijken we de resultaten van ChatGPT versie 3.5 met die van versie 4:
Please write a Python script to create an HR dataset (500 records) of an IT-related organization that includes employee’s information, such as name, email, date of birth, age, salary, job satisfaction, manager, department, recruitment source, performance score and absenteeism.
Op basis van de output van ChatGPT (Python script) zien we dat meerdere Python libraries worden aangeroepen, dus het is belangrijk om packages als Pandas, NumPy en Faker geïnstalleerd te hebben.
Om vervolgens een beeld te krijgen van de data, runnen we de Python code en printen we enkele records:

ChatGPT 3.5

ChatGPT 4
Hoewel in beide versies van ChatGPT de data technisch gezien correct genereren, valt het op dat in de eerdere versie (3.5) naam en e-mailadres niet goed corresponderen, terwijl ChatGPT 4 op basis van dezelfde prompt naam en e-mailadres wél consistent juist aan elkaar koppelt. Opvallend is dat beide versies wel een identieke leeftijdsrange tonen, namelijk 22-60 jaar. Verder houden beide versies van ChatGPT er ook rekening mee dat de afdelingen gerelateerd zijn aan HR en IT (ChatGPT 3.5 department {Development, QA, Finance, Support, HR} – ChatGPT 4 {Engineering, Marketing, Finance, HR, Sales}).
Contextsensitiviteit
Een belangrijk verschil in contextsensitiviteit tussen beide versies betreft dat ChatGPT 3.5 niet begrijpt dat het aantal managers minder zou moeten zijn dan het aantal werknemers, terwijl versie 4 hierop automatisch de gegeneerde data aanpast. De ‘nunique’ functie toont namelijk bij de ChatGPT 3.5 dataset 499 managers, en bij ChatGPT 4 slechts 4. Dit laat zien dat de nieuwere ChatGPT versie contextsensitiviteit op een dieper niveau lijkt toe te kunnen passen ten opzichte van voorafgaande versies.
In beide versies zijn de overige numerieke waarden – zoals performance scores, salaris, etc. – per variabele realistisch, maar bevatten ze geen (logische) correlaties ten opzichte van elkaar:


Conclusie
Beide versies van ChatGPT zijn goed in staat een testdataset te genereren die aan de minimale eisen voldoet. Een belangrijk verschil tussen ChatGPT versie 3.5 en versie 4 is dat de laatste aanmerkelijk meer contextsensitief is ten opzichte van de eerdere versie. In hoeverre dit verschil in de praktijk relevant is, hangt mede af van het doel waarmee de testdata wordt gegenereerd.
Wel dient opgemerkt te worden dat met beide versies de Python code niet altijd foutloos wordt gegeneerd (bugs). Opvallend genoeg kan dit redelijk eenvoudig worden voorkomen door ChatGPT specifiek te vragen een code zonder bugs/errors te schrijven. Vragen om de ‘foutieve’ code aan te passen lost de bug minder vaak altijd op.
Kortom, ChatGPT kan zijn nuttig om snel testdata te genereren. De data kan desgewenst met additionele prompts eventueel verder gespecificeerd worden. Voor datasets met mindere specifieke eisen kunnen tools als Mockaroo, autotestdata.com, etc. eventuele alternatieven zijn.







