ক্রোমিয়াম ক্রনিকল # 2: ফাইটিং টেস্ট ফ্ল্যাকিনেস

পর্ব 2: মিউনিখে ভাসিলি দ্বারা (মে, 2019)
আগের পর্বগুলো

ফ্ল্যাকি পরীক্ষাগুলি Chrome-এ একটি সাধারণ সমস্যা। তারা অন্যান্য বিকাশকারীদের উত্পাদনশীলতাকে প্রভাবিত করে এবং সময়ের সাথে সাথে অক্ষম হয়ে যায়। অক্ষম পরীক্ষা মানে পরীক্ষার কভারেজ হ্রাস করা।

ট্রাইজিং স্টেজ

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

ডিবাগিং স্টেজ

ফ্লেকি পরীক্ষা ঠিক করার জন্য বেশ কয়েকটি কমান্ড-লাইন পতাকা কার্যকর। উদাহরণস্বরূপ, --enable-pixel-output-in-tests প্রকৃত ব্রাউজার UI রেন্ডার করবে।

ডিবাগার যদি ফ্ল্যাকিনেস অদৃশ্য করে দেয় তাহলে ফলব্যাক টুল আছে । এটা সম্ভব যে, ডিবাগারের অধীনে, পরীক্ষাটি কখনই অস্পষ্ট হয় না। সেই ক্ষেত্রে, লগ স্টেটমেন্ট বা base::debug::StackTrace সহজ হতে পারে।

করবেন না

উৎপাদন কোডে বাগ ছাড়াও EXPECT__* ব্যর্থতার সাধারণ কারণগুলি মনে রাখবেন:

  • ভুল প্রত্যাশা (যেমন সুরক্ষিত পৃষ্ঠা মানে HTTPS; পরিবর্তে এটি একটি স্থানীয় হোস্ট হতে পারে)।
  • পরীক্ষার কারণে রেস পরিস্থিতি সঠিক ইভেন্টের জন্য অপেক্ষা করছে না।

[বাস্তবায়ন পরীক্ষা করবেন না [বাস্তবায়ন নয়] কিন্তু আচরণ।

// It takes 2 round trips between the UI and the background thread to complete.
SyncWithTheStore();
SyncWithTheStore();
CheckTheStore();

দুই রাউন্ড ট্রিপ ভবিষ্যতে তিনটিতে পরিবর্তিত হতে পারে, যা পরীক্ষাকে ফ্লেকি করে তুলবে। যাইহোক, শুধুমাত্র দোকান রাষ্ট্র প্রাসঙ্গিক. পরিবর্তে, দোকানের জন্য একটি পর্যবেক্ষক ব্যবহার করুন.

করবেন না

নিম্নলিখিতগুলির মতো সাধারণ নিদর্শনগুলি থেকে সাবধান থাকুন:

Submit TestPasswordForm();
// Wait until things settle down.
RunLoop().RunUntilIdle();
CheckCredentialPromptVisible();

ব্রাউজার পরীক্ষা থেকে উপরের মত একটি স্নিপেট প্রায় নিশ্চিতভাবে ভুল। কিছু UI প্রদর্শিত হওয়ার আগে বিভিন্ন প্রক্রিয়া এবং থ্রেডে অনেক ঘটনা ঘটতে হবে।

করবেন

নিম্নলিখিত একটি সঠিক সমাধান:

SubmitTestPasswordForm();
WaitUntilCredentialPromptVisible();

WaitUntilCredentialPromptVisible() আসলে UI চেক করে না এই ধারণার অধীনে উপরের সমাধানটি সঠিক। ব্রাউজার পরীক্ষাগুলি "ফোকাস হারিয়ে গেছে" বা "উইন্ডো ফরগ্রাউন্ড হয়ে গেছে" এর মতো বাহ্যিক UI ইভেন্টের উপর নির্ভর করবে না । এমন একটি বাস্তবায়ন কল্পনা করুন যেখানে ব্রাউজার উইন্ডো সক্রিয় থাকলেই প্রম্পট প্রদর্শিত হয়। এই ধরনের একটি বাস্তবায়ন সঠিক হবে; যাইহোক, প্রকৃত উইন্ডোর জন্য পরীক্ষা করা পরীক্ষাকে ফ্লেকি করে তোলে।

পোস্ট-ফিক্স স্টেজ

একবার পরীক্ষা ঠিক হয়ে গেলে, স্থানীয়ভাবে কয়েকশ বার চালান। ফ্লাকনেস পোর্টালে নজর রাখুন।