യൂണിറ്റ് ടെസ്റ്റ് AI ഗൈഡ്: സീറോ ഹാല്ലൂസിനേഷൻ
യൂണിറ്റ് ടെസ്റ്റിംഗിൽ AI പലപ്പോഴും പരാജയപ്പെടാറുണ്ട്. അത് പുതിയ മെത്തേഡുകൾ ഉണ്ടാക്കിയെടുക്കുന്നു. തെറ്റായ മോക്ക് (mock) സ്ട്രക്ചറുകൾ നിർമ്മിക്കുന്നു. നിലവിലില്ലാത്ത ഇംപോർട്ടുകൾ ഉപയോഗിക്കുന്നു. കൃത്യമായ കോൺടെക്സ്റ്റ് (context) ഇല്ലാത്തതുകൊണ്ടാണ് ഇത് സംഭവിക്കുന്നത്.
ഒരു ഡെറ്റർമിനിസ്റ്റിക് സിസ്റ്റം (deterministic system) ഉപയോഗിക്കുന്നതിലൂടെ നിങ്ങൾക്ക് ഇത് തടയാം. ഊഹിച്ചുകൊണ്ട് പ്രവർത്തിക്കുന്നതിന് പകരം കൃത്യമായ നിയമങ്ങൾ നടപ്പിലാക്കുന്ന രീതിയിലേക്ക് നിങ്ങൾ മാറണം.
അഞ്ച് പ്രധാന സ്റ്റാക്കുകളിലായി (stacks) സീറോ ഹാല്ലൂസിനേഷൻ യൂണിറ്റ് ടെസ്റ്റുകൾ നടപ്പിലാക്കുന്നതിനുള്ള മാനദണ്ഡം ഇതാ.
The Tech Stack Standard
ഓരോ സ്റ്റാക്കിനും ഓരോ ലൈബ്രറി മാത്രം തിരഞ്ഞെടുക്കുക. അവ തമ്മിൽ കൂട്ടിക്കലർത്തരുത്.
- Node.js (NestJS/Express): Jest
- React.js: Vitest + React Testing Library
- Python: pytest
- Angular: Jest
- Laravel: Pest
The Secret: Project-Scoped Rules
സാധാരണ പ്രോംപ്റ്റുകൾ മാത്രം പോരാ. നിങ്ങളുടെ IDE-ലേക്ക് നേരിട്ട് നിയമങ്ങൾ ഉൾപ്പെടുത്തേണ്ടതുണ്ട്. നിങ്ങൾ Cursor ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, .cursor/rules/ ഡയറക്ടറി ഉപയോഗിക്കുക.
ഓരോ സാങ്കേതികവിദ്യയ്ക്കും പ്രത്യേക റൂൾ ഫയലുകൾ നിർമ്മിക്കുക:
- unit-test-global.mdc: AAA (Arrange, Act, Assert) പാറ്റേൺ നിശ്ചയിക്കുന്നു.
- unit-test-nestjs.mdc: TestingModule, jest-mock-extended എന്നിവ നിർബന്ധമാക്കുന്നു.
- unit-test-react.mdc: fireEvent-ന് പകരം user-event ഉപയോഗിക്കാൻ നിർദ്ദേശിക്കുന്നു.
- unit-test-python.mdc: pytest-mock പാറ്റേണുകൾ സ്റ്റാൻഡേർഡൈസ് ചെയ്യുന്നു.
- unit-test-laravel.mdc: Pest സിന്റാക്സും Mockery ഉപയോഗവും ഉറപ്പാക്കുന്നു.
ഈ ഫയലുകൾ ഒരു കരാർ (contract) പോലെ പ്രവർത്തിക്കുന്നു. ഓരോ പ്രോംപ്റ്റിനും മുമ്പ് AI ഇവ വായിക്കുന്നു. ഇത് ഹാല്ലൂസിനേഷനുകൾ മൂലത്തിൽ തന്നെ തടയുന്നു.
The Unit Test Contract
ഓരോ ടെസ്റ്റും ഈ അഞ്ച് നിയമങ്ങൾ പാലിക്കണം:
- Isolation: എല്ലാ എക്സ്റ്റേണൽ ഡിപെൻഡൻസികളും മോക്ക് (mock) ചെയ്യുക. യഥാർത്ഥ DB അല്ലെങ്കിൽ HTTP കോളുകൾ പാടില്ല.
- Structure: AAA ഉപയോഗിക്കുക. നിങ്ങളുടെ Arrange, Act, Assert ബ്ലോക്കുകൾക്ക് എപ്പോഴും കമന്റുകൾ നൽകുക.
- Naming: "should [behavior] when [condition]" എന്ന രീതി ഉപയോഗിക്കുക. "test 1" പോലുള്ള അവ്യക്തമായ പേരുകൾ ഒഴിവാക്കുക.
- Coverage: ഹാപ്പി പാത്ത് (happy path), നൾ ഇൻപുട്ടുകൾ (null inputs), എറർ പാത്തുകൾ (error paths), എഡ്ജ് കേസുകൾ (edge cases) എന്നിവ ടെസ്റ്റ് ചെയ്യുക.
- Speed: ഓരോ ടെസ്റ്റും 100ms-ൽ താഴെ സമയം കൊണ്ട് റൺ ചെയ്യണം.
Implementation Steps
- നിങ്ങളുടെ ലൈബ്രറിയും കോൺഫിഗറേഷൻ ഫയലുകളും സജ്ജമാക്കുക.
- നിങ്ങളുടെ .cursor/rules/ ഫോൾഡർ നിർമ്മിക്കുക.
- സ്ഥിരമായ മെമ്മറിയായി പ്രവർത്തിക്കുന്നതിനായി പ്രോജക്റ്റ് റൂട്ടിൽ ഒരു CLAUDE.md ഫയൽ ചേർക്കുക.
- നിങ്ങളുടെ CI പൈപ്പ്ലൈനിൽ കവറേജ് ത്രെഷോൾഡുകൾ (coverage thresholds) നിശ്ചയിക്കുക (80% ലൈനുകൾ ലക്ഷ്യമിടുക).
- ടെസ്റ്റ് ചെയ്യാത്ത കോഡ് റീപ്പോസിറ്ററിയിലേക്ക് കടക്കാതിരിക്കാൻ pre-commit hooks ഉപയോഗിക്കുക.
ടെസ്റ്റുകൾ എഴുതാൻ AI-യോട് ചോദിക്കുന്നത് നിർത്തുക. എങ്ങനെ ടെസ്റ്റുകൾ എഴുതണമെന്ന് AI-യോട് പറഞ്ഞു തുടങ്ങുക.
Source: https://dev.to/bhaumik-viitor/unit-test-ai-guide-zero-hallucination-cross-stack-standard-4mb2
Optional learning community: https://t.me/GyaanSetuAi