পরীক্ষার জন্য ক্রোম

Chrome for Testing হলো Chrome-এর একটি সংস্করণ যা বিশেষভাবে ওয়েব অ্যাপ টেস্টিং এবং অটোমেশনের ব্যবহারের ক্ষেত্রগুলোকে লক্ষ্য করে তৈরি। এই ডকুমেন্টটিতে ব্যাখ্যা করা হয়েছে কেন Chrome টিম এটির প্রয়োজনীয়তা অনুভব করেছিল, এবং কিছু বাস্তব উদাহরণের মাধ্যমে তুলে ধরা হয়েছে যেখানে Chrome for Testing একজন ডেভেলপার হিসেবে আপনার জন্য উপকারী হতে পারে।

পটভূমি

উচ্চ-মানের ওয়েব অভিজ্ঞতা তৈরির জন্য ব্রাউজার টেস্টিং একটি অপরিহার্য অংশ, তা ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে করা হোক না কেন। একই সাথে, একটি উপযুক্ত ব্রাউজার টেস্টিং পরিবেশ তৈরি করা অত্যন্ত কঠিন, এতটাই যে এটিকে ওয়েব ডেভেলপারদের অন্যতম প্রধান সমস্যা হিসেবে নিয়মিত উল্লেখ করা হয়

স্বয়ংক্রিয় আপডেট: ব্যবহারকারীদের জন্য দারুণ, ডেভেলপারদের জন্য কষ্টকর

ক্রোমের অন্যতম উল্লেখযোগ্য বৈশিষ্ট্য হলো এর স্বয়ংক্রিয়ভাবে আপডেট হওয়ার ক্ষমতা। ব্যবহারকারীরা এটা জেনে খুশি হন যে, তাঁরা সর্বদা একটি হালনাগাদ ও সুরক্ষিত ব্রাউজার সংস্করণ ব্যবহার করছেন, যাতে আধুনিক ওয়েব প্ল্যাটফর্মের বৈশিষ্ট্য, ব্রাউজারের বিভিন্ন ফিচার এবং বাগ ফিক্স অন্তর্ভুক্ত থাকে।

তবে, একজন ডেভেলপার হিসেবে এন্ড-টু-এন্ড টেস্টের একটি সেট চালানোর সময় আপনার দৃষ্টিভঙ্গি সম্পূর্ণ ভিন্ন হতে পারে:

  • আপনি বারবার পরীক্ষা চালালে সামঞ্জস্যপূর্ণ ও পুনরাবৃত্তিযোগ্য ফলাফল চান—কিন্তু দুটি পরীক্ষার মাঝখানে ব্রাউজারের এক্সিকিউটেবল বা বাইনারি যদি নিজেকে আপডেট করে নেয়, তবে এমনটা নাও হতে পারে।
  • আপনি একটি নির্দিষ্ট ব্রাউজার সংস্করণ পিন করে সেই সংস্করণ নম্বরটি আপনার সোর্স কোড রিপোজিটরিতে চেক ইন করতে চান, যাতে আপনি পুরোনো কমিট ও ব্রাঞ্চগুলো চেক আউট করে সেই নির্দিষ্ট সময় থেকে ব্রাউজার বাইনারির ওপর পরীক্ষাগুলো পুনরায় চালাতে পারেন।

স্বয়ংক্রিয়ভাবে আপডেট হওয়া ব্রাউজার বাইনারি দিয়ে এর কোনোটিই সম্ভব নয়। ফলে, আপনি হয়তো স্বয়ংক্রিয় পরীক্ষার জন্য আপনার সাধারণ ক্রোম ইনস্টলেশন ব্যবহার করতে চাইবেন না। সাধারণ ব্রাউজার ব্যবহারকারীদের জন্য যা ভালো এবং স্বয়ংক্রিয় পরীক্ষাকারী ডেভেলপারদের জন্য যা ভালো, তার মধ্যে এটাই হলো মৌলিক অমিল।

সংস্করণযুক্ত ব্রাউজার বাইনারি

স্বয়ংক্রিয় আপডেট ছাড়াও, আপনি হয়তো একটি নির্দিষ্ট সংস্করণের ক্রোম বাইনারি খুঁজে পেতেও অসুবিধা বোধ করেছেন। গুগল ইচ্ছাকৃতভাবে সংস্করণযুক্ত ক্রোম ডাউনলোড উপলব্ধ করে না, কারণ ব্যবহারকারীদের সংস্করণ নম্বর নিয়ে চিন্তা করার প্রয়োজন নেই—তাদের যত তাড়াতাড়ি সম্ভব সর্বশেষ সংস্করণে আপডেট হওয়া উচিত। এটি ব্যবহারকারীদের জন্য দারুণ, কিন্তু ডেভেলপারদের জন্য কষ্টকর, কারণ তাদের ক্রোমের পুরোনো সংস্করণে কোনো বাগ রিপোর্ট পুনরুৎপাদন করতে হয়।

এই সমস্যার একটি আরও সুনির্দিষ্ট উদাহরণ হলো যখন আপনি ব্রাউজার অটোমেশনের জন্য ChromeDriver ব্যবহার করতে চান। এক্ষেত্রে আপনাকে শুধু কোনোভাবে একটি Chrome বাইনারি ডাউনলোড করলেই হবে না, বরং দুটি বাইনারির সামঞ্জস্যতা নিশ্চিত করার জন্য একই ভার্সনের একটি ChromeDriver বাইনারিও প্রয়োজন হবে।

এই সমস্যাগুলো সমাধানের কোনো ভালো উপায় না থাকায়, অনেক ডেভেলপার এর পরিবর্তে ক্রোমিয়াম (ক্রোম নয়) বাইনারি ডাউনলোড করেন, যদিও এই পদ্ধতির কিছু ত্রুটি রয়েছে। প্রথমত, এই ক্রোমিয়াম বাইনারিগুলো সব প্ল্যাটফর্মে নির্ভরযোগ্যভাবে পাওয়া যায় না। দ্বিতীয়ত, এগুলো ক্রোম রিলিজ প্রক্রিয়া থেকে আলাদাভাবে তৈরি ও প্রকাশ করা হয়, ফলে এগুলোর ভার্সনকে ব্যবহারকারীদের জন্য উপলব্ধ আসল ক্রোম রিলিজের সাথে মেলানো অসম্ভব হয়ে পড়ে। তৃতীয়ত, ক্রোমিয়াম এবং ক্রোম ভিন্ন।

সমাধান: পরীক্ষার জন্য ক্রোম

এই সমস্যাগুলো সমাধানের জন্য ডিজাইন করা, ‘ক্রোম ফর টেস্টিং’ হলো ক্রোমের একটি বিশেষ সংস্করণ যা শুধুমাত্র টেস্টিং ব্যবহারের জন্যই তৈরি। এতে কোনো স্বয়ংক্রিয় আপডেট নেই, এটি ক্রোম রিলিজ প্রক্রিয়ার সাথে সমন্বিত এবং প্রতিটি ক্রোম রিলিজের সাথে উপলব্ধ করা হয়। এটি একটি ভার্সনযুক্ত বাইনারি যা টেস্টিং ব্যবহারের ক্ষেত্রে কোনো নেতিবাচক প্রভাব না ফেলেই সাধারণ ক্রোমের যথাসম্ভব কাছাকাছি।

টেস্টিং-এর জন্য ক্রোম লোগো, যা হলো সাধারণ ক্রোম লোগোর উপরে একটি কালো আয়তক্ষেত্রের মধ্যে 'Test' শব্দটি লেখা থাকে।

টেস্টিংয়ের জন্য ক্রোম তৈরি করতে, আমরা ক্রোমিয়াম ও ক্রোম কোডবেসে পরিবর্তন এনেছি এবং সমস্ত চ্যানেলে (স্টেবল, বিটা, ডেভ, ও ক্যানারি) ক্রোম রিলিজ প্রক্রিয়ার সাথে তাল মিলিয়ে এই বাইনারিগুলো বিল্ড করে একটি সর্বজনীনভাবে উপলব্ধ বাকেটে আপলোড করার জন্য পরিকাঠামো স্থাপন করেছি।

‘ক্রোম ফর টেস্টিং’-এর পরিকাঠামোটি স্বয়ং ক্রোমের বাইরেও আকর্ষণীয় সুযোগ উন্মোচন করে। উদাহরণস্বরূপ, ‘ক্রোম ফর টেস্টিং’ পরিকাঠামোর মধ্যে ক্রোমড্রাইভার রিলিজ প্রক্রিয়াকে একীভূত করার মাধ্যমে, পূর্বে উল্লিখিত একটি সামঞ্জস্যপূর্ণ ক্রোম এবং ক্রোমড্রাইভার বাইনারি খুঁজে বের করার অসুবিধা সম্পূর্ণরূপে দূর করা যেতে পারে। ব্যবহারকারীদের এই ভোগান্তি সমাধানের পাশাপাশি, এটি ক্রোমড্রাইভারের রিলিজকে ক্রোমের সাথে সামঞ্জস্যপূর্ণ করে এবং ম্যানুয়াল ক্রোমড্রাইভার রিলিজ প্রক্রিয়াটিকেও দূর করে।