وقتی تیم می‌گوید «برای پرداخت سناریوی تست نوشته‌ایم»، دقیقاً چه چیزی آماده است: یک هدف پوشش، یک سفر کاربر، Charter اکتشافی، تست‌کیس سطح‌بالا یا دستور اجرای تکرارپذیر؟ اگر پاسخ افراد متفاوت باشد، تعداد سندها زیاد می‌شود اما Coverage، مالکیت و اثر تغییر همچنان مبهم می‌ماند. مسئلهٔ اصلی تفاوت سناریوی تست و تست‌کیس فقط «چه چیزی» در برابر «چگونه» نیست؛ مسئله انتخاب Artifact مناسب برای یک تصمیم، ریسک، Oracle، مخاطب و فاصلهٔ تحویل است.

این راهنما یک Test Design Graph می‌سازد: Test Basis و Risk Claim به Test Condition و Coverage Item وصل می‌شوند؛ سپس Scenario، Charter، Checklist، Test Case، Procedure یا Script آن‌ها را پوشش می‌دهد و Run و Evidence نتیجهٔ اجرا را ثبت می‌کنند. این مدل سلسله‌مراتب اجباری «یک سناریو ← چند تست‌کیس» نیست؛ یک گراف نسخه‌دار و قابل ممیزی است که می‌گوید چرا هر Artifact وجود دارد، چه چیزی را پوشش می‌دهد و پس از تغییر کدام رابطه باید بازبینی شود.

پاسخ کوتاه: سناریوی تست و تست‌کیس چه تفاوتی دارند؟

Artifactپرسش غالبسطح معمولخروجی‌ای که نباید با آن یکی شود
Test Condition / Coverage Itemچه شرط، ریسک یا تمایزی باید پوشش داده شود؟تحلیلروش اجرا یا نتیجه
Test Scenarioچه موقعیت، جریان یا توالی معناداری بررسی شود؟طراحی سطح‌بالاالزاماً E2E یا فقط کاربرمحور نیست
Test Charterدر یک Session چه مأموریتی با چه محدوده و Oracle کاوش شود؟طراحی اکتشافیسناریوی مبهم و بی‌زمان نیست
Test Caseبا چه ورودی، پیش‌شرط و Expected Result یک ادعا آزموده شود؟سطح‌بالا یا جزئیActual Result و Pass/Fail طراحی نیستند
Test Procedure / ScriptArtifact طراحی چگونه و با چه ترتیب یا کدی اجرا شود؟پیاده‌سازی تستخود Test Case نیست
Test Run / Result / Evidenceچه چیزی، کجا، چه وقت و با چه مشاهده‌ای اجرا شد؟اجرانسخهٔ طراحی را بازنویسی نمی‌کند

پس Test Scenario معمولاً یک موقعیت یا جریان معنادار را بیان می‌کند و Test Case یک ادعای آزمون‌پذیر را با پیش‌شرط، داده و نتیجهٔ مورد انتظار دقیق‌تر می‌کند؛ اما هیچ‌کدام ذاتاً «سبک» یا «سنگین» نیستند. سطح جزئیات را زمینه تعیین می‌کند، نه نام Artifact.

مالکیت این مقاله و مرز با راهنماهای مجاور

این صفحه مالک انتخاب نوع Artifact، سطح جزئیات و روابط Test Design Graph است. برای جلوگیری از مستندات تکراری، هر موضوع عمیق‌تر یک مالک جدا دارد.

پرسشمالک محتوامرز
Test Basis و شرط آزمون‌پذیر را چگونه استخراج کنیم؟تحلیل نیازمندی‌ها در STLCاینجا فقط اتصال Basis به Condition را مدل می‌کنیم.
قالب و تکنیک نوشتن Test Case چیست؟نوشتن تست‌کیس حرفه‌ایاینجا تصمیم می‌گیریم اصلاً Case لازم است و در چه سطحی.
Charter و Session چگونه اجرا و گزارش شوند؟تست اکتشافی ساختاریافتهاینجا Charter را از Scenario و Case تفکیک می‌کنیم.
Run، Result و Closure چگونه مدیریت شوند؟چرخه اجرای تستاین مقاله Artifact طراحی را از رکورد اجرا جدا نگه می‌دارد.
Tailoring بر اساس زمینه چگونه است؟تست مبتنی بر زمینهاینجا عوامل انتخاب جزئیات را عملیاتی می‌کنیم.
آیا Scrum این سندها را الزام می‌کند؟نقش QA در ScrumScrum نوع Test Artifact را تجویز نمی‌کند.
کدام Check برای اتوماسیون مناسب است؟راهنمای اتوماسیون تستManual Case پیش‌نیاز جهانی Script نیست.
سندها چگونه همراه تغییر زنده بمانند؟مستندسازی تست زندهاینجا Version و Change Impact گراف را تعریف می‌کنیم.

چرا فرمول «Scenario = What، Case = How» کافی نیست؟

این فرمول برای شروع مکالمه مفید است، اما چهار خطا می‌سازد. نخست، پاسخ «چه چیزی» معمولاً متعلق به Test Analysis و Test Condition است، نه فقط Scenario. دوم، Case می‌تواند High-level باشد و Steps نداشته باشد. سوم، Scenario می‌تواند جریان فنی، شکست عملیاتی یا Quality Scenario باشد و الزاماً سفر کامل کاربر نیست. چهارم، «چگونه اجرا شود» ممکن است در Procedure یا Script نگهداری شود، نه در Case.

  • «پرداخت سفارش» به‌تنهایی ممکن است Objective، Scenario یا نام Suite باشد؛ نام بدون Contract معنا را تثبیت نمی‌کند.
  • «Callback تکراری نباید Ledger را دوبار ثبت کند» می‌تواند Condition، Invariant، Property یا Expected Result باشد.
  • «دکمه را بزن» یک Step است؛ اثبات نمی‌کند پیش‌شرط، Oracle و داده تعریف شده‌اند.
  • «PASS» ویژگی Test Case نیست؛ نتیجهٔ یک Attempt مشخص روی Build و Environment مشخص است.

Naming Contract: قبل از نوشتن، واژه‌ها را قرارداد کنید

واژهٔ Scenario در ابزارها، سازمان‌ها و حتی دو تیم یک شرکت معنای یکسانی ندارد. راه‌حل، بحث لغوی بی‌پایان نیست؛ یک Naming Contract کوتاه است که تعریف محلی، فیلدهای اجباری، مالک و رابطه‌های مجاز را نسخه‌دار می‌کند.

NAMING-CONTRACT: TD-NAME-v3
Scenario := موقعیت/جریان سطح‌بالا با Objective و Coverage links
Case := ادعای آزمون‌پذیر با Preconditions + Data + Expected
Charter := Mission + Scope + Risks + Oracles + Data + Timebox + Evidence
Procedure := ترتیب اجرایی یک یا چند Artifact طراحی
Script := پیاده‌سازی قابل اجرا یا نیمه‌خودکار یک Check
Result := مشاهدهٔ Attempt؛ هرگز داخل نسخهٔ Design بازنویسی نمی‌شود
Owner: Test Design Lead
Review-by: 2026-09-15
واژهتعریف عملیاتی پیشنهادیحداقل فیلدابهام رایج
Test Basisمنبعی که ادعا و انتظار از آن مشتق می‌شودID، نسخه، نوع، مالک، تاریخ اثرفقط Requirement رسمی نیست
Risk Claimادعای مشخص دربارهٔ پیامد نامطلوب و زمینهرویداد، پیامد، دامنه، مالکامتیاز عددی بدون معنا
Test Objectiveپرسشی که شواهد باید برای آن تولید شودسؤال، تصمیم، محدودهفهرست Feature
Test Conditionجنبه یا شرط آزمون‌پذیرِ اولویت‌دارID، Basis، Risk، Coverage criterionStep اجرایی
Coverage Itemعضو قابل شمارشِ یک مدل پوشش تعریف‌شدهمدل، شناسه، وضعیتدرصد مبهم
Scenarioموقعیت، جریان یا توالی معنادارObjective، actors/systems، start/end، linksهمیشه E2E
Caseادعای قابل اجرا با Setup، Inputs و ExpectedID، links، precondition، data، oracleهمیشه Steps جزئی
Run/Attemptوقوع اجرای Artifact نسخه‌دارBuild، env، time، actor، outcomeStatus خود Case

چهار لایه را از هم جدا کنید: Analysis، Design، Implementation، Execution

تفکیک مرحله‌ها برای دیوان‌سالاری نیست؛ برای جلوگیری از مخلوط شدن «چرا آزمون می‌کنیم»، «چه ادعایی را می‌آزماییم»، «چگونه قابل اجرا می‌کنیم» و «چه مشاهده شد» است. این فعالیت‌ها می‌توانند هم‌پوشان، تکرارشونده یا توسط یک نفر انجام شوند، اما خروجی‌هایشان یک معنا ندارند.

لایهپرسشنمونه خروجیGate نمونه
Test Analysisچه چیزی و چرا باید آزموده شود؟Condition، Coverage Item، Objective، Risk linkBasis و اولویت قابل ردیابی است
Test Designچگونه ادعا را به آزمون تبدیل کنیم؟Scenario، Case، Charter، Checklist، data requirementOracle و Evidence profile کافی است
Test Implementationچه چیز برای اجرا آماده شود؟Procedure، Suite، Script، Data set، Environment requirementنسخه‌ها و Dependencyها resolve شده‌اند
Test Executionچه اتفاقی در Attempt مشخص افتاد؟Run، Result، Log، Evidence، Incident linkهویت Build/Env/Artifact و Outcome معتبر است

Test Analysis: «چه چیزی» قبل از Scenario آغاز می‌شود

در واژگان ISTQB CTFL v4.0.1، Test Analysis با تحلیل Test Basis، شناسایی و اولویت‌بندی Test Conditionها و تعریف Coverage Criteria به پرسش «چه چیزی را تست کنیم؟» می‌پردازد. این منبع یک چارچوب آموزشی است؛ استفاده از اصطلاحات آن به‌تنهایی مدرک بلوغ، کفایت پوشش یا انطباق نیست.

Condition خوب نه عنوان صفحه است و نه فهرست کلی قابلیت. باید تفاوتی را مشخص کند که Evidence بتواند درباره‌اش حرف بزند: «Callback با Event ID یکسان پس از commit دوباره تحویل می‌شود» از «پرداخت را تست کن» قابل سنجش‌تر است. Technique انتخاب‌شده، Coverage Itemهای کوچک و کافی را از مدل دامنه استخراج می‌کند؛ تعداد خام سناریوها جای این مدل را نمی‌گیرد.

CONDITION: SYN-C3
Basis: API-v5 / callback.delivery
Risk claim: redelivery may duplicate a ledger effect
Coverage model: delivery identity × commit boundary
Coverage item: same event_id, second delivery after prior commit
Oracle: one canonical ledger effect for one authorized event
Priority reason: financial reconciliation impact
Required evidence profile: invariant-check

Test Design: Condition را به آزمون تبدیل کنید

در Test Design، Conditionها به Test Case و Testware دیگر بسط پیدا می‌کنند. انتخاب Technique، داده، Environment، Oracle و نوع Evidence در این لایه رخ می‌دهد. یک Condition ممکن است به چند Artifact نیاز داشته باشد؛ مثلاً Boundary Case برای مبلغ، Property Check برای invariant و Charter برای رفتارهای پیش‌بینی‌نشدهٔ بازیابی.

طراحی سبک هم باید Objective، منبع انتظار و رابطهٔ پوشش را نگه دارد. حذف نثر تکراری خوب است؛ حذف Oracle یا هویت Basis صرفاً ابهام را به زمان اجرا منتقل می‌کند.

Test Implementation: Procedure، Suite و Script کجا قرار می‌گیرند؟

Implementation خروجی طراحی را قابل اجرا می‌کند: Caseها در Procedure یا Suite مرتب می‌شوند، Data و Environment آماده می‌گردد و Manual/Automated Script ساخته می‌شود. اگر ترتیب اهمیت ندارد، آن را بی‌دلیل در Case قفل نکنید. اگر Reset یا Seed مشترک است، Procedure نسخه‌دار مانع تکرار متناقض آن در ده‌ها Case می‌شود.

PROCEDURE: SYN-PROC-RETRY-v2
Implements: SYN-TC-12, SYN-P1
Setup: seed=SYN-PAY-04; fake_psp=timeout-after-commit
Order: reset → submit → wait window → retry → reconcile
Cleanup: destroy synthetic tenant and queue
Environment: local-disconnected-lab-v4
Prohibited: Production endpoint, real PSP, real money

Test Execution: Actual Result و Status را به Attempt متصل کنید

Expected Result بخشی از طراحی است؛ Actual Result، Pass/Fail/Blocked و Evidence به یک Attempt تعلق دارند. اگر Status را داخل Case نگه دارید، اجرای Build جدید تاریخچهٔ قبلی را پاک می‌کند و معلوم نیست «این تست PASS است» دربارهٔ کدام نسخه، محیط و زمان گفته شده است.

فیلدDesign ArtifactRun/Attempt
Expectedبله؛ Oracle و نتیجهٔ مورد انتظار نسخه‌دارفقط reference به نسخهٔ Design
Actual observationخیربله؛ مشاهده بدون تفسیر اضافی
OutcomeخیرPassed، Failed، Blocked، Inconclusive، Not Run
Build/EnvironmentRequirement یا constraint ممکن استهویت دقیق مورد اجرا الزامی
EvidenceProfile موردنیازManifest واقعی و قابل دسترسی

Test Design Graph چیست؟

Test Design Graph نمایش نسخه‌دار Nodeها و Edgeهایی است که از منبع ادعا تا شواهد اجرا امتداد دارند. این گراف می‌تواند در Test Management Tool، Issue Tracker، فایل YAML یا پایگاه داده باشد؛ ارزش آن در نام ابزار نیست، در هویت پایدار و روابط قابل پرس‌وجو است.

Basis@v3 ─derives→ Condition C2 ─covered-by→ Boundary Case TC2@v2
Risk R7  ─motivates→ Condition C2
TC2@v2  ─implemented-by→ Procedure P4@v1
P4@v1   ─executed-as→ Run RUN-204 / Attempt A1
Attempt ─produced→ Evidence Manifest EM-204
Change CR-91 ─invalidates?→ Basis@v3 edges

علامت سؤال در invalidates? عمدی است: تغییر منبع، Test را خودکار باطل نمی‌کند؛ یک Impact Assessment لازم است. ممکن است رابطه همچنان معتبر، نیازمند اصلاح یا منسوخ باشد.

چرا رابطه‌ها چندبه‌چند هستند؟

یک Scenario می‌تواند چند Condition را پوشش دهد و یک Condition نیز با چند Artifact پوشش داده شود. همچنین یک Case ممکن است ترکیبی از چند Rule را بیازماید، یا یک Script یک Property را در صدها داده تولیدشده اجرا کند. تبدیل این شبکه به درخت ثابت، روابط واقعی را پنهان می‌کند.

Edgeازبهمعنای مجاز
derived-fromConditionBasis versionمنبع تفسیر Condition
motivated-byArtifactRisk Claimدلیل انتخاب/اولویت، نه اثبات کاهش ریسک
coversScenario/Case/Charter/CheckCondition/Coverage Itemقصد پوشش در طراحی، نه Evidence اجرا
implementsProcedure/ScriptDesign Artifactپیاده‌سازی نسخهٔ مشخص
executed-asArtifact versionAttemptوقوع اجرا
producedAttemptEvidenceمنشأ Artifact شواهد
supersedesنسخه جدیدنسخه قدیمجایگزینی بدون حذف تاریخچه
invalidatesChangeEdge/Nodeتصمیم ثبت‌شدهٔ اثر تغییر

سناریوی تست چیست؟ پنج شکل معتبر

سناریوی تست چیست؟ در قرارداد این مقاله، توصیف سطح‌بالای یک موقعیت، جریان یا توالی معنادار با Objective، مرز شروع/پایان و لینک‌های پوشش است. سناریو می‌تواند کاربرمحور باشد، اما فقط به User Journey محدود نیست.

نوع Scenarioنمونه ساختگینکته طراحی
User journeyکاربر از انتخاب کالا تا مشاهده رسید می‌رودActor، start/end و handoffها روشن
Event chainOrder→Attempt→Callback→Ledger→Receiptهویت و ترتیب رویدادها مهم است
Operational failureTimeout پس از commit و retryUnknown state و recovery Oracle لازم است
Quality scenarioرسید فارسی در RTL و عرض موبایلمحرک، محیط، پاسخ و معیار مشخص
Cross-system reconciliationجمع Attemptها با Ledger ساختگی تطبیق می‌یابدPopulation و واحد پول باید قرارداد شود
SCENARIO: SYN-SC-RECOVERY-04
Objective: رفتار قابل مشاهده پس از timeout-after-fake-commit چیست؟
Actors/systems: Checkout, fake PSP, Callback worker, Ledger stub
Start: Attempt SYN-A4 created
End: one canonical state or explicit Unknown requiring reconciliation
Covers: SYN-C3, SYN-C4, SYN-C6
Excludes: real PSP, bank settlement, Production notification
Required evidence: event identity + state transitions + ledger reconciliation

سناریو الزاماً E2E، Happy Path یا کاربرمحور نیست

سناریوی «بازپخش Callback پس از Restart worker» یک جریان فنی است؛ «بازیابی پس از قطع ارتباط» عملیاتی است؛ «خوانایی رسید برای Screen Reader» یک Quality Scenario است. اگر تیم Scenario را فقط E2E بداند، شرایط مرزی و سازوکارهای میانی ممکن است بی‌مالک بمانند. اگر هر Case کوچک را Scenario بنامد، ارزش نگاه سطح‌بالا از بین می‌رود. Naming Contract باید دامنه را حل کند.

تست‌کیس چیست؟ از High-level تا Low-level

تست کیس چیست؟ یک ادعای آزمون‌پذیر است که به Condition متصل می‌شود و حداقل پیش‌شرط، داده/پارامتر، Action یا Trigger، Expected Result و Oracle را مشخص می‌کند. Case می‌تواند پارامتریک و کوتاه باشد یا Procedure دقیق داشته باشد؛ جزئیات بیشتر همیشه کیفیت بیشتر نیست.

سطحچه چیزی صریح است؟مناسب وقتیریسک
Intent/High-level CaseCondition، دادهٔ کلیدی، Expected/Oracleاجراکننده ماهر، محصول متغیر، handoff کمتفاوت اجرای پنهان
Parameterized Caseپارامترها و Expected mappingمرزها/ترکیب‌ها یا اجرای داده‌محورExplosion و Oracle سطحی
Detailed CaseSetup، Steps، checkpoints، cleanupهماهنگی دقیق یا فرآیند حساس لازم استهزینه تغییر و اجرای کورکورانه
Model/property-based CheckGenerator، invariant، shrink/seedفضای ورودی بزرگ یا رفتار حالتیمدل/Generator ناقص
HIGH-LEVEL CASE: SYN-TC-BOUNDARY-02
Covers: SYN-C2
Given: amount unit=IRR; RULES-v3
Data: min-1, min, min+1, max-1, max, max+1
When: submit to disconnected checkout stub
Expected: acceptance exactly matches versioned boundary table
Oracle: RULES-v3 §amount-limits
Evidence: request/result matrix; no real transaction
LOW-LEVEL ADDENDUM: SYN-PROC-BOUNDARY-02
1. Load dataset SYN-AMOUNT-v2 and verify SHA-256 manifest.
2. Reset fake tenant and clock to declared fixture.
3. Submit each canonical IRR value once with unique attempt_id.
4. Capture response code and persisted synthetic state.
5. Compare to RULES-v3 table; do not convert toman implicitly.
6. Destroy fixture; attach run/evidence IDs.

Expected Result، Actual Result و Oracle را مخلوط نکنید

Expected Result باید پیش از مشاهده و با منبع قابل دفاع نوشته شود. Actual Result گزارش آن چیزی است که در Attempt دیده شد. Oracle سازوکار تشخیص تفاوت معنادار است و ممکن است Rule، مدل مستقل، invariant، مرجع انسانی مجاز یا مقایسهٔ متامورفیک باشد. کپی کردن خروجی فعلی سیستم در Expected، خطا را به «انتظار» تبدیل می‌کند.

عنصرنمونه درستنمونه مسئله‌دار
Expectedبرای Event ID یکسان، یک اثر Canonicalسیستم باید درست کار کند
Oracle sourceAPI-v5 §idempotency + Ledger invariant I-2رفتار نسخه فعلی
Actualدو Ledger row با event_id یکسان مشاهده شدIdempotency خراب است
OutcomeFailed against TC@v2 on Build B17این Case همیشه Fail است
Interpretationممکن است dedup قبل از commit اعمال نشده باشدعلت قطعی race condition است

Test Charter با Scenario مبهم چه فرقی دارد؟

Charter مجوز «هرچه شد امتحان کن» نیست. Mission، Scope، Risks، Oracles، Data، Timebox و نوع Evidence را برای یک Session تعیین می‌کند و در عین حال آزادی یادگیری و انشعاب را حفظ می‌کند. Scenario می‌تواند ورودی Charter باشد، اما جای Session record و Debrief را نمی‌گیرد.

CHARTER: SYN-CH-RTL-01
Mission: explore Persian receipt readability and semantic order
Scope: disconnected mobile viewport; fa-IR; RTL/LTR mixed tokens
Risks: clipped amount, reordered ID, ambiguous IRR/toman, digit mismatch
Oracles: approved content spec + semantic DOM order + exact value table
Data: synthetic names/IDs only; Persian/Arabic/Latin digits
Timebox: 45 minutes
Evidence: notes, viewport matrix, sanitized local screenshots
Debrief: findings, coverage notes, questions, next charter

Checklist با Scenario و Case چه فرقی دارد؟

Checklist یک حافظهٔ فشرده برای مجموعه‌ای از بررسی‌های شناخته‌شده است. برای بازرسی تجربه‌ای یا تکرار روی سطوح متعدد مفید است، اما اگر هر Item فاقد Oracle و Coverage link باشد، تیک خوردن آن Evidence معنادار تولید نمی‌کند. Checklist نباید پناهگاه Caseهای ناقص شود.

CHECKLIST: SYN-CL-FA-RECEIPT-v1
[ ] واحد canonical=IRR و نمایش toman صریح است
[ ] رقم‌های فارسی/عربی/لاتین بدون تغییر مقدار پردازش می‌شوند
[ ] شناسه LTR در متن RTL ترتیب بصری/معنایی درست دارد
[ ] زمان UTC ذخیره و Asia/Tehran صریح نمایش داده می‌شود
[ ] تاریخ جلالی فقط presentation است، نه هویت رخداد
[ ] Error و fallback نیز خوانا و قابل بازیابی‌اند
Each item → Oracle ID + Evidence reference

Procedure، Suite و Script را از Test Case جدا نگه دارید

Procedure ترتیب اجرا و Setup/Cleanup را هماهنگ می‌کند؛ Suite مجموعه‌ای برای هدف Run است؛ Script پیاده‌سازی یک Check است. یک Script می‌تواند چند Case را پیاده کند، یک Case می‌تواند Manual و Automated implementation داشته باشد و یک Suite می‌تواند بر اساس Risk، Component یا Regression slice ساخته شود. این روابط را Edge کنید، نه اینکه همه چیز را در عنوان Case بچپانید.

آیا هر Automated Script به Manual Test Case نیاز دارد؟

خیر. Script می‌تواند از Example، State Model، Contract، Invariant یا Property مشتق شود. تبدیل اجباری هر Check خودکار به Steps دستی معمولاً سند موازی و قدیمی می‌سازد. آنچه لازم است، Traceability از Script به Design intent، Oracle، Data/Generator، Environment و Coverage Item است. اگر اجرای دستی واقعاً برای تشخیص، fallback یا audit لازم است، Procedure دستی مستقل بسازید.

ماتریس انتخاب Artifact

نیاز غالبArtifact شروع مناسبافزودهٔ احتمالیانتخاب نامناسب رایج
هم‌راستایی روی یک جریانScenarioExamples و Conditionsصدها Step زودهنگام
پوشش Rule یا BoundaryParameterized CaseDecision table/data setScenario کلی
یادگیری در فضای ناشناختهCharterSession notes و follow-up CasesCase خطی که انشعاب را ممنوع کند
بازرسی تکراری متخصصChecklistOracle linksتیک بدون Evidence
هماهنگی Setup/ترتیبProcedureCase/Charter referencesکپی Setup در همه Caseها
فضای داده بزرگProperty/Model CheckGenerator، seed، shrink recordچند مثال خوش‌مسیر
تحویل به اجراکننده دورDetailed Case/ProcedureEnvironment/Data manifestعنوان مبهم

سطح جزئیات را با چه عواملی انتخاب کنیم؟

یک «امتیاز جادویی» جهانی وجود ندارد. تیم باید عوامل را ثبت و درباره Trade-off تصمیم بگیرد. افزایش جزئیات وقتی مفید است که ابهام تصمیم یا هزینهٔ اجرای متفاوت را کاهش دهد؛ اگر فقط متن بیشتری برای نگهداری بسازد، ارزش ندارد.

عاملنشانهٔ جزئیات بیشترنشانهٔ Artifact سبک‌ترسؤال بازبینی
ریسک/اثرپیامد بالا و بازیابی دشواراثر محدود و برگشت‌پذیرکدام ادعا به Evidence قوی‌تر نیاز دارد؟
پیچیدگی Oracleچند منبع/محاسبه/تحملInvariant روشندو اجراکننده همان Outcome را می‌دهند؟
State/DataSeed، reset و هویت حساستابع خالص/داده سادهحالت پنهان چیست؟
Volatilityمنطق پایدار، handoff زیادUI متغیر، تیم هم‌مکانهزینه تغییر در کدام لایه است؟
فاصله تحویلزمان/زبان/سازمان متفاوتنویسنده همان اجراکنندهچه Contextی در handoff گم می‌شود؟
مهارت Actorروش حساس به دانش ضمنیمتخصص با Charter و Debriefآزادی اجرا ارزش دارد یا Variance؟
تکرار/کادنسRegression پرتکرارتحقیق یک‌بارهAutomation یا Procedure هزینه را کم می‌کند؟
تعهد EvidenceReview/audit مشخصتصمیم داخلی کم‌اثردقیقاً چه شواهدی و برای چه کسی؟

Artifact Decision Card بسازید

ARTIFACT-DECISION: ADC-2026-17
Decision: Parameterized boundary case + shared procedure
Conditions: SYN-C2
Why: exact versioned limits; repeated regression; remote execution
Detail added: dataset manifest, reset, expected mapping
Detail omitted: UI click prose; selectors owned by automation layer
Evidence profile: input/output matrix + persisted state
Change triggers: RULES amount/version/unit; submission interface
Owner / reviewer / review-by: qa-a / product-rule-owner / 2026-09-01

سبک‌بودن سند به معنی کم‌دقت‌بودن نیست

یک Case هفت‌خطی با ID، Basis، Condition، داده، Oracle و Expected روشن می‌تواند دقیق‌تر از صفحه‌ای Steps کلی باشد. Rigour از صراحت ادعا، قابلیت تکرار تصمیم، کیفیت Oracle و provenance Evidence می‌آید؛ نه از تعداد کلمات. در مقابل، «Explore checkout» حتی اگر کوتاه و Agile نامیده شود، بدون Charter قابل پاسخ‌گویی نیست.

آیا صنایع تنظیم‌شده همیشه Detailed Case می‌خواهند؟

نسخهٔ جهانی و امنی برای این ادعا وجود ندارد. نوع مستند و شواهد به قانون، حوزه قضایی، طبقه محصول، Quality System، قرارداد، تصمیم و مرجع ارزیابی وابسته است. استاندارد ISO/IEC/IEEE 29119-3:2021 قالب‌هایی برای مستندات تست در سازمان‌ها، پروژه‌ها و مدل‌های چرخه عمر مختلف توصیف می‌کند؛ صفحهٔ عمومی استاندارد جای متن کامل، تفسیر حقوقی یا اثبات انطباق نیست.

به‌جای جملهٔ «بانکداری Case جزئی می‌خواهد»، منبع الزام، نسخه، محدوده، Approver، نگهداشت و Evidence مورد انتظار را ثبت کنید. در پروژهٔ ایرانی نیز ادعای قانونی/بانکی باید توسط مالک حقوقی و کیفیت مجاز تأیید شود؛ این مقاله مشاورهٔ حقوقی یا مالی نیست.

Compliance Evidence Contract

فیلدسؤالخطای رایج
Authorityکدام قانون/استاندارد/قرارداد و کدام بند؟«طبق استاندارد» بدون مرجع
Applicabilityچرا به این محصول/نسخه/بازار مربوط است؟تعمیم از صنعت دیگر
Interpretation ownerچه کسی تفسیر را تصویب کرده؟تفسیر شخصی QA
Required recordDesign، Procedure، Result یا Signature کدام لازم است؟جمع‌آوری همه چیز
Retention/accessتا چه وقت و برای چه نقشی؟Evidence بدون کنترل دسترسی
Change triggerبا تغییر منبع چه چیز بازبینی می‌شود؟سند ثابت و منقضی

حداقل Schema برای Test Design Graph

گروهفیلدهای ضروریهدف
Identityartifact_id، type، versionارجاع پایدار و تاریخچه
Meaningobjective، claim، scope/exclusionsجلوگیری از عنوان‌های مبهم
Tracebasis_ids@versions، condition_ids، risk_idsچرایی و پوشش
Execution needdata/env/oracle/evidence_profileآمادگی اجرا بدون مخلوط‌کردن Result
Governanceowner، reviewer، status، effective_at، review_byتصمیم و تازگی
Integritycontent hash یا immutable revision IDتشخیص نسخه، نه اثبات درستی
Edgestype، from@version، to@version، status، rationaleمعنای رابطه و اثر تغییر
{
  "artifact_id": "SYN-P1",
  "type": "property-check",
  "version": 2,
  "basis": ["API-v5"],
  "covers": ["SYN-C3"],
  "oracle": "one canonical effect per authorized event_id",
  "generator": "SYN-CALLBACK-GEN-v2",
  "evidence_profile": "invariant-check",
  "owner": "qe-b",
  "status": "reviewed",
  "review_by": "2026-09-10"
}

Status طراحی را از Outcome اجرا جدا کنید

نوعواژگان پیشنهادیمعنا
Design lifecycleDraft، In Review، Reviewed، Active، Superseded، Archivedوضعیت خود Artifact
ReadinessBlocked for Design، Ready for Implementation، Ready for RunGate مرحله‌ای با دلیل
Execution outcomePassed، Failed، Blocked، Inconclusive، Invalid، Abortedنتیجه Attempt مشخص
Coverage evidenceNo Run، Evidence Missing، Evidence Present، Evidence Rejectedوجود/اعتبار Evidence طبق Profile

Case «Active و Reviewed» می‌تواند در آخرین Run شکست خورده باشد؛ این تناقض نیست. برعکس، یک Attempt Passed روی Case منسوخ ممکن است برای Basis جدید بی‌اعتبار باشد.

Versioning و Change Impact را چگونه مدیریت کنیم؟

ویرایش خاموش Test Case، Evidence قبلی را بی‌معنا می‌کند. هر تغییر معنایی باید نسخه جدید بسازد و رابطهٔ supersedes را نگه دارد. تغییر نگارشیِ بدون اثر می‌تواند Revision جزئی باشد، اما معیار این تفکیک باید در Configuration Policy تیم تعریف شود.

تغییر BasisEdgeهای مشکوکتصمیم ممکنEvidence لازم
حد مبلغCondition→Case/Data/OracleRevise و rerunBoundary matrix جدید
نام UIProcedure/selectorImplementation-only updateRender/interaction check
معنای StatusCondition/Expected/ReportSemantic invalidationMigration و compatibility
Schema CallbackScript/Data/contract checksنسخه جدید یا mixed-version testProducer/consumer matrix
تفسیر الزامCompliance edgeRe-review by authority ownerDecision record

Coverage با شمارش Artifact یکی نیست

شش Condition و شش Artifact به معنی ۱۰۰٪ پوشش نیست. ممکن است دو Artifact یک Condition را تکرار کنند، Condition دیگری بی‌پوشش باشد، لینک به Basis قدیمی باشد یا نوع Evidence با Risk Claim تناسب نداشته باشد. Coverage باید نسبت به مدل و Population نام‌گذاری‌شده محاسبه شود.

Metricصورتمخرجمحدودیت
Mapped condition coverageConditionهای دارای Edge معتبرConditionهای in-scopeکفایت Design یا Execution را ثابت نمی‌کند
Evidence-backed coverageItemهای دارای Evidence پذیرفته‌شدهCoverage Itemهای in-scopeفقط برای Snapshot و Build تعریف‌شده
Fresh trace ratioEdgeهای بازبینی‌شده پس از تغییرEdgeهای impactedReview صوری ممکن است
Orphan rateArtifactهای بدون upstream/downstream لازمArtifactهای Activeکم‌شدن مصنوعی با حذف Artifact ممکن است

Evidence Profile را بر اساس ادعا تعریف کنید

وجود یک Screenshot برای همه ادعاها کافی نیست. Evidence Profile مشخص می‌کند چه نوع مشاهده‌ای باید از Attempt تولید شود تا Review ممکن باشد. Profile تضمین نمی‌کند ادعا درست است؛ فقط انتظار ساختاری را روشن می‌کند.

Profileادعاحداقل Evidence ساختاریآنچه ثابت نمی‌کند
repeatable-caseخروجی دقیق برای داده مشخصBuild/env/data/expected/actualپوشش فضای داده
boundary-caseرفتار اطراف حد نسخه‌دارBoundary table و source versionهمه ترکیب‌ها
invariant-checkخاصیت در مجموعه اجراهاGenerator/seed/population/failuresمدل کامل دامنه
fault-procedureRecovery در نقطه خطای مشخصfault timing، state transition، reconciliationتاب‌آوری Production
specialist-checklistبازرسی تخصصیitem/oracle/observation/reviewerانطباق کامل
reconciliation-checkسازگاری دو Populationsnapshots، keys، units، diffsصحت هر دو منبع

Review Gateهای طراحی

GateپرسشHOLD نمونه
IdentityID/type/version یکتا است؟دو Artifact با ID مشترک
Basisمنبع و نسخه معتبر است؟RULES-v2 به‌جای v3
CoverageConditionها Edge معتبر دارند؟Condition بی‌پوشش
Fitnessنوع Artifact/Evidence مناسب ادعاست؟Scenario کلی برای fault recovery
OracleExpected قابل تصمیم است؟«باید درست باشد»
Ownershipمالک و Review-by وجود دارد؟بررسی تخصصی بدون متخصص
ImplementationScript/Procedure به نسخه موجود وصل است؟Orphan Script
Safety/privacyData، محیط و دسترسی مجاز است؟داده یا endpoint واقعی در Lab

آزمایش بازتولیدپذیر: چرا شمارش سندها PASS کاذب می‌سازد؟

برای آزمودن مکانیک گراف، یک Fixture کاملاً ساختگی و آفلاین با شناسه SYN-TEST-DESIGN-GRAPH-01 ساختیم. شش Condition و شش Artifact Draft وجود دارد. کنترل ساده فقط تعداد را مقایسه می‌کند؛ ممیزی گراف، Coverage edge، Basis version، Evidence profile، Owner و implements edge را بررسی می‌کند.

Conditionادعای ساختگیProfile لازمBasis مورد انتظارمالک
SYN-C1پروفایل عادی Checkoutrepeatable-caseRULES-v3qa-a
SYN-C2مرز مبلغboundary-caseRULES-v3qa-a
SYN-C3Callback تکراریinvariant-checkAPI-v5qe-b
SYN-C4Timeout پس از commitfault-procedureAPI-v5qe-b
SYN-C5رسید فارسی RTLspecialist-checklistUI-v4عمداً خالی
SYN-C6تطبیق Order و Ledgerreconciliation-checkLEDGER-v2finance-c

در Draft، Case مربوط به C2 به RULES-v2 قدیمی وصل است؛ C4 فقط Charter دارد و Profile بازیابی خطا را تأمین نمی‌کند؛ C5 مالک ندارد؛ C6 هیچ Artifact پوشش‌دهنده ندارد؛ و Script به SYN-TC99 ناموجود اشاره می‌کند. بااین‌حال چون تعداد Condition و Artifact هر دو شش است، کنترل موجودی ۱۰۰٪ نشان می‌دهد.

{
  "runtime": "v26.7.0",
  "fixture": "SYN-TEST-DESIGN-GRAPH-01",
  "naiveInventory": {
    "conditions": 6,
    "artifacts": 6,
    "nominalCoverage": "100%",
    "decision": "PASS"
  },
  "draftGraph": {
    "mappedConditions": 5,
    "totalConditions": 6,
    "mappedCoverage": "83%",
    "findings": [
      "stale-basis:SYN-C2",
      "insufficient-evidence-profile:SYN-C4",
      "missing-owner:SYN-C5",
      "uncovered-condition:SYN-C6",
      "orphan-script:SYN-AS1->SYN-TC99"
    ],
    "decision": "HOLD"
  },
  "correctedGraph": {
    "mappedConditions": 6,
    "totalConditions": 6,
    "mappedCoverage": "100%",
    "findings": [],
    "decision": "READY_FOR_DESIGN_REVIEW"
  }
}

نسخه اصلاح‌شده چه چیزی را تغییر داد؟

  • Case مرزی C2 با Basis نسخهٔ RULES-v3 جایگزین شد.
  • برای C4 یک fault-procedure با زمان تزریق خطا و Reconciliation اضافه شد.
  • برای C5 مالک تخصصی a11y-owner-d تعیین شد.
  • C6 به reconciliation-check مستقل وصل شد.
  • Script به Property Check موجود SYN-P1 متصل شد، نه Case خیالی.

READY_FOR_DESIGN_REVIEW فقط یعنی قواعد ساختاری این Fixture یافته‌ای ندارند. این خروجی اثبات اجرای تست، کفایت Coverage، نبود Defect، کاهش Risk، کیفیت محصول، آمادگی انتشار یا انطباق نیست. همه IDها، Rules، داده‌ها، درصدها و تصمیم‌ها عمداً ساختگی‌اند؛ آزمایش هیچ سیستم واقعی، ابزار مدیریت تست یا محصولی را Benchmark نکرده است.

چگونه آزمایش را مستقل بازتولید کنیم؟

منطق به کتابخانه یا شبکه وابسته نیست: آرایهٔ Conditionها، Artifactها، Profileهای قابل قبول و Basisهای مورد انتظار تعریف می‌شود؛ سپس Nodeها و Edgeها پیمایش می‌شوند. برای بازتولید، Fixture را ثابت نگه دارید، نسخه Runtime و ورودی را ثبت کنید و خروجی JSON را با Expected fixture مقایسه کنید. این Demonstration جای تست Tool، Database، concurrency، دسترسی یا Workflow واقعی را نمی‌گیرد.

for each condition:
  linked = artifacts where condition.id in artifact.covers
  if linked is empty → uncovered-condition
  if no linked.type satisfies condition.profile → insufficient-evidence-profile
  if any linked.basis != expected basis → stale-basis
  if condition has no effective owner → missing-owner
for each automated-script:
  if implements target does not exist → orphan-script
decision = findings.empty ? READY_FOR_DESIGN_REVIEW : HOLD

سناریوی عملی ساختگی برای یک Checkout ایرانی

لابراتوار SYN-CHECKOUT-DESIGN-01 هیچ اتصال شبکه‌ای ندارد و از Checkout، PSP، Ledger و Notification بدل استفاده می‌کند. همه مشتری‌ها، سفارش‌ها، Eventها، مبلغ‌ها و زمان‌ها ساختگی‌اند. واحد canonical مبلغ IRR است و اگر UI تومان نشان دهد، عبارت «تومان» و تبدیل دقیق باید صریح باشد.

Basis ساختگیConditionArtifact انتخابیدلیل
RULES-v3پروفایل عادی و مرز مبلغHigh-level + parameterized CasesExpected mapping دقیق و پرتکرار است
API-v5Duplicate CallbackProperty/invariant Checkترکیب delivery و commit گسترده است
API-v5Timeout-after-commitFault Procedure + Scenarioزمان خطا و state transition مهم است
UI-v4رسید فارسی/RTLSpecialist Checklist + Charterبازرسی و کاوش مکمل‌اند
LEDGER-v2Order/Ledger reconciliationReconciliation CheckPopulation، key و unit باید مقایسه شود

Test Data و هویت در لابراتوار فارسی

Dataset باید Seed، Generator version، Reset و invariant داشته باشد. نام، موبایل، ایمیل، IP، حساب، سفارش، PAN، CVV2، OTP، Cookie، Token و Secret واقعی ممنوع است. ارقام فارسی «۱۲۳»، عربی «۱۲۳» و لاتین «۱۲۳» برای نمایش و Parsing جداگانه آزموده می‌شوند؛ Normalization نباید مقدار یا شناسه را بی‌صدا عوض کند.

DATASET: SYN-FA-PAY-v4
seed: 42017
tenant: SYN-TENANT-01
amount: 280000 IRR
display variants: "۲۸۰٬۰۰۰ ریال" | "۲۸٬۰۰۰ تومان"
event time: 2026-08-12T08:15:00Z
display zone: Asia/Tehran
Jalali: presentation-only; event identity remains ISO instant
contains_real_person_or_payment_data: false
reset: local fixture destroy/recreate

Faultها و Oracleهای نمونه در لابراتوار

Fault/variationOracleEvidence مورد انتظارادعای ممنوع
Timeout قبل از fake commitهیچ اثر canonical ثبت نشود یا state صریحtransition + reconciliationرفتار PSP واقعی
Timeout بعد از fake commitRetry اثر دوم نسازدevent/attempt/ledger IDsExactly-once سراسری
Duplicate/late callbackقانون API-v5 برای identity/orderdelivery history + current stateنبود Race در Production
قطع cache/mirrorمنبع Canonical و fallback تعریف‌شدهsource selection recordتاب‌آوری زیرساخت واقعی
RTL و mixed digitscontent/semantic order و exact valuesmatrix + specialist notesانطباق کامل دسترس‌پذیری

Scrum و Agile چه چیزی را الزام نمی‌کنند؟

راهنمای رسمی Scrum نوامبر ۲۰۲۰ Artifactهای Product Backlog، Sprint Backlog و Increment و Commitmentهای آن‌ها را تعریف می‌کند؛ Test Scenario، Test Case یا نقش مستقل QA را تجویز نمی‌کند. پس جملهٔ «در Agile تست‌کیس نمی‌نویسیم» یا «Scrum سناریو می‌خواهد» از خود Scrum Guide نتیجه نمی‌شود. تیم می‌تواند Testware مناسب را در Definition of Done، Workflow و Engineering policy خود قرارداد کند.

چه زمانی مستند را Just-in-time بسازیم؟

وقتی UI و جزئیات جریان ناپایدارند، Condition، Oracle و Coverage intent را زود تثبیت کنید و Procedure/selector جزئی را نزدیک اجرا بسازید. Just-in-time به معنی «بدون Traceability تا لحظه آخر» نیست. Trigger آماده‌سازی را مشخص کنید: Ready for Design، interface freeze، Build candidate یا شروع Session.

Tool انتخاب کنید، نه Taxonomy ابزار را

ابزار مناسب باید ID و Version پایدار، Edgeهای نوع‌دار، bulk query، history، API/export، permission، review و لینک Run/Evidence را پشتیبانی کند. نام محصول به‌تنهایی مهم نیست. ابتدا یک نمونه Graph را در ابزار موجود پیاده کنید و ببینید آیا می‌توانید پرسش‌هایی مثل «کدام Script به Basis منسوخ وصل است؟» یا «کدام Condition پرریسک Owner ندارد؟» را بدون Spreadsheet دستی پاسخ دهید.

  • اگر ابزار فقط parent-child دارد، Edge type را در فیلد ساختاریافته و export نگه دارید.
  • اگر Versioning ضعیف است، immutable revision URL یا Git commit را مرجع کنید.
  • اگر Graph query ندارد، گزارش orphan/stale را با API بسازید و snapshot آن را نگه دارید.
  • قفل‌شدن در Vendor را با export قابل خواندن و شناسه‌های مستقل کاهش دهید.

اتوماسیون ممیزی Graph چه کند؟

اتوماسیون برای قواعد قطعی مناسب است: ID تکراری، Edge شکسته، Basis قدیمی، Owner خالی، Review-by منقضی، Evidence profile ناشناخته، Script یتیم و Cycle ممنوع. اما نمی‌تواند به‌تنهایی بگوید Scenario کافی است، Oracle درست است یا Risk پذیرفتنی است.

CI DESIGN-GRAPH POLICY
ERROR: broken edge; duplicate identity; prohibited real-data marker
HOLD: uncovered critical condition; stale basis; missing required owner
WARN: review-by expired; high fan-in/out; unexecuted active artifact
INFO: superseded artifact retained for historical evidence
Human review: adequacy, risk acceptance, oracle validity, compliance

استفاده امن از AI در طراحی Artifact

AI می‌تواند از روی Basis مجاز، Candidate Condition، Boundary، سؤال و Draft Case پیشنهاد کند یا روابط گمشده را برای Review علامت بزند. نباید Requirement، Oracle، نتیجه اجرا یا Evidence را جعل کند؛ داده حساس را به سرویس تأییدنشده بفرستد؛ یا Draft را بی‌Review فعال کند. خروجی باید provenance شامل model/tool version، prompt/template، input references، زمان و Reviewer داشته باشد.

کارنقش AIکنترل انسانیممنوع
استخراج Candidateپیشنهاد Condition/edgeتأیید معنای Basisساخت منبع خیالی
تنوع دادهپیشنهاد boundary/Unicodeبررسی domain و privacyداده شخصی واقعی
بازنویسی Caseکاهش ابهام/تکرارحفظ Oracle و intentتغییر خاموش معنا
Graph auditاولویت‌بندی findingتصمیم Gate ثبت‌شدهاعلام خودکار کفایت Coverage

نقش‌ها و حق تصمیم

تصمیمResponsibleApprover/ownerConsulted
معنای Basis/RuleAnalyst/ProductDomain ownerQA/Engineering
Condition و Coverage modelTest analystTest design ownerDomain/Dev/SRE
نوع Artifact و جزئیاتTest designerTest leadExecutor/Automation
Oracle تخصصیDomain specialistClaim ownerQA/Legal/Security حسب زمینه
Implementation/ScriptTest/Software engineerCode ownerDesigner
Outcome AttemptExecutor/systemRun ownerArtifact owner
Risk acceptance/releaseDecision ownerنام‌برده در governanceQA/Product/Engineering

Metricها و Countermetricها

MetricکاربردCountermetricبازی احتمالی
Uncovered condition countیافتن شکاف mappingCondition quality reviewادغام Conditionها برای کاهش عدد
Stale edge ageتأخیر Change reviewMeaningful change rateReview صوری
Orphan Script rateپیاده‌سازی بی‌intentUseful direct-property linksلینک‌سازی مصنوعی
Median maintenance timeهزینه مستنداتEscaped ambiguity/reworkکاهش جزئیات ضروری
Evidence rejection rateکیفیت handoffReviewer latencyپذیرش آسان Evidence
Time-to-impact-assessسرعت فهم تغییرMissed impacted artifactsبستن سریع بدون بررسی

تعداد Test Case، تعداد Step و درصد Automation هدف کیفیت نیستند. Metric بدون Population، Window، Status semantics و امکان بازی‌کردن، رفتار نامطلوب می‌سازد.

Pilot سی‌روزه برای Test Design Graph

روزتمرکزخروجیGate
۱–۵یک Feature و Naming Contractواژگان، Scope، ۱۰–۲۰ Conditionمالک معنا تأیید کرده
۶–۱۰Artifact DecisionScenario/Case/Charter mix و profilesهیچ Condition حیاتی یتیم نیست
۱۱–۱۵Implementation linksProcedure/Script/Data/Env edgesنسخه و Owner کامل
۱۶–۲۰Run و EvidenceAttempts بدون بازنویسی DesignTrace تا Evidence قابل پرس‌وجو
۲۱–۲۵Change drillBasis change و impact decisionstale/orphan audit کار می‌کند
۲۶–۳۰بازنگری هزینه/ارزشTailoring policy و backlogContinue/adjust/stop با شواهد

۳۰ Anti-pattern در سناریو و تست‌کیس

  1. Scenario را همیشه E2E دانستن.
  2. Case را همیشه Step-by-step دانستن.
  3. What را فقط به Scenario نسبت‌دادن.
  4. Actual Result را در نسخه Design نوشتن.
  5. Pass/Fail را Status دائمی Case گرفتن.
  6. یک Scenario→چند Case را تنها رابطه مجاز دانستن.
  7. تعداد Artifact را Coverage نامیدن.
  8. Scenario کلی را جای Condition گذاشتن.
  9. Checklist بی‌Oracle ساختن.
  10. Charter بی‌Mission و Timebox نوشتن.
  11. Script را بدون Design intent نگه‌داشتن.
  12. برای هر Script یک Manual Case اجباری ساختن.
  13. Steps UI را پیش از ثبات interface قفل‌کردن.
  14. Basis version را حذف‌کردن.
  15. ویرایش خاموش Case پس از اجرای قبلی.
  16. Artifact منسوخ را حذف و Evidence تاریخی را یتیم‌کردن.
  17. Owner را نام تیم عمومی گذاشتن.
  18. Review-by نداشتن.
  19. Oracle را «رفتار فعلی» گرفتن.
  20. Expected مبهم «باید درست باشد» نوشتن.
  21. Data و State را ضمنی گذاشتن.
  22. IRR و تومان را بی‌برچسب مخلوط‌کردن.
  23. نمایش جلالی را هویت زمان دانستن.
  24. داده واقعی را وارد Lab کردن.
  25. Detailed Case را الزام جهانی صنعت دانستن.
  26. Scrum را دلیل حذف Testware معرفی‌کردن.
  27. قالب استاندارد را مدرک انطباق دانستن.
  28. AI Draft را بدون provenance فعال‌کردن.
  29. Review صوری برای سبزشدن Metric.
  30. READY_FOR_DESIGN_REVIEW را آمادگی Release دانستن.

چک‌لیست ۴۸ نقطه‌ای طراحی و ممیزی

  1. Objective به شکل سؤال تصمیم نوشته شده است.
  2. Scope و Exclusion روشن‌اند.
  3. Test Basis شناسه دارد.
  4. نسخه Basis ثبت شده است.
  5. مالک معنای Basis مشخص است.
  6. Risk Claim به پیامد معین وصل است.
  7. Condition اتمی و آزمون‌پذیر است.
  8. Coverage model نام دارد.
  9. Coverage Itemها قابل شمارش‌اند.
  10. اولویت دلیل دارد.
  11. نوع Artifact آگاهانه انتخاب شده است.
  12. Artifact ID یکتا است.
  13. Artifact type قراردادی است.
  14. نسخه Artifact تغییر معنا را حفظ می‌کند.
  15. Owner فرد/نقش پاسخ‌گو است.
  16. Reviewer مناسب زمینه است.
  17. Review-by تعیین شده است.
  18. Preconditionها صریح‌اند.
  19. State و Reset تعریف شده‌اند.
  20. Data/Generator/Seed نسخه‌دار است.
  21. واحد و Currency صریح‌اند.
  22. Timezone و Time semantics صریح‌اند.
  23. Trigger از Setup جدا است.
  24. Expected پیش از Actual تعریف شده است.
  25. Oracle منبع و نسخه دارد.
  26. تحمل و Unknown state تعریف شده است.
  27. Evidence Profile متناسب ادعاست.
  28. Scenario start/end دارد.
  29. Charter Mission/Scope/Timebox دارد.
  30. Checklist Item به Oracle متصل است.
  31. Case بی‌دلیل Steps اضافی ندارد.
  32. Procedure ترتیب لازم را مالک است.
  33. Suite هدف Run را بیان می‌کند.
  34. Script به Artifact موجود وصل است.
  35. Manual Case بی‌دلیل برای Script تکرار نشده است.
  36. هر Edge نوع و جهت دارد.
  37. Edge به نسخه‌های دقیق وصل است.
  38. Condition حیاتی یتیم نیست.
  39. Artifact Active بدون upstream لازم نیست.
  40. Orphan Script وجود ندارد.
  41. Design Status از Outcome جدا است.
  42. Attempt به Build/Environment وصل است.
  43. Evidence به Attempt وصل است.
  44. Change triggerها ثبت شده‌اند.
  45. Superseded/Archived تاریخچه را حفظ می‌کند.
  46. داده و محیط مجاز/ساختگی‌اند.
  47. Metric همراه Countermetric است.
  48. Gate نتیجه محدود و صاحب تصمیم دارد.

منابع رسمی و محدودیت استفاده از آن‌ها

  • ISTQB CTFL Syllabus v4.0.1: مرجع واژگان و فعالیت‌های Analysis/Design/Implementation؛ نه الگوریتم جهانی Tailoring یا مدرک کیفیت.
  • ISO/IEC/IEEE 29119-3:2021: صفحه عمومی استاندارد مستندسازی تست؛ نه متن کامل، مشاوره حقوقی یا گواهی انطباق.
  • The Scrum Guide (November 2020): تعریف رسمی Scrum؛ برای نشان‌دادن اینکه نوع Test Artifact تجویز نشده است، نه طراحی فرآیند QA.

جمع‌بندی: از نام سند به قرارداد تصمیم برسید

تفاوت Scenario و Test Case یک جدول دو ستونی ثابت نیست. ابتدا Test Basis، Risk Claim، Condition و Coverage Item را روشن کنید؛ سپس بر اساس ریسک، Oracle، تغییرپذیری، مهارت اجراکننده، فاصله handoff، تکرار و Evidence موردنیاز، Scenario، Charter، Checklist، Case، Procedure یا Script را انتخاب کنید. روابط را چندبه‌چند و نسخه‌دار نگه دارید و Actual/Outcome را فقط به Run متصل کنید.

اگر قرار است از فردا فقط یک تغییر انجام دهید، برای یک Feature یک Artifact Decision Card و یک Query یتیم‌ها بسازید. همین دو خروجی سریعاً نشان می‌دهند تیم سند تولید می‌کند یا یک زنجیرهٔ شواهد قابل تصمیم.

سؤالات متداول درباره سناریوی تست و تست‌کیس

۱. آیا سناریوی تست همیشه سطح‌بالا و تست‌کیس همیشه گام‌به‌گام است؟

خیر. Scenario معمولاً سطح‌بالاست، اما Case می‌تواند High-level، پارامتریک، Detailed یا Model-based باشد. میزان جزئیات باید از Oracle، ریسک، handoff، تکرار و هزینه تغییر بیاید. Procedure می‌تواند Steps دقیق را جداگانه مالک شود.

۲. آیا یک سناریوی تست باید به چند تست‌کیس شکسته شود؟

گاهی بله، اما قانون جهانی نیست. رابطه می‌تواند چندبه‌چند باشد: یک Scenario چند Condition را پوشش دهد، یک Condition با Case و Charter و Property Check پوشش داده شود، یا یک Case چند Coverage Item مرتبط را بیازماید. Edge و دلیل رابطه را ثبت کنید.

۳. Actual Result و Pass/Fail را در تست‌کیس بنویسیم؟

Expected Result در Design Case است؛ Actual Result و Outcome به Attempt مشخص روی Artifact، Build و Environment نسخه‌دار تعلق دارند. جداکردن آن‌ها تاریخچه را حفظ می‌کند و مانع جملهٔ مبهم «این Case پاس است» می‌شود.

۴. در Agile می‌توان فقط Scenario یا Charter داشت؟

اگر برای تصمیم و ریسک موردنظر، Condition، Oracle، Coverage، Data و Evidence کافی فراهم شود، ممکن است Artifact سبک کافی باشد. Agile یا Scrum به‌تنهایی حذف Case را توجیه نمی‌کند. Tailoring را ثبت کنید و اثر آن را با نتیجه‌های واقعی و Countermetric بازبینی کنید.

۵. حداقل فیلد یک Test Scenario و Test Case چیست؟

Scenario حداقل ID/version، Objective، محدوده، start/end و Coverage links می‌خواهد. Case حداقل ID/version، Condition/Basis links، precondition، data/parameter، trigger، Expected/Oracle و Evidence profile می‌خواهد. Owner، status و review-by برای هر دو لازم‌اند؛ Actual و Outcome در Run ثبت می‌شوند.

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