رفتن به محتوای اصلی

تست Shift-Left چیست؟ نقشه کیفیت از Discovery تا CI

Shift-left Testing را با Requirement، Testability، Small و Contract Test، Quality Gate، امنیت، Shift-right و نقشه اجرایی ۳۰/۶۰/۹۰ روزه یاد بگیرید.

محمد عسکری ۱۴ دقیقه مطالعه به‌روزرسانی
فهرست مطالب
  1. Shift-left Testing چیست؟
  2. چه چیزهایی Shift-left نیستند؟
  3. افسانهٔ «هزینه رفع باگ ۱۰۰ برابر»
  4. مدل چهار سؤال برای هر ریسک
  5. Shift-left و Shift-right؛ یک حلقه، نه دو اردوگاه
  6. لایه اول: Shift-left در Discovery و Requirement
  7. از Feature به Example برسید
  8. Example mapping کوچک
  9. Non-functional requirement را زود Operationalize کنید
  10. لایه دوم: Shift-left در طراحی و معماری
  11. Testability را به‌عنوان Requirement طراحی کنید
  12. Threat model پیش از SAST
  13. Failure-first design review
  14. لایه سوم: Shift-left هنگام کدنویسی
  15. Small test؛ کوچک از نظر Scope و Dependency
  16. Static feedback
  17. Review برای Risk، نه Style دستی
  18. لایه چهارم: Pull Request و Component boundary
  19. تعادل Small، Medium و Large test
  20. Shift-left برای Performance و Reliability
  21. Shift-left برای Accessibility و UX
  22. Whole-team quality؛ QA به Gate تبدیل نشود
  23. طراحی Quality gate قابل‌اعتماد
  24. مثال End-to-end: Refund در فروشگاه ایرانی
  25. Discovery
  26. Design
  27. Code و PR
  28. Pre-production
  29. Production guardrail
  30. محدودیت‌های ایران و تیم‌های توزیع‌شده
  31. نقشه ۳۰/۶۰/۹۰ روزه Shift-left
  32. روز ۰ تا ۳۰: Baseline و یک Risk
  33. روز ۳۱ تا ۶۰: PR lane و Testability
  34. روز ۶۱ تا ۹۰: Loop و مقیاس
  35. متریک‌های Shift-left که تصمیم می‌سازند
  36. اشتباه‌های رایج در اجرای Shift-left
  37. چک‌لیست نهایی Shift-left Testing
  38. سوالات متداول Shift-left Testing
  39. تست Shift-left به زبان ساده چیست؟
  40. تفاوت Shift-left با Continuous Testing چیست؟
  41. آیا Shift-left یعنی تستر دیگر لازم نیست؟
  42. آیا Shift-left تست‌های E2E و UAT را حذف می‌کند؟
  43. از کجا اجرای Shift-left را شروع کنیم؟
  44. منابع و یادداشت بازبینی
تست Shift-Left چیست؟ نقشه کیفیت از Discovery تا CI

Shift-left یعنی تست را به ابتدای پروژه «هل بدهیم»؟ نه دقیقاً. پیش از وجود Build نمی‌توان Latency واقعی زیر بار یا رفتار درگاه پرداخت را سنجید؛ پس انتقال کورکورانهٔ همه‌چیز به چپ فقط Test theater می‌سازد. ایدهٔ مفید این است: هر ریسک را در زودترین نقطه‌ای که Evidence معتبر و اقتصادی ممکن است، بررسی کنیم و نتیجهٔ Production را دوباره به طراحی و کد برگردانیم.

تست Shift-left یک Strategy برای کوتاه‌کردن فاصلهٔ «تصمیم یا تغییر» تا «بازخورد قابل‌اقدام» است. این بازخورد می‌تواند پیش از کدنویسی از Example و Design review بیاید، هنگام کدنویسی از Small test و Static analysis، در Pull request از Contract/Component test و پس از استقرار از Canary و Observability. Shift-left جای Shift-right، UAT، تست سیستم یا پژوهش کاربر را نمی‌گیرد.

Shift-left Testing چیست؟

روی یک خط زمانی ساده، سمت چپ Requirements/Design/Code و سمت راست Build/Release/Production است. Shift-left می‌پرسد:

  • آیا ابهام را پیش از تبدیل‌شدن به کد می‌توان با Example آشکار کرد؟
  • آیا Failure را به‌جای E2E در Unit/Component/Contract ارزان‌تر و دقیق‌تر می‌توان دید؟
  • آیا Security، Performance و Accessibility requirement پیش از Release قابل‌آزمون‌اند؟
  • آیا کد برای مشاهده، کنترل زمان، Inject dependency و ساخت دادهٔ تست Testable است؟
  • آیا Pull request در چند دقیقه بازخورد معنادار می‌گیرد یا صف طولانی Pipeline آن را بی‌اثر کرده است؟
  • کدام Unknown فقط با ترافیک/دادهٔ واقعی دیده می‌شود و Guardrail راست می‌خواهد؟

پس «چپ» یک مکان ثابت یا فاز جدید نیست؛ نزدیک‌کردن Evidence به تصمیم است. مقالهٔ تست مداوم در CI/CD معماری Lane و Gate را توضیح می‌دهد؛ این مقاله مالک Intentِ Strategy و پیاده‌سازی Shift-left است.

چه چیزهایی Shift-left نیستند؟

  • نوشتن Test caseهای زیاد پیش از فهم محصول؛
  • انتقال مسئولیت QA به Developer و حذف تخصص تست؛
  • اجرای تمام E2Eها روی هر Commit؛
  • جایگزین‌کردن Coverage با Confidence؛
  • افزودن SAST/SCA بدون Owner و مدل تهدید؛
  • تبدیل Definition of Done به Checklist حجیم سازمانی؛
  • حذف UAT، Usability، Performance، Accessibility یا Production monitoring؛
  • گذاشتن QA به‌عنوان Gate انسانی در ابتدای هر Ticket؛
  • استفاده از AI برای تولید انبوه Test بدون Oracle و Review.

Shift-left خوب کار را زودتر متوقف نمی‌کند؛ یادگیری اشتباه را زودتر متوقف می‌کند.

افسانهٔ «هزینه رفع باگ ۱۰۰ برابر»

رفع یک ابهام در Example معمولاً از بازطراحی پس از Release ساده‌تر است، اما ضریب جهانی ۱۰× یا ۱۰۰× برای همهٔ سازمان‌ها، Defectها و معماری‌ها وجود ندارد. هزینه به Reach، Coupling، Migration، Incident، Support، Opportunity cost و قابلیت Rollback بستگی دارد.

به‌جای تکرار ضریب، دادهٔ خود را بسنجید:

  • زمان از ایجاد Change تا اولین Failure قابل‌اقدام؛
  • زمان Rework برحسب مرحلهٔ کشف؛
  • Change failure rate و Recovery time؛
  • Defect/incidentهای تکراری با Root cause مشترک؛
  • Gate wait time، Flaky rate و Bypass؛
  • اثر مشتری/SLO، نه فقط تعداد Bug.

مدل چهار سؤال برای هر ریسک

سؤالمثال پرداخت
زودترین Evidence معتبر کجاست؟Example mapping برای Duplicate callback پیش از کد
کوچک‌ترین Test قابل‌اعتماد چیست؟Component test برای Idempotency و State transition
آخرین زمان قابل‌قبول بازخورد چیست؟پیش از Merge برای Invariant مالی؛ پیش از Rollout برای Capacity
چه Guardrail راست لازم است؟Canary، duplicate-effect alert و Feature kill switch

خروجی یک Risk باید یک زنجیرهٔ Evidence باشد، نه یک Test واحد. مثال: Requirement example → Unit/Property → Contract → System journey → Canary signal.

Shift-left و Shift-right؛ یک حلقه، نه دو اردوگاه

سمتهدفنمونه
Leftپیشگیری و تشخیص نزدیک به ChangeExample، review، unit، contract، static analysis
Pipelineتجمیع Evidence روی Artifact واقعیcomponent، migration، system، security، performance
Rightکاهش Blast radius و یادگیری از واقعیتcanary، SLO، trace، synthetic، rollback
Feedback loopبازگرداندن Signal به Design/Code/Testpostmortem → invariant → regression/guardrail

Shift-right نام دیگری برای «تست دیرهنگام آبشاری» نیست. بعضی Signalها فقط در Production یا محیط نزدیک آن معتبرند: توزیع واقعی داده، رفتار Dependency، Configuration ترکیبی و الگوی ترافیک. Google SRE، Canary را استقرار محدود و زمان‌دارِ Change و ارزیابی آن در برابر Control تعریف می‌کند؛ هدف کاهش اثر Unknownهای باقی‌مانده است، نه جایگزینی تست پیش از Release.

لایه اول: Shift-left در Discovery و Requirement

از Feature به Example برسید

Requirement مبهم: «پرداخت امن و سریع باشد.» این جمله Testable نیست. پرسش‌های اولیه:

  • Success کسب‌وکار دقیقاً چیست؟
  • Timeout قبل و بعد از Commit چه Outcome دارد؟
  • Callback تکراری، دیرهنگام یا با مبلغ متفاوت چه می‌شود؟
  • Retry کاربر و Retry Worker چطور Idempotent می‌مانند؟
  • ریال/تومان، گردکردن، تاریخ و Zone چگونه‌اند؟
  • کاربر پس از بازگشت از درگاه چه State و Recovery می‌بیند؟
  • چه کسی Risk باقیمانده را می‌پذیرد؟

راهنمای تحلیل نیازمندی برای تستر سؤال‌های Testability، منبع Oracle و Traceability را پوشش می‌دهد.

Example mapping کوچک

RuleExampleQuestion
هر Gateway event یک اثر داردهمان event دو بار می‌رسد → یک LedgerResponse بار دوم چیست؟
مبلغ Callback باید مطابق Order باشدOrder=۱۰۰٬۰۰۰ IRR، callback=۹۰٬۰۰۰Reject، review یا pending؟
State عقب نمی‌رودPaid سپس Callback قدیمی Pendingنسخه/ترتیب Event کجا ثبت می‌شود؟

اگر Rule هنوز تصمیم کسب‌وکار ندارد، Test automation راه‌حل نیست. تصمیم، Owner و Example را پیش از Implementation روشن کنید.

Non-functional requirement را زود Operationalize کنید

«سریع»، «امن» و «در دسترس» را به SLO/threshold و Context تبدیل کنید: Journey، workload، percentile، device، accessibility target، داده و failure mode. عدد نیز باید دلیل و Owner داشته باشد؛ Threshold کپی‌شده از اینترنت Shift-left نیست.

لایه دوم: Shift-left در طراحی و معماری

Testability را به‌عنوان Requirement طراحی کنید

  • Clock، random، network و storage قابل‌کنترل/جایگزینی باشند؛
  • State transition و business invariant قابل مشاهده باشند؛
  • Correlation/trace ID از مرزها عبور کند؛
  • Feature flag و kill switch Owner/expiry/audit داشته باشند؛
  • Dependency contract و failure semantics مستند شوند؛
  • دادهٔ تست قابل Seed/Reset و Tenantها ایزوله باشند؛
  • Build، config و schema version در Evidence حاضر باشند.

مقالهٔ قابلیت تست‌پذیری در توسعه جزئیات Controllability و Observability را تکمیل می‌کند.

Threat model پیش از SAST

SAST می‌تواند Pattern کد را ببیند؛ اما Trust boundary، Abuse case، authorization matrix و اثر کسب‌وکار را از خودش نمی‌سازد. دارایی، Actor، Entry point، data flow و Misuse را در طراحی مرور کنید، سپس ابزار را به Risk وصل کنید.

NIST SSDF 1.1 Practiceهای امنیتی را Outcome-based و قابل‌ادغام در SDLCهای گوناگون ارائه می‌کند؛ امنیت فقط یک Scanner در آخر Pipeline نیست. برای Testهای وب، OWASP Top 10:2025 را به ASVS/WSTG و Rule of Engagement متصل کنید.

Failure-first design review

FailureDesign questionEvidence پیش از کد
Dependency timeoutRetry/timeout/circuit/duplicate چه می‌شود؟Sequence diagram + invariant
Partial writeTransaction/outbox/compensation کجاست؟State model
Schema rolloutنسخه قدیم و جدید هم‌زمان سازگارند؟compatibility matrix
Traffic spikeQueue/backpressure/degradation چگونه است؟capacity hypothesis
Permission misuseRole×Action×Resource چیست؟authorization matrix

لایه سوم: Shift-left هنگام کدنویسی

Small test؛ کوچک از نظر Scope و Dependency

Small test باید سریع، ایزوله، Deterministic و تشخیصی باشد. نمونه‌ها:

  • Business rule و Boundary؛
  • Property/invariant برای محاسبات؛
  • State transition مجاز و نامعتبر؛
  • Parser/normalizer فارسی و Unicode؛
  • Retry policy با Fake clock؛
  • Authorization decision در سطح مناسب؛
  • Serialization/round-trip.

تعداد Unit test هدف نیست. Testی که Implementation detail را قفل می‌کند و Failure قابل‌فهم ندارد، Feedback ارزان نمی‌سازد.

Static feedback

  • Compiler/type checker و lint؛
  • Secret scanning؛
  • SAST و ruleهای متناسب با Stack؛
  • SCA/SBOM و Policy dependency؛
  • IaC/config/schema validation؛
  • License/provenance/checksum طبق سیاست سازمان.

False positive و مدت اجرا را اندازه بگیرید. Scanner بدون Baseline، Triage، Owner، SLA و Exception expiry به Noise تبدیل می‌شود. «High severity» ابزار الزاماً Priority کسب‌وکار نیست؛ Reach و Exploitability را بررسی کنید.

Review برای Risk، نه Style دستی

Formatter و lint را Automation انجام دهند. Review انسانی روی رفتار، Data loss، authorization، failure handling، migration، test oracle و readability تمرکز کند. Change کوچک‌تر Review و rollback را آسان‌تر می‌کند.

لایه چهارم: Pull Request و Component boundary

PR lane باید سؤال‌های نزدیک به Change را با زمان بازخورد قابل‌پیش‌بینی جواب دهد:

SignalScopeاگر Fail شد
Build/type/lintهمان ChangeBlock با پیام دقیق
Small testslogic/invariantBlock؛ owner=change author/team
Component testsservice + DB/fake dependencyBlock risk-based
Contract testsconsumer/provider compatibilityBlock یا coordination path
Migration checkfresh/upgrade/backward compatibilityBlock schema risk
Security scanssecret/dependency/code/configpolicy by confidence/exposure

هدف زمان ثابت جهانی نیست. برای Lane خود Feedback SLO تعریف کنید: مثلاً چه سهمی از PRها در چند دقیقه اولین نتیجهٔ قابل‌اقدام می‌گیرند. Queue time را از execution time جدا کنید.

تعادل Small، Medium و Large test

راهبردی که بیشتر بر E2E تکیه کند معمولاً کندتر، Flaky‌تر و کم‌تشخیص‌تر است. Google Testing Blog در بحث Testing pyramid پیشنهاد می‌کند پایهٔ تست‌های کوچک‌تر گسترده و تعداد E2E محدودتر باشد؛ نسبت عددی نسخهٔ عمومی برای همهٔ تیم‌ها نیست.

اندازهDependencyمزیتمحدودیت
Smallprocess/module، بدون شبکه واقعیسریع و تشخیصیIntegration واقعی را نمی‌بیند
MediumDB/container/service محدودContract و wiring واقعی‌ترSetup و isolation پرهزینه‌تر
Largeچند سرویس/Journey کاملاعتماد به مسیر حیاتیکند، شکننده و علت‌یابی سخت

توزیع را از Risk و Architecture استخراج کنید. یک Data pipeline، Mobile app و Monolith به ترکیب یکسان نیاز ندارند. در راهنمای اتوماسیون تست انتخاب Test با ارزش، TCO و Exit criteria توضیح داده شده است.

Shift-left برای Performance و Reliability

Load test کامل روی Laptop معنای Production capacity نمی‌دهد، اما Performance risk را می‌توان زودتر شکل داد:

  • Budget برای Payload، query، memory و startup؛
  • Complexity و allocation benchmark کوچک؛
  • Query plan روی دادهٔ نماینده؛
  • timeout/retry/backpressure contract؛
  • capacity model و bottleneck hypothesis؛
  • load/stress/soak در Lane مناسب؛
  • Canary/SLO پس از استقرار.

Test زودهنگام جای آزمون روی Artifact و محیط نماینده را نمی‌گیرد. Workload، p95/p99، Stop condition و تشخیص Bottleneck در برنامه تست عملکرد آمده است.

Shift-left برای Accessibility و UX

Accessibility را فقط به Audit آخر Release نسپارید:

  • Semantic HTML و component contract؛
  • keyboard/focus behavior در Story/DoD مرتبط؛
  • contrast/reflow/lint خودکار برای Signal اولیه؛
  • design review برای label، error و order؛
  • manual keyboard/screen reader و user research در نقاط لازم.

Automation فقط بخشی از معیارها را می‌بیند و Conformance اعلام نمی‌کند. Shift-left در اینجا یعنی ساخت component درست و آزمودن زودهنگام، نه حذف ارزیابی انسانی.

Whole-team quality؛ QA به Gate تبدیل نشود

در Scrum رسمی، Scrum Team مسئول فعالیت‌های محصول از Verification تا Operation است و Developers با Definition of Done کیفیت را در Increment نهادینه می‌کنند. Scrum Guide 2020 Sprint Review را Gate انتشار نمی‌داند.

نقش/تخصصسهم در Shift-left
ProductOutcome، rule، example، risk authority
Design/Researchprototype، content، usability/accessibility risk
Developertestability، small/component tests، observability
QA/Test specialistrisk model، oracle، test design، exploration، coaching
Securitythreat model، policy، high-risk review
Platform/SREpipeline، environment، SLO، rollout، recovery
Business/UAT authorityfitness for use و residual-risk decision

تخصص محو نمی‌شود؛ همکاری زودتر می‌شود. راهنمای تست چابک Whole-team quality و مرز DoD/Acceptance criteria را توضیح می‌دهد.

طراحی Quality gate قابل‌اعتماد

هر Gate باید Contract داشته باشد:

فیلدپرسش
Riskکدام Outcome را محافظت می‌کند؟
Signalچه Test/Scan/metric و روی کدام Artifact؟
ConfidenceFalse positive/negative و Flaky rate چیست؟
ActionBlock، warn، quarantine، rollback یا human decision؟
Owner/SLAچه کسی و تا چه زمان Triage می‌کند؟
Exceptionچه authority، rationale، expiry و audit؟
Feedback SLOنتیجه چه زمانی هنوز مفید است؟

Gate کم‌اعتماد که همه‌چیز را Block می‌کند، تیم را به Bypass آموزش می‌دهد. Failure زیرساخت را از Failure محصول جدا کنید؛ Retry خودکار نباید اجرای اول را پنهان کند. Test قرنطینه‌شده Owner، Issue و مهلت می‌خواهد.

مثال End-to-end: Refund در فروشگاه ایرانی

Discovery

  • Rule: Refund کامل/جزئی، سقف مبلغ، Currency و اختیار نقش؛
  • Examples: Callback دیرهنگام، Retry، سفارش لغوشده، مبلغ تومان/ریال؛
  • Risk: Refund دوباره، Ledger ناسازگار، پیام مبهم به کاربر.

Design

  • State model و invariant: مجموع Refund از پرداخت معتبر بیشتر نمی‌شود؛
  • Idempotency key و authorization matrix؛
  • Outbox/trace و reconciliation plan؛
  • Feature flag با Owner، expiry و kill switch.

Code و PR

  • Unit/property برای محاسبه و Boundary؛
  • State-transition test؛
  • Component test با DB و gateway stub؛
  • Contract test برای schema پاسخ Gateway؛
  • Migration fresh/upgrade؛
  • SAST/SCA/secret scan با Policy.

Pre-production

  • Journey حیاتی و UAT task؛
  • Concurrency دو Refund؛
  • Performance/reconciliation روی دادهٔ نماینده؛
  • Accessibility خطا، focus و RTL؛
  • Recovery و rollback rehearsal.

Production guardrail

  • Canary محدود با Control و Metric قابل‌انتساب؛
  • Alert برای duplicate refund و reconciliation gap؛
  • Trace از Request تا Ledger/Queue؛
  • Rollback/flag action با Authority؛
  • Post-release review و انتقال Failure تازه به Regression/Design rule.

این حلقه نشان می‌دهد چرا «چپ یا راست» انتخاب دوگانه نیست. چپ Known risk را زود می‌گیرد؛ راست Unknown و Configuration واقعی را با Blast radius محدود آشکار می‌کند.

محدودیت‌های ایران و تیم‌های توزیع‌شده

  • دسترسی ناپایدار به Registry/Cloud را با Mirror مجاز، Cache، pin/checksum و Artifact provenance مدیریت کنید.
  • Pipeline نباید برای Dependency خارجی بی‌زمان‌بندی منتظر بماند؛ timeout، fallback و owner داشته باشد.
  • دورزدن License، کنترل صادرات یا سیاست تأمین‌کننده راهکار مهندسی قابل‌اتکا نیست؛ گزینهٔ جایگزین و Exit plan بسازید.
  • Test data شامل نام/نشانی/شماره/کدملی واقعی را وارد Log، Prompt یا Artifact نکنید.
  • فارسی/RTL، رقم فارسی/عربی، ریال/تومان، جلالی/میلادی و شبکهٔ موبایل را از Requirement به Component/System test ببرید.
  • زمان مشترک برای Pairing/Three Amigos در تیم Remote رزرو و تصمیم‌ها را Async قابل‌ردیابی ثبت کنید.
  • Token/secret کوتاه‌عمر و Role جدا برای Dev/CI/Production داشته باشید.

نقشه ۳۰/۶۰/۹۰ روزه Shift-left

روز ۰ تا ۳۰: Baseline و یک Risk

  • Value stream یک Change را از Idea تا Production رسم کنید.
  • Lead time to first actionable feedback، flaky و gate wait را بسنجید.
  • یک Journey پرریسک و پرتکرار انتخاب کنید.
  • Rule/Example/Oracle و Risk owner را روشن کنید.
  • یک Small/Component test تشخیصی و یک Production guardrail بسازید.

روز ۳۱ تا ۶۰: PR lane و Testability

  • Clock/network/data seam و correlation را بهبود دهید.
  • PR lane را موازی و Cache-friendly کنید.
  • Gate contract، owner، exception expiry و Failure taxonomy بسازید.
  • Flaky testهای همان Journey را Repair/Quarantine کنید.
  • Migration/contract/security checks مرتبط را اضافه کنید.

روز ۶۱ تا ۹۰: Loop و مقیاس

  • Canary/SLO/rollback را به Pipeline متصل کنید.
  • Signal Production را به Regression و Requirement برگردانید.
  • الگو را به Risk دوم گسترش دهید؛ Tool rollout سراسری نکنید.
  • هزینه نگهداری، false positive و زمان Feedback را مرور کنید.
  • Practice بی‌اثر را حذف یا اصلاح کنید.

متریک‌های Shift-left که تصمیم می‌سازند

متریکپرسشدام
Time to first actionable feedbackChange چه زود Signal مفید می‌گیرد؟Feedback سریع ولی کم‌اعتماد
PR pipeline queue + run p95تاخیر کجاست؟فقط Average
Failure by detection layerآیا Test کوچک‌تر می‌توانست بگیرد؟سرزنش تیم/مرحله
Flaky/infra failure rateآیا Gate قابل‌اعتماد است؟Retry پنهان
Gate bypass/exception agingPolicy عملی است؟هدف‌گذاری صفر مطلق
Change fail rate/recoveryDelivery outcome بهتر شده؟تعریف نامشخص Failure
Recurring root causeLearning به Design/Test برگشته؟شمردن Bug خام

DORA metrics Delivery throughput و instability را کنار هم می‌بیند؛ آن‌ها را هدف فردی یا مجوز افزایش Changeهای مصنوعی نکنید. برای طراحی سیستم شاخص، متریک‌های تست نرم‌افزار Guardrailهای ضدبازی را پوشش می‌دهد.

اشتباه‌های رایج در اجرای Shift-left

  • همه‌چیز Unit: Contract، Configuration و user journey ناپدید می‌شوند.
  • همه‌چیز روی PR: Feedback دیر و Pipeline گران می‌شود.
  • Coverage target: Assertion و Risk به درصد خط تبدیل می‌شوند.
  • Scanner dump: هزار Finding بدون Triage/Owner اعتماد را می‌کشد.
  • QA gate زودتر: سیلو جابه‌جا می‌شود، Whole-team quality ساخته نمی‌شود.
  • حذف تست راست: Unknownهای Production بدون Guardrail می‌مانند.
  • DoD نامحدود: Checklist سازمانی روی هر Story Context را نابود می‌کند.
  • E2E به‌عنوان Confidence اصلی: Failure کند و کم‌تشخیص می‌شود.
  • Test data مشترک: Suite موازی Flaky و غیرقابل‌اعتماد می‌شود.
  • Retry خودکار: Failure اول و نرخ ناپایداری پنهان می‌شود.
  • AI volume: Testهای تکراری با Oracle ضعیف هزینه نگهداری می‌سازند.
  • ROI تضمینی: وعده سرعت/هزینه بدون Baseline و Attribution داده می‌شود.

چک‌لیست نهایی Shift-left Testing

  • Risk و Outcome پیش از انتخاب ابزار روشن‌اند.
  • Ruleها Example و Oracle قابل‌آزمون دارند.
  • برای هر Risk، زودترین Evidence معتبر تعیین شده است.
  • Requirementهای Security/Performance/Accessibility Operationalized شده‌اند.
  • Design برای Control/Observe/Seed/Reset آماده است.
  • Small/Medium/Large test براساس Scope و Dependency متعادل‌اند.
  • PR lane Feedback SLO و Failure taxonomy دارد.
  • هر Gate Owner، Action، SLA و Exception expiry دارد.
  • Flaky/infra failure از Product failure جداست.
  • UAT/System/Performance/Usability حذف نشده‌اند.
  • Canary/SLO/Rollback برای Unknownهای راست وجود دارد.
  • Incident و Production signal به Rule/Test/Design برمی‌گردد.
  • متریک‌ها تیم را به بازی Coverage/Count تشویق نمی‌کنند.

سوالات متداول Shift-left Testing

تست Shift-left به زبان ساده چیست؟

یعنی بازخورد کیفیت را تا حد ممکن به تصمیم یا Change نزدیک کنیم: ابهام با Example، منطق با Small test، قرارداد با Component/Contract test و Unknown واقعی با Canary. هدف جلوکشیدن کور همهٔ Testها نیست.

تفاوت Shift-left با Continuous Testing چیست؟

Shift-left Strategyِ محل و زمان Feedback است؛ Continuous Testing اجرای سازمان‌یافتهٔ Evidence در Pipeline و رویدادهای Delivery است. یک تیم می‌تواند Pipeline خودکار داشته باشد اما Requirement/Design feedback ضعیفی داشته باشد؛ یا Shift-left دستی خوبی داشته باشد ولی Continuous delivery نداشته باشد.

آیا Shift-left یعنی تستر دیگر لازم نیست؟

خیر. Test specialist در Risk modeling، Oracle، Test design، Exploration، NFR و Coaching ارزش دارد. تفاوت این است که تخصص از ابتدا کنار Product/Design/Development/Operations وارد تصمیم می‌شود و QA تنها Gate انتهایی نیست.

آیا Shift-left تست‌های E2E و UAT را حذف می‌کند؟

خیر. E2Eهای محدود برای Journey حیاتی، UAT برای تصمیم Fitness for use و Testهای محیط/Production برای Context واقعی می‌مانند. Shift-left فقط می‌کوشد Failureهای ارزان‌تر و تشخیصی‌تر را به لایهٔ مناسب پایین‌تر ببرد.

از کجا اجرای Shift-left را شروع کنیم؟

یک Journey پرریسک انتخاب کنید، جریان Feedback فعلی را Baseline بگیرید، Rule/Example/Oracle را روشن کنید، یک Test کوچک‌ترِ قابل‌اعتماد و یک Guardrail Production بسازید و اثر آن را روی زمان Feedback، Flaky و Delivery outcome بسنجید؛ سپس گسترش دهید.

منابع و یادداشت بازبینی

Secure development با NIST SSDF ۱.۱، Whole-team/Definition of Done با Scrum Guide ۲۰۲۰، تعادل Testها با Google Testing Blog، Canary و Guardrail راست با Google SRE و شاخص‌های Delivery با DORA تطبیق داده شده است. آخرین بازبینی محتوایی: ۱۵ مرداد ۱۴۰۵. NIST در زمان بازبینی Draft جدیدتر SSDF نیز منتشر کرده بود؛ این مقاله ادعای انطباق رسمی ندارد و برای Baseline الزام‌آور باید وضعیت Final و سیاست سازمان بررسی شود.

جمع‌بندی: Shift-left مسابقهٔ «چه کسی زودتر Test می‌نویسد» نیست. یک مهندسی Feedback است: Risk را زود بیان کنید، Evidence را در کوچک‌ترین لایهٔ قابل‌اعتماد بگیرید، Gate را سریع و قابل‌اقدام نگه دارید و آنچه فقط در واقعیت معلوم می‌شود با Canary، SLO و Recovery محدود کنید. حلقه وقتی کامل است که Signal سمت راست دوباره Requirement، Design و Test سمت چپ را بهتر کند.

این مقاله را با دیگران به اشتراک بگذارید

نویسنده

محمد عسکری

محمد هستم، توسعه‌دهنده وب با بیش از ده سال تجربه در برنامه‌نویسی سمت سرور و کاربر. به یادگیری و اشتراک‌گذاری دانش علاقه‌مندم و اخیراً تمرکزم را روی حوزه تست نرم‌افزار گذاشته‌ام تا تجربیاتم را در این زمینه نیز به اشتراک بگذارم و به درک بهتر کیفیت نرم‌افزار کمک کنم.

همه مقاله‌ها

ادامه مطالعه

دیدگاهتان را بنویسید

ایستگاه بعدی شما

TestRail را همین حالا در محیط دمو ببینید.

محیط تست آماده

دسترسی به دمو TestRail

قبل از ورود، مشخصات زیر را در صفحه ورود محیط دمو وارد کنید.

آدرس دمو

https://demo.testrail.ir

ایمیل ورود

demo@testrail.ir

رمز عبور

demo_user