تصور کنید در اتاق مصاحبه نشستهاید؛ رزومهتان بینقص است، اما وقتی مصاحبهکننده میپرسد: «تفاوت دقیق Severity و Priority در یک باگ چیست؟» یا «چگونه تستهای خود را وقتی زمان کافی ندارید اولویتبندی میکنید؟»، ناگهان ذهنتان خالی میشود. این کابوس هر متخصص QA یا تست نرمافزار است. موفقیت در مصاحبههای استخدامی تضمین کیفیت (QA) تنها به دانش فنی وابسته نیست، بلکه به نحوه بیان تجربه و درک عمیق مفاهیم بستگی دارد. در این راهنما، ما نه تنها ۳۰ سوال پرتکرار و حیاتی مصاحبههای QA را گردآوری کردهایم، بلکه پاسخهایی را تدوین کردهایم که نشاندهنده تخصص و تجربه عملی (Experience & Expertise) شما باشد تا بتوانید با اعتمادبهنفس کامل صندلی مصاحبه را ترک کنید.
بخش اول: مفاهیم پایه و بنیادین تست نرمافزار (مناسب برای جونیورها)
در ابتدای مصاحبه، معمولاً سوالات برای سنجش دانش تئوریک و درک شما از چرخهی حیات نرمافزار پرسیده میشود. پاسخهای شما باید دقیق و بدون حاشیه باشند.
۱. تفاوت بین QA (تضمین کیفیت) و QC (کنترل کیفیت) چیست؟
بسیاری این دو را اشتباه میگیرند. QA (Quality Assurance) فرآیندمحور است و بر پیشگیری از نقص تمرکز دارد (مثلاً بازنگری مستندات یا تعیین استانداردها). اما QC (Quality Control) محصولمحور است و بر شناسایی نقصها در محصول نهایی تمرکز دارد (اجرای تستها).
- پاسخ طلایی: QA یعنی “آیا ما محصول را با روش درست میسازیم؟” اما QC یعنی “آیا محصول درستی ساختهایم؟”
۲. چرخه حیات تست نرمافزار (STLC) را توضیح دهید.
این سوال برای درک متدولوژی کاری شما حیاتی است. مراحل عبارتند از:
- تحلیل نیازمندیها (Requirement Analysis)
- برنامهریزی تست (Test Planning)
- طراحی تستکیس (Test Case Design)
- راهاندازی محیط تست (Environment Setup)
- اجرای تست (Test Execution)
- بستن چرخه تست (Test Closure)
۳. تفاوت بین Verification و Validation چیست؟
- Verification (تایید): ارزیابی محصولات کاری در یک مرحله از توسعه (مثل بازبینی کد یا مستندات) تا مطمئن شویم با استانداردها مطابقت دارند. (Are we building the product right?)
- Validation (صحیحسنجی): ارزیابی محصول نهایی برای اطمینان از اینکه نیازهای واقعی کاربر را برآورده میکند. (Are we building the right product?)
۴. تست رگرسیون (Regression Testing) چیست و چه زمانی انجام میشود؟
تست رگرسیون یعنی اجرای مجدد تستهای قبلی برای اطمینان از اینکه تغییرات جدید در کد (مثل رفع باگ یا افزودن فیچر جدید) باعث خرابی بخشهای سالم قبلی نشده است. این تست معمولاً پس از هر تغییر کد یا بیلد جدید انجام میشود. [پیشنهاد لینک داخلی: ابزارهای اتومیشن برای تست رگرسیون]
۵. تفاوت بین Smoke Test و Sanity Test چیست؟
- Smoke Test: تست اولیه و سطحی روی بیلد جدید تا مطمئن شویم عملکردهای حیاتی کار میکنند (تست پایداری بیلد). اگر این تست پاس نشود، تیم QA بیلد را رد میکند.
- Sanity Test: زیرمجموعهای از تست رگرسیون است که وقتی تغییرات جزئی در کد داده میشود، انجام میگیرد تا مطمئن شویم آن تغییرات خاص درست کار میکنند (تست منطق عملکرد).
۶. باگ (Bug)، نقص (Defect) و خطا (Error) چه تفاوتی دارند؟
- Error: اشتباه انسانی توسط برنامهنویس در کد (Syntax یا Logic).
- Defect/Bug: انحراف از عملکرد مورد انتظار که توسط تستر در نرمافزار پیدا میشود (ناشی از Error).
- Failure: زمانی که نرمافزار در محیط عملیاتی (نزد کاربر نهایی) نتواند کارش را انجام دهد.
۷. تست جعبه سیاه (Black Box) و جعبه سفید (White Box) را مقایسه کنید.
- جعبه سیاه: تستر هیچ دانشی از ساختار داخلی کد ندارد و فقط ورودی و خروجی را بررسی میکند (دیدگاه کاربر).
- جعبه سفید: تستر به ساختار کد، الگوریتمها و منطق داخلی دسترسی دارد (معمولاً توسط توسعهدهندگان انجام میشود).
۸. تست اکتشافی (Exploratory Testing) چیست؟
تستی است که در آن طراحی تست و اجرا همزمان انجام میشود. تستر بر اساس تجربه، خلاقیت و شهود خود سیستم را “کشف” میکند تا باگهایی را بیابد که در تستکیسهای از پیش نوشته شده پوشش داده نشدهاند.
۹. چه زمانی باید تست را متوقف کنیم؟ (Exit Criteria)
تست هیچگاه تمام نمیشود، اما متوقف میشود زمانی که:
- زمانبندی پروژه به پایان رسیده باشد.
- بودجه تست تمام شده باشد.
- تمام تستکیسهای با اولویت بالا پاس شده باشند.
- نرخ کشف باگ به زیر سطح تعیین شده برسد.
- مدیر پروژه دستور توقف دهد.
۱۰. تفاوت بین Test Plan و Test Strategy چیست؟
- Test Strategy: سندی سطح بالا که رویکرد کلی تست در سازمان را مشخص میکند و معمولاً ثابت است (توسط مدیر تست نوشته میشود).
- Test Plan: سندی که جزئیات اجرایی تست برای یک پروژه خاص را تعیین میکند (چه کسی، چه زمانی، چه چیزی را تست میکند) و ممکن است تغییر کند.
بخش دوم: سوالات سناریو محور و تحلیلی (مناسب برای سطح متوسط)
در این بخش، مصاحبهکننده میخواهد توانایی حل مسئله شما را بسنجد. اینجا جایی است که باید تجربه (E-E-A-T) خود را نشان دهید.
۱۱. اگر یک باگ پیدا کنید و برنامهنویس آن را قبول نکند، چه میکنید؟
این یک سوال رفتاری بسیار مهم است.پاسخ:
- ابتدا خودم دوباره باگ را بازتولید (Reproduce) میکنم تا مطمئن شوم.
- مستندات و نیازمندیها را چک میکنم تا مطمئن شوم رفتار نرمافزار اشتباه است.
- با برنامهنویس با لحنی تعاملی صحبت میکنم و اسکرینشات یا لاگها را نشان میدهم.
- اگر هنوز اختلاف نظر بود، مسئله را به مدیر محصول یا مدیر تیم ارجاع میدهم تا بر اساس بیزینس تصمیم بگیرند.
۱۲. تفاوت Severity و Priority در باگها چیست؟ (با مثال)
- Severity (شدت): میزان تاثیر فنی باگ بر سیستم.
- Priority (اولویت): میزان فوریت رفع باگ از نظر بیزینس.
- مثال (High Severity, Low Priority): اپلیکیشن روی یک سیستم عامل قدیمی که دیگر ساپورت نمیشود، کرش میکند.
- مثال (Low Severity, High Priority): لوگوی شرکت در صفحه اصلی اشتباه تایپ شده است. عملکرد مختل نمیشود اما برای اعتبار برند فاجعه است.
۱۳. چگونه تستکیسها را برای یک فرم لاگین ساده مینویسید؟
هدف این سوال بررسی پوشش تست (Test Coverage) شماست. باید به موارد زیر اشاره کنید:
- نام کاربری و رمز عبور صحیح.
- نام کاربری صحیح و رمز عبور غلط.
- نام کاربری غلط و رمز عبور صحیح.
- فیلدهای خالی.
- تزریق SQL (تست امنیتی).
- ریکاوری رمز عبور.
- دکمه Enter کیبورد کار میکند؟
- محدودیت تعداد تلاشهای ناموفق.
۱۴. اگر زمان کافی برای اجرای تمام تستها نداشته باشید، چه میکنید؟
پاسخ: از روش “Risk-Based Testing” استفاده میکنم. تستها را اولویتبندی میکنم و ابتدا تستهایی را اجرا میکنم که:
- روی عملکردهای حیاتی و اصلی سیستم (Critical Path) تمرکز دارند.
- روی بخشهایی که اخیراً تغییر کد داشتهاند تمرکز دارند.
- بخشهایی که سابقه باگخیز بودن دارند.
۱۵. چرخه زندگی باگ (Bug Life Cycle) را توضیح دهید.
مراحل وضعیت یک باگ:
- New: باگ جدید ثبت میشود.
- Assigned: به توسعهدهنده ارجاع میشود.
- Open: توسعهدهنده در حال بررسی است.
- Fixed: توسعهدهنده باگ را رفع کرده است.
- Retest: تستر مجدداً بررسی میکند.
- Verified/Closed: اگر رفع شده باشد، بسته میشود.
- Reopen: اگر رفع نشده باشد، دوباره باز میشود.(حالتهای دیگر: Deferred, Duplicate, Rejected).
۱۶. تست API چیست و چه کدهایی در پاسخهای HTTP مهم هستند؟
تست لایه میانی نرمافزار بدون رابط کاربری. کدهای مهم:
- ۲۰۰: OK (موفقیتآمیز)
- ۲۰۱: Created (ایجاد موفق منبع)
- ۴۰۰: Bad Request (درخواست اشتباه)
- ۴۰۱: Unauthorized (عدم دسترسی احراز هویت)
- ۴۰۳: Forbidden (ممنوعیت دسترسی)
- ۴۰۴: Not Found (پیدا نشد)
- ۵۰۰: Internal Server Error (خطای سمت سرور)
۱۷. مولفههای یک گزارش باگ (Bug Report) خوب چیست؟
یک گزارش باگ باید “قابل بازتولید” باشد. شامل:
- عنوان خلاصه و گویا (Title)
- توضیحات (Description)
- مراحل بازتولید (Steps to Reproduce)
- نتیجه مورد انتظار (Expected Result)
- نتیجه واقعی (Actual Result)
- محیط تست (Environment)
- پیوستها (Screenshots/Logs/Videos)
- شدت و اولویت.
۱۸. تست دادهمحور (Data Driven Testing) چیست؟
روشی در اتومیشن تست است که در آن اسکریپت تست جدا از دادههای تست است. دادهها از فایلهای خارجی (مثل Excel, CSV, XML) خوانده میشوند تا یک سناریو با چندین مجموعه داده مختلف تست شود.
۱۹. چه تفاوتی بین Load Testing و Stress Testing وجود دارد؟
- Load Testing: بررسی رفتار سیستم تحت بار مورد انتظار یا نرمال (مثلاً ۱۰۰۰ کاربر همزمان).
- Stress Testing: بررسی رفتار سیستم فراتر از حد نرمال تا نقطه شکست (Break Point) را پیدا کنیم (مثلاً ۵۰۰۰ کاربر همزمان برای دیدن نحوه کرش کردن سیستم).
۲۰. چگونه مطمئن میشوید که تستکیسهای شما تمام نیازمندیها را پوشش دادهاند؟
با استفاده از ماتریس ردیابی نیازمندیها (RTM – Requirement Traceability Matrix). این سندی است که هر نیازمندی بیزینس را به تستکیسهای مربوطه متصل میکند تا مطمئن شویم هیچ نیازمندی بدون تست نمانده است.
بخش سوم: سوالات تخصصی و اتومیشن (مناسب برای سینیورها)
در این سطح، انتظار میرود شما دیدگاهی فراتر از اجرای دستی تست داشته باشید و با ابزارها و استراتژیهای مدرن آشنا باشید. [پیشنهاد لینک داخلی: بهترین ابزارهای تست اتومیشن در سال ۲۰۲۴]
۲۱. هرم تست (Test Pyramid) چیست؟
مدلی است که استراتژی بهینه تست را نشان میدهد:
- لایه پایین (قاعده): Unit Tests (تعداد زیاد، سریع، ارزان).
- لایه میانی: Integration/API Tests.
- لایه بالا (راس): UI/E2E Tests (تعداد کم، کند، گران).نکته: باید بیشتر تمرکز روی Unit و Integration باشد تا UI.
۲۲. در سلنیوم (Selenium)، تفاوت بین Assert و Verify چیست؟
- Assert: اگر شرط تست شکست بخورد، اجرای تست همانجا متوقف میشود (Hard Assertion).
- Verify: اگر شرط شکست بخورد، تست لاگ میاندازد اما ادامه اجرای اسکریپت متوقف نمیشود (Soft Assertion).
۲۳. Page Object Model (POM) چیست و چه مزیتی دارد؟
یک الگوی طراحی (Design Pattern) در اتومیشن تست است که برای هر صفحه وب، یک کلاس جداگانه میسازیم.
- مزیت: اگر UI تغییر کند (مثلاً ID یک دکمه عوض شود)، فقط باید کد همان کلاس صفحه را تغییر دهید، نه تمام تستکیسها را. این باعث نگهداری آسانتر کد (Maintainability) میشود.
۲۴. چگونه المانهای پویا (Dynamic Elements) را در اتومیشن مدیریت میکنید؟
المانهایی که ID یا خصوصیاتشان با هر بار ریلود تغییر میکند. راهکارها:
- استفاده از XPath نسبی (Relative XPath).
- استفاده از توابع
contains(),starts-with(). - استفاده از CSS Selectors هوشمند.
- انتخاب بر اساس ارتباط با المانهای ثابت اطراف (Sibling, Parent).
۲۵. Continuous Integration (CI) و نقش QA در آن چیست؟
CI فرآیندی است که در آن توسعهدهندگان کد خود را مداوم در یک ریپازیتوری مشترک ادغام میکنند. نقش QA این است که تستهای خودکار (معمولاً Smoke و Regression) را در پایپلاین CI (مثل Jenkins یا GitLab CI) ادغام کند تا به محض کامیت کد جدید، تستها اجرا شده و بازخورد سریع داده شود.
۲۶. تفاوت TDD و BDD چیست؟
- TDD (Test Driven Development): ابتدا تست نوشته میشود، سپس کد توسعه داده میشود تا تست پاس شود (تمرکز بر نحوه پیادهسازی – مناسب دولوپرها).
- BDD (Behavior Driven Development): توصیف رفتار سیستم به زبان ساده (Gherkin: Given/When/Then) قبل از کدنویسی (تمرکز بر رفتار سیستم – تعامل بین QA، دولوپر و بیزینس).
۲۷. چگونه تستهای خودکار ناپایدار (Flaky Tests) را مدیریت میکنید؟
تستهایی که گاهی پاس و گاهی فیل میشوند.
- بررسی مشکلات شبکه یا سرور.
- استفاده صحیح از Waitها (Explicit Waits به جای Thread.sleep).
- بررسی وابستگی تستها به یکدیگر.
- ایزوله کردن تستهای Flaky و اصلاح آنها قبل از بازگرداندن به پایپلاین اصلی.
۲۸. مفهوم Shift Left در تست چیست؟
رویکردی که در آن فعالیتهای تست را به مراحل اولیهی چرخه توسعه منتقل میکنیم (به سمت چپ نمودار زمان). یعنی تسترها در جلسات تحلیل نیازمندی و طراحی حضور دارند تا از بروز باگ در مراحل اولیه جلوگیری کنند، نه اینکه فقط در پایان کار تست کنند.
۲۹. تست API با ابزار Postman؛ چگونه تستها را اتوماتیک میکنید؟
با استفاده از بخش “Tests” در Postman و نوشتن اسکریپتهای JavaScript (مثلاً pm.response.to.have.status(200)). همچنین استفاده از Collection Runner یا ابزار Newman برای اجرای دستهای تستها در خط فرمان.
۳۰. چالشبرانگیزترین باگی که پیدا کردید چه بوده است؟
این سوال برای سنجش اشتیاق و عمق فنی شماست.
- نحوه پاسخ: از متد STAR استفاده کنید (Situation, Task, Action, Result). یک باگ پیچیده (مثلاً مربوط به Race Condition، Memory Leak یا باگی که فقط در شرایط خاصی رخ میداد) را تعریف کنید و توضیح دهید چطور با تحلیل لاگها و آزمون و خطا ریشه آن را یافتید.
سوالات متداول (FAQ)
نتیجهگیری
موفقیت در مصاحبههای QA تنها به حفظ کردن تعاریف بستگی ندارد؛ بلکه به نشان دادن طرز تفکر تحلیلی و رویکرد شما در مواجهه با چالشها وابسته است. کارفرمایان به دنبال فردی هستند که نه تنها باگ پیدا کند، بلکه کیفیت کلی محصول را ارتقا دهد و با تیم تعامل سازنده داشته باشد.
این ۳۰ سوال، ستون فقرات اکثر مصاحبههای فنی هستند. پیشنهاد میکنیم پاسخها را با تجربیات واقعی خودتان ترکیب کنید و قبل از مصاحبه، چندین بار آنها را مرور کنید. دنیای تست نرمافزار وسیع است؛ همیشه کنجکاو بمانید و یادگیری ابزارهای جدید را متوقف نکنید. آمادهاید تا شغل رویایی خود را به دست آورید؟ همین حالا رزومهتان را بازبینی کنید!

