এ্যান্ডরয়েড টেস্টিং , মকিটো এবং এক্সপ্রেসো ফ্রেমওয়ার্ক

সফটওয়্যার বা এ্যাপ ডেভলপমেন্টের পাশাপাশি টেস্টিং অনেক গুরুত্বপূর্ন।কিন্তু এ্যান্ডরয়েড এ্যাপকে ডেভলপ করার পর আমরা কিভাবে টেস্ট করি? ম্যানুয়ালি এ্যাপকে রান করে ইনপুট/ইন্টারএ্যাক্ট করে দেখি এক্সপেক্টেড আউটপুট কিংবা কাজ হচ্ছে কিনা। কিন্তু এতে অনেক সমস্যা দেখা দেয়। যেমন –

  • একটা এ্যাপে অনেক অনেক ক্লাস,সার্ভিস থাকে।ম্যানুয়ালি টেস্ট করলে প্রত্যেকটাকে যেমন আলাদাভাবে টেস্ট করা যায় না, তেমনি নির্দিষ্ট কোনটাকে আলাদাভাবে টেস্ট করাও কঠিন।
  • পুরো এ্যাপকে একসাথে করে টেস্ট করা কষ্টকর।
  • বিভিন্ন ইউআই টেস্ট করতে অনেক সময় লাগে।
  • বিভিন্ন ডিভাইস দিয়ে টেস্ট করতে হয়,যেটা কঠিন।

এজন্য সল্যুশন হচ্ছে অটোমেটেড টেস্টিং যেখানে আমরা প্রোগ্রাম করে এ্যাপকে টেস্ট করতে পারি।এ টেস্টিং আবার কয়েক ধরনের হয় –

  • ইউনিট টেস্ট – এতে এ্যাপের কোন একটা ইউনিট বা অংশকে যেভাবে কাজ করা উচিত সেভাবে করছে কিনা টেস্ট করা যায়। এতে মূলত এ্যাপের কোন ক্লাস বা মেথডকে টেস্ট করা হয় যে লজিক ঠিক মতো আছে কিনা।
  • ইউআই টেস্ট বা ইন্সট্রুমেন্টেড টেস্ট – এতে এ্যাপকে প্রোগ্রাম দ্বারাই ইউআই ইন্টারএ্যাক্ট করে করে টেস্ট করা যায়। মূলত কোড বিভিন্ন ডিভাইসে ঠিকমতো কাজ করছে কিনা তা এখানে টেস্ট করা হয়।

এছাড়াও ইন্ড টু ইন্ড টেস ও অন্যান্য টেস্ট করা হয়।তবে ইউনিট টেস্টিং ই প্রধানত সবগুলোর ভিত্তি।

এ্যান্ডরয়েডের ক্ষেত্রে এই ইউনিট টেস্টিং ২ভাবে করা যায় –

  1. লোকাল ইউনিট টেস্টিং – এতে জেভিএম দিয়ে টেস্ট করা হয়।এতে ডিভাইসে এ্যাপকে ডিপ্লোয় করতে হয় না।
  2. এ্যান্ডরয়েড ইউনিট টেস্টিং – এতে এ্যান্ডরয়েড রান টাইম দিয়ে টেস্ট করা হয়।এর জন্য এমুলেটর/ডিভাইসে রান হয়ে টেস্ট হতে থাকে।

এ্যান্ডরয়েডে কোন ক্লাসকে ইউনিট টেস্টিং এর জন্য প্রথমে দেখে নিতে হবে জেইউনিট টেস্ট কে প্রজেক্টে(গ্রাডল বিল্ড ফাইল,এ্যাপ মডিউল)ইনক্লুড করতে হবে।এবার সেই ক্লাসের উপর কার্সর রেখে অল্টার+ইন্টার দিলে পপয়াপ মেনুতে “ক্রিয়েট টেস্ট” অপশন পাওয়া যায়।এতে যে ডায়লগ আসবে তাতে আমরা @before এবং @after এ্যানোটেশনকে সিলেক্ট করে টেস্ট ফাইল এবং প্যাকেজ নেম  দিতে পারি। টেস্ট শুরু করার পূর্বে @before এবং @after শেষ করার পর এ্যানোটেশনে থাকা কোড দিয়ে অবজেক্ট ক্রিয়েট/ডিস্ট্রয় বা অন্যান্য কাজ করতে পারি।এরপর @Test এ্যানোটেশনের পর টেস্টের জন্য কোড লিখতে পারি। টেস্টের জন্য আমরা কিছু টেস্টকেস বানিয়ে সেগুলো সেই ক্লাসের অবজেক্টে পাস করতে পারি।এতে যে রেজাল্ট আসবে তাকে বিভিন্ন ধরনের এ্যাসার্ট ফাংশনের মাধ্যমে চেক করে টেস্টের রেজাল্ট পেতে পারি।

এস্প্রেসো ইউআই টেস্টিং এর জন্য গুগোলের ডেভলপ করা ফ্রেমওয়ার্ক। এর মাধ্যমে আমাদের এ্যাপের ইউআইগুলোর বিভিন্ন ইন্টারএ্যাকশন টেস্ট করা যায়। সুবিধা হচ্ছে এতে আংগুল দিয়ে ইন্টারএ্যাক্ট করার মত সময়ব্যয় হয় না।

মকিটো হচ্ছে মকিং এর জন্য ইউনিট টেস্টিং এর একটি ফ্রেমওয়ার্ক,যার মাধ্যমে কোন ইউনিটের জন্য ডিপেন্ডেড কোন কিছুর মক বানিয়ে বাকিগুলোকে টেস্ট করতে পারি। মক বলতে ডামি বা অনেকটাই আসলটার মত বুঝায়।