১০০০টি এরর, একটি গুগল শিট এবং পাঁচটি ঘণ্টা যা আমি আর কখনোই ফিরে পাব না
প্রতিটি বাগের একটি গল্প আছে। বেশিরভাগই শুরু হয় এই কথাটি দিয়ে: "এটি আমার মেশিনে কাজ করছে।"
আমরা একটি লিড জেনারেশন কোম্পানির জন্য একটি ডেটা ইমপোর্ট ফিচার পরীক্ষা করছিলাম। ফিচারটি সহজ মনে হয়েছিল। আপনি একটি ইমপোর্ট বাটনে ক্লিক করবেন, একটি স্প্রেডশিট আপলোড করবেন এবং সিস্টেমটি কন্টাক্টগুলো লোড করে নেবে। সবাই ধরে নিয়েছিল যে এটি কাজ করছে।
সেই ধারণাটি একটি ফাঁদ।
সেই ধারণাটি ভেঙে দেওয়াই একজন টেস্টারের কাজ। "হ্যাপি পাথ" (happy path) সবসময় আপনাকে ধোঁকা দেয়।
আমরা যদি একটি পরিষ্কার এক্সেল ফাইল ব্যবহার করতাম, তবে ইমপোর্ট সফল হতো। আমরা লাঞ্চ করতে যেতে পারতাম। আমরা ফিচারটি রিলিজ করে দিতে পারতাম। কিন্তু একজন গ্রাহক প্রোডাকশনে সোমবার সকালে এই বাগটি খুঁজে পেতেন।
সমস্যাটি ছিল একটি গুগল শিটে।
আসল ব্যবহারকারীরা পরিষ্কার এক্সেল ফাইল ব্যবহার করেন না। তারা অগোছালো গুগল শিট ব্যবহার করেন। তারা আশা করেন যে সিস্টেম যেন তাদের এই বিশৃঙ্খলা সামলাতে পারে।
যখন আমরা গুগল শিটের ডেটা আপলোড করলাম, সিস্টেমটি ব্যর্থ হলো। আমরা ১,০০০-এর বেশি এরর দেখতে পেলাম। স্ক্রিনটি এরর দিয়ে ভরে গেল। শুধুমাত্র সোর্স ফরম্যাট পরিবর্তন হওয়ার কারণে একই বাটন এবং একই ডেটা টাইপ পুরো সিস্টেমটিকে অচল করে দিল।
আমরা আরও পরীক্ষার জন্য আবার এক্সেলের কাছে ফিরে গেলাম। আমরা ভ্যালিড এবং ইনভ্যালিড রো-এর মিশ্রণ দিয়ে চেষ্টা করলাম। সিস্টেমটি এটি ভালোভাবে সামলাতে পেরেছিল। এটি খারাপ রো-গুলো এড়িয়ে সামনে এগিয়ে গিয়েছিল।
তারপর আমরা বাস্তব জগতের বিশৃঙ্খলা দিয়ে চেষ্টা করলাম। আমরা শত শত রো-যুক্ত একটি বাল্ক ফাইল আপলোড করলাম। যার বেশিরভাগই ছিল আবর্জনা। মাত্র কয়েকটি ছিল সঠিক।
সিস্টেমটি পুরোপুরি ভেঙে পড়ল। ভ্যালিডেশন লজিক কয়েকটি খারাপ রো-এর জন্য কাজ করলেও, ডেটার পাহাড়ের নিচে এটি অচল হয়ে গেল।
মূল কারণ খুঁজে বের করতে আমাদের পাঁচ ঘণ্টা সময় লেগেছিল। আমরা স্ক্রিনের দিকে তাকিয়ে থাকলাম, বারবার টেস্ট চালালাম এবং ফাইল, ব্রাউজার ও কফির ওপর দোষ চাপাতে থাকলাম।
সেই পাঁচ ঘণ্টা ছিল খুবই সামান্য খরচ। এর বিকল্প ছিল একজন গ্রাহকের মূল্যবান সময় নষ্ট হওয়া এবং আমাদের পণ্যের ওপর থেকে তাদের আস্থা হারিয়ে ফেলা। টেস্টিং-এ বাগ থাকলে আপনি সময়ের বিনিময়ে মূল্য দেন। আর প্রোডাকশনে বাগ থাকলে আপনি গ্রাহকের বিনিময়ে মূল্য দেন।
আমি প্রতিবারই সেই পাঁচ ঘণ্টাকেই বেছে নেব।
একজন ভালো টেস্টার জিজ্ঞেস করেন না যে একটি ফিচার কাজ করছে কি না। একজন ভালো টেস্টার জিজ্ঞেস করেন কীভাবে এটিকে ভেঙে ফেলা যায়।
একজন ডেভেলপারের মতো চিন্তা করা বন্ধ করুন। এই ধরণের মানুষের মতো চিন্তা করা শুরু করুন:
- সেই অলস ব্যবহারকারী যে ভুল ফাইল ফরম্যাট আপলোড করে।
- সেই বিশৃঙ্খল ব্যবহারকারী যার শিটে মার্জড সেল এবং খালি রো রয়েছে।
- সেই বাল্ক ব্যবহারকারী যার কাছে ১০টি পরিষ্কার রেকর্ডের বদলে ৪,০০০টি নোংরা রেকর্ড আছে।
- সেই সমস্যা সৃষ্টিকারী ব্যক্তি যে ঠিক সেটাই করে যা তার করা উচিত নয়।
সফটওয়্যার তখনই ভেঙে পড়ে যখন আপনি অপ্রত্যাশিত ইনপুট দেন।
সবচেয়ে "সহজ" ফিচারগুলো প্রায়শই সবচেয়ে বিপজ্জনক হয়। ইমপোর্ট বাটন, সার্চ বক্স এবং কন্টাক্ট ফর্ম দেখতে নিরীহ মনে হতে পারে। কিন্তু তারা আসলে তা নয়।
যদি একটি ফিচার "হ্যাপি পাথ" পার করে ফেলে, তবে থেমে যাবেন না। সেই ব্যক্তি হোন যে প্রশ্ন করে: "আমি যদি কল্পনা করা যায় এমন সবচেয়ে খারাপ ফাইলটি আপলোড করি তবে কী হবে?"
তারপর সেটি করে দেখুন।
Optional learning community: https://t.me/GyaanSetuAi
