ভালো বাগ রিপোর্ট কীভাবে লিখবেন (AI বা ডেভেলপারের জন্য)
একটি ভালো বাগ রিপোর্ট অন্য কাউকে — একজন ডেভেলপার বা একটি AI-কে — আপনি যে সমস্যাটি দেখেছেন সেটি দেখতে দেয়, আপনাকে কিছু জিজ্ঞেস না করেই। এর একটি নির্দিষ্ট শিরোনাম, সমস্যাটি পুনরুৎপাদনের সঠিক ধাপ, আপনি কী প্রত্যাশা করেছিলেন, আসলে কী ঘটেছে, হুবহু কপি করা কোনো ত্রুটি বার্তা, আর কোথায় ঘটেছে — কোন পৃষ্ঠা, ব্রাউজার, ডিভাইস ও ব্যবহারকারী — তা থাকা দরকার। প্রতি রিপোর্টে একটি বাগ, সহায়ক হলে একটি স্ক্রিনশটসহ।
বেশিরভাগ বাগ বোঝার জন্য ঠিক করার চেয়ে বেশি সময় লাগে। একটি স্পষ্ট রিপোর্ট সেই বোঝার অংশটুকু সরিয়ে দেয়। AI টুলে এটি আরও গুরুত্বপূর্ণ: "চেকআউটটা অদ্ভুত" বলতে আপনি কী বোঝাতে চান তা AI ফিরে জিজ্ঞেস করতে পারে না, তাই সে অনুমান করে — আর ভুল অনুমান অন্য কিছু ভেঙে দিতে পারে।
টেমপ্লেট
এটি কপি করে পূরণ করুন:
শিরোনাম: [কী ভুল, কোথায়] — যেমন "বুকিং ফর্ম সন্ধ্যা ৬টার পরের সময় প্রত্যাখ্যান করে"
পুনরুৎপাদনের ধাপ:
1. ...
2. ...
3. ...
প্রত্যাশিত: [কী ঘটা উচিত ছিল]
প্রকৃত: [বরং কী ঘটেছে]
ত্রুটি বার্তা: [হুবহু লেখা, যদি থাকে]
কোথায়: [পৃষ্ঠা/URL, ব্রাউজার, ডিভাইস, কোন ব্যবহারকারী হিসেবে লগইন]
কতবার: [প্রতিবার / মাঝে মাঝে / একবার]
স্ক্রিনশট বা রেকর্ডিং: [সংযুক্ত]
এই গাইডের বাকি অংশ প্রতিটি অংশ ব্যাখ্যা করে।
ধাপ ১: আগে পুনরুৎপাদন করুন
লেখার আগে বাগটি আবার ঘটানোর চেষ্টা করুন। তাতে বুঝবেন কোন ধাপগুলো গুরুত্বপূর্ণ, আর এটি প্রতিবার ঘটে কি না।
- একটি পরিষ্কার অবস্থা থেকে শুরু করুন: রিফ্রেশ করুন, বা লগআউট করে আবার লগইন করুন।
- প্রতিটি ক্লিক ও প্রতিটি লেখা জিনিস নোট করুন।
- এটি ঘটায় এমন সবচেয়ে ছোট পথ খুঁজুন।
- দ্বিতীয় ব্রাউজার বা অ্যাকাউন্ট চেষ্টা করুন। শুধু একজন ব্যবহারকারীর ক্ষেত্রে ঘটলে সেটি বড় সূত্র।
এ নিয়ে আরও জানতে দেখুন AI দিয়ে তৈরি অ্যাপ কীভাবে ডিবাগ করবেন।
ধাপ ২: একটি নির্দিষ্ট শিরোনাম লিখুন
শিরোনামে বলা উচিত কী ভুল ও কোথায়, যাতে তালিকা দেখা কেউ জানে এটি কোন বাগ।
| দুর্বল | শক্তিশালী |
|---|---|
| চেকআউট ভাঙা | ক্যার্টে ডিসকাউন্ট কোড থাকলে চেকআউট বোতাম কিছুই করে না |
| মোবাইলের সমস্যা | ৪০০px-এর কম চওড়া ফোনে প্রাইসিং কার্ড স্ক্রিন ছাড়িয়ে যায় |
| সেভ করতে ত্রুটি | নামে ইমোজিসহ একটি প্রোফাইল সেভ করলে "500 Internal Server Error" দেখায় |
ধাপ ৩: সুনির্দিষ্ট ধাপের তালিকা করুন
সংখ্যা দিন। আক্ষরিক হোন: কোন পৃষ্ঠা, কোন বোতাম, আপনি কী লিখেছেন।
১. একজন গ্রাহক হিসেবে লগইন করুন (টেস্ট অ্যাকাউন্ট: customer@example.com)।
২. "Starter kit" কার্টে যোগ করুন।
৩. ডিসকাউন্ট কোড WELCOME10 লিখে Apply-তে ক্লিক করুন।
৪. Checkout-এ ক্লিক করুন।
"একটি কোড দিয়ে চেকআউট করে দেখুন" লিখলে এমন বিবরণ বাদ পড়ে যা প্রায়ই গুরুত্বপূর্ণ: কোন ব্যবহারকারী, কোন পণ্য, কোন কোড, আর কোডটি আগে প্রয়োগ হয়েছিল কি না।
ধাপ ৪: প্রত্যাশিত বনাম প্রকৃত
এটিই রিপোর্টের মূল অংশ। দুটোই বলুন, কারণ পার্থক্যটিই বাগ।
- প্রত্যাশিত: চেকআউট পৃষ্ঠা খোলে এবং মোটে ১০% ছাড় দেখায়।
- প্রকৃত: বোতামে এক সেকেন্ড স্পিনার দেখায়, তারপর কিছুই হয় না। ডিসকাউন্ট কোড ছাড়া চেকআউট কাজ করে।
"প্রত্যাশিত" ছাড়া পাঠক হয়তো বুঝবেন না আচরণটি ভুল। "প্রকৃত" ছাড়া তারা জানবেন না কী খুঁজতে হবে।
ধাপ ৫: ত্রুটি হুবহু কপি করুন
ত্রুটি বার্তা কারণে পৌঁছানোর দ্রুততম পথ। এগুলো লেখা হিসেবে হুবহু কপি করুন — ভাষান্তর বা সংক্ষেপ করবেন না।
কোথায় পাবেন:
- স্ক্রিনে: অ্যাপ যে কোনো বার্তা দেখায়।
- ব্রাউজার কনসোল: ডেভেলপার টুলস খুলুন (F12, বা ডান-ক্লিক → Inspect) এবং লাল লাইনের জন্য Console ট্যাব দেখুন।
- Network ট্যাব: ডেভেলপার টুলসে ব্যর্থ অনুরোধটি খুঁজুন, তার URL ও স্ট্যাটাস কোড লিখুন (যেমন
POST /api/checkout → 500)। - সার্ভার লগ, যদি আপনার অ্যাক্সেস থাকে।
TypeError: Cannot read properties of undefined (reading 'percent') at checkout.ts:48-এর মতো একটি লাইন প্রায়ই সরাসরি সমস্যার দিকে নির্দেশ করে।
ধাপ ৬: প্রেক্ষাপট যোগ করুন
- কোথায়: পৃষ্ঠার URL, পরিবেশ (প্রিভিউ, স্টেজিং বা লাইভ)।
- কে: কোন ব্যবহারকারী বা ভূমিকা — অ্যাডমিন, সদস্য, লগআউট অবস্থায়।
- ডিভাইস ও ব্রাউজার: "iPhone-এ Safari" বনাম "Windows-এ Chrome" গুরুত্বপূর্ণ হতে পারে।
- ডেটা: রেকর্ড সম্পর্কে যেকোনো অস্বাভাবিক কিছু — খুব লম্বা টেক্সট, বিশেষ অক্ষর, বহু আইটেম।
- কখন শুরু: "গতকালের ডিসকাউন্ট কোডের পরিবর্তনের পর থেকে" বলা সোনার মতো মূল্যবান।
- কতবার: প্রতিবার, বা দশবারের একবার।
ধাপ ৭: দেখিয়ে দিন
সমস্যাটি ঘিরে দেওয়া একটি স্ক্রিনশট, বা একটি ছোট স্ক্রিন রেকর্ডিং অস্পষ্টতা দূর করে — বিশেষ করে লেআউট বাগে। আপনার AI টুল ছবি নিলে একটি সংযুক্ত করুন। গোপন তথ্য, কী এবং অন্যের ডেটাসহ যেকোনো ব্যক্তিগত কিছু কেটে ফেলুন।
AI বিল্ডারের জন্য বাগ রিপোর্ট লেখা
একই কাঠামো একটি প্রম্পট হিসেবেও কাজ করে। দুটি সংযোজন সাহায্য করে:
- কী বদলানো যাবে না তা বলুন, যাতে ফিক্সটি নতুন সমস্যা না আনে।
- ফিক্স লেখার পর যাচাই করতে বলুন, শুধু লিখতে নয়।
একজন গ্রাহক হিসেবে লগইন করা, কার্টে "Starter kit" আছে এবং কোড
WELCOME10প্রয়োগ করা — Checkout-এ ক্লিক করলে কিছুই হয় না। প্রত্যাশিত: চেকআউট পৃষ্ঠা খোলে মোটে ১০% ছাড় দেখিয়ে। প্রকৃত: একটু স্পিনার, তারপর কিছুই না। Network ট্যাব দেখায়POST /api/checkout৫০০ ফেরত দিয়েছে। কোড ছাড়া চেকআউট কাজ করে। কারণ খুঁজে বের করুন এবং ঠিক করুন, তবে কোড ছাড়া অর্ডারের দাম হিসাব করার পদ্ধতি না বদলে। তারপর শতাংশ কোড, নির্দিষ্ট পরিমাণের কোড ও কোড ছাড়া চেকআউট যাচাই করুন।
কারণ সম্পর্কে নিশ্চিত না হলে আগে রোগনির্ণয় চান:
এখনো কোড বদলাবেন না। এই রিপোর্টের ভিত্তিতে, সম্ভাব্য কারণগুলো কী, আর প্রতিটি কী নিশ্চিত করবে?
সাধারণ ভুল
- "এটি ভাঙা।" কোনো ধাপ নেই, প্রত্যাশিত ফল নেই, কাজ করার মতো কিছু নেই।
- একটি রিপোর্টে কয়েকটি বাগ। কিছু ঠিক হয়, অন্যগুলো হারিয়ে যায়।
- ত্রুটির ভাষান্তর। "কোনো একটি undefined জিনিস" লিখলে কাজের অংশটুকু লুকিয়ে যায়।
- ব্যবহারকারী বা ভূমিকা বাদ দেওয়া। অনেক বাগ শুধু অ্যাডমিনকে বা নতুন ব্যবহারকারীদের প্রভাবিত করে।
- সমস্যার বদলে শুধু আপনার চাওয়া ফিক্স বর্ণনা করা ("একটি null চেক যোগ করো")।
- স্ক্রিনশট বা পেস্ট করা লগে গোপন তথ্য ভাগ করা।
চেকলিস্ট
- আমি বাগটি পুনরুৎপাদন করেছি এবং সবচেয়ে ছোট ধাপ খুঁজে পেয়েছি।
- শিরোনামে বলা আছে কী ভুল ও কোথায়।
- ধাপগুলো সংখ্যা দেওয়া ও আক্ষরিক।
- প্রত্যাশিত ও প্রকৃত দুটোই বলা আছে।
- ত্রুটি বার্তা হুবহু কপি করা, সঙ্গে ব্যর্থ অনুরোধ ও স্ট্যাটাস কোড।
- পৃষ্ঠা, পরিবেশ, ব্যবহারকারী, ডিভাইস ও ব্রাউজার যুক্ত করা।
- কতবার ঘটে ও কখন শুরু হয়েছে তা বলা।
- একটি স্ক্রিনশট বা রেকর্ডিং সংযুক্ত, ব্যক্তিগত ডেটা সরানো।
- প্রতি রিপোর্টে একটি বাগ।
Mythex-এর এজেন্টকে বাগ জানানো
Mythex প্রজেক্টে রিপোর্টটিই প্রম্পট। কয়েকটি ফিচার সাহায্য করে:
- একটি স্ক্রিনশট সংযুক্ত করুন প্রিভিউ বা ত্রুটির পর্দার — প্রতি বার্তায় সর্বোচ্চ ৫টি ফাইল।
/fixএজেন্টকে একটি বাগ ঠিক করতে কেন্দ্রীভূত করে; Plan মোড সম্পাদনার আগে তাকে তদন্ত করতে দেয়।/testএজেন্টকে প্রিভিউতেই ফ্লো পুনরুৎপাদন করতে এবং সে যা দেখে তা জানাতে বলে।- এই পয়েন্টে ফিরুন এমন একটি ফিক্স বাতিল করে যা পরিস্থিতি আরও খারাপ করেছে।
ডক্সের প্রম্পট দিয়ে ডিবাগ করা পাতাটি একই ধাপ / প্রত্যাশিত / প্রকৃত কাঠামো ব্যবহার করে। এর চারপাশের ফিক্স-ও-যাচাই চক্রের জন্য দেখুন AI দিয়ে তৈরি অ্যাপে কীভাবে পুনরাবৃত্তি করবেন।
প্রশ্নোত্তর
একটি বাগ রিপোর্টে কী থাকা উচিত?
একটি নির্দিষ্ট শিরোনাম, সমস্যাটি পুনরুৎপাদনের সঠিক ধাপ, আপনি কী প্রত্যাশা করেছিলেন, আসলে কী ঘটেছে, কোনো ত্রুটি বার্তা হুবহু, কোথায় ঘটেছে (পৃষ্ঠা, ব্রাউজার, ডিভাইস, ব্যবহারকারী), এবং সহায়ক হলে একটি স্ক্রিনশট বা রেকর্ডিং।
AI অ্যাপ বিল্ডারের জন্য কীভাবে বাগ রিপোর্ট লিখব?
ডেভেলপারের জন্য যে কাঠামো, সেটিই ব্যবহার করুন: ধাপ, প্রত্যাশা, প্রকৃত ফল ও হুবহু ত্রুটি। যা বদলানো যাবে না তা যোগ করুন, আর ঠিক করে ফিক্সটি যাচাই করতে বলুন। "এটি ভাঙা" ধরনের অস্পষ্ট প্রম্পট অনুমানের দিকে নিয়ে যায়।
বাগটি পুনরুৎপাদন করতে না পারলে কী করব?
তবুও রিপোর্ট করুন, তবে সেটি উল্লেখ করুন। আপনি কী করছিলেন, কখন ঘটেছিল, কোন ব্যবহারকারী অ্যাকাউন্ট, আর যে ত্রুটি দেখেছেন তা যোগ করুন। কতবার ঘটে তা লিখুন, যেমন দশবারের একবার, কারণ মাঝে মাঝে ঘটা বাগ প্রায়ই সময় বা ডেটা সমস্যার ইঙ্গিত দেয়।
একটি রিপোর্টে কি কয়েকটি বাগ রাখব?
না। প্রতি রিপোর্টে একটি বাগ, যাতে প্রতিটি আলাদাভাবে ঠিক, পরীক্ষা ও বন্ধ করা যায়। দুটি সমস্যা সম্পর্কিত মনে হলে প্রতিটি রিপোর্টে তা উল্লেখ করুন।