നിങ്ങൾക്ക് എന്തുകൊണ്ട് ഒരു ശക്തമായ ടെസ്റ്റ് സ്യൂട്ട് ആവശ്യമാണ്
ടെസ്റ്റുകൾ സമയം കളയുകയാണെന്നാണ് ഞാൻ കരുതിയിരുന്നത്.
വേഗത്തിൽ പ്രൊഡക്റ്റ് പുറത്തിറക്കുക, പിന്നീട് പ്രശ്നങ്ങൾ പരിഹരിക്കുക എന്നതായിരുന്നു എന്റെ രീതി. എന്നാൽ ഒരു പ്രൊഡക്ഷൻ പ്രശ്നം (production issue) പരിഹരിക്കാൻ എനിക്ക് മൂന്നാഴ്ചയോളം സമയം ചിലവഴിക്കേണ്ടി വന്നു. ഒരു ലളിതമായ ടെസ്റ്റ് വഴി 30 സെക്കൻഡുകൾക്കുള്ളിൽ അത് കണ്ടെത്താൻ സാധിക്കുമായിരുന്നു.
നിങ്ങൾ ക്ലയന്റുകൾക്കായി ഉൽപ്പന്നങ്ങൾ നിർമ്മിക്കുന്നവരാണെങ്കിൽ, ടെസ്റ്റുകൾ ഒഴിവാക്കുന്നത് പ്രശ്നങ്ങൾക്ക് കാരണമാകും:
- ചെറിയ മാറ്റങ്ങൾ പോലും ബന്ധമില്ലാത്ത ഫീച്ചറുകളെ തകരാറിലാക്കും.
- നിങ്ങൾ കണ്ടെത്തുന്നതിന് മുമ്പ് തന്നെ ക്ലയന്റുകൾ ബഗുകൾ കണ്ടെത്തും.
- കോഡ് റീഫാക്ടർ ചെയ്യുന്നത് (Refactoring code) ഭയപ്പെടുത്തുന്ന ഒന്നായി മാറും.
- ഓരോ ഡെപ്ലോയ്മെന്റിനും (deployment) മുമ്പ് നിങ്ങൾക്ക് ഉറക്കം നഷ്ടപ്പെടും.
- നിങ്ങളുടെ പ്രൊഫഷണൽ സൽപ്പേരിനെ ഇത് ബാധിക്കും.
ഒരു നല്ല ടെസ്റ്റ് സ്യൂട്ട് ഈ പ്രശ്നങ്ങളെ പരിഹരിക്കുന്നു.
ടെസ്റ്റിംഗിന്റെ ഗുണങ്ങൾ:
- വേഗത: ഭയമില്ലാതെ നിങ്ങൾക്ക് കോഡ് റീഫാക്ടർ ചെയ്യാനും പുതിയ ഫീച്ചറുകൾ ചേർക്കാനും സാധിക്കുന്നു.
- ഡോക്യുമെന്റേഷൻ: നിങ്ങളുടെ സിസ്റ്റം എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് ടെസ്റ്റുകൾ കാണിച്ചുതരുന്നു.
- സുരക്ഷ: ബഗുകൾ ഉപയോക്താക്കളിലേക്ക് എത്തുന്നതിന് മുമ്പ് തന്നെ നിങ്ങൾക്ക് അവ കണ്ടെത്താം.
- ക്ലീൻ കോഡ്: മോഡുലാർ കോഡ് (modular code) എഴുതാൻ ടെസ്റ്റിംഗ് നിങ്ങളെ പ്രേരിപ്പിക്കുന്നു.
- വിശ്വാസം: നിങ്ങളുടെ ജോലി പ്രൊഫഷണലാണെന്ന് ക്ലയന്റുകൾക്ക് തോന്നും.
കാര്യക്ഷമത നിലനിർത്താൻ ഈ ടെസ്റ്റിംഗ് പിരമിഡ് (testing pyramid) ഉപയോഗിക്കുക:
• Unit Tests (70%): ഒറ്റപ്പെട്ട ഫംഗ്ഷനുകളും (functions) കമ്പോണന്റുകളും (components) പരിശോധിക്കുന്നു. • Integration Tests (20%): ഒരു API-യും ഡാറ്റാബേസും പോലെ വിവിധ ഭാഗങ്ങൾ എങ്ങനെ ഒന്നിച്ച് പ്രവർത്തിക്കുന്നു എന്ന് പരിശോധിക്കുന്നു. • End-to-End Tests (10%): ലോഗിൻ അല്ലെങ്കിൽ ചെക്കൗട്ട് പോലുള്ള പ്രധാനപ്പെട്ട പാതകൾ (critical paths) പരിശോധിക്കുന്നു.
100% കവറേജ് ലക്ഷ്യമിടരുത്. പകരം നിങ്ങളുടെ ബിസിനസ് ലോജിക്കിന് (business logic) ചുറ്റുമുള്ള ഉയർന്ന മൂല്യമുള്ള കവറേജ് ലക്ഷ്യമിടുക.
ഇന്ന് ടെസ്റ്റുകൾ എഴുതുന്നത് സമയം എടുക്കുന്നതായി തോന്നാം. എന്നാൽ അത് നാളെ നിങ്ങളെ കൂടുതൽ വേഗത്തിലാക്കും. വിശ്വസനീയമായ സോഫ്റ്റ്വെയർ പുറത്തിറക്കുന്ന ഡെവലപ്പർമാർക്ക് ടെസ്റ്റിംഗിന്റെ മൂല്യം അറിയാം.
നിങ്ങൾ ടെസ്റ്റുകൾ എഴുതാറുണ്ടോ അതോ എല്ലാം മാനുവലായി (manually) പരിശോധിക്കാറുണ്ടോ?
നിങ്ങളുടെ അനുഭവങ്ങൾ താഴെ പങ്കുവെക്കുക.