وقتی تیم می‌گوید «۷۵٪ تست‌ها تمام شده و وضعیت سبز است»، گیرنده معمولاً یک سؤال مهم‌تر دارد: دقیقاً کدام کار، روی کدام Build، با چه شاهدی، تا چه زمانِ برشی و با چه مانعی؟ اگر پاسخ در خود پیام نباشد، درصد نه پیشرفت را اثبات می‌کند و نه مبنای امنی برای تصمیم است. اطلاع‌رسانی پیشرفت تست باید یک بستهٔ نسخه‌دار، قابل‌پیگیری و قابل‌اقدام باشد؛ نه انبوهی از شمارنده‌ها و نه خوش‌بینی شفاهی.

این راهنما مالک «پروتکل به‌روزرسانی زندهٔ پیشرفت و موانع تست» است: از تعریف جمعیت و وضعیت تا Facts-as-of، Evidence، انحراف، Forecast، بستهٔ مانع، درخواست تصمیم، تأیید دریافت و تصحیح. هدف آن گزارش‌سازی زیبا نیست؛ هدف این است که یک مخاطب مجاز بتواند بدون حدس بفهمد چه چیزی معلوم است، چه چیزی هنوز معلوم نیست و چه اقدام یا تصمیمی تا چه موعدی لازم است.

پاسخ کوتاه: یک Update قابل‌اقدام چه دارد؟

  • هویت: شناسه Update، موضوع، دامنه، برنامه/موج، Build، محیط، مالک و نسخه؛
  • زمان: زمان برش واقعیت‌ها، زمان انتشار، Freshness SLA و منطقهٔ زمانی؛
  • Claim پیشرفت: جمعیت واجد شرایط، حالت‌ها، صورت و مخرج، Evidence Profile و Unknownها؛
  • Delta: تفاوت واقعیت با Baseline/Plan و تغییرات دامنه یا ریسک؛
  • Blocker Packet: مشاهده، کار مسدود، وابستگی، اثر، مالک پاسخ، موعد بررسی، Escalation و گزینهٔ جایگزین؛
  • Forecast: بازه، فرض‌ها، وابستگی‌ها و منطق Confidence؛
  • Action: سؤال تصمیم، گزینه‌ها، مرجع تصمیم، Deadline و کانال ثبت؛
  • Closure: دریافت/پذیرش، Update بعدی، پیوند شواهد و سازوکار Correction.

یک پیام خوب می‌تواند کوتاه باشد، اما نباید مبهم باشد. جزئیات حجیم در Registry و Evidence Store می‌ماند و پیام با شناسه‌های پایدار به آن‌ها اشاره می‌کند.

مرز مالکیت: این مقاله چه چیزی نیست؟

Artifactپرسش اصلیمرز با این مقاله
Test Planچه چیزی، چرا و چگونه برنامه‌ریزی شده است؟Baseline را می‌دهد؛ Update واقعیت و Delta را نسبت به آن گزارش می‌کند.
Test Status Reportتصویر مدیریتی وضعیت و ریسک چیست؟می‌تواند چند Update را Roll-up و برای تصمیم ارائه کند؛ پروتکل اتمی پیام اینجاست.
Test Summaryدر زمان برش پایان/Closure چه انجام شد؟Snapshot منجمد است؛ Update زنده و قابل‌تصحیح است.
Defect Reportرفتار نامطلوب محصول چیست و چگونه بازتولید می‌شود؟Blocker ممکن است Defect باشد، اما هر Defect مانع نیست و هر مانع Defect نیست.
Decision Recordچه مرجعی با چه دلایلی چه تصمیمی گرفت؟Update درخواست و شواهد را حمل می‌کند؛ خودش تصمیم یا Risk Acceptance نیست.
Dashboardیک View از داده‌ها چیست؟Dashboard منبع حقیقت یا اثبات خودکار Freshness نیست.

برای معماری کامل گزارش وضعیت به راهنمای گزارش تست و تصمیم انتشار، برای Baseline به برنامه تست زنده و برای Snapshot نهایی به گزارش خلاصه تست مراجعه کنید.

واژه‌نامهٔ عملیاتی پیش از ارسال اولین پیام

واژهتعریف قراردادیاشتباه رایج
Factرکورد قابل ارجاع از منبع و زمان مشخصبرداشت شخصی بدون Source
Claimگزاره‌ای که از Factها با Rule اعلام‌شده ساخته شدهرنگ یا درصد بدون مخرج
Progressتغییر قابل‌سنجش نسبت به Baseline و Goal نام‌دارActivity یا مشغول‌بودن
Blockerشرطی که کار/شاهد نام‌دار را متوقف یا ناممکن کردههر ناراحتی یا هر Bug
Impedimentمانع پیشرفت تیم در واژگان Context قراردادینقش یا فرایند واحد در همهٔ روش‌ها
Riskعدم‌قطعیتی با اثر احتمالیواقعهٔ رخ‌داده
Issueمسئلهٔ رخ‌داده که نیازمند رسیدگی استعلت اثبات‌شده
Forecastبرآورد شرطی آینده با بازه و فرضوعدهٔ قطعی
Unknownدانستهٔ ناقص و اثر آن بر Claimصفر، Fail یا حذف

چرا پیام‌های معمولی تصمیم را خراب می‌کنند؟

  • «۴۰ تست اجرا شد» نمی‌گوید جمعیت چیست، تکرارها حذف شده‌اند یا نه و کدام ریسک‌ها لمس شده‌اند.
  • «Environment مشکل دارد» Subject، زمان، مشاهده، وابستگی و اثر را پنهان می‌کند.
  • «تا فردا تمام می‌شود» فرض رفع مانع، ظرفیت و بازهٔ خطا را حذف می‌کند.
  • «QA قرمز اعلام کرد» مشاهده را با ارزیابی، توصیه، Risk Acceptance و Release Decision یکی می‌کند.
  • Dashboard زنده‌ای که Snapshot/Refresh time ندارد، می‌تواند یک View کهنه با ظاهر تازه باشد.
  • پیام فوری بدون Record ممکن است اقدام بسازد اما بعداً منشأ تصمیم و تصحیح قابل‌بازیابی نباشد.

مدل جریان: Fact تا اقدام و یادگیری

Source snapshot
  -> normalized Fact
  -> bounded Progress / Blocker / Forecast Claim
  -> audience-specific View
  -> acknowledgement
  -> decision or action record
  -> next observation
  -> correction / closure / learning

این زنجیره عمداً دوطرفه است. گیرنده فقط مصرف‌کننده نیست: ممکن است معنای Claim را سؤال کند، اقدام را بپذیرد، فرض را رد کند یا دادهٔ تازه‌ای برگرداند. یک Update بدون Acknowledgement و Next Check، اعلان است نه حلقهٔ کنترل.

قرارداد هویت Update

UpdateContract {
  update_id, revision, supersedes_update_id,
  purpose, audience, requested_decision,
  subject_id, plan_baseline_id, wave_or_run_id,
  build_id, environment_id, data_snapshot_id,
  facts_as_of, emitted_at, timezone,
  source_snapshot_ids[], owner, reviewers[],
  freshness_sla, next_update_at, correction_policy
}

عنوان‌هایی مثل «گزارش امروز» شناسه نیستند. Update باید حتی پس از تغییر نام Sprint، جابه‌جایی کارت یا کپی پیام در کانال دیگر، قابل تشخیص بماند. Build ID هم باید به Artifact واقعی اشاره کند؛ نام مبهم «آخرین نسخه» در زمان بازخوانی معنای ثابتی ندارد.

Facts-as-of با Emitted-at یکی نیست

زمانمعناکنترل
Observed atواقعه یا مشاهده چه زمانی رخ داد؟Clock/Timezone منبع
Ingested atسامانه چه زمانی داده را دریافت کرد؟Lag و Duplicate
Facts as ofآخرین نقطه‌ای که مجموعهٔ Factها تا آن کامل فرض شدهWatermark قراردادی
Computed atClaim چه زمانی محاسبه شد؟Rule/Code/Query version
Emitted atپیام چه زمانی منتشر شد؟Delivery log
Acknowledged atگیرندهٔ مسئول چه زمانی دریافت را ثبت کرد؟Receipt
Next checkبازبینی بعدی چه زمانی است؟Scheduler/Escalation

ممکن است پیام ساعت ۱۴ منتشر شود اما داده‌ها تا ساعت ۱۰ کامل باشند. نوشتن فقط «به‌روز» این چهار ساعت تأخیر را پنهان می‌کند. برای قواعد جامع تازگی و Drift، مستندات تست زنده و Freshness Contract را ببینید.

Progress Claim را پیش از درصد تعریف کنید

ProgressClaim {
  claim_id, goal_id, eligible_population_snapshot,
  unit_of_count, state_vocabulary_version,
  numerator_rule, denominator_rule,
  evidence_profile, build_id, cutoff,
  result, unknown_count, exclusions[], limitations[]
}

«درصد اجرا» می‌تواند درصد Test Case، Risk item، Requirement، Configuration cell، Session، Pipeline یا Evidence obligation باشد. این‌ها قابل‌جایگزینی نیستند. اگر واحد شمارش و Snapshot جمعیت تغییر کند، Trend باید Break marker داشته باشد؛ چسباندن دو سری ناسازگار، پیشرفت مصنوعی می‌سازد.

مخرج و جمعیت: منشأ بیشتر سبزهای کاذب

سؤالنمونهٔ پاسخ قابل ممیزیپاسخ ناکافی
جمعیت چیست؟Registry C1..C86 در Snapshot REG-۱۷همهٔ تست‌ها
چه چیزی واجد شرایط است؟Scope=IN و Build-compatible در Cutoffموارد فعال
چه چیزی حذف شده؟۱۲ مورد OUT با Exception IDموارد غیرضروری
تکرار چگونه حذف شده؟Unique by subject_id + build_idاز Dashboard
مخرج ثابت است؟Baseline ۸۶؛ Delta +۴ جدا نمایش داده می‌شودتقریباً
Unknown چه می‌شود؟۷ مورد جدا؛ نه Pass و نه صفرفعلاً حساب نشده

واژگان حالت را نسخه‌دار کنید

Stateمعنای نمونهEvidence لازم
NOT_STARTEDکار واجد شرایط است اما Attempt نداردRegistry membership
IN_PROGRESSAttempt معتبر آغاز شده ولی Outcome نهایی نداردAttempt ID و Actor/time
PASSOracle اعلام‌شده برای Build/Environment برآورده شدهResult + Evidence Profile
FAILOracle اعلام‌شده برآورده نشدهObserved/Expected/Evidence
BLOCKEDAttempt یا Evidence obligation به مانع نام‌دار متوقف استBlocker ID
INCONCLUSIVEشاهد برای نتیجهٔ معتبر کافی نیستReason/Unknown
NOT_APPLICABLEطبق Rule و Authority خارج استDisposition ID
STALEنتیجه دیگر Freshness/Build contract را برآورده نمی‌کندInvalidation reason

Blocked را Pass یا Fail نکنید؛ این وضعیت دربارهٔ امکان تولید شاهد معتبر است، نه رفتار محصول. همچنین «Done» باید یک Projection روشن از Stateها باشد، نه واژه‌ای که هر تیم متفاوت تفسیر می‌کند.

Evidence-backed progress چیست؟

سطح ادعاحداقل پیوندآنچه اثبات نمی‌کند
Activity startedWork/Attempt IDپیشرفت به سمت Goal
ExecutedAttempt + Build + Environmentنتیجهٔ معتبر
Outcome recordedResult + Oracle versionکفایت پوشش
Evidence acceptedEvidence Profile + Reviewer/Ruleکیفیت کل محصول
Obligation completeSubject + accepted Evidence + FreshnessRelease readiness

شمارش ردیف‌های Done در ابزار، اگر Evidence به Build دیگری تعلق داشته باشد یا Result منقضی شده باشد، پیشرفت قابل اتکا نمی‌سازد. مدیریت Attempt و Outcome در راهنمای چرخه اجرای تست با جزئیات آمده است.

Build، Environment و Data را در Claim قفل کنید

EvidenceRef {
  evidence_id, subject_id, attempt_id,
  build_digest, environment_snapshot,
  data_snapshot, oracle_version,
  observed_at, artifact_uri, integrity_hash,
  retention_class, access_class
}

اگر هدف B17 است، موفقیت B16 فقط وقتی قابل استفاده است که یک Compatibility/Reuse rule از پیش پذیرفته‌شده وجود داشته باشد. «هیچ کدی در آن بخش عوض نشده» باید به Change-impact evidence ارجاع دهد؛ یک فرض شفاهی نیست.

پیشرفت را با ریسک و تعهد شواهد بخوانید

دو موج هر دو ممکن است ۶۰٪ Done باشند، اما در یکی شواهد ریسک‌های بحرانی کامل و در دیگری فقط مسیرهای کم‌اثر اجرا شده‌اند. کنار شمارندهٔ Activity، وضعیت Evidence obligationهای ریسک، Gapهای ممنوع، Unknown و سن شواهد را نشان دهید. عدد وزن‌دار نیز حقیقت مطلق نیست: وزن، مدل و Authority آن باید نسخه‌دار و Countermetric داشته باشد. برای روش تحلیل ریسک، راهنمای تست مبتنی بر ریسک مرجع خوشه است.

ViewClaim مجازCountermetric
ActivityAttemptهای یکتا/جمعیتRe-run و Duplicate rate
OutcomeStateها با UnknownStale/foreign-build
Risk evidenceتعهدهای پذیرفته‌شده بر حسب Risk tierGap بحرانی و Inconclusive
FlowAge/WIP/Throughput در WindowScope churn و blocked time
Forecastبازهٔ شرطیCalibration و فرض‌های شکسته

Delta نسبت به Plan، نه فقط وضعیت اکنون

DeltaRecord {
  baseline_id, fact_snapshot_id,
  dimension: scope | schedule | risk | evidence | capacity | environment,
  expected, actual, variance,
  observed_cause_or_hypothesis,
  impact, response, owner, review_at
}

Status می‌گوید اکنون کجاییم؛ Delta می‌گوید نسبت به چه چیزی تغییر کرده‌ایم. افزایش مخرج پس از ورود چهار Coverage item باید جدا نمایش داده شود، وگرنه تیم با همان مقدار کار ظاهراً عقب می‌رود. Control Loop بین Strategy، Plan و Summary در راهنمای سه‌سندی تست توضیح داده شده است.

Forecast وعده نیست؛ گزاره‌ای شرطی است

Forecast {
  target_id, as_of,
  earliest, most_likely_optional, latest,
  unit_and_method, comparable_history_window,
  assumptions[], dependencies[],
  confidence_level, confidence_rationale,
  invalidation_triggers[], owner, refresh_at
}

اگر دادهٔ کافی برای بازه ندارید، آن را صریحاً Unknown اعلام کنید. «جمعه تمام می‌شود» را به «در صورت رفع DEP-۷ تا چهارشنبه ۱۱:۰۰ و بدون Scope delta، بازهٔ فعلی پنجشنبه تا شنبه با Confidence پایین است» تبدیل کنید. Confidence بالا بدون سابقهٔ مشابه یا با وابستگی حل‌نشده، فقط برچسب است.

Forecast را چگونه کالیبره کنیم؟

کنترلپرسشنشانهٔ هشدار
Backtestچه درصدی از Outcomeها داخل بازه افتاد؟همیشه خوش‌بینانه
Interval widthآیا بازه با عدم‌قطعیت وسیع‌تر می‌شود؟همیشه یک روز
Assumption hit rateفرض‌ها چند بار برقرار ماندند؟فرض‌های بدون Owner
ChurnScope و اولویت چه‌قدر عوض شد؟Trend بدون Break
Dependency delayزمان انتظار خارجی چقدر بود؟حذف blocked time
Correction speedپس از شکستن فرض، Forecast چه‌قدر سریع اصلاح شد؟حفظ تاریخ قبلی برای ظاهر خوب

Blocker، Defect، Risk و Dependency را جدا کنید

نوعمثالرکورد مالکرابطه با Blocker
Defectدوبار ثبت‌شدن CallbackDefect recordفقط اگر Attempt/شاهدی را واقعاً متوقف کند
Riskاحتمال ناسازگاری RetryRisk registerممکن است هنوز رخ نداده باشد
IssueStub از ساعت ۱۰ پاسخ نمی‌دهدIssue/incident recordمی‌تواند علت یا نشانهٔ مانع باشد
Dependencyدریافت Seed dataset از Data ownerDependency recordتا نقض شرط، الزاماً مانع نیست
BlockerC6 بدون Dataset معتبر قابل اجرا نیستBlocker packetپیوند بین شرط و کار متوقف‌شده
Decision gapAuthority برای پذیرش Scope delta معلوم نیستDecision requestممکن است کنترل را متوقف کند

جزئیات چرخهٔ نقص، Severity/Priority و Triage در راهنمای مدیریت نقص نرم‌افزار آمده است. در این مقاله Defect فقط یک Reference احتمالی در Blocker Packet است.

قرارداد کامل Blocker Packet

BlockerPacket {
  blocker_id, status, detected_at, facts_as_of,
  blocked_subject_ids[], blocked_evidence_profiles[],
  observation, source_and_evidence,
  confirmed_cause_optional, hypotheses[],
  dependency_id, dependency_condition,
  impact_claim, impact_evidence, unknowns[],
  response_owner, decision_authority,
  actions[], workaround_options[], tradeoffs[],
  next_check_at, escalation_trigger,
  closure_condition, closed_at, correction_refs[]
}

«مسئول مانع» می‌تواند مبهم باشد. بهتر است Response owner، Dependency owner، Decision authority و Test work owner جدا باشند. تیم تست مالک آشکارسازی و پیگیری شاهد است؛ الزاماً اختیار تعمیر Environment، تغییر Scope یا پذیرش ریسک را ندارد.

مشاهده، فرضیه و علت را با هم قاطی نکنید

سطحنمونهٔ دقیقلحن نامعتبر
Observationدر Attempt A17، ۵ درخواست Stub در ۳۰ ثانیه Timeout شدBackend خراب است
CorrelationTimeout با افزایش latency در Snapshot M7 هم‌زمان بودMonitoring ثابت کرد
Hypothesisمحدودیت Connection pool محتمل است؛ هنوز آزموده نشدهعلت قطعاً Pool است
Confirmed causeConfig diff C9 و آزمایش بازتولید کنترل‌شده علت را پشتیبانی کردتوسعه‌دهنده اشتباه کرد
ImpactEvidence Profile EP-REC برای C6 قابل تولید نیستکل انتشار دو روز عقب افتاد

اثر مانع را بدون اغراق بیان کنید

  • اثر مستقیم: کدام Work/Evidence/Environment و از چه زمانی متوقف است؟
  • اثر دامنه‌ای: کدام Risk/Objective به‌دلیل نبود شاهد Unknown می‌ماند؟
  • اثر زمانی: زمان انتظار ثبت‌شده و بازهٔ Forecast چگونه عوض شده؟
  • اثر تصمیمی: کدام سؤال با دادهٔ فعلی پاسخ‌پذیر نیست؟
  • اثر احتمالی: سناریوی شرطی با فرض، نه واقعیت قطعی.

مانع یک تست بحرانی می‌تواند مهم باشد، اما از آن به‌تنهایی «دو روز تأخیر انتشار» نتیجه نگیرید؛ مگر اینکه مسیر وابستگی، Capacity، گزینه‌های جایگزین و مرجع زمان‌بندی آن Claim را پشتیبانی کند.

Owner، Deadline و Next Check سه چیز متفاوت‌اند

فیلدپرسشنمونه
Action ownerچه کسی اقدام نام‌دار را انجام می‌دهد؟role:environment-owner
Decision authorityچه کسی گزینه را تصویب/رد می‌کند؟role:test-plan-owner
Due atاقدام/تصمیم تا چه زمان لازم است؟2026-04-15T11:15:00Z
Next checkاگر هنوز بسته نشد، چه زمان دوباره مشاهده می‌کنیم؟2026-04-15T11:00:00Z
Escalation triggerچه شرطی مسیر بعدی را فعال می‌کند؟عدم پاسخ تا Due at
Update ownerچه کسی Claim را تازه/تصحیح می‌کند؟role:test-observer

Escalation تنبیه نیست؛ مسیر قراردادی تصمیم است

if blocker.age > SLA and action.not_acknowledged:
    notify(escalation_role)
    include(blocker_id, prior_receipts, impact_delta, options)
if forecast.invalidation_trigger == true:
    supersede(update_id)
    emit(corrected_forecast)
if sensitive_data_detected == true:
    stop_broadcast()
    restrict_access()
    open(sanitization_record)

Escalation باید از قبل Threshold، گیرنده، حداقل اطلاعات و مسیر برگشت داشته باشد. CC کردن مدیران بدون Deadline و گزینه، فقط نویز و فشار می‌سازد. نقش‌ها و حق تصمیم باید بر اساس قابلیت و Context تعیین شوند؛ راهنمای رهبری تضمین کیفیت و مالکیت همگانی این مرز را باز می‌کند.

درخواست تصمیم را از گزارش جدا و پیونددار کنید

DecisionRequest {
  request_id, related_update_id, question,
  options[], option_tradeoffs[],
  evidence_refs[], unknowns[],
  recommendation_optional, recommender,
  authority, due_at,
  default_if_no_response,
  decision_record_uri
}

گفتن «لطفاً راهنمایی کنید» کار بعدی را تعریف نمی‌کند. سؤال باید پاسخ‌پذیر باشد: «آیا C6 تا رفع DEP-۷ از Wave جاری خارج شود؟ گزینه A: حفظ Scope و جابه‌جایی Forecast؛ گزینه B: خروج موقت با Exception E4؛ تصمیم‌گیر: Plan owner؛ موعد: ۱۱:۱۵.» توصیهٔ تست می‌تواند ورودی باشد، اما امضای تصمیم نیست.

Acknowledgement با Agreement فرق دارد

Receipt stateمعناگام بعد
DELIVEREDکانال تحویل فنی را ثبت کردههنوز انسان ندیده است
ACKNOWLEDGEDگیرندهٔ مسئول دریافت و فهم موضوع را ثبت کردهاقدام/سؤال ممکن است باز باشد
ACCEPTED_ACTIONمالک اقدام و موعد را پذیرفتهپیگیری تا Closure
CHALLENGEDClaim یا اثر نیازمند اصلاح/شاهد بیشتر استIssue یا Correction
DECIDEDAuthority تصمیم را ثبت کردهPlan/Scope/Record را همگام کنید
CLOSEDشرط Closure با شاهد برآورده شدهRetrospective در صورت نیاز

Cadence را از Urgency جدا کنید

نوع ارتباطTriggerCadence نمونهنباید منتظر چه بماند؟
Dashboard refreshرسیدن Snapshot معتبرخودکار/ساعتیتصمیم فوری
Team syncبازبینی Flow و برنامهٔ نزدیکروزانه/Context-basedمانع بحرانی
Status roll-upCutoff مدیریتیهفتگی یا MilestoneIncident یا Expired gate
Blocker alertشرط Severity/ImpactEvent-drivenجلسهٔ بعدی
Forecast correctionشکستن فرض یا تغییر ScopeEvent-drivenگزارش دوره‌ای
Closure updateبرآورده‌شدن Closure conditionEvent-drivenیادآوری دستی

در Scrum رسمی، Daily Scrum برای بازرسی پیشرفت به سمت Sprint Goal و تطبیق Sprint Backlog است؛ ساختار ثابت یا نمودار burn-down اجباری نیست. همچنین نسبت‌دادن خودکار همهٔ موانع تست به Scrum Master یا تبدیل Daily Scrum به Status meeting مدیریتی، از راهنمای رسمی نتیجه نمی‌شود. منبع: Scrum Guide 2020.

کانال را بر اساس کار انتخاب کنید

کانالکار مناسبکنترل لازم
Test management / issue trackerRecord و Workflow اصلیID، history، access، retention
ChatAlert و هماهنگی سریعپیوند canonical، thread، عدم افشای راز
Emailتوزیع رسمی/برون‌تیمیRecipient control، version، correction
Dashboardکاوش View و Trendcutoff، source، filter، drill-down
Meetingرفع ابهام و تصمیم پیچیدهpre-read و Decision record
Pager/incident channelاثر عملیاتی فوری طبق Policyon-call، severity، security

Chat نباید تنها حافظهٔ مانع باشد. پیام کوتاه شامل شناسه و Action است؛ Record اصلی شامل تاریخچه، شواهد و Closure. عکس Dashboard نیز اگر Query/Filter/Cutoff نداشته باشد، Snapshot قابل بازتولید نیست.

یک حقیقت، چند View برای مخاطبان مختلف

مخاطبنیاز غالبView مناسبجزئیات پرخطر
تیم اجراکار بعدی، Attempt، dependencyفهرست عملیاتیToken/PII در Log
Plan ownerDelta، ظرفیت، Scope، ForecastControl viewعدد بدون uncertainty
Risk ownerEvidence gap و گزینهRisk-evidence viewآمار فنی بدون اثر
Release authorityClaimهای محدود، Unknown و Decision requestDecision packetتعبیر QA به‌جای Authority
مدیر اجراییاثر، روند، تصمیم بازSummary roll-upVanity metric
Auditor/ReviewerLineage و Correction historyEvidence/manifest viewپیوند منقضی یا دسترسی بیش‌ازحد

Tailoring یعنی Projection از یک Fact/Claim registry، نه بازنویسی حقیقت برای خوشایند هر مخاطب. عدد، Build و زمان برش در همهٔ Viewها باید سازگار بماند؛ توضیح و سطح جزئیات می‌تواند فرق کند.

چراغ راهنمایی را Claim کنید، تزئین نکنید

ColorPolicy v3
GREEN  = all named green predicates true AND no forbidden unknown
AMBER  = at least one amber predicate; impact bounded; action active
RED    = at least one red predicate or expired decision/blocker threshold
UNKNOWN = evidence/freshness insufficient to evaluate predicates

رنگ باید Rule، Owner و Effective version داشته باشد و کنار متن/آیکون قابل فهم نمایش داده شود. میانگین‌گیری «دو سبز + یک قرمز = زرد» می‌تواند یک Gap ممنوع را پنهان کند. UNKNOWN را به سبز یا زرد تبدیل نکنید و رنگ را تنها حامل معنا نسازید.

Dashboard خوب پرسش‌پذیر است

  • عنوان Claim و Decision context را دارد، نه فقط نام نمودار؛
  • Build، Environment، Population snapshot، Cutoff و Refresh time قابل مشاهده است؛
  • Unknown، Inconclusive، Blocked، Stale و Excluded را حذف نمی‌کند؛
  • Drill-down از عدد به Subject و Evidence مجاز ممکن است؛
  • Filter فعال و Scope change ثبت می‌شود؛
  • رنگ با متن و Pattern همراه است و در حالت تک‌رنگ معنا می‌ماند؛
  • Export دارای manifest است و اسکرین‌شات را منبع حقیقت نمی‌داند.

Unknown و عدم‌قطعیت را طراحی کنید

Unknownاثر بر Claimاقدام
Population incompleteدرصد نهایی قابل محاسبه نیستRegistry owner + موعد Snapshot
Foreign-build evidenceقابل تعمیم به Build هدف نیستReuse rule یا rerun
Cause unknownراه‌حل هنوز فرضیه‌ای استDiagnostic action
Impact unknownForecast باید بازتر/معلق شودImpact investigation
Authority unknownدرخواست تصمیم بی‌مقصد استGovernance lookup
Freshness unknownClaim ممکن است کهنه باشدSource health check

شفافیت به معنی قطعیت نمایشی نیست. پیام حرفه‌ای Unknown را نام می‌برد، اثرش را محدود می‌کند و مسئول کاهش آن را مشخص می‌سازد.

Correction و Supersession بخشی از صداقت‌اند

CorrectionRecord {
  correction_id, prior_update_id,
  discovered_at, corrected_fields[],
  reason, impact_on_prior_claims,
  corrected_update_id,
  recipients_re_notified[],
  downstream_records_reconciled[]
}

پیام اشتباه را بی‌صدا Edit نکنید. Revision جدید باید Update قبلی را Supersede کند، تغییر و اثرش را بگوید و به همان گیرندگان برسد. اگر تصمیمی بر Claim قبلی تکیه کرده، Decision record نیز نیازمند بازبینی است. Audit trail برای سرزنش نیست؛ برای بازیابی معنای تصمیم است.

قالب یک‌صفحه‌ای Update روزانه/رویدادمحور

شناسه/نسخه: UPD-B17-042 / r3 (جایگزین r2)
هدف/مخاطب: کنترل Wave W4 / Plan owner و Risk owner
موضوع: Checkout-Recovery | Build: B17 | Env: LAB-2
Facts-as-of: ۱۴۰۵/۰۱/۲۶، ۱۳:۴۵ Asia/Tehran
منابع: REG-17, RUN-SNAP-28, BLK-SNAP-9

پیشرفت:
- جمعیت واجد شرایط: ۶ Subject یکتا
- Evidence-backed complete: ۲ (۳۳٫۳٪)
- In progress: ۳ | Blocked: ۱ | Unknown: ۰
- Delta: C6 از ۱۰:۳۰ به علت DEP-ENV-7 مسدود

مانع BL-1:
- مشاهده: Stub در Attempt A17 طی ۵ درخواست Timeout داد
- اثر: EP-REC برای C6 تولید نمی‌شود؛ اثر Release هنوز Unknown
- مالک اقدام: role:environment-owner | Next check: ۱۴:۳۰
- Workaround: Dataset replay آفلاین؛ Trade-off: parity شبکه سنجیده نمی‌شود

Forecast: پنجشنبه تا شنبه؛ Confidence پایین
فرض: DEP-ENV-7 تا ۱۴:۳۰ رفع شود؛ در غیر این صورت Forecast باطل است
درخواست تصمیم: خروج موقت C6 از Wave؟ Plan owner تا ۱۴:۴۵
Update بعدی: ۱۵:۰۰ یا با تغییر وضعیت BL-1

قالب پیام کوتاه بدون از دست‌دادن معنا

[ACTION REQUIRED][UPD-B17-042 r3]
Facts-as-of 13:45 +03:30 | B17 | W4
۲/۶ تعهد شواهد کامل؛ C6 از 10:30 با BL-1 مسدود.
اثر مستقیم: EP-REC تولید نمی‌شود؛ اثر Release هنوز Unknown.
مالک اقدام: Env owner، بررسی 14:30.
تصمیم: خروج موقت C6 از W4؟ Plan owner تا 14:45.
Forecast شرطی: پنجشنبه–شنبه، Confidence پایین.
رکورد/شواهد: [canonical link] | Update بعدی 15:00.

پیام کوتاه باید به Record اصلی پیوند دهد. اگر کانال اجازهٔ Link امن نمی‌دهد، شناسهٔ قابل جست‌وجو بگذارید و از کپی Log، دادهٔ شخصی یا Credential خودداری کنید.

قالب مستقل Blocker برای Triage سریع

فیلدمقدار نمونه
Blocker ID / statusBL-1 / OPEN
Blocked subjectC6 / EP-REC / Build B17
Observation۵ Timeout در Attempt A17؛ Evidence EV-TIMEOUT-۷
CauseUnknown؛ H1: Connection pool
DependencyDEP-ENV-7: Stub accepts callback within 2s
ImpactEvidence gap برای R-REC؛ Release impact Unknown
Owner / authorityEnv owner / Plan owner
Action / dueConfig diff review / 14:20
Next check14:30 Asia/Tehran
WorkaroundOffline replay؛ parity شبکه خارج از شاهد
Escalationاگر تا ۱۴:۴۵ ACK نشد
Closure۳ Attempt موفق + accepted EP-REC روی B17

آزمایش تکرارپذیر: چرا ۷۵٪ سبز معتبر نبود؟

برای آزمودن مکانیک پروتکل، Fixture کاملاً ساختگی SYN-PROGRESS-BLOCKER-UPDATE-01 ساخته شد. Registry مستقل فقط C1 تا C6 را دارد و Build هدف B17 است. Draft هشت ردیف نشان می‌دهد که شش ردیف Done هستند؛ کنترل سطحی چون ۶ از ۸ برابر ۷۵٪ است، رنگ GREEN و PASS می‌دهد.

داده و قواعد Fixture ساختگی

مؤلفهمقدار اعلام‌شده
RegistryC1..C6؛ شش Subject یکتا
Build هدفB17
Freshness max۲ ساعت
Draft rows۸ ردیف؛ شامل C2 تکراری و C99 ناشناخته
Draft Done۶ ردیف؛ C3 روی B16 و C4 بدون Evidence
BlockerBL-۱ بدون Dependency/Owner/Evidence و Next check منقضی
Forecastیک تاریخ، Confidence بالا، بدون بازه/فرض/منطق
Decision requestبدون Authority و Due

Rule ممیزی Done را فقط وقتی می‌شمارد که Subject در Registry باشد، Build دقیقاً B17 باشد و Evidence ID داشته باشد. این Rule کفایت طراحی تست یا درستی Evidence را نمی‌سنجد؛ فقط اتصال ساختاری Claim به Registry/Build/Evidence را بررسی می‌کند.

خروجی واقعی اجرای Fixture

fixture: SYN-PROGRESS-BLOCKER-UPDATE-01
superficial: PASS | percent=75 | color=GREEN

auditedDraft: HOLD | evidenceBackedDone=2
findings (15):
1 stale-facts-as-of
2 duplicate-subject:C2
3 foreign-build:C3:B16->B17
4 missing-evidence:C4
5 unknown-subject:C99
6 claim-done-mismatch:6->2
7 blocker-missing-dependency:BL-1
8 blocker-missing-owner:BL-1
9 blocker-next-check-expired:BL-1
10 blocker-impact-unsupported:BL-1
11 forecast-missing-range
12 forecast-missing-assumptions
13 forecast-confidence-unexplained
14 decision-request-missing-authority
15 decision-request-missing-due

corrected: READY_FOR_UPDATE_REVIEW
evidenceBackedDone=2 | findings=0

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

نسخهٔ اصلاحی جمعیت را ۶، Done شواهدمحور را ۲، In progress را ۳ و Blocked را ۱ اعلام کرد؛ Facts-as-of تازه شد، مانع Owner/Dependency/Next check/Impact evidence گرفت، Forecast به بازهٔ شرطی با Confidence پایین تبدیل شد و درخواست تصمیم Authority/Due گرفت. نتیجه فقط READY_FOR_UPDATE_REVIEW است، نه PASS محصول و نه مجوز انتشار.

  • همهٔ شناسه‌ها، زمان‌ها، ردیف‌ها، قواعد، رنگ و درصدها عمداً ساختگی‌اند.
  • نمونه هیچ ابزار، تیم، محصول، Release، بازار یا سازمان واقعی را Benchmark نمی‌کند.
  • Evidence ID به‌تنهایی اصالت/کفایت Evidence را اثبات نمی‌کند.
  • Fixture پوشش، طراحی تست، کیفیت محصول، درستی Forecast، علت مانع یا Risk acceptance را نمی‌سنجد.
  • از این خروجی نباید Threshold جهانی، الگوریتم Release یا ادعای انطباق استخراج کرد.

سناریوی ایرانی کاملاً ساختگی: Checkout و PSP جعلی

فرض کنید یک آزمایشگاه آفلاین برای Checkout فروشگاه خیالی داریم. اجزا عبارت‌اند از Order، PaymentAttempt، Stub کاملاً جعلی PSP، Callback، Ledger آزمایشی، Reconciliation و Notification fake. هدف Wave B17 تولید Evidence برای Retry، Timeout-before-commit، Timeout-after-fake-commit، Callback تکراری، ترتیب معکوس و تطبیق Ledger است. هیچ اتصال بانکی، PSP واقعی، کاربر یا پول واقعی وجود ندارد.

ریسک ساختگیتعهد شاهدوضعیت Updateمحدودیت
R1: ثبت دوبارهٔ اثر پس از RetryC1/C2 + EP-IDEMPDone روی B17فقط Stub آفلاین
R2: از دست‌رفتن Callback دیررسC3 + EP-LATEIn progressClock مصنوعی
R3: Timeout after fake commitC4/C5 + EP-RECIn progressبدون شبکهٔ واقعی
R4: مغایرت LedgerC6 + EP-RECONBlocked by DEP-ENV-7Dataset seed نرسیده

هویت، پول و زمان در سناریوی فارسی

  • Tenant، Order، Attempt، Callback event، Ledger entry، Reconciliation run، Build و Evidence شناسه‌های جدا دارند.
  • مقدار canonical فقط IRR ساختگی است؛ نمایش تومان صریحاً برچسب و Rule تبدیل دارد.
  • اعداد فارسی «۱۲۳»، عربی «۱۲۳» و لاتین «۱۲۳» فقط ورودی‌های Unicode آزمایشگاهی‌اند و نرمال‌سازی‌شان ثبت می‌شود.
  • Instantها ISO ۸۶۰۱/UTC ذخیره، Asia/Tehran به‌عنوان View و تاریخ جلالی فقط Presentation است.
  • نام، موبایل، ایمیل، IP، حساب، کارت، PAN، CVV2، OTP، Cookie، Token، Secret، Screenshot و Log واقعی ممنوع‌اند.

این سناریو هیچ توصیهٔ بانکی، مالی، حقوقی، مالیاتی، امنیتی، حریم خصوصی یا تحریمی دربارهٔ ایران نیست. ارقام، شناسه‌ها و نام نقش‌ها صرفاً Fixture آموزشی‌اند.

Update نمونه برای همان آزمایشگاه

UPD-LAB-B17-07 / r1 | Facts-as-of 13:45 Asia/Tehran
موضوع: Evidence obligations C1..C6 | Build B17 | LAB-OFFLINE-2
کامل شواهدمحور: ۲/۶؛ درحال‌اجرا: ۳؛ مسدود: ۱

BL-RECON-1:
مشاهده: Seed snapshot مورد انتظار در manifest LAB-DATA-4 موجود نیست.
اثر مستقیم: C6/EP-RECON قابل اجرا نیست.
اثر Release: خارج از دامنهٔ این آزمایشگاه و Unknown.
مالک اقدام: role:synthetic-data-owner؛ موعد بررسی 14:30.
گزینه: Seed حداقلی تولیدشده؛ Trade-off: نمایندگی Production اثبات نمی‌شود.

Forecast: 16 تا 18 آوریل، مشروط به رفع DEP-DATA-4 تا 14:30.
Confidence: پایین؛ سابقهٔ مشابه کافی نیست.
درخواست تصمیم: پذیرش Seed حداقلی برای همین Lab؟ Lab plan owner تا 14:45.

امنیت، حریم خصوصی و حداقل‌سازی داده

ریسک ارتباطیکنترلجایگزین امن
Token در LogRedaction پیش از ingestionEvidence ID محدود
PII در ScreenshotData classification و reviewFixture مصنوعی
Link عمومیAccess control و expiryRepository داخلی
Forward ایمیلRecipient minimizationRole-based distribution
Prompt کردن دادهٔ حساسAI usage policy و DLPSchema/نمونهٔ synthetic
Retention نامحدودClass و deletion scheduleManifest بدون payload
افشای آسیب‌پذیریNeed-to-know workflowSanitized impact claim

شفافیت با پخش عمومی همهٔ جزئیات یکی نیست. گیرنده باید برای تصمیم لازم، کمترین دادهٔ کافی را ببیند؛ Evidence حساس در مخزن کنترل‌شده می‌ماند و پیام فقط Reference مجاز ارائه می‌کند.

اتوماسیون: چه چیزی را ماشین بسازد؟

  • استخراج Snapshotهای immutable از Registry، Run و Blocker store؛
  • Deduplication با کلید قراردادی و آشکارسازی foreign-build/stale evidence؛
  • محاسبهٔ Claim از Rule نسخه‌دار و انتشار numerator/denominator؛
  • Freshness، schema، referential integrity و balanced totals check؛
  • تولید Viewهای مخاطب از یک Claim registry؛
  • هشدار بر اساس Trigger و suppression/dedup window؛
  • ثبت Delivery، Acknowledgement، Supersession و Correction؛
  • آزمون synthetic مسیر اعلان، بدون Ping کردن افراد واقعی.

ماشین نباید از روی شمارنده‌ها علت مانع، اثر تجاری، Risk acceptance یا Release decision را اختراع کند. اگر Source ناقص است، Pipeline باید UNKNOWN/HOLD بدهد، نه آخرین مقدار را با برچسب «زنده» تکرار کند.

قرارداد Pipeline گزارش خودکار

extract(source_snapshots)
 -> validate(schema, identities, timestamps)
 -> normalize(states, timezones, build_ids)
 -> deduplicate(subject_id, build_id, attempt_semantics)
 -> compute(claim_rule_version)
 -> attach(lineage, unknowns, limitations)
 -> review_if(high_impact_or_low_confidence)
 -> publish(audience_view)
 -> record(delivery, acknowledgement)
 -> monitor(correction_and_escalation_triggers)

هر مرحله باید Failure mode داشته باشد. اگر State ناشناخته است، نگاشت پیش‌فرض به Fail/Pass نکنید. اگر Timezone قابل解析 نیست، ترتیب را حدس نزنید. اگر دریافت پیام شکست خورد، Delivery را Acknowledged ثبت نکنید.

هوش مصنوعی در خلاصه‌سازی Update

کاراستفادهٔ محدودGate انسانی
تلخیصکاهش متن از Claimهای موجودبررسی عدد/هویت/زمان
طبقه‌بندیپیشنهاد نوع مانعتأیید Context owner
Draft مخاطببازنویسی لحن بدون تغییر FactDiff معنایی
تشخیص تناقضپرچم‌گذاری Build/Owner/dateRule قطعی برای Gate
Forecast narrativeشرح مدل محاسبه‌شدهعدم ساخت عدد/فرض
Recommendationفهرست گزینه از دادهٔ مجازAuthority و provenance

Prompt، مدل، نسخه، ورودی، خروجی و ویرایش انسانی را برای کاربردهای پراثر ثبت کنید. متن روان مدل جای Evidence را نمی‌گیرد. دادهٔ حساس را بدون مجوز وارد سرویس بیرونی نکنید و Hallucination را با «بازخوانی انسانی» صرف مهار‌شده فرض نکنید؛ Ruleهای هویت و جمع باید مستقل اجرا شوند.

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

قابلیت/نقشمسئولیت نمونهحق خودکار ندارد
Test observerثبت Fact و Evidence gapاعلام علت بدون بررسی
Update ownerساخت Claim، انتشار و Correctionتغییر Baseline پنهانی
Work ownerاجرای اقدام تستپذیرش ریسک کسب‌وکار
Dependency ownerپاسخ به شرط خارجیتغییر Scope تست
Plan ownerکنترل Baseline و DeviationRelease مگر با اختیار صریح
Risk ownerتفسیر اثر و Treatmentتغییر Fact
Release authorityتصمیم انتشار طبق Governanceبازنویسی Outcome تست
Security/privacy ownerطبقه‌بندی و مسیر افشاکفایت تست عملکردی

ISTQB CTAL-TM v3.۰ پایش و کنترل را فعالیت‌های مداوم می‌داند و بر ارتباط وضعیت Work productها و منابع با Plan و هدف‌های راهبردی و قابل‌فهم‌بودن برای ذی‌نفعان تأکید می‌کند. این منبع آموزشی، ساختار سازمانی یا Authority جهانی تجویز نمی‌کند. منبع: ISTQB CTAL-TM v3.0 Syllabus.

متریک‌های سلامت ارتباط و Countermetricها

MetricتعریفCountermetric
Time-to-notifyاز detect تا انتشار معتبرfalse/duplicate alerts
Time-to-ackاز انتشار تا ACK نقش مسئولACK بدون action
Blocker ageزمان در OPEN با window روشنreopen rate
Action closureاقدام‌های بسته/موعددارclosure بدون evidence
Claim correction rateUpdateهای تصحیح‌شده/کلunder-reporting
Freshness complianceClaimهای داخل SLAsource outage
Forecast calibrationOutcome داخل بازه/Forecastهاinterval width
Decision latencyاز request تا decisionquality of decision input
Evidence-link validityRefهای قابل بازیابی/کلaccess overexposure
Unknown agingسن Unknownهای اثرگذارpremature forced classification

کاهش Correction rate لزوماً خوب نیست؛ ممکن است افراد خطا را گزارش نکنند. کاهش Time-to-notify نیز اگر Duplicate alert و افشای داده بالا رود، بهبود خالص نیست. هر Metric باید Owner، Window، Population، Target و بازی‌پذیری شناخته‌شده داشته باشد.

ضدالگوهایی که باید متوقف شوند

  • درصد بدون Population snapshot و واحد شمارش؛
  • سبزکردن Unknown یا Inconclusive؛
  • جمع‌زدن Re-run و Duplicate به‌عنوان پیشرفت؛
  • استفاده از Evidence متعلق به Build دیگر بدون Reuse rule؛
  • گفتن «Environment خراب است» بدون Observation و blocked subject؛
  • یکی‌دانستن Defect با Blocker؛
  • اعلام علت از روی هم‌زمانی؛
  • Deadline بدون Owner یا Owner بدون Authority؛
  • Forecast نقطه‌ای بدون فرض و Invalidation trigger؛
  • Confidence رنگی بدون منطق؛
  • ارسال مانع بحرانی در گزارش هفتگی بعدی؛
  • تبدیل Daily Scrum به گزارش به مدیر؛
  • الزام نمودار burn-down به نام Scrum؛
  • کپی Screenshot حساس در Chat؛
  • ویرایش بی‌صدای پیام اشتباه؛
  • ACK فرضی چون پیام Delivered شده؛
  • Dashboard بدون Cutoff و Source health؛
  • Roll-up میانگین درصدهای ناهم‌مخرج؛
  • نسبت‌دادن Release decision به QA صرفاً چون گزارش را نوشته؛
  • خلاصهٔ AI بدون تطبیق عدد و Lineage؛
  • گزارش Activity به جای Outcome/Evidence؛
  • Escalation به‌عنوان سرزنش؛
  • اعلام اثر زمانی قطعی از یک مانع بدون Dependency path؛
  • بستن Blocker با کامنت، بدون Closure evidence.

Pilot سی‌روزه برای استقرار کم‌ریسک

بازهکارخروجی
روز ۱–۵انتخاب یک Wave، مخاطب و سه تصمیم پرتکرار؛ نمونه‌برداری پیام‌های قبلیProblem baseline و واژه‌نامه
روز ۶–۱۰تعریف Identity/Facts-as-of/State/Population/Evidence rulesUpdate contract v0.1
روز ۱۱–۱۵ساخت Blocker/Decision/Correction templates و دادهٔ syntheticFixture و acceptance checks
روز ۱۶–۲۰اجرای Shadow؛ مقایسه با روش موجود بدون حذف آنGap log و false-alert rate
روز ۲۱–۲۵تمرین stale source، broken link، no-ACK و correctionRecovery evidence
روز ۲۶–۲۸بازبینی دسترس‌پذیری، حریم خصوصی و نقش‌هاApproved distribution map
روز ۲۹–۳۰تصمیم Pilot با Countermetric و rollbackAdopt/Adapt/Stop record

Pilot را با یک تیم و یک تصمیم واقعی اما کم‌خطر شروع کنید. هدف «خودکارسازی کامل» نیست؛ هدف کاهش زمان رسیدن از Fact معتبر به Action روشن، بدون افزایش سبز کاذب یا افشای داده است.

چک‌لیست قبل از ارسال Update

  • Purpose، مخاطب و سؤال تصمیم مشخص است.
  • Update ID، Revision و Supersedes ثبت شده است.
  • Subject، Plan baseline، Wave/Run، Build و Environment دقیق‌اند.
  • Facts-as-of، Emitted-at، Timezone و Freshness SLA معلوم‌اند.
  • Source snapshotها قابل بازیابی‌اند.
  • Population، واحد، numerator، denominator و exclusions تعریف شده‌اند.
  • Duplicate، Re-run و foreign-build کنترل شده‌اند.
  • Unknown/Inconclusive/Blocked/Stale جدا نمایش داده می‌شوند.
  • هر Done ادعایی Evidence Profile لازم را دارد.
  • Delta نسبت به Baseline ثبت شده است.
  • رنگ Rule نسخه‌دار و متن جایگزین دارد.
  • Forecast بازه، فرض، dependency، Confidence rationale و trigger دارد.
  • Blocker، blocked subject و Observation روشن دارد.
  • Cause اثبات‌نشده به‌عنوان Hypothesis نوشته شده است.
  • Impact مستقیم از اثر احتمالی جداست.
  • Action owner با Decision authority یکی فرض نشده است.
  • Due، Next check، Escalation و Closure condition موجودند.
  • درخواست تصمیم سؤال، گزینه، Trade-off و deadline دارد.
  • کانال با حساسیت و فوریت متناسب است.
  • Record canonical و Link مجاز وجود دارد.
  • پیام دادهٔ شخصی/Token/Secret ندارد.
  • Acknowledgement و Correction path تعریف شده است.
  • Update بعدی یا Event trigger معلوم است.
  • متریک‌ها Countermetric دارند.
  • متن ادعای Quality/Release/Compliance فراتر از شواهد نمی‌سازد.

مسیر مطالعهٔ مرتبط بدون هم‌پوشانی

سؤالات متداول درباره گزارش پیشرفت و موانع تست

۱. گزارش پیشرفت تست هر چند وقت یک‌بار ارسال شود؟

تناوب ثابت جهانی وجود ندارد. Status دوره‌ای را بر اساس سرعت تغییر و نیاز تصمیم تنظیم کنید، اما مانع اثرگذار، شکستن فرض Forecast، منقضی‌شدن Gate و Correction نباید منتظر جلسه یا گزارش بعدی بماند. در قرارداد، Cadence عادی و Triggerهای رویدادمحور را جدا بنویسید.

۲. بهترین درصد برای نشان‌دادن پیشرفت تست چیست؟

درصد واحدی بهترین نیست. ابتدا Goal، Population snapshot، واحد شمارش، State، Evidence Profile، Build و Cutoff را تعیین کنید. معمولاً شمارندهٔ Activity باید کنار Evidence obligationهای ریسک، Unknown، Stale و Scope delta دیده شود. درصد بدون این قرارداد می‌تواند دقیق اما بی‌معنا باشد.

۳. فرق Blocked test با Defect چیست؟

Defect ادعایی دربارهٔ رفتار نامطلوب محصول است؛ Blocked می‌گوید Attempt یا تعهد شاهد به‌علت شرط نام‌دار قابل تکمیل نیست. یک Defect فقط وقتی Blocker است که واقعاً کار مشخصی را متوقف کند. محیط، داده، دسترسی، ابهام یا Decision gap نیز می‌توانند Blocker باشند بی‌آنکه Defect محصول باشند.

۴. آیا QA باید وضعیت سبز یا قرمز و تصمیم انتشار را اعلام کند؟

QA یا Test role می‌تواند Fact، Claim محدود، Evidence gap، ارزیابی و توصیه را ارائه کند. Rule رنگ و مرجع ارزیابی باید قراردادی باشد. پذیرش ریسک و Release decision متعلق به Authority تعریف‌شده در Governance است؛ مگر آنکه همان شخص صریحاً آن اختیار را نیز داشته باشد. نویسندهٔ گزارش خودبه‌خود تصمیم‌گیر نیست.

۵. آیا Dashboard یا خلاصهٔ هوش مصنوعی جای Update انسانی را می‌گیرد؟

Dashboard برای View و AI برای Draft/تلخیص مفید است، اما هیچ‌کدام به‌تنهایی معنای Population، اثر مانع، Authority، Unknown یا Trade-off را تضمین نمی‌کنند. Claimهای هویتی و عددی باید با Ruleهای مستقل اعتبارسنجی شوند و موارد پراثر بازبینی انسانی، Lineage، Acknowledgement و Correction path داشته باشند.

جمع‌بندی: از «اطلاع دادن» تا حلقهٔ کنترل قابل‌اعتماد

اطلاع‌رسانی مؤثر تست با لحن مثبت یا نمودار رنگی شروع نمی‌شود؛ با قرارداد معنا شروع می‌شود. هویت و زمان برش را قفل کنید، پیشرفت را به جمعیت و Evidence متصل کنید، Delta و Unknown را پنهان نکنید، مانع را به Observation/اثر/مالک/موعد/گزینه تبدیل کنید و Forecast را شرطی نگه دارید. سپس مطمئن شوید گیرندهٔ مسئول پیام را دریافت کرده، اقدام یا تصمیم ثبت شده و هر خطا قابل‌تصحیح است. این‌گونه Update از یک اعلان تشریفاتی به حلقه‌ای برای کنترل آگاهانه تبدیل می‌شود—بدون آنکه خودش کیفیت محصول، پذیرش ریسک یا مجوز انتشار را جعل کند.

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