AI-നിർമ്മിത ടെസ്റ്റുകൾ ഓഡിറ്റ് ചെയ്യുക: പകുതി പച്ച നിറത്തിലുള്ള (Green) CI-യും ഒന്നും തെളിയിക്കുന്നില്ല
വിജയിക്കുന്ന ഒരു ടെസ്റ്റ് തെളിവ് പോലെ തോന്നാം. എന്നാൽ അത് നിങ്ങൾ കരുതുന്നതിനേക്കാൾ കുറവായേക്കാം.
കോഡ് ടെസ്റ്റ് പ്രതീക്ഷിക്കുന്നത് പോലെയാണോ പ്രവർത്തിക്കുന്നത് എന്ന് ഒരു ടെസ്റ്റ് ഉറപ്പുവരുത്തുന്നു. കോഡും അതിന്റെ പ്രതീക്ഷകളും (expectations) ഒരേ വ്യക്തിയാണ് എഴുതുന്നതെങ്കിൽ, കോഡിന് അനുസൃതമായിരിക്കും ആ പ്രതീക്ഷകളും. വിജയിക്കാൻ വേണ്ടി തന്നെ എഴുതപ്പെട്ടതുകൊണ്ട് ടെസ്റ്റ് വിജയിക്കുന്നു.
ഒരു പച്ച ടിക്ക് മാർക്ക് (green checkmark) നിങ്ങളുടെ ടെസ്റ്റുകൾ കോഡുമായി യോജിക്കുന്നു എന്ന് തെളിയിക്കുന്നു. എന്നാൽ കോഡ് ശരിയാണെന്ന് അത് തെളിയിക്കുന്നില്ല.
AI ഏജന്റുകൾ മുഴുവൻ pull requests-ഉം സമർപ്പിക്കുമ്പോൾ ഈ പ്രശ്നം വർദ്ധിക്കുന്നു. അവ ഒരേസമയം ഇംപ്ലിമെന്റേഷനും (implementation) ടെസ്റ്റുകളും എഴുതുന്നു. എഴുതുന്ന ആൾ മാറിയതുകൊണ്ട് ടിക്ക് മാർക്കിന്റെ വിശ്വാസ്യത കൂടുന്നില്ല.
ഈ വിടവ് കണ്ടെത്താനായി ഞാൻ mirror_audit.py നിർമ്മിച്ചു. ഇത് AST ഉപയോഗിച്ച് ടെസ്റ്റ് സോഴ്സ് വായിക്കുന്നു. ഇത് ഒരിക്കലും കോഡ് പ്രവർത്തിപ്പിക്കാറില്ല. ഇത് മൂന്ന് പൊതുവായ പാറ്റേണുകൾ പരിശോധിക്കുന്നു:
- The Recompute: ടെസ്റ്റ് കോഡിലെ അതേ ഫോർമുല തന്നെ ഉപയോഗിക്കുന്നു. ഇത് ഒരു വേഷം കെട്ടിയ f(x) == f(x) പോലെയാണ്.
- The Golden Literal: മുൻപത്തെ ഒരു റണ്ണിൽ നിന്ന് കോപ്പി ചെയ്ത ഒരു നമ്പർ ടെസ്റ്റ് ഉപയോഗിക്കുന്നു. ഇത് ബഗുകൾ ഉൾപ്പെടെ, ആദ്യ ദിവസം കോഡ് ചെയ്ത കാര്യങ്ങളുമായി ടെസ്റ്റിനെ ബന്ധിപ്പിക്കുന്നു.
- The Smoke Test: ഫലം
Noneഅല്ല എന്ന് മാത്രം ടെസ്റ്റ് പരിശോധിക്കുന്നു, എന്നാൽ കൃത്യമായ ഒരു അസർഷൻ (assertion) ഇതിൽ ഇല്ല.
ഞാൻ ഇത് രണ്ട് സ്യൂട്ടുകളിൽ (suites) പരീക്ഷിച്ചു.
ആദ്യത്തെ സ്യൂട്ട് ഇംപ്ലിമെന്റേഷനെ അനുകരിക്കുന്ന രീതിയിലാണ് രൂപകൽപ്പന ചെയ്തിരുന്നത്. ഇതിന് 50.0% mirror-ratio ലഭിച്ചു. CI പരാജയപ്പെട്ടു. പകുതി ടെസ്റ്റുകളും സ്വതന്ത്രമായ ഒരു സൂചനയും (independent signal) നൽകുന്നില്ലായിരുന്നു.
രണ്ടാമത്തെ സ്യൂട്ട് സത്യസന്ധമായിരുന്നു. ഇത് നെഗറ്റീവ് കേസുകളും (negative cases) സ്വതന്ത്രമായ പ്രതീക്ഷകളും ഉപയോഗിച്ചു. ഇതിന് 0.0% ലഭിച്ചു. CI വിജയിച്ചു.
mirror-ratio നിങ്ങളുടെ ബഗ് നിരക്ക് (bug rate) അളക്കുന്നില്ല. ഇത് വിട്ടുപോയ സ്വതന്ത്ര സൂചനകളെയാണ് അളക്കുന്നത്. നിങ്ങളുടെ പച്ച നിറത്തിലുള്ള (green) CI-ൽ എത്രത്തോളം ഭാഗം കോഡിനെ വെറുതെ അനുഗമിക്കുക മാത്രമാണ് ചെയ്യുന്നത് എന്ന് ഇത് പറഞ്ഞുതരുന്നു.
ഇംപ്ലിമെന്റേഷനിലെ തെറ്റായ ഫലം തന്നെ ടെസ്റ്റും കണക്കാക്കുകയാണെങ്കിൽ, ടെസ്റ്റ് പച്ച നിറത്തിൽ തന്നെ തുടരും. എന്നാൽ ഒരു യഥാർത്ഥ കരാർ (contract) ടെസ്റ്റ് ഉറപ്പുവരുത്തുകയാണെങ്കിൽ, ടെസ്റ്റ് ചുവപ്പ് നിറമാവുകയും ബഗ് കണ്ടെത്തുകയും ചെയ്യും.
കവറേജ് (coverage) മാത്രം നോക്കുന്നത് നിർത്തുക. യഥാർത്ഥ കാരണത്താൽ നിങ്ങളുടെ ടെസ്റ്റുകൾ പരാജയപ്പെടാൻ സാധ്യതയുണ്ടോ എന്ന് ചോദിക്കുക.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
