slogan3

Help me een uitgebreide checklist voor mijn eenheidstests te maken

description

Door deze checklist te gebruiken, kun je systematisch zorgen dat je eenheidstests alle noodzakelijke gebieden dekken, wat de kwaliteit en betrouwbaarheid van je codebasis verbetert.

prompt

try_prompt

Ik heb hulp nodig bij het ontwikkelen van een grondige checklist die alle cruciale aspecten van eenheidstests voor mijn project behandelt. Mijn programmeertaal is {{programm ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een uitgebreide checklist voor eenheidstests in Python, inclusief aspecten van testgevalontwerp, dekkingsanalyse en best practices: **Checklist voor eenheidstests in Python** ### 1. Testgevalontwerp - [ ] **Gebruik duidelijke en beschrijvende testnamen:** Namen die aangeven wat de test controleert (bijv. `test_login_with_valid_credentials`). - [ ] **Test één ding tegelijk:** Elke test moet zich richten op één specifieke functionaliteit of gedrag. - [ ] **Gebruik setup- en teardown-methoden:** Bereid testomstandigheden voor en maak ze schoon na de tests (bijv. `setUp()`, `tearDown()` in `unittest`). - [ ] **Maak gebruik van mocks en stubs:** Voor afhankelijkheden die niet relevant zijn voor de test, gebruik mock-objecten om isolatie te waarborgen. - [ ] **Test zowel positieve als negatieve scenario's:** Bijvoorbeeld, geldige invoer en invoer die fouten veroorzaakt. - [ ] **Test randgevallen en uitzonderingen:** Zorg dat je ook test op grenswaarden en verwachte foutmeldingen. - [ ] **Gebruik parametrisatie waar mogelijk:** Voer dezelfde test uit met verschillende invoerwaarden (bijv. met `pytest.mark.parametrize`). ### 2. Dekking en analyse - [ ] **Gebruik code coverage tools:** Zoals `coverage.py` om te controleren welke delen van de code getest worden. - [ ] **Streef naar hoge dekkingsgraad:** Idealiter minimaal 80-90%, maar focus op kritieke code. - [ ] **Analyseer niet-geteste code:** Identificeer en voeg tests toe voor ongeteste functies of paden. - [ ] **Test alle belangrijke codepaden:** Inclusief if-else takken, loops, uitzonderingsafhandeling. - [ ] **Vermijd over-dekkings:** Focus op relevante en kritische delen, niet op onnodige tests. ### 3. Best practices voor effectieve en onderhoudbare tests - [ ] **Houd tests onafhankelijk:** Elke test moet zonder afhankelijkheid op andere tests kunnen draaien. - [ ] **Gebruik asserties effectief:** Controleer niet alleen output, maar ook randvoorwaarden en side-effects. - [ ] **Houd tests eenvoudig en overzichtelijk:** Vermijd complexe logica binnen tests. - [ ] **Documenteer tests indien nodig:** Leg uit waarom bepaalde tests bestaan of wat ze controleren. - [ ] **Voer tests automatische uit:** Implementeer continuous integration (CI) om tests automatisch te draaien bij elke wijziging. - [ ] **Gebruik fixture-bestanden en testdata zorgvuldig:** Minimaliseer duplicatie en zorg voor consistente testdata. - [ ] **Refactor tests regelmatig:** Verwijder verouderde tests en verbeter testcode voor leesbaarheid. - [ ] **Vermijd het testen van niet-ondersteunde versies:** Houd je tests actueel met je Python-versie en afhankelijkheden. ### 4. Overige overwegingen - [ ] **Gebruik een testframework:** Zoals `unittest`, `pytest` of `nose`. - [ ] **Behandel externe systemen en API's met mocks:** Vermijd afhankelijkheid van externe services. - [ ] **Test foutafhandelingspaden expliciet:** Controleer dat fouten correct worden afgehandeld. - [ ] **Implementeer tests voor performance indien nodig:** Bijvoorbeeld, tijdslimieten voor kritieke functies. Door deze checklist te volgen, zorg je voor een volledige, effectieve en onderhoudbare set eenheidstests voor je Python-project.
provider: deepseek
model: deepseek-chat
Zeker, hier is een uitgebreide checklist voor eenheidstests in Python: ## Testgevalontwerp & Structuur - [ ] Elke test test slechts één specifiek gedrag/use-case - [ ] Gebruik beschrijvende testnamen (test_<methode>_<scenario>_<verwacht_resultaat>) - [ ] Arrange-Act-Assert patroon consistent toepassen - [ ] Test zowel happy path als edge cases en foutscenario's - [ ] Gebruik parametrisatie (pytest.mark.parametrize) voor vergelijkbare testscenario's - [ ] Test alle belangrijke voorwaarden (preconditions) en bedrijfsregels ## Testdekking & Analyse - [ ] Streef naar minimaal 80% code coverage - [ ] Gebruik tools zoals pytest-cov om coverage te meten - [ ] Test alle publieke methoden en functies - [ ] Verifieer dekking van alle belangrijke beslissingspunten (if/else, loops) - [ ] Test exception handling en foutscenario's - [ ] Analyseer branch coverage naast statement coverage ## Testisolatie & Betrouwbaarheid - [ ] Tests zijn onafhankelijk en kunnen in willekeurige volgorde draaien - [ ] Gebruik mocking voor externe dependencies (unittest.mock of pytest-mock) - [ ] Reset mock-toestanden tussen tests - [ ] Vermijd testinterdependentie - [ ] Gebruik setup/teardown methods of fixtures waar nodig ## Testonderhoudbaarheid - [ ] Tests zijn eenvoudig te lezen en begrijpen - [ ] Gebruik duidelijke, betekenisvolle testdata - [ ] Vermijd magic numbers en hardcoded waarden - [ ] Documenteer complexe testlogica met comments - [ ] Houd tests focused en niet te groot - [ ] Refactor gemeenschappelijke testcode naar hulpfuncties of fixtures ## Python-specifieke Best Practices - [ ] Gebruik pytest i.p.v. unittest voor betere leesbaarheid - [ ] Implementeer custom fixtures voor complexe testsetup - [ ] Gebruik context managers voor resource management in tests - [ ] Test asynchrone code met pytest-asyncio - [ ] Valideer datatypes en returnwaarden met type hints - [ ] Gebruik factory_boy of vergelijkbaar voor testdata-generatie ## Testorganisatie & Uitvoering - [ ] Groepeer gerelateerde tests in testklassen of modules - [ ] Gebruik markers om tests te categoriseren (slow, integration, etc.) - [ ] Configureer een duidelijk testrunner-script - [ ] Zorg dat tests snel uitvoerbaar zijn (<1 minuut voor unit tests) - [ ] Integreer tests in CI/CD pipeline - [ ] Monitor testperformance en -betrouwbaarheid ## Asserties & Validatie - [ ] Gebruik specifieke assert statements (niet alleen assert True/False) - [ ] Valideer zowel positieve als negatieve scenario's - [ ] Test boundary conditions en edge cases - [ ] Verifieer side effects waar van toepassing - [ ] Gebruik custom assertion helpers voor complexe validaties Deze checklist helpt je om robuuste, onderhoudbare eenheidstests te schrijven die je codebetrouwbaarheid garanderen.