നേട്ടങ്ങൾ:
- കപട വിശ്വാസത്തിൻ്റെ മൂന്ന് മുഖങ്ങൾ തിരിച്ചറിയാനുള്ള കഴിവ് (ഉറപ്പാക്കാത്ത, സ്വയം ഉറപ്പിക്കുന്ന, നിസ്സാരമായ അവകാശവാദം) മറുമരുന്ന് പ്രയോഗിക്കാനുള്ള കഴിവ്
- മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗും മ്യൂട്ടേഷൻ സ്കോറും ഉപകരണമോ കൈയോ ഉപയോഗിച്ചുള്ള ശതമാനം കവറേജിനേക്കാൾ ഗുണനിലവാരത്തിൻ്റെ കൃത്യമായ അളവുകോലായി ഉപയോഗിക്കാനുള്ള കഴിവ്
- സ്തുതിക്കെണിയിൽ വീഴാതെ പരിശോധനയ്ക്കെതിരെ AI-യെ ഒരു റെഡ് ടീമായി സ്ഥാപിക്കാനും പഴുതുകൾ പരിശോധിക്കുന്നതിനുള്ള വേട്ടയാടാനുമുള്ള കഴിവ്
ഈ മൊഡ്യൂളിൻ്റെ ഹൃദയഭാഗത്ത് ഒരു ആവർത്തിച്ചുള്ള മുന്നറിയിപ്പ് ഉണ്ട്: ഒരു പച്ച തിളങ്ങുന്ന ടെസ്റ്റ് പാനൽ ഗുണനിലവാരത്തിൻ്റെ തെളിവല്ല. നിങ്ങളുടെ പരിശോധനകൾ നിങ്ങൾക്ക് ആത്മവിശ്വാസം നൽകുന്നുവെങ്കിൽ, ആ ആത്മവിശ്വാസം യഥാർത്ഥമാണോ വ്യാജമാണോ എന്ന് നിങ്ങൾ അറിയേണ്ടതുണ്ട്. ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസിൻ്റെ (AI) യുഗത്തിൽ, ഈ ചോദ്യം എന്നത്തേക്കാളും നിർണായകമാണ്, കാരണം AI ദ്രാവകവും മിനുസമാർന്നതും എന്നാൽ പൊള്ളയായതുമായ പരിശോധനകൾ നിർമ്മിക്കുന്നതിൽ സമർത്ഥമാണ്. തെറ്റായ ആത്മവിശ്വാസം - ടെസ്റ്റുകൾ പച്ചയായതിനാൽ സോഫ്റ്റ്വെയർ ശരിയാണെന്ന് വിശ്വസിക്കുന്നു, വാസ്തവത്തിൽ ടെസ്റ്റുകൾ ഒന്നും പരിശോധിച്ചുറപ്പിക്കുന്നില്ല-ഒരു QA ടീമിന് സംഭവിക്കാവുന്ന ഏറ്റവും അപകടകരമായ സംഗതിയാണ്; കാരണം, തെറ്റുകൾ ഇല്ലെന്നല്ല, തെറ്റുകൾ കാണാനാകില്ലെന്നതാണ് അത് മറയ്ക്കുന്നത്. ഈ യൂണിറ്റ് മൊഡ്യൂളിൻ്റെ മൂല്യനിർണ്ണയ തത്വശാസ്ത്രത്തെ ഒരു വിഭാഗത്തിലേക്ക് കൊണ്ടുവരുന്നു: നിങ്ങളുടെ ടെസ്റ്റുകൾ പരിശോധിക്കുന്നു.
പരിശോധനയുടെ ഗുണനിലവാരം അളക്കുന്നതിനുള്ള സ്വർണ്ണ നിലവാരം: മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ്
ഒരു ടെസ്റ്റ് യഥാർത്ഥത്തിൽ സംരക്ഷിക്കുന്നുണ്ടോ ഇല്ലയോ എന്ന് മനസ്സിലാക്കാനുള്ള ഏറ്റവും ശക്തമായ മാർഗം മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് ആണ് (മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് - സോഴ്സ് കോഡിൽ മനഃപൂർവ്വം ചെറിയ വികലങ്ങൾ/മ്യൂട്ടേഷനുകൾ ഉണ്ടാക്കുകയും ടെസ്റ്റുകൾ ഈ വികലങ്ങൾ കണ്ടെത്തുന്നുണ്ടോ എന്ന് അളക്കുകയും ചെയ്യുന്ന ഒരു സാങ്കേതികത). യുക്തി ലളിതമാണ്: നിങ്ങൾ മനഃപൂർവ്വം കോഡ് തകർക്കുകയാണെങ്കിൽ (ഒരു + ആക്കി -, a > ആക്കി >=, ഒരു ട്രൂ ഫാൾസാക്കി മാറ്റുന്നു), ഒരു നല്ല ടെസ്റ്റ് സ്യൂട്ട് ആ അഴിമതി പിടിച്ച് ചുവപ്പായി മാറും. ഇല്ലെങ്കിൽ, ആ തടസ്സം അതിജീവിച്ച മ്യൂട്ടൻ്റ് ആണ് - അതിനാൽ നിങ്ങളുടെ പരിശോധനകൾ യഥാർത്ഥത്തിൽ ആ സ്വഭാവത്തെ സംരക്ഷിക്കുന്നില്ല.
മ്യൂട്ടേഷൻ സ്കോർ = മ്യൂട്ടേഷൻ കൊന്നു / മൊത്തം മ്യൂട്ടേഷൻ. 90% ലൈൻ കവറേജുള്ള ഒരു പാക്കേജിന് 40% മ്യൂട്ടേഷൻ സ്കോർ ഉണ്ടായിരിക്കാം; ലൈനുകൾ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും പെരുമാറ്റം പരിശോധിച്ചിട്ടില്ലെന്ന് ഇത് സൂചിപ്പിക്കുന്നു. മ്യൂട്ടേഷൻ സ്കോർ ശതമാനം കവറേജിനേക്കാൾ വളരെ സത്യസന്ധമായ ഗുണനിലവാരമാണ്.
നുറുങ്ങ്: ഓട്ടോമാറ്റിക് മ്യൂട്ടേഷൻ ടൂളുകൾ ഉണ്ട് (ജാവയ്ക്കുള്ള PIT/Pitest, JavaScript/TypeScript-ന് സ്ട്രൈക്കർ, .NET-ന് Stryker.NET, പൈത്തണിന് mutmut). ഇവ യാന്ത്രികമായി നൂറുകണക്കിന് മ്യൂട്ടേഷനുകൾ സൃഷ്ടിക്കുകയും പരീക്ഷിക്കുകയും ചെയ്യുന്നു. നിങ്ങൾക്ക് ഒരു ടൂൾ ഇല്ലെങ്കിൽ, മാനുവൽ "കോഡ് ടെസ്റ്റ് ബ്രേക്ക്" രീതി പോലും നിർണായക പ്രവർത്തനങ്ങൾക്ക് വിലമതിക്കാനാവാത്തതാണ്.
കപട വിശ്വാസത്തിൻ്റെ മൂന്ന് മുഖങ്ങളും അതിൻ്റെ മറുമരുന്നും
വ്യാജ ട്രസ്റ്റ് ഫോം
ലക്ഷണം
മറുമരുന്ന്
ഉറപ്പില്ലാതെ പരീക്ഷിക്കുക
കോഡ് പ്രവർത്തിക്കുന്നു, ഒന്നും സാധൂകരിക്കപ്പെടുന്നില്ല
എല്ലാ പരീക്ഷകളിലും യഥാർത്ഥ ഉറപ്പ്; മ്യൂട്ടേഷനോടുകൂടിയ പരിശോധന
സ്വയം സ്ഥിരീകരിക്കുന്ന പരിശോധന
പ്രതീക്ഷിക്കുന്നത് = കോഡിൻ്റെ ഔട്ട്പുട്ട്
പ്രതീക്ഷിക്കുന്ന മൂല്യം സ്വതന്ത്രമായി കണക്കാക്കുക
നിസ്സാരമായ വാദം
"ശൂന്യമല്ല", "200 തിരികെ ലഭിച്ചു"
ബിസിനസ്സ് റൂൾ/യഥാർത്ഥ ഫലം സാധൂകരിക്കുക
ഉയർന്ന സ്കോപ്പ് വീഴ്ച
90% ലൈനുകൾ, കുറഞ്ഞ സംരക്ഷണം
മ്യൂട്ടേഷൻ സ്കോർ നോക്കുക
ദുർബലമായ ടെസ്റ്റ് ടോളറൻസ്
"വീണ്ടും കുടുങ്ങി, കടന്നുപോകുക"
മൂലകാരണം + നിർണ്ണായക പരിശോധന
AI ഒരു "റെഡ് ടീം" ആയി ഉപയോഗിക്കുന്നു
AI-ക്ക് കപടവിശ്വാസം സൃഷ്ടിക്കാനും അതിനെ വേട്ടയാടുന്നതിൽ ശക്തമായ സഖ്യകക്ഷിയാകാനും കഴിയും. നിങ്ങളുടെ സ്വന്തം ടെസ്റ്റുകൾക്കെതിരെ ഒരു റെഡ് ടീമായി AI ഉപയോഗിക്കുക: "ഈ ടെസ്റ്റുകളിൽ വിജയിക്കുന്നതും എന്നാൽ തെറ്റായതുമായ കോഡ് എഴുതുക" അല്ലെങ്കിൽ "ഈ ടെസ്റ്റുകളെ കബളിപ്പിക്കുന്ന ഒരു അട്ടിമറി കണ്ടെത്തുക" എന്ന് ചോദിക്കുക. നിങ്ങളുടെ ടെസ്റ്റുകളിൽ AI പഴുതുകൾ കണ്ടെത്തുകയാണെങ്കിൽ, ആ പഴുതുകൾ യഥാർത്ഥ അപകടസാധ്യതകളാണ്.
മുന്നറിയിപ്പ്: AI-യോട് "എൻ്റെ ടെസ്റ്റ് നിലവാരം നല്ലതാണോ?" എന്ന് ചോദിക്കരുത്. "അതെ, ഗംഭീരം" എന്ന ഉത്തരം ഉറപ്പായി എടുക്കുക. AI ദയ കാണിക്കുന്നു. പകരം, AI-യെ ഒരു മൂർത്തമായ ടാസ്ക്കിലേക്ക് വെല്ലുവിളിക്കുക: "ഈ ടെസ്റ്റുകളിൽ വിജയിക്കുന്ന ഒരു ബഗ് നിർമ്മിക്കുക." അതിന് അത് ഉത്പാദിപ്പിക്കാൻ കഴിയുമെങ്കിൽ, നിങ്ങളുടെ പരിശോധനകൾ ആ പിശകിന് അന്ധമാണ്.
സ്കോറിൻ്റെ തുല്യമായ മ്യൂട്ടേഷനുകളും പരിധികളും
മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് ശക്തമാണ്, പക്ഷേ ഇതിന് ഒരു പിടിയുണ്ട്: ചില മ്യൂട്ടേഷനുകൾ കോഡിൻ്റെ സ്വഭാവത്തെ മാറ്റില്ല. ഇവയെ തുല്യമായ മ്യൂട്ടേഷനുകൾ എന്ന് വിളിക്കുന്നു (തത്തുല്യമായ മ്യൂട്ടൻ്റ് - കേടായ കോഡ്, യഥാർത്ഥമായതിന് സമാനമായ ഫലം നൽകുന്ന മ്യൂട്ടേഷൻ). ഉദാഹരണത്തിന്, ഒരിക്കലും ഉപയോഗിക്കാത്ത ഒരു വേരിയബിളിൻ്റെ പ്രാരംഭ മൂല്യം മാറ്റുന്നത് ഔട്ട്പുട്ടിനെ ബാധിക്കില്ല; ഒരു പരിശോധനയ്ക്കും ഇത് പിടിക്കാൻ കഴിയില്ല. അതിനാൽ, 100% മ്യൂട്ടേഷൻ സ്കോർ പലപ്പോഴും പ്രായോഗികമായി നേടാനാകാത്തതും ലക്ഷ്യവുമല്ല. തത്തുല്യമായ മ്യൂട്ടേഷനുകൾ കൈകൊണ്ട് നീക്കം ചെയ്യുന്നത് കഠിനാധ്വാനമാണ്; അതിനാൽ മ്യൂട്ടേഷൻ സ്കോർ ഒരു സമ്പൂർണ്ണ പരീക്ഷാ സ്കോറായി വായിക്കരുത്, മറിച്ച് "എൻ്റെ ടെസ്റ്റുകൾ ശരിക്കും സംരക്ഷിക്കുന്നുണ്ടോ?" എന്നതിൻ്റെ സത്യസന്ധമായ സൂചകമായി.
പ്രായോഗിക സമീപനം ഇതാണ്: മുഴുവൻ കോഡ് ബേസിൽ ഉടനീളം മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് തുടർച്ചയായി പ്രവർത്തിപ്പിക്കുന്നതിനുപകരം, ഏറ്റവും ഉയർന്ന അപകടസാധ്യതയും ഏറ്റവും സങ്കീർണ്ണമായ ബിസിനസ്സ് നിയമങ്ങളും അടങ്ങിയിരിക്കുന്ന മൊഡ്യൂളുകളിൽ ഇത് പ്രവർത്തിപ്പിക്കുക. ഈ മൊഡ്യൂളുകളിൽ നിലനിൽക്കുന്ന മ്യൂട്ടേഷനുകൾ ഓരോന്നായി പരിശോധിക്കുക; ഇത് ഒരു യഥാർത്ഥ വിടവ് ആണെങ്കിൽ, ഒരു ടെസ്റ്റ് ചേർക്കുക; തത്തുല്യമായ ഒരു മ്യൂട്ടേഷൻ ആണെങ്കിൽ, അതിനെ ന്യായീകരിക്കുകയും പാസ്സാക്കുകയും ചെയ്യുക. നിലനിൽക്കുന്ന ഒരു മ്യൂട്ടേഷൻ തുല്യമാണോ എന്ന് വിലയിരുത്തുന്നതിന് AI-ക്ക് പ്രാരംഭ സ്ക്രീനിംഗ് നടത്താൻ കഴിയും; എന്നാൽ കോഡ് എന്താണ് ചെയ്യുന്നതെന്ന് അറിയാവുന്ന നിങ്ങളാണ് അന്തിമ തീരുമാനം എടുക്കുന്നത്.
മുന്നറിയിപ്പ്: മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് ചെലവേറിയതാണ് (ഓരോ മ്യൂട്ടേഷനും പ്രസക്തമായ എല്ലാ ടെസ്റ്റുകളും വീണ്ടും റൺ ചെയ്യുന്നു). അതിനാൽ എല്ലാ ലയനത്തിനും പകരം, നിർണായക മൊഡ്യൂളുകൾക്കായി ആഴ്ചയിലോ റിലീസിന് മുമ്പോ ഉള്ള ആഴത്തിലുള്ള പരിശോധനയായി ഷെഡ്യൂൾ ചെയ്യുക എന്നതാണ് പൊതുവായതും ന്യായയുക്തവുമായ ഒരു തന്ത്രം.
ദുർബലമായ പ്രോംപ്റ്റ് / ശക്തമായ പ്രോംപ്റ്റ്
ദുർബലൻ: "എൻ്റെ പരിശോധനകൾ മതിയോ?"
ശക്തം: "ഈ ഫംഗ്ഷനും ടെസ്റ്റ് സ്യൂട്ടിനുമായി ഒരു റെഡ് ടീമായി പ്രവർത്തിക്കുക. (1) കൊല്ലപ്പെടാവുന്ന കോഡിൽ 8 മ്യൂട്ടേഷനുകൾ സൃഷ്ടിക്കുക (ഓപ്പറേറ്റർ സബ്സ്റ്റിറ്റ്യൂഷൻ, ബൗണ്ടറി ഷിഫ്റ്റ്, കണ്ടീഷൻ ഇൻവേർഷൻ, റിട്ടേൺ വാല്യൂ സബ്സ്റ്റിറ്റ്യൂഷൻ). (2) ഓരോ മ്യൂട്ടേഷനും, നിലവിലുള്ള ടെസ്റ്റുകളിൽ ഏതൊക്കെയാണ് പിടിക്കുക, ഏതാണ് അത് നശിപ്പിക്കുക എന്ന് സൂചിപ്പിക്കുക. ഈ ടെസ്റ്റുകളിൽ എല്ലാം വിജയിക്കുന്നു, എന്നാൽ ബിസിനസ്സ് നിയമം + ടെസ്റ്റുകൾ ലംഘിക്കുന്നു: [ഒട്ടിക്കുക]"
ശക്തമായ പ്രോംപ്റ്റ്; ഇത് AI-യെ ഒരു ടെസ്റ്റ്-ബ്രേക്കിംഗ് എക്സാമിനറായി സ്ഥാപിക്കുന്നു, ഒരു സ്തുതി യന്ത്രമല്ല.
പകർത്താവുന്ന നാല് ടെംപ്ലേറ്റുകൾ
1) മാനുവൽ മ്യൂട്ടേഷൻ നിയന്ത്രണം:
ഈ കോഡിനായി 8 പ്രധാനപ്പെട്ട മ്യൂട്ടേഷനുകൾ (ചെറിയ മനഃപൂർവ്വമായ തടസ്സങ്ങൾ) സൃഷ്ടിക്കുക: ഗണിത ഓപ്പറേറ്റർ സബ്സ്റ്റിറ്റ്യൂഷൻ, താരതമ്യ പരിധി (> vs >=), ലോജിക്കൽ ഇൻവെർഷൻ, റിട്ടേൺ/കോൺസ്റ്റൻ്റ് സബ്സ്റ്റിറ്റ്യൂഷൻ, കണ്ടീഷൻ സ്കിപ്പിംഗ്. ഓരോ മ്യൂട്ടേഷനും, ലഭ്യമായ ടെസ്റ്റുകളിൽ ഏതാണ് അത് പിടിക്കപ്പെടുമോ ഇല്ലയോ എന്ന് പ്രവചിക്കുക. കോഡ്+ ടെസ്റ്റുകൾ: [ഒട്ടിക്കുക]
2) നിലനിൽക്കുന്ന മ്യൂട്ടേഷനെ കൊല്ലുന്നു:
ഇനിപ്പറയുന്ന മ്യൂട്ടേഷൻ ടെസ്റ്റ് റിപ്പോർട്ടിൽ നിലനിൽക്കുന്ന (പിടിക്കപ്പെടാത്ത) മ്യൂട്ടേഷനുകൾ അടങ്ങിയിരിക്കുന്നു: [ലിസ്റ്റ്/റിപ്പോർട്ട്]. ഓരോന്നിനും, ആ മ്യൂട്ടേഷനെ നശിപ്പിക്കുന്ന ഒരു മിനിമൽ ടെസ്റ്റ് എഴുതുക (അങ്ങനെ തകരുമ്പോൾ കോഡ് ചുവപ്പായി മാറും). ടെസ്റ്റ് സ്ഥിരീകരിക്കുന്ന സ്വഭാവത്തെക്കുറിച്ച് അഭിപ്രായം പറയുക.
3) റെഡ് ടീം - രക്തപരിശോധന:
ഇനിപ്പറയുന്ന എല്ലാ ടെസ്റ്റുകളിലും വിജയിക്കുന്ന, എന്നാൽ ഇനിപ്പറയുന്ന ബിസിനസ്സ് റൂൾ ലംഘിക്കുന്ന കോഡ് നിങ്ങൾക്ക് എഴുതാമോ: [ബിസിനസ് റൂൾ]. അങ്ങനെയെങ്കിൽ, ഈ പരിശോധനകളിലെ ഏത് പഴുതാണിത് അനുവദിക്കുന്നത്? ആ പഴുത് അടയ്ക്കുന്ന ടെസ്റ്റ് ചേർക്കുക. ടെസ്റ്റുകൾ: [ഒട്ടിക്കുക]
4) ടെസ്റ്റ് ഗുണനിലവാര പരിശോധന:
ഗുണനിലവാരത്തിനായി ഈ ടെസ്റ്റ് സ്യൂട്ട് പരിശോധിക്കുക. ഓരോ ടെസ്റ്റിനും ടിക്ക് ചെയ്യുക:- ഒരു യഥാർത്ഥ ഉറപ്പ് ഉണ്ടോ അതോ പ്രോപ്സ് ആണോ?- പ്രതീക്ഷിക്കുന്ന മൂല്യം സ്വതന്ത്രമാണോ, കോഡിൽ നിന്ന് ഉരുത്തിരിഞ്ഞത്?- ഇത് ബിസിനസ്സ് റൂൾ അല്ലെങ്കിൽ നിസ്സാരമായ എന്തെങ്കിലും സ്ഥിരീകരിക്കുന്നുണ്ടോ? അവസാനമായി കണക്കാക്കിയ "ട്രൂ അസെർട്ട് സ്കോറും" ഏറ്റവും ദുർബലമായ 3 ടെസ്റ്റുകളും നൽകുക. ടെസ്റ്റുകൾ: [ഒട്ടിക്കുക]
മൂന്ന് മിനി കേസുകൾ
കേസ് 1 — കവറേജ് 92%, മ്യൂട്ടേഷൻ സ്കോർ 38%. ഒരു ടീം ഉയർന്ന കവറേജിനെ ആശ്രയിച്ചു. സ്ട്രൈക്കർ ഉപയോഗിച്ച് മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് നടത്തിയപ്പോൾ, സ്കോർ 38% ആയിരുന്നു: ഉൽപ്പാദിപ്പിച്ച മിക്ക മ്യൂട്ടേഷനുകളും അതിജീവിച്ചു. പരിശോധനകൾ ലൈനുകൾ പ്രവർത്തിപ്പിക്കുന്നില്ലെന്നും പെരുമാറ്റം പരിശോധിക്കുന്നില്ലെന്നും ഇത് തെളിവായിരുന്നു. ഗുണനിലവാരം പരിശോധിക്കുന്നതിനായി ടീം മൂന്നാഴ്ച നിക്ഷേപിച്ചു; മ്യൂട്ടേഷൻ സ്കോർ 81% ആയി വർദ്ധിച്ചു, അടുത്ത റിലീസിൽ ഈ ബീഫ്-അപ്പ് ടെസ്റ്റുകളിൽ രണ്ട് യഥാർത്ഥ കണക്കുകൂട്ടൽ പിശകുകൾ കണ്ടെത്തി.
കേസ് 2 - AI ടെസ്റ്റ് കബളിപ്പിച്ചു. ഒരു "റെഡ് ടീം" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച്, ഒരു വിദഗ്ദൻ AI-യോട് നിലവിലുള്ള ടെസ്റ്റുകളിൽ വിജയിച്ചതും എന്നാൽ കിഴിവ് നിയമം ലംഘിച്ചതുമായ കോഡ് ആവശ്യപ്പെട്ടു. AI എല്ലായ്പ്പോഴും പൂജ്യത്തിൻ്റെ കിഴിവ് നൽകുന്ന കോഡ് എഴുതി - കൂടാതെ ടെസ്റ്റുകളൊന്നും യഥാർത്ഥ കിഴിവ് മൂല്യം പരിശോധിക്കാത്തതിനാൽ എല്ലാ ടെസ്റ്റുകളും പച്ചയായി തുടർന്നു. വിടവ് കണ്ടു, യഥാർത്ഥ ഉറപ്പുകൾ ചേർത്തു.
കേസ് 3 - സ്തുതി കെണി. ഒരു ജൂനിയർ ടെസ്റ്റർ AI-യോട് ചോദിച്ചു, "എൻ്റെ ടെസ്റ്റുകൾ നല്ലതാണോ?" "വളരെ സമഗ്രം" എന്ന മറുപടി കേട്ടപ്പോൾ ആശ്വാസമായി. അദ്ദേഹത്തിൻ്റെ മുതിർന്ന സഹപ്രവർത്തകൻ "ടെസ്റ്റ് ക്വാളിറ്റി ഓഡിറ്റ്" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് അതേ ടെസ്റ്റുകൾ ഓഡിറ്റ് ചെയ്തു; 20 ടെസ്റ്റുകളിൽ 12 എണ്ണവും അലങ്കാരങ്ങളായിരുന്നു (അധികാരമോ ജങ്കോ ഇല്ലാതെ). ശരിയായ ചോദ്യം ശരിയായ ഉത്തരം നൽകി.
സാധാരണ തെറ്റുകൾ
- ഗുണനിലവാരം തെറ്റിദ്ധരിപ്പിക്കുന്ന സ്കോപ്പ്. ഉയർന്ന വരി കവറേജിനെ ആശ്രയിക്കുകയും മ്യൂട്ടേഷൻ സ്കോർ നോക്കാതിരിക്കുകയും ചെയ്യുന്നു.
- AI-യുടെ പ്രശംസയിൽ വിശ്വസിക്കുന്നു. "നിങ്ങളുടെ ടെസ്റ്റുകൾ നല്ലതാണോ?" എന്ന് ചോദിക്കുന്നു. പോസിറ്റീവ് ഉത്തരം ഉറപ്പായി കണക്കാക്കുകയും ചെയ്യുന്നു.
- കോഡിൽ നിന്ന് പ്രതീക്ഷിക്കുന്ന മൂല്യം ലഭിക്കുന്നു. തെറ്റായ കോഡ് സ്ഥിരീകരിക്കുന്ന സ്വയം പരിശോധിച്ചുറപ്പിക്കൽ പരിശോധനകൾ.
- നിസ്സാരമായ അവകാശവാദങ്ങളിൽ സംതൃപ്തരായിരിക്കുക. "നല്ലല്ല", "200 റിട്ടേൺ" എന്നിങ്ങനെയുള്ള യഥാർത്ഥ നിയമത്തെ സാധൂകരിക്കാത്ത ചെക്കുകൾ.
- അതിജീവിക്കുന്ന മ്യൂട്ടേഷനുകളെ അവഗണിക്കുന്നു. മ്യൂട്ടേഷൻ റിപ്പോർട്ടിൽ പിടിക്കപ്പെടാത്തതിനെ അവഗണിക്കുന്നു.
- നിർണായക കോഡ് സ്വമേധയാ മ്യൂട്ടേറ്റ് ചെയ്യാൻ പോലും ശ്രമിക്കുന്നില്ല. ടൂൾ ലഭ്യമല്ലെങ്കിൽ "കോഡ് ബ്രേക്ക് ചെയ്ത് ടെസ്റ്റ്" ഘട്ടം ഒഴിവാക്കുക.
ചുരുക്കത്തിൽ
പരിശോധനകൾ പച്ചയായതിനാൽ സോഫ്റ്റ്വെയർ ശരിയാണെന്ന് കപട ട്രസ്റ്റ് വിശ്വസിക്കുന്നു; അതേസമയം പരിശോധനകൾ ഒന്നും സ്ഥിരീകരിക്കില്ല. ഇത് അളക്കുന്നതിനുള്ള ഗോൾഡ് സ്റ്റാൻഡേർഡ് മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് ആണ്: മനഃപൂർവ്വം കോഡ് തകർക്കുകയും പരിശോധനകൾ അത് പിടിക്കുന്നുണ്ടോ എന്ന് അളക്കുകയും ചെയ്യുന്നു. മ്യൂട്ടേഷൻ സ്കോർ ശതമാനം കവറേജിനേക്കാൾ വളരെ സത്യസന്ധമായ ഗുണനിലവാരമാണ്. AI രണ്ടും കപടവിശ്വാസം സൃഷ്ടിക്കുകയും അതിനെ വേട്ടയാടുന്നതിൽ ശക്തമായ ഒരു റെഡ് ടീമായി മാറുകയും ചെയ്യുന്നു - "ഈ പരിശോധനകളിൽ വിജയിക്കുന്ന ഒരു ബഗ് നിർമ്മിക്കുക" എന്ന് ചോദിക്കുക. നിങ്ങളുടെ ടെസ്റ്റുകൾ പരീക്ഷിക്കുക: യഥാർത്ഥ ഉറപ്പ്, സ്വതന്ത്രമായി പ്രതീക്ഷിക്കുന്ന മൂല്യം, ബിസിനസ് റൂൾ മൂല്യനിർണ്ണയം, കൊല്ലപ്പെട്ട മ്യൂട്ടേഷനുകൾ.
ആപ്ലിക്കേഷൻ ടാസ്ക്
നിങ്ങളുടെ സ്വന്തം പ്രോജക്റ്റിൽ നിന്ന് ഒരു ബിസിനസ് റൂളും അതിൻ്റെ ടെസ്റ്റുകളും അടങ്ങുന്ന ഒരു ഫംഗ്ഷൻ ഇമ്പോർട്ടുചെയ്യുക. സാധ്യമെങ്കിൽ, ഒരു മ്യൂട്ടേഷൻ ടൂൾ പ്രവർത്തിപ്പിക്കുക (സ്ട്രൈക്കർ/പിറ്റെസ്റ്റ്/മട്ട്മട്ട്) കൂടാതെ മ്യൂട്ടേഷൻ സ്കോർ അളക്കുക; ടൂൾ ഇല്ലെങ്കിൽ, "മാനുവൽ മ്യൂട്ടേഷൻ കൺട്രോൾ" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് കുറഞ്ഞത് 8 മ്യൂട്ടേഷനുകളെങ്കിലും സൃഷ്ടിച്ച് അവ സ്വമേധയാ പരീക്ഷിക്കുക. അതിജീവിക്കുന്ന ഓരോ മ്യൂട്ടേഷനും, "കിൽ സർവൈവിംഗ് മ്യൂട്ടേഷൻ" ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് ഒരു പുതിയ ടെസ്റ്റ് എഴുതുക. അവസാനമായി, "റെഡ് ടീം" പാറ്റേൺ ഉപയോഗിച്ച്, നിങ്ങളുടെ പരിശോധനകളെ കബളിപ്പിക്കുന്ന കോഡ് നിർമ്മിക്കാൻ AI-ന് കഴിയുമോ എന്ന് നോക്കുക. നിങ്ങളുടെ ആരംഭ-അവസാന മ്യൂട്ടേഷൻ സ്കോർ റിപ്പോർട്ടുചെയ്യുക (അല്ലെങ്കിൽ പിടിക്കപ്പെട്ട/മൊത്തം മ്യൂട്ടേഷൻ നിരക്ക്).
ചെക്ക്ലിസ്റ്റ്
- [ ] കവറേജല്ല, മ്യൂട്ടേഷൻ സ്കോർ ഉപയോഗിച്ചാണ് ഞാൻ ടെസ്റ്റ് നിലവാരം വിലയിരുത്തിയത്.
- [ ] ഞാൻ നിർണായക കോഡിനായി മ്യൂട്ടേഷൻ ടെസ്റ്റിംഗ് (ടൂൾ മുഖേന അല്ലെങ്കിൽ സ്വമേധയാ) നടത്തി.
- [ ] നിലനിൽക്കുന്ന ഓരോ മ്യൂട്ടേഷനും ഞാൻ പുതിയ ടെസ്റ്റുകൾ എഴുതി.
- [ ] ഞാൻ റെഡ് ടീമായി AI ഉപയോഗിക്കുകയും എൻ്റെ ടെസ്റ്റുകളിൽ പഴുതുകൾ തിരയുകയും ചെയ്തു.
- [ ] AI യുടെ "നിങ്ങളുടെ ടെസ്റ്റുകൾ നല്ലതാണ്" എന്ന പ്രശംസ ഞാൻ ഉറപ്പായി എടുത്തില്ല.
- [ ] ഓരോ ടെസ്റ്റും യഥാർത്ഥ ഉറപ്പ്, സ്വതന്ത്രമായി പ്രതീക്ഷിക്കുന്ന മൂല്യം, ബിസിനസ് റൂൾ എന്നിവ സ്ഥിരീകരിക്കുന്നുണ്ടോയെന്ന് ഞാൻ പരിശോധിച്ചു.