Automatisch Genereren van Debugging Testcases voor Mijn Code
description
Met deze prompt kan de gebruiker efficiënte testcases genereren die gericht zijn op het vinden van bugs in hun code, wat leidt tot sneller en gerichter debuggen. Het bespaart tijd bij het handmatig bedenken van testscenario's en verhoogt de kans om verborgen fouten te vinden, wat beter is dan traditionele, handmatige testmethoden.
prompt
Genereer gedetailleerde testcases die gericht zijn op het opsporen van bugs in mijn code. Code: <voer hier je code in> Beschrijf ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier zijn enkele gedetailleerde testcases voor de functie `berekenSom(items)`, inclusief de beschrijving van de gerichte bugs en waarom ze effectief zijn:
**Testcase 1: Lege lijst als invoer**
```javascript
console.log(berekenSom([])); // Verwacht: 0
```
**Detecteerde bug:** Geen bug, controleert of de functie correct omgaat met een lege array.
**Waarom effectief:** Valideert dat de functie geen fout geeft en correct 0 retourneert bij geen items.
**Testcase 2: Items met geldige `prijs`-eigenschappen**
```javascript
console.log(berekenSom([{prijs: 10}, {prijs: 20}, {prijs: 30}])); // Verwacht: 60
```
**Detecteerde bug:** Controleert of de som correct wordt berekend bij normale invoer.
**Waarom effectief:** Basisgeval, bevestigt correcte werking bij geldige en verwachte data.
**Testcase 3: Items zonder `prijs`-eigenschap**
```javascript
console.log(berekenSom([{prijs: 10}, {}, {prijs: 30}])); // Verwacht: NaN of fout of 40
```
**Detecteerde bug:** Mogelijk niet-handhaving van het bestaan van `prijs`.
**Waarom effectief:** Controleert of de functie robuust is tegen ontbrekende eigenschappen, aangezien `undefined` + getal resulteert in `NaN`, wat de som onbruikbaar maakt.
**Testcase 4: `prijs`-eigenschap met niet-numerieke waarde**
```javascript
console.log(berekenSom([{prijs: 10}, {prijs: "20"}, {prijs: 30}])); // Verwacht: 60 of NaN
```
**Detecteerde bug:** Onverwachte datatypes worden niet afgehandeld.
**Waarom effectief:** Toont of de functie type-veilig is; bij strings wordt de som niet correct, wat kan wijzen op datatypes die niet worden gecontroleerd.
**Testcase 5: Items met `prijs` als `null` of `undefined`**
```javascript
console.log(berekenSom([{prijs: null}, {prijs: undefined}, {prijs: 10}])); // Verwacht: 10 of NaN
```
**Detecteerde bug:** Onvoldoende afhandeling van deze gevallen.
**Waarom effectief:** Laat zien of de functie correct omgaat met niet-numerieke waarden en of er fouten optreden.
**Testcase 6: Items met negatieve of zeer grote `prijs`-waarden**
```javascript
console.log(berekenSom([{prijs: -10}, {prijs: 1e9}]})); // Verwacht: 999999990
```
**Detecteerde bug:** Mogelijke overflow of onjuiste berekeningen bij grote getallen.
**Waarom effectief:** Test de stabiliteit en correctheid bij randgevallen met grote of negatieve getallen.
**Samenvatting:**
Deze testcases detecteren vooral:
- Onjuiste of ontbrekende `prijs`-eigenschappen (Testcases 3, 4, 5)
- Typefouten of onverwachte datatypes (Testcases 4, 5)
- Correctheid bij normale invoer (Testcase 2)
- Randgevallen zoals lege lijsten en grote getallen (Testcases 1, 6)
Ze zorgen dat de functie robuust en foutbestendig wordt, en dat eventuele bugs in gegevensverwerking of datatype-afhandeling worden opgespoord.
provider: deepseek
model: deepseek-chat
Hier zijn gedetailleerde testcases voor uw functie:
## Testcases
**1. Test met lege array**
```javascript
test('Lege array retourneert 0', () => {
const result = berekenSom([]);
expect(result).toBe(0);
});
```
**2. Test met één item**
```javascript
test('Enkel item retourneert de prijs', () => {
const items = [{prijs: 25}];
const result = berekenSom(items);
expect(result).toBe(25);
});
```
**3. Test met meerdere items**
```javascript
test('Meerdere items retourneert correcte som', () => {
const items = [{prijs: 10}, {prijs: 20}, {prijs: 30}];
const result = berekenSom(items);
expect(result).toBe(60);
});
```
**4. Test met decimale prijzen**
```javascript
test('Decimale prijzen worden correct opgeteld', () => {
const items = [{prijs: 19.99}, {prijs: 5.50}, {prijs: 2.01}];
const result = berekenSom(items);
expect(result).toBeCloseTo(27.50);
});
```
**5. Test met negatieve prijzen**
```javascript
test('Negatieve prijzen worden correct verwerkt', () => {
const items = [{prijs: 50}, {prijs: -15}, {prijs: 10}];
const result = berekenSom(items);
expect(result).toBe(45);
});
```
**6. Test met null/undefined waarden**
```javascript
test('Items zonder prijs-eigenschap veroorzaken NaN', () => {
const items = [{prijs: 10}, {}, {prijs: 20}];
const result = berekenSom(items);
expect(result).toBeNaN();
});
```
**7. Test met niet-numerieke prijzen**
```javascript
test('Niet-numerieke prijzen veroorzaken onverwachte resultaten', () => {
const items = [{prijs: "10"}, {prijs: 20}, {prijs: "5"}];
const result = berekenSom(items);
expect(result).toBe("10205"); // String concatenatie in plaats van optelling
});
```
## Gedetecteerde fouten en effectiviteit:
**1. Type handling fout** - Testcase 7 detecteert dat de functie strings concatenat in plaats van numeriek optelt. Dit komt omdat `+` zowel optelling als concatenatie uitvoert.
**2. Ontbrekende eigenschappen** - Testcase 6 toont aan dat ontbrekende `prijs` eigenschappen NaN veroorzaken, wat mogelijk onverwacht gedrag is.
**3. Edge case handling** - Testcase 1 verifieert of de functie correct omgaat met lege arrays, een veelvoorkomende edge case.
**4. Precisie problemen** - Testcase 4 test op floating-point precisie issues die kunnen optreden bij decimale berekeningen.
**5. Negatieve waarden** - Testcase 5 controleert of de functie correct omgaat met negatieve getallen, wat belangrijke financiële implicaties kan hebben.
Deze testcases zijn effectief omdat ze:
- Alle belangrijke edge cases dekken
- Type conversie problemen blootleggen
- Onverwacht gedrag met ontbrekende data detecteren
- Zowel positieve als negatieve scenario's testen
- De kernfunctionaliteit van optelling grondig valideren