پوشش جامع حوزههای آزمون
این مخزن تستهای تمرینی به صورت سیستماتیک سازماندهی شده است تا بازتابدهنده الزامات ساختاری و حوزههای اصلی مورد انتظار در مصاحبههای توسعه رفتار-محور (BDD) و تستهای خودکار در سطح سازمانی باشد.
دانش سینتکس فنی (۲۰%): بررسی عمیق کلمات کلیدی Gherkin (Given, When, Then, And, But)، انوتیشنهای تعریف Step، مقایسه Regular Expressions در مقابل Cucumber expressions، قراردادهای سازماندهی فایل و پارامترهای پیچیده اجرای خط فرمان.
همکاری و ارتباطات (۲۵%): نوشتن سناریوهای مستحکم و خوانا برای کسبوکار، تسهیل هماهنگی مستمر با ذینفعان، تبدیل نیازمندیهای مبهم به شرایط تست قطعی و استفاده از BDD به عنوان پلی بین تیمهای فنی و غیر فنی.
طراحی و نگهداری تست (۲۵%): طراحی الگوهای تست مقیاسپذیر، مدیریت مجموعههای رگرسیون بزرگ بدون افزایش حجم کد، الگوهای چرخه حیات تست، شیوههای بازسازی کد مستحکم و بهینهسازی بلندمدت سناریوها.
چارچوب و ابزارهای Cucumber (۱۰%): معماری فریمورک، هوکهای ادغام، پلاگینهای فعال، Wrapperهای فریمورکهای شخص ثالث، ویژگیهای پیکربندی و بهترین شیوههای معماری.
اتوماسیون و اجرای تست (۱۰%): اجرای مجموعههای تست خودکار در موتورهای مختلف یکپارچهسازی مداوم (CI)، پیکربندی فریمورکهای سفارشی اتوماسیون تست، اجرای موازی تستها و تحلیل تلهمتری از طریق ابزارهای پیشرفته گزارشدهی.
اصول و شیوههای BDD (۵%): فلسفه توسعه رفتار-محور، جریانهای کاری عملیاتی توسعه تست-محور پذیرش (ATDD) و مقایسه چرخههای BDD در برابر ریتمهای سنتی توسعه تست-محور (TDD).
تعاریف Step و هوکهای Cucumber (۵%): مدیریت چرخه حیات با استفاده از @Before، @After و هوکهای تگدار، تطبیق پارامترهای تعریف Step و جداسازی وضعیتها با استفاده از مدلهای Dependency Injection.
درباره این دوره
موفقیت در مصاحبههای اتوماسیون تست یا مهندسی کیفیت، بسیار فراتر از دانستن نحوه نوشتن مراحل ساده Gherkin است. تیمهای توسعه مدرن به دنبال متخصصانی هستند که بتوانند استراتژیک از BDD برای کاهش ابهامات نیازمندیها استفاده کنند، معماریهای اتوماسیون تست با قابلیت نگهداری بالا طراحی کنند و بتوانند گفتگوهای بینتیمی را با تحلیلگران کسبوکار، مالکان محصول و توسعهدهندگان به خوبی مدیریت کنند. من این مجموعه جامع تستهای تمرینی را ساختهام تا تسلط فنی و وضوح ساختاری مورد نیاز برای درخشش تحت فشار در مصاحبههای فنی زنده را به شما ارائه دهم.
با ۵۵۰ سوال اصلی و با دقت طراحی شده، این مخزن از سوالات سطحی و ساده پرهیز کرده است. در عوض، شما را در سناریوهای واقعی مهندسی قرار میدهم؛ از جمله دیباگ کردن Glue Codeهای خراب، بازسازی فایلهای ویژگی حجیم، بهینهسازی عبارتهای تگ برای خط لولههای CI/CD و رفع نشت وضعیت (State Leakage) بین بلوکهای تست. هر سوال شامل یک تحلیل فنی جامع است که توضیح میدهد چرا گزینه صحیح بر اساس استانداردهای متنباز درست است و چرا گزینههای جایگزین در یک فریمورک تست واقعی شکست میخورند. چه به دنبال کسب جایگاه متخصص اتوماسیون تست باشید، چه برای یک پنل معماری آماده شوید یا مهارتهای عملی خود را تقویت کنید، این منبع تمرینات سختگیرانه لازم برای عبور با اعتماد به نفس از مراحل فنی را در اولین تلاش فراهم میکند.
پیشنمایش نمونه سوالات تمرینی
این سه نمونه سوال را بررسی کنید تا با عمق فنی، چیدمان ساختاری و استاندارد توضیحات ارائه شده در این بانک سوالات جامع آشنا شوید.
سوال ۱: رفع ابهام در تعاریف Step با عبارتهای دادهای پیچیده
یک توسعهدهنده مجموعهای از تستها را اجرا میکند که شامل یک مرحله Gherkin جدید است: Given the user has 5 items worth $50 in their basket. اجرای مرحله بلافاصله با خطای AmbiguousStepDefinitionsException متوقف میشود. بخش تعریف Step شامل دو الگوی تطبیق زیر است:
Pattern A: @Given("the user has {int} items worth ${int} in their basket")
Pattern B: @Given("^the user has (\d+) items worth \$(\d+) in their basket$") مشکل ساختاری که باعث این تداخل در زمان اجرا شده چیست و تمیزترین راه حل برنامهنویسی آن کدام است؟
الف) Cucumber نمیتواند Regular Expressions و Cucumber expressions را به طور همزمان در یک محیط اجرای پروژه تفسیر کند.
ب) علامت دلار در Pattern A با نماد لنگر پایان رشته ($) در regex تداخل دارد و باعث میشود هر دو عبارت به طور یکسان ارزیابی شوند.
ج) موتور اجرا هر دو متد را با یک رشته متنی دقیق تطبیق میدهد زیرا هر دو تعریف به توالیهای کپچر یکسانی برای اعداد صحیح ختم میشوند.
د) فایل تعریف Step فاقد پارامتر اولویت (Priority) صریح در ساختار انوتیشن خود است تا تعیین کند کدام الگو اول اجرا شود.
ه) Pattern B شکست میخورد زیرا بکاسلشهای Escape شده برای اعداد در Wrapperهای رشتهای استاندارد جاوا یا جاوا اسکریپت پشتیبانی نمیشوند.
و) Test Runner نمیتواند عبارتهای دادهای حاوی چندین متغیر را پردازش کند مگر اینکه صراحتاً از طریق فرمت جدول دادهای (Data Table) ارسال شوند.
پاسخ صحیح و توضیح:
پاسخ صحیح: ج
چرا درست است: Cucumber زمانی خطای AmbiguousStepDefinitionsException میدهد که رشته متنی داخل فایل Feature در هنگام اجرا با بیش از یک الگوی تعریف شده تطبیق یابد. در این سناریو، هم Cucumber expression در Pattern A (با استفاده از {int}) و هم Regular Expression استاندارد در Pattern B (با استفاده از (\d+)) دقیقاً همان توالی متنی را پارس میکنند. از آنجایی که Cucumber به طور ذاتی یکی را بر دیگری ترجیح نمیدهد، برای جلوگیری از اثرات جانبی ناخواسته، اجرا را متوقف میکند.
چرا گزینههای دیگر غلط هستند:
گزینه الف غلط است: یک فریمورک اتوماسیون میتواند از هر دو سبک در کلاسهای مختلف تعریف Step بدون خرابی موتور استفاده کند.
گزینه ب غلط است: اگرچه علامت دلار یک کاراکتر خاص است، اما Escape استاندارد از سردرگمی ساختاری جلوگیری میکند و به تنهایی باعث تداخل امضای تطبیق دوگانه نمیشود.
گزینه د غلط است: تعاریف Step در Cucumber فاقد ویژگی "priority" یا "weight" داخلی در انوتیشنهای استاندارد برای دور زدن خطاهای تطبیق مبهم هستند.
گزینه ه غلط است: بکاسلشهای Escape شده، الزامات سینتکس استاندارد برای نمایش تطبیقدهندههای عدد regex در بلوکهای رشتهای چندزبانه هستند.
گزینه و غلط است: خطوط Step کاملاً قادر به کپچر کردن چندین متغیر اولیه در خط هستند بدون اینکه نیاز به مهاجرت به جداول دادهای چندردیفی باشد.
سوال ۲: ارزیابی پیشرفته چرخه حیات Hook و کنترل وضعیت
یک مهندس اتوماسیون چندین هوک چرخه حیات را در یک کلاس اجرای Step مشترک برای مدیریت بازنشانی وضعیتها پیکربندی میکند. متدها به صورت زیر انوتیشن شدهاند:
Method 1: @Before(order = 2)
Method 2: @Before(order = 1)
Method 3: @After(order = 2)
Method 4: @After(order = 1) با فرض اینکه یک سناریو بدون کراش متوقف شود، این چهار هوک با چه ترتیب متوالی دقیقی نسبت به اجرای گامهای اصلی اجرا میشوند؟
الف) متد ۲ $\rightarrow$ متد ۱ $\rightarrow$ [اجرای گامهای سناریو] $\rightarrow$ متد ۴ $\rightarrow$ متد ۳
ب) متد ۱ $\rightarrow$ متد ۲ $\rightarrow$ [اجرای گامهای سناریو] $\rightarrow$ متد ۳ $\rightarrow$ متد ۴
ج) متد ۱ $\rightarrow$ متد ۲ $\rightarrow$ [اجرای گامهای سناریو] $\rightarrow$ متد ۴ $\rightarrow$ متد ۳
د) متد ۲ $\rightarrow$ متد ۱ $\rightarrow$ [اجرای گامهای سناریو] $\rightarrow$ متد ۳ $\rightarrow$ متد ۴
ه) تمام هوکهای @Before به طور همزمان از طریق تردهای موازی پسزمینه اجرا میشوند، سپس گامها و در نهایت تمام هوکهای @After.
و) متد ۱ $\rightarrow$ متد ۲ $\rightarrow$ [اجرای گامهای سناریو] $\rightarrow$ هر دو هوک @After بر اساس تنظیمات Thread Safety سیستم به طور همزمان اجرا میشوند.
پاسخ صحیح و توضیح:
پاسخ صحیح: د
چرا درست است: در Cucumber، هوکهای @Before به ترتیب صعودی بر اساس مقدار عدد تعیین شده اجرا میشوند (کمترین عدد اول اجرا میشود). در مقابل، هوکهای @After به ترتیب نزولی اجرا میشوند (بزرگترین عدد اول اجرا میشود) تا یک الگوی استاندارد "Last In, First Out" برای پاکسازی ایجاد کنند. بنابراین، متد ۲ (order = 1) قبل از متد ۱ (order = 2) اجرا میشود. پس از اتمام تعاریف Step، متد ۳ (order = 2) قبل از متد ۴ (order = 1) اجرا میشود.
چرا گزینههای دیگر غلط هستند:
گزینه الف غلط است: این گزینه به اشتباه ارزیابی نزولی را برای فاز آمادهسازی اعمال کرده و ترتیب ۲ را قبل از ۱ اجرا میکند.
گزینه ب غلط است: این گزینه جریان صعودی را برای هر دو مرحله آمادهسازی و پاکسازی پیشنهاد میدهد که وابستگیهای استاندارد پاکسازی را مختل میکند.
گزینه ج غلط است: این توالی هر دو چرخه را به طور نادرست مدیریت کرده و قوانین چارچوب ترتیببندی داخلی موتور را نقض میکند.
گزینه ه غلط است: هوکها در یک بلوک سناریوی واحد، به صورت متوالی در یک کانتکست تک-ترد اجرا میشوند تا از Race Conditionهای بحرانی در وضعیت جلوگیری شود.
گزینه و غلط است: بلوکهای پاکسازی (Teardown) کاملاً قطعی هستند و به صورت متوالی اجرا میشوند، نه به صورت تردهای موازی پیشبینیناپذیر.
سوال ۳: اعتبارسنجی داده-محور از طریق Scenario Outlines در مقابل Data Tables
یک تحلیلگر تست نیاز دارد رابط پرداخت یک فروشگاه آنلاین را در مقابل ۱۵۰ پیکربندی مختلف کشور-واحد پولی اعتبارسنجی کند. به جای کپی کردن یک سناریوی تکی ۱۵۰ بار، او بین استفاده از Scenario Outline با بلوک Examples یا یک Scenario استاندارد واحد با استفاده از Gherkin DataTable چندردیفی تصمیم میگیرد. تفاوت عملیاتی بین این دو الگوی طراحی چیست؟
الف) یک Scenario Outline با هر ردیف داده به عنوان یک فراخوانی تست کاملاً مستقل با اجرای مجزای هوکها برخورد میکند، در حالی که یک DataTable کل آرایه را در یک کانتکست Step واحد اجرا میکند.
ب) DataTableها در زمان اجرا به طور خودکار به فرمت اجرای موازی تبدیل میشوند، در حالی که بلوکهای Examples باید به صورت متوالی اجرا شوند.
ج) اگر ردیف ۳ شکست بخورد، Scenario Outline کل اجرای Feature را متوقف میکند، در حالی که DataTable خطاها را نادیده گرفته و موارد باقیمانده را اجرا میکند.
د) جداول Examples دقیقاً محدود به کپچر کردن رشتههای متنی الفبایی-عددی هستند، در حالی که DataTableها میتوانند Payloadهای JSON چندلایه را مستقیماً پارس کنند.
ه) ساختار بلوک Examples به یک اتصال فایل خارجی مانند Excel نیاز دارد، در حالی که DataTable همیشه به صورت Inline کدنویسی میشود.
و) Scenario Outlines برای هر ردیف داده منحصر به فرد موجود در بلوک معیارهای تست، به یک الگوی تعریف Step مجزا نیاز دارند.
پاسخ صحیح و توضیح:
پاسخ صحیح: الف
چرا درست است: این یک تفاوت بنیادی در چرخه حیات است. هنگام استفاده از Scenario Outline با بلوک Examples، موتور Cucumber کل چرخه حیات سناریو (شامل اجرای تمام هوکهای @Before و @After) را برای هر ردیف داده به طور مجزا ایجاد، اجرا و تخریب میکند. هنگام استفاده از DataTable در یک Step استاندارد، سناریو دقیقاً یک بار اجرا میشود و مجموعه دادهها کاملاً در داخل همان متد تعریف Step مدیریت میشوند.
چرا گزینههای دیگر غلط هستند:
گزینه ب غلط است: گزینههای موازیسازی در سطح Runner پیکربندی میشوند، نه با تغییر ساختارهای جدول در یک فایل Feature.
گزینه ج غلط است: اگر یک مورد در DataTable بدون Wrap کردن صریح خطا شکست بخورد، آن سناریوی واحد فوراً متوقف میشود. در مقابل، ردیفهای بعدی در Scenario Outline به طور مستقل به اجرا ادامه میدهند.
گزینه د غلط است: هر دو ساختار رشتههای جدولی ساده را میپذیرند که سپس توسط فریمورک به انواع دادههای برنامهنویسی خاص تبدیل میشوند.
گزینه ه غلط است: جداول Examples به صورت بومی و در خط (Inline) در زیر گامهای outline با استفاده از جداکنندههای استاندارد Pipe تعریف میشوند.
گزینه و غلط است: یک Scenario Outline به یک مجموعه واحد از تعاریف Step متصل میشود و مقادیر را به صورت پویا با استفاده از هدرهای جایگزین مانند <variableName> تزریق میکند.
انتظارات از دوره
به آزمونهای سوالات مصاحبهای خوش آمدید تا شما را برای ارزیابی سوالات مصاحبه Cucumber آماده کنیم.
میتوانید هر تعداد بار که بخواهید در آزمونها شرکت کنید.
این یک بانک سوالات اصلی و بسیار گسترده است.
در صورت داشتن سوال، از پشتیبانی مدرسان بهرهمند میشوید.
هر سوال دارای یک توضیح دقیق است.
با اپلیکیشن Udemy کاملاً با موبایل سازگار است.
امیدواریم تا الان متقاعد شده باشید! سوالات بسیار بیشتری در داخل دوره وجود دارد.
Interview Questions Tests
مربی در Udemy
نمایش نظرات