1000 പിശകുകൾ, ഒരു ഗൂഗിൾ ഷീറ്റ്, പിന്നെ എനിക്ക് ഒരിക്കലും തിരിച്ചു കിട്ടാത്ത അഞ്ച് മണിക്കൂർ
ഓരോ ബഗ്ഗിനും ഒരു കഥയുണ്ട്. മിക്കവയും തുടങ്ങുന്നത് "എന്റെ കമ്പ്യൂട്ടറിൽ ഇത് കൃത്യമായി പ്രവർത്തിക്കുന്നുണ്ട്" എന്ന വാചകത്തോടെയാണ്.
ഒരു ലീഡ് ജനറേഷൻ കമ്പനിക്ക് വേണ്ടിയുള്ള ഡാറ്റാ ഇംപോർട്ട് ഫീച്ചറാണ് ഞങ്ങൾ ടെസ്റ്റ് ചെയ്തുകൊണ്ടിരുന്നത്. ആ ഫീച്ചർ വളരെ ലളിതമായി തോന്നി. ഒരു ഇംപോർട്ട് ബട്ടൺ ക്ലിക്ക് ചെയ്യുക, ഒരു സ്പ്രെഡ്ഷീറ്റ് അപ്ലോഡ് ചെയ്യുക, സിസ്റ്റം കോൺടാക്റ്റുകൾ ലോഡ് ചെയ്യും. എല്ലാം ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് എല്ലാവരും കരുതി.
ആ അനുമാനം ഒരു കെണിയാണ്.
ആ അനുമാനങ്ങളെ തകർക്കാനാണ് ടെസ്റ്റർമാർ ഉള്ളത്. "ഹാപ്പി പാത്ത്" (happy path) എപ്പോഴും നിങ്ങളെ വഞ്ചിക്കും.
ഞങ്ങൾ ഒരു ക്ലീൻ എക്സൽ ഫയൽ ഉപയോഗിച്ചാൽ ഇംപോർട്ട് വിജയകരമായിരുന്നു. ഞങ്ങൾക്ക് ഉച്ചഭക്ഷണത്തിന് പോകാം എന്നുണ്ടായിരുന്നു. ഫീച്ചർ പുറത്തിറക്കാം എന്നുണ്ടായിരുന്നു. എന്നാൽ പ്രൊഡക്ഷനിൽ ഒരു തിങ്കളാഴ്ച രാവിലെ ഒരു ഉപഭോക്താവ് ആ ബഗ്ഗ് കണ്ടെത്തുമായിരുന്നു.
പ്രശ്നം ഒരു ഗൂഗിൾ ഷീറ്റിലായിരുന്നു.
യഥാർത്ഥ ഉപഭോക്താക്കൾ ക്ലീൻ ആയ എക്സൽ ഫയലുകളല്ല ഉപയോഗിക്കുന്നത്. അവർ ഉപയോഗിക്കുന്നത് ക്രമരഹിതമായ ഗൂഗിൾ ഷീറ്റുകളാണ്. അവരുടെ ആ കുഴപ്പങ്ങൾ കൈകാര്യം ചെയ്യാൻ സിസ്റ്റത്തിന് കഴിയുമെന്ന് അവർ പ്രതീക്ഷിക്കുന്നു.
ഞങ്ങൾ ഗൂഗിൾ ഷീറ്റ് ഡാറ്റ അപ്ലോഡ് ചെയ്തപ്പോൾ സിസ്റ്റം പരാജയപ്പെട്ടു. 1,000-ലധികം പിശകുകൾ ഞങ്ങൾ കണ്ടു. സ്ക്രീൻ മുഴുവൻ എററുകൾ കൊണ്ട് നിറഞ്ഞു. സോഴ്സ് ഫോർമാറ്റ് മാറിയതുകൊണ്ട് മാത്രം, അതേ ബട്ടണും അതേ ഡാറ്റാ ടൈപ്പും ഉപയോഗിച്ചപ്പോൾ സിസ്റ്റം പൂർണ്ണമായും തകർന്നുപോയി.
കൂടുതൽ ടെസ്റ്റ് ചെയ്യാൻ ഞങ്ങൾ വീണ്ടും എക്സലിലേക്ക് മടങ്ങി. ശരിയായതും തെറ്റായതുമായ വരികൾ കലർത്തി ഞങ്ങൾ പരീക്ഷിച്ചു. സിസ്റ്റം അത് നന്നായി കൈകാര്യം ചെയ്തു. തെറ്റായ വരികൾ ഒഴിവാക്കി അത് മുന്നോട്ട് പോയി.
പിന്നീട് ഞങ്ങൾ യഥാർത്ഥ ലോകത്തെ കുഴപ്പങ്ങൾ പരീക്ഷിച്ചു. നൂറുകണക്കിന് വരികളുള്ള ഒരു ബൾക്ക് ഫയൽ ഞങ്ങൾ അപ്ലോഡ് ചെയ്തു. അതിൽ ഭൂരിഭാഗവും ഉപയോഗശൂന്യമായിരുന്നു. കുറച്ചു മാത്രം ശരിയായിരുന്നു.
സിസ്റ്റം പൂർണ്ണമായും തകർന്നു. കുറച്ച് തെറ്റായ വരികളിൽ വാലിഡേഷൻ ലോജിക് പ്രവർത്തിച്ചെങ്കിലും, വലിയൊരു ഡാറ്റാ മലയുടെ മുന്നിൽ അത് പരാജയപ്പെട്ടു.
ഇതിന്റെ മൂലകാരണം കണ്ടെത്താൻ ഞങ്ങൾ അഞ്ച് മണിക്കൂർ ചിലവഴിച്ചു. ഞങ്ങൾ സ്ക്രീനുകളിലേക്ക് നോക്കി ഇരുന്നു, ടെസ്റ്റുകൾ വീണ്ടും നടത്തി, ഫയലുകളെയും ബ്രൗസറിനെയും കോഫിയെയും കുറ്റപ്പെടുത്തി.
ആ അഞ്ച് മണിക്കൂർ വളരെ കുറഞ്ഞ ചിലവായിരുന്നു. പകരമായി ഒരു ഉപഭോക്താവിന് അവരുടെ ഒരു ഉച്ചതിരിഞ്ഞ സമയം നഷ്ടപ്പെടുകയും ഞങ്ങളുടെ ഉൽപ്പന്നത്തിലുള്ള വിശ്വാസം നഷ്ടപ്പെടുകയും ചെയ്യുമായിരുന്നു. ടെസ്റ്റിംഗിലെ ബഗ്ഗുകൾക്ക് നിങ്ങൾ സമയം നൽകി പരിഹരിക്കുന്നു. എന്നാൽ പ്രൊഡക്ഷനിലെ ബഗ്ഗുകൾക്ക് നിങ്ങൾ ഉപഭോക്താക്കളെ നൽകി പരിഹരിക്കേണ്ടി വരും.
ഞാൻ എപ്പോഴും ആ അഞ്ച് മണിക്കൂർ തിരഞ്ഞെടുക്കും.
ഒരു നല്ല ടെസ്റ്റർ ഒരു ഫീച്ചർ പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് ചോദിക്കില്ല. പകരം അത് എങ്ങനെ തകർക്കാം എന്നാണ് ചോദിക്കുക.
ഒരു ഡെവലപ്പറെപ്പോലെ ചിന്തിക്കുന്നത് നിർത്തുക. താഴെ പറയുന്നവരെപ്പോലെ ചിന്തിച്ചു തുടങ്ങുക:
- തെറ്റായ ഫയൽ ഫോർമാറ്റ് അപ്ലോഡ് ചെയ്യുന്ന മടിയനായ ഉപഭോക്താവ്.
- മെർജ് ചെയ്ത സെല്ലുകളും (merged cells) ശൂന്യമായ വരികളുമുള്ള കുഴപ്പക്കാരനായ ഉപഭോക്താവ്.
- 10 ക്ലീൻ റെക്കോർഡുകൾക്ക് പകരം 4,000 അഴുക്കുപിടിച്ച റെക്കോർഡുകൾ നൽകുന്ന ബൾക്ക് ഉപഭോക്താവ്.
- ചെയ്യാൻ പാടില്ലാത്ത കാര്യങ്ങൾ കൃത്യമായി ചെയ്യുന്ന പ്രശ്നക്കാരൻ.
നിങ്ങൾ പ്രതീക്ഷിക്കാത്ത ഇൻപുട്ടുകൾ വരുമ്പോഴാണ് സോഫ്റ്റ്വെയർ തകരാറിലാകുന്നത്.
ഏറ്റവും "ലളിതമായ" ഫീച്ചറുകളാണ് പലപ്പോഴും ഏറ്റവും അപകടകാരികൾ. ഇംപോർട്ട് ബട്ടൺ, സെർച്ച് ബോക്സ്, കോൺടാക്റ്റ് ഫോം എന്നിവ കാണാൻ നിരുപദ്രവകാരികളാണെന്ന് തോന്നാം. എന്നാൽ അവ അങ്ങനെയല്ല.
ഒരു ഫീച്ചർ ഹാപ്പി പാത്തിലൂടെ കടന്നുപോയാൽ അവിടെ നിർത്തരുത്. "എനിക്ക് സങ്കൽപ്പിക്കാൻ കഴിയുന്നതിൽ വെച്ച് ഏറ്റവും മോശമായ ഫയൽ ഞാൻ അപ്ലോഡ് ചെയ്താൽ എന്ത് സംഭവിക്കും?" എന്ന് ചോദിക്കുന്ന ആളാവുക.
എന്നിട്ട് അത് ചെയ്തു നോക്കൂ.
Optional learning community: https://t.me/GyaanSetuAi
