অটোমেটেড টেস্ট জেনারেশন
ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট, E2E টেস্ট - কোড OpenClaw কে দাও, টেস্ট কেস স্বয়ংক্রিয় জেনারেট হয়
টেস্টিং লেখা - যে করে তার মাথা খারাপ
ফিচার অনলাইন হওয়ার তাড়া, টেস্টিং সবসময় "পরবর্তী ভার্সনে"। ফলে অনলাইন হলেই ফেটে যায়, তখন বুঝা যায় এজ কেস কভার করা নেই।
Mock ডেটা লিখতে লিখতে পাগল হয়ে যাচ্ছি, একটা এপিআই তিনটা সার্ভিসের উপর নির্ভর করে, শুধু mock ডেটাই আধা ঘন্টা লাগে, বিজনেস কোডের চেয়ে বেশি।
কভারেজ রিপোর্ট দেখলাম ৩০%, বসকে জিজ্ঞেস করলে বলি "কোর লজিক সব টেস্ট করেছি"। আসলে happy path পর্যন্ত টেস্ট করা নেই।
OpenClaw টেস্টিং এ কীভাবে সাহায্য করে
OpenClaw এমনি গলা টেস্ট কেস বানায় না। এটা ফাংশন সিগনেচার, ব্র্যাঞ্চ লজিক, এক্সেপশন হ্যান্ডলিং পাথ বিশ্লেষণ করে, স্বয়ংক্রিয়ভাবে এজ কন্ডিশন এবং এক্সেপশন সিনারিও চিনতে পারে।
তোমার ফাংশনে null চেক আছে? এটা null ইনপুট টেস্ট বানাবে। লুপ আছে? এটা খালি অ্যারে, এক এলিমেন্ট, বিশাল ডেটা টেস্ট করবে। try-catch আছে? এক্সেপশন ট্রিগার করতে পারে এমন ইনপুট বানাবে।
এছাড়াও এটা বোঝে তোমার প্রজেক্টে কী টেস্ট ফ্রেমওয়ার্ক ব্যবহার করছো - Jest, Pytest, JUnit, Vitest - জেনারেট করা কোড সরাসরি চলে, ফরম্যাট ম্যানুয়ালি পরিবর্তন করতে হয় না।
সরাসরি ব্যবহার করা যায় এমন টেস্ট Prompt
তিনটা Prompt ইউনিট টেস্ট, E2E টেস্ট, লোড টেস্ট কভার করে। প্রয়োজন অনুযায়ী বেছে নাও।
এই মডিউলের সব এক্সপোর্ট ফাংশন এবং ক্লাস মেথড বিশ্লেষণ করুন।
প্রতিটি ফাংশনের জন্য সম্পূর্ণ ইউনিট টেস্ট জেনারেট করুন, শর্ত:
1. কভারেজ লক্ষ্য ৯০% এর উপরে (স্টেটমেন্ট + ব্র্যাঞ্চ কভারেজ)
2. প্রতিটি ফাংশনে কমপক্ষে: সাধারণ ইনপুট, এজ ভ্যালু, এক্সেপশন ইনপুট টেস্ট
3. এক্সটার্নাল ডিপেন্ডেন্সিতে mock ব্যবহার করুন, রিয়েল ডাটাবেস বা নেটওয়ার্ক নির্ভর করবেন না
4. টেস্ট নেমিং পরিষ্কার, "should xxx when xxx" ফরম্যাট
5. প্রয়োজনীয় setup/teardown যোগ করুন
এই প্রজেক্টের বিদ্যমান টেস্ট ফ্রেমওয়ার্ক এবং assertion লাইব্রেরি ব্যবহার করুন, স্টাইল একই রাখুন।
Playwright দিয়ে এই লগইন ফ্লোর জন্য E2E টেস্ট লিখুন:
টেস্ট সিনারিও:
1. সাধারণ লগইন: সঠিক ইউজারনেম পাসওয়ার্ড ইনপুট, হোম পেজে রিডিরেক্ট ভেরিফাই
2. ভুল পাসওয়ার্ড: ভুল পাসওয়ার্ড, এরর মেসেজ দেখা যায় ভেরিফাই
3. খালি ফর্ম সাবমিট: কোনো ইনপুট ছাড়াই সাবমিট, ফর্ম ভ্যালিডেশন ভেরিফাই
4. মনে রাখুন পাসওয়ার্ড: "মনে রাখুন" চেক করুন, বন্ধ করে আবার খুলুন, লগইন স্ট্যাটাস ভেরিফাই
5. লগআউট: লগইন করে এক্সিট বাটন ক্লিক, লগইন পেজে ফিরে আসা ভেরিফাই
শর্ত:
- Page Object Model প্যাটার্ন ব্যবহার করে কোড সংগঠিত করুন
- যুক্তিসংগত অপেক্ষা কৌশল যোগ করুন, sleep ব্যবহার করবেন না
- ব্যর্থ সিনারিও স্ক্রিনশট নিন ডিবাগের জন্য
এই API এন্ডপয়েন্টের জন্য লোড টেস্ট স্ক্রিপ্ট বানান (k6 বা Artillery ব্যবহার করে):
টেস্ট কনফিগ:
1. ক্রমান্বয়ে লোড বাড়ান: ১০ কনকারেন্ট থেকে শুরু, প্রতি ৩০ সেকেন্ড ১০ বাড়ান, সর্বোচ্চ ২০০ কনকারেন্ট
2. সময়কাল: মোট ৫ মিনিট
3. রিকোয়েস্ট বিতরণ: ৭০% রিড অপারেশন, ২০% রাইট অপারেশন, ১০% আপডেট অপারেশন
4. মেট্রিক্স রেকর্ড করুন: P50/P95/P99 লেটেন্সি, এরর রেট, থ্রুপুট
ফলাফল বিশ্লেষণ স্ক্রিপ্ট জেনারেট করুন, পারফরম্যান্স বটলনেক রিপোর্ট আউটপুট করুন।
যদি P99 > ৫০০ms বা এরর রেট > ১% হয়, অপটিমাইজেশনের প্রয়োজন চিহ্নিত করুন।
টেস্ট জেনারেশন: OpenClaw vs Copilot
দুটোই টেস্ট জেনারেট করতে পারে, কিন্তু কোয়ালিটি আলাদা।
- সম্পূর্ণ ফাংশন লজিক এবং ব্র্যাঞ্চ পাথ বিশ্লেষণ, এজ কেস কভারেজ সম্পূর্ণ
- ক্রস-ফাইল ডিপেন্ডেন্সি বোঝে, mock জেনারেশন সঠিক
- নির্দিষ্ট কভারেজ লক্ষ্য সেট করতে পারে, লক্ষ্য না পেলে আরও কেস যোগ করবে
- E2E, লোড টেস্ট ইত্যাদি জটিল সিনারিওর সম্পূর্ণ স্ক্রিপ্ট জেনারেট করে
- বর্তমান ফাইল থেকেই জেনারেট করে, ক্রস-ফাইল ডিপেন্ডেন্সি মিস করা সহজ
- মূলত happy path টেস্ট জেনারেট করে, এজ কভারেজ পর্যাপ্ত নয়
- Mock সাধারণত ম্যানুয়াল ঠিক করতে হয়
- জটিল টেস্ট সিনারিও (E2E, লোড টেস্ট) সাপোর্ট সীমিত