এই প্রশ্ন অনেক প্রফেশনালের মনে আসে যারা কোর টেকনিক্যাল ব্যাকগ্রাউন্ড থেকে নন কিন্তু Selenium Automation-এ ক্যারিয়ার গড়তে চান। "কোডিং" শব্দটি নন-প্রোগ্রামারদের একটু ভয় পায়, অটোমেশন শুরু করার আগেই। একটি ধারণা আছে যে নন-প্রোগ্রামার অটোমেশনে দক্ষ হতে পারেন না, কিন্তু এটা শুধু মাথার ভুল। অনেক যোগ্য ম্যানুয়াল টেস্টার শুধু এই ভয়ের কারণে Selenium থেকে দূরে থাকেন।
Selenium স্ক্রিপ্ট লিখার জন্য অনেক ভাষা ব্যবহার করা হয়: Python, Ruby, C#, JavaScript এবং Java那些中的一种। Java-এর জনপ্রিয়তা এবং ভবিষ্যতের সম्भাবনা দেখে এখন অনেকে Java-র দিকে ঝুঁকে পড়েছেন। যদিও Python-ও আজকাল খুব জনপ্রিয়।
আমরা অস্বীকার করব না যে Selenium শিখতে Java-এর বেসিক কনসেপ্ট জানতে হয়। চলে দেখি, Java প্রোগ্রামিং-এর কোন পর্যায় পর্যন্ত জানতে হয়।
বেসিক Java শিখার আগে মনে রাখবেন:
- কোডার না হোনা চিন্তা ছাড়া শিখতে চাওয়ার মানসিকতা।
- বেসিক লজিক বিল্ডিং।
- লজিকের কনসেপ্ট ইমপ্লিমেন্ট করা।
Selenium শিখার জন্য Java-এর বেসিক টপিকগুলো:
Java প্রোগ্রামিং স্ট্রাকচার — একটি Java প্রোগ্রাম বিভিন্ন সেকশনে ভাগ: Package section (ইমপোর্ট করা প্যাকেজগুলো), Class section (অবজেক্ট ডিফাইন ও মেথড কল), Main method section (প্রোগ্রামের এন্ট্রি পয়েন্ট), Methods (ডেটা টাইপ ডিক্লেয়ারেশন ও এক্সিকিউটেবল স্টেটমেন্ট)।
Object এবং Class (OOP - Object Oriented Approach) — OOP Java-এর ব্যাকবোন। এবস্ট্রাকশন, ইনহেরিটেন্স, এনক্যাপসুলেশন, পলিমরফিজম—এগুলো রি-ইউজেবিলিটি এবং সিকিউরিটি নিশ্চিত করে। ডেটা এবং ফাংশন একসাথে বান্ধা থাকে।
Class — অবজেক্ট তৈরির টেমপ্লেট, যা অবজেক্টের ডেটা টাইপ এবং মেথড ডিফাইন করে। Object হলো ক্লাসের ইনস্ট্যান্স যাতে স্পেসিফিক স্টেট এবং বিহেভিয়র থাকে।
Variables (ভেরিয়েবল) — প্রোগ্রামের কাজের জন্য প্রয়োজনীয় মান সংরক্ষণ করে; মেমরি লোকেশন। ডেটা টাইপ ডিক্লেয়ার করতে হয় ব্যবহার করার আগে। মান প্রোগ্রামে যেকোনো সময় পরিবর্তন করা যায়।
Method — নির্দিষ্ট কাজ করার জন্য ফাংশনের মতো। শুধু কল করলে রান হয়।
Inheritance (ইনহেরিটেন্স) — OOP-র অংশ; একটি ক্লাস অন্য ক্লাসের ফিচার ইনহেরিট করতে পারে।
Abstraction (এবস্ট্রাকশন) — অপ্রয়োজনীয় ডিটেইল হাইড করে শুধু অপরিহার্য ডিটেইল দেখানো।
Encapsulation (এনক্যাপসুলেশন) — কোড ও ডেটা একসাথে র্যাপ করে একটি একক ইউনিটে বান্ড করা, যাতে বাহির থেকে ইনার ওয়ার্কিং অ্যাক্সেস করা না যায়। উদাহরণ: ক্যালকুলেটর।
Interface — ক্লাসের মত ইনহেরিট করা যায় না; বরং ইমপ্লিমেন্ট বা এক্সটেন্ড করা হয়। মাল্টিপল ইনহেরিটেন্স ইমপ্লিমেন্ট করতে ব্যবহৃত হয়। ইন্টারফেসের সব মেথড ইমপ্লিসিটলি public এবং abstract। টোটাল এবস্ট্রাকশন অর্জনের জন্য ব্যবহৃত হয়।
Array — একই টাইপের ভেরিয়েবল গোষ্ঠী যাদের মেমরি লোকেশন কন্টিগুয়াস। কন্ট্রোল স্টেটমেন্ট (if-then-else, while, for loop) দিয়ে ডিসিশন মেকিং, ব্রাঞ্চিং, লুপিং।
Collection — যেখানে ডেটা ডাইনামিক, সেখানে কালেকশন ব্যবহার হয়। এলিমেন্ট যোগ/ডিলিট করার সুবিধা।
Polymorphism (Overloading/Overriding) — একই একশন একাধিক পদ্ধতিতে করা যায় ডেটা টাইপ ও ক্লাস অনুযায়ী। দুটি টাইপ: compile-time এবং runtime polymorphism। ইনহেরিটেন্স ইমপ্লিমেন্ট করতে পলিমরফিজম লাগে। কোড, ক্লাস, মেথড একবার লিখে বারবার রি-ইউজ করা যায়।
File Handling — লোকাল ফাইল সিস্টেমে সংরক্ষিত ফাইল তৈরি, পড়া, আপডেট, ডিলিট করার সুবিধা। Java I/O (Input/Output) দিয়ে ইনপুট প্রসেস ও আউটপুট প্রোডিউস করা হয়।
Exception Handling — রানটাইম এরর হ্যান্ডেল করতে যাতে অ্যাপ্লিকেশনের নরমাল ফ্লো বাধা না পায়। FileNotFoundException, IOException ইত্যাদি হ্যান্ডেল করা হয়। সিস্টেম জেনারেটেড এরর মেসেজের বদলে বোঝানো সহজ এরর মেসেজ দেওয়া যায়।
Threads বেসিক — একটি থ্রেড হলো প্রোগ্রামের মধ্যে স্বতন্ত্র এক্সিকিউশন পথ। একাধিক থ্রেড কনকারেন্টলি চললে একাধিক টাস্ক একসাথে হয়। CPU-এর সর্বোচ্চ ইউটিলাইজেশন নিশ্চিত করে।