slogan3

Help me een uitgebreide testset maken voor mijn nieuwe functie.

description

Door deze prompt te gebruiken, creëert u een robuuste testset die de betrouwbaarheid van de code verbetert, het onderhoud vergemakkelijkt en de kans op bugs in productie vermindert.

prompt

try_prompt

Ik ontwikkel een nieuwe functie in mijn applicatie en heb hulp nodig bij het maken van een uitgebreide eenheidstestset. Geef aanbevelingen over hoe ik mijn tests moet ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn uitgebreide aanbevelingen voor het structureren van je eenheidstestset voor de gebruikersregistratiefunctie, inclusief suggesties voor scenario's en randgevallen: **Structuur van de Tests:** 1. **Testcategorieën:** - Validatie van invoergegevens - Functionele logica - Foutafhandeling - Randgevallen en grenswaarden - Integratie (indien van toepassing) 2. **Testbestanden en -modules:** - Scheid tests per functionaliteit of validatiepunt - Gebruik duidelijke naamgeving, bv. `test_register_valid_input.py`, `test_register_invalid_email.py` 3. **Testmethoden:** - Elke test moet één specifiek scenario behandelen - Gebruik setup- en teardown-methoden indien nodig voor voorbereiding en opruiming --- **Te dekken Scenario's:** 1. **Valid Invoer:** - Correcte e-mail en wachtwoord die voldoen aan alle eisen - Test of registratie succesvol is en de juiste gegevens worden opgeslagen 2. **Ongeldige e-mailadressen:** - Geen '@' teken - Geen domeinnaam - Lege e-mail - Onjuiste formaten (bijv. 'abc@com', 'abc@.com') 3. **Ongeldig wachtwoord:** - Te kort (bijvoorbeeld minder dan 8 tekens) - Geen hoofdletters, kleine letters, cijfers of symbolen indien vereist - Leeg wachtwoord 4. **Herhaalde registratie:** - E-mail die al bestaat in de database - Controle of duplicates worden afgehandeld met juiste foutmelding 5. **Randgevallen en grenswaarden:** - E-mail met minimale/maximale lengte - Wachtwoord met minimale/maximale lengte - Speciale tekens in e-mail en wachtwoord 6. **Foutafhandeling:** - Databasefout (bijv. verbindingsproblemen) - Onverwachte exceptions 7. **Beveiliging en validatie:** - Cross-site scripting (XSS) of injection-voorbeelden in input - Verifiëren dat wachtwoorden correct worden gehasht en opgeslagen --- **Zorgen dat alle randgevallen worden overwogen:** - Gebruik data-driven testing: definieer een reeks testgegevens inclusief randgevallen - Maak gebruik van mocking/stubbing voor externe afhankelijkheden (zoals database) - Test zowel succesvolle als mislukte cases - Documenteer alle scenario's zodat geen enkele belangrijke variatie wordt overgeslagen - Overweeg het gebruik van testtools of frameworks die property-based testing ondersteunen voor het genereren van random input --- **Aanvullende Tips:** - Automatiseer je tests zodat ze bij elke codewijziging kunnen worden uitgevoerd - Gebruik duidelijke asserties en controleer niet alleen op succes, maar ook op correcte foutmeldingen - Test ook de gebruikerservaring: bijvoorbeeld of foutmeldingen duidelijk en behulpzaam zijn Door deze gestructureerde aanpak zorg je dat je registratiefunctie betrouwbaar, veilig en robuust is onder alle omstandigheden.
provider: deepseek
model: deepseek-chat
Zeker, hier is een uitgebreide handleiding voor het opzetten van eenheidstests voor je registratiefunctie in het Nederlands: ## Teststructuur ```java // Voorbeeld indeling (pseudocode) class UserRegistrationTest { // Testgevallen per categorie void testSuccesvolleRegistratie() { ... } void testEmailValidatie() { ... } void testWachtwoordSterkte() { ... } void testRandgevallen() { ... } void testIntegratieScenario() { ... } } ``` ## Testscenario's per categorie ### 1. **Succesvolle registratie** - Geldig e-mailadres + sterk wachtwoord - Controleer of gebruiker correct wordt aangemaakt - Verifieer dat wachtwoord gehashed wordt opgeslagen - Bevestig dat juiste succesresponse wordt teruggegeven ### 2. **E-mail validatie** ```java // ONGELDIGE EMAILS testRegistratieMetOngeldigeEmail("geen-email") → moet falen testRegistratieMetOngeldigeEmail("geen@") → moet falen testRegistratieMetOngeldigeEmail("@domein.nl") → moet falen testRegistratieMetOngeldigeEmail("test@onvolledig") → moet falen // SPECIAAL GEVAL testRegistratieMetBestaandeEmail("bestaat@al.nl") → moet "email bestaat al" error geven ``` ### 3. **Wachtwoordsterkte** ```java // TE KORT testWachtwoordTeKort("Ab1!") → moet falen (minimaal 8 karakters) // ONVEILIG testWachtwoordZonderHoofdletter("abc123!@#") → moet falen testWachtwoordZonderCijfer("Abcdefg!") → moet falen testWachtwoordZonderSpeciaalKarakter("Abcdefg123") → moet falen // GELDIG testWachtwoordGeldig("VeiligWacht123!") → moet slagen ``` ### 4. **Randgevallen en edge cases** ```java // LEGE INPUT testRegistratieMetLegeEmail("") → moet falen testRegistratieMetLeegWachtwoord("") → moet falen // WHITESPACE testRegistratieMetSpaties(" test@email.com ") → trimmen of falen? testWachtwoordMetSpaties(" Wacht123! ") → accepteer of weiger? // LANGE INPUTS testExtreemLangeEmail(256+ karakters) → moet falen testExtreemLangWachtwoord(128+ karakters) → limiet nodig? // SPECIALE KARAKTERS testEmailMetUnicode("tést@email.com") → accepteer? testWachtwoordMetUnicode("Pässwörd123!") → beleid? // NULL VALUES testRegistratieMetNullEmail(null) → duidelijke foutmelding testRegistratieMetNullWachtwoord(null) → duidelijke foutmelding ``` ### 5. **Beveiligingsscenario's** ```java // SQL INJECTION testRegistratieMetSQLInjectionEmail("test@email.com'; DROP TABLE users;--") → moet falen // XSS testRegistratieMetXSSEmail("test<script>alert()</script>@email.com") → moet falen // BRUTE FORCE BESCHERMING testTeVeelRegistratiePogingen() → rate limiting testen ``` ### 6. **Integratietests** ```java // DATABASE INTERACTIE testDatabaseLockBijGelijktijdigeRegistratie() → concurrentie test // EXTERNE SERVICES testEmailVerificatieWordtVerstuurd() → mock email service // PERFORMANCE testRegistratieBinnenAcceptabeleTijd() → timeout test ``` ## Teststrategie tips ### 1. **Test Pyramid** - 70% Unit tests (individuele functies) - 20% Integration tests (database, services) - 10% E2E tests (volledige registratieflow) ### 2. **Test Data Management** ```java // Gebruik test factories User createValidTestUser() { return new User("test@example.com", "VeiligWacht123!"); } // Cleanup na tests void cleanupTestUsers() { ... } ``` ### 3. **Mocking Strategy** ```java // Mock externe dependencies @Mock EmailService emailService; @Mock UserRepository userRepository; // Test isolatie garanderen void setUp() { resetAllMocks(); } ``` ## Aanbevolen test coverage - **Minimaal 90% code coverage** - 100% voor kritieke paden (wachtwoord hashing, email validatie) - Alle error scenarios gedekt - Boundary values getest ## Continuous Integration - Tests automatisch runnen bij elke commit - Coverage rapporten genereren - Performance tests in aparte pipeline Door deze structuur te volgen zorg je voor een robuuste testset die alle belangrijke scenario's dekt en toekomstige bugs voorkomt. Succes met de implementatie!