پاسخ کوتاه: تست سیستم خودترمیم یعنی ارزیابی یک ادعای محدود دربارهٔ Control loop مشخص: Fault یا degradation چگونه حس می‌شود، چه زمانی و با چه خطایی Detection/Diagnosis رخ می‌دهد، کدام Policy چه Actionی را مجاز می‌کند، Action روی چه State و Subjectی اجرا می‌شود، Outcome مستقل چگونه صحت و side effect را می‌سنجد، سیستم آیا در زمان محدود همگرا می‌شود، و چه وقت automation باید متوقف و به انسان Escalate کند. «Pod دوباره Running شد» یا «Dashboard سبز است» هنوز Self-healing موفق و امن را ثابت نمی‌کند.

این مقاله یک Healing Action Evidence Record می‌سازد و Fault→Signal→Detection→Diagnosis→Knowledge/Policy→Plan→Action→Verification→Convergence/Escalation را قابل Replay می‌کند. Mutation Testing کد، Chaos Engineering، Resilience Testing، Observability و Operational Readiness را نیز از این موضوع جدا نگه می‌دارد. یک آزمایش آفلاین فارسی نشان می‌دهد چرا detect شدن fault، اجرای restart، بازگشت replica count و health سبز می‌توانند همچنان نتیجه‌ای خطرناک و ناقص باشند.

سیستم خودترمیم دقیقاً چیست؟

Self-healing یک برچسب مطلق نیست. یک سامانه می‌تواند برای failure mode محدود، در سطح container، process، instance، route، dependency، data replica یا business workflow اقدام خودکار یا نیمه‌خودکار داشته باشد. Subject، symptom/fault، desired state، action repertoire، time bound، safety constraint و escalation policy باید صریح باشند. Restart process با repair داده، تصحیح root cause یا بازیابی outcome کاربر یکسان نیست.

Self-healing الزاماً بدون انسان نیست

سطح autonomy می‌تواند advisory، human-approved، supervised automatic یا bounded automatic باشد. Human approval همیشه بد و automation کامل همیشه بالغ نیست. وقتی diagnosis نامطمئن، action برگشت‌ناپذیر، blast radius بزرگ، data state مبهم یا safety impact بالا است، توقف و Escalation بخشی از رفتار درست Control loop است؛ «هیچ دخالت انسانی» معیار قبولی عمومی نیست.

MAPE-K؛ حرف K را حذف نکنید

Monitor دادهٔ Sensor را جمع و qualify می‌کند؛ Analyze symptom/hypothesis می‌سازد؛ Plan گزینه/Action را با Policy انتخاب می‌کند؛ Execute از Effector استفاده می‌کند؛ و Knowledge شامل topology/model، desired state، policy، history، context و evidence مورد استفادهٔ حلقه است. K یک مرحلهٔ آخر نیست؛ ورودی/حافظهٔ مشترک حلقه است. Stale یا ناسازگار بودن Knowledge می‌تواند Action درست را روی Subject غلط اجرا کند.

مقالهٔ اولیهٔ IBM Research دربارهٔ معماری Autonomic Computing interface و requirementهای رفتاری componentها و patternهای self-configuration/optimization/healing/protection را شرح می‌دهد و از componentهای autonomous یا semi-autonomous سخن می‌گوید. این یک معماری پژوهشی و prototype evidence است، نه استاندارد پذیرش یا تضمین برای سامانهٔ شما.

قالب Healing Claim

ClaimID: HC-031
Managed subject/build/config/topology: ...
Controller/policy/model/action versions: ...
Fault/symptom and applicability boundary: ...
Desired state and user/business outcome: ...
Detection/diagnosis/action/convergence objectives: ...
Safety invariants / forbidden actions / blast radius: ...
Autonomy level / approval / escalation: ...
Evidence profile / decision owner / expiry triggers: ...

مرز موضوعی با روش‌های نزدیک

روشپرسش مالکرابطه با Self-healing
Fault injectionFault مشخص چگونه فعال می‌شود؟Stimulus آزمایش می‌سازد
Chaos EngineeringSteady-state hypothesis زیر experiment ایمن چه می‌شود؟می‌تواند loop را به چالش بکشد
Resilience Testingسامانه در Failure mode چگونه degrade/recover می‌کند؟Outcome گسترده‌تر را می‌سنجد
Mutation TestingTest suite جهش کد را می‌کشد؟قدرت تست منطق controller را می‌سنجد
Observabilityاز outputها چه سؤال‌هایی قابل پاسخ است؟Evidence و sensor visibility می‌دهد
Operational Readinessتوان operate/recover/rollback/support چه وضعی دارد؟مالکیت و آمادگی بهره‌برداری را می‌سنجد
Healing Action TestControl loop چه Actionی را چرا و با چه پیامدی اجرا کرد؟موضوع اختصاصی این مقاله

طراحی Steady State، Hypothesis، Blast Radius و Stop Condition در راهنمای مهندسی آشوب مالک مستقل دارد؛ Outcome گستردهٔ Failure/Degradation/Recovery نیز در راهنمای تست تاب‌آوری پوشش داده می‌شود. این مقاله Chaos یا Resilience را مترادف Self-healing Testing نمی‌کند.

Control-loop Inventory بسازید

هر controller/automation را فهرست کنید: owner، managed resource، sensor، evaluator، desired state، policy، action/effector، cadence/event trigger، state store، dependency، lock/lease، autonomy، permission، stop و escalation. چند loop ممکن است روی یک resource عمل کنند—autoscaler، restart controller، traffic manager و operator—و تعامل آن‌ها oscillation یا action conflict بسازد.

Subject و Topology را Pin کنید

Service name کافی نیست. Workload/controller build، artifact digest، config، policy/model/rule version، desired-state revision، deployment/replica/zone، dependency graph، storage mode، feature flags و traffic/data scope را ثبت کنید. Controller و managed subject ممکن است release cadence جدا داشته باشند؛ هر دو هویت لازم دارند.

Fault، Error، Failure و Symptom را یکی نکنید

Fault می‌تواند علت/شرط فعال‌شده باشد؛ Error یک state نادرست داخلی؛ Failure انحراف observable از خدمت؛ Symptom چیزی است که Sensor می‌بیند. یک Symptom چند علت و یک Fault چند symptom دارد. Test باید injected condition، activation، propagation، affected scope و cleanup را جدا ثبت کند. Kill کردن process لزوماً network partition، stale cache یا semantic corruption را نمایندگی نمی‌کند.

Fault Model و Sampling

از Incident/Near Miss، FMEA/Hazard، architecture dependency و change history یک universe بسازید: crash، hang، latency، loss، duplicate، reorder، partition، quota، exhaustion، corrupt/stale state، bad config، credential expiry، dependency degradation و controller failure. Risk×frequency×detectability×action hazard را برای نمونه‌گیری اعلام کنید و Unknown/Unsupported را در denominator نگه دارید.

Sensor Contract

SensorID / producer / version / subject binding
Signal semantics / unit / dimensions / timestamp
Sampling / aggregation / window / delay / loss policy
Validity / freshness / missing / NaN / stale handling
Source authentication / integrity / access
Expected fault-to-signal relationship
Calibration / false-positive / false-negative evidence
Owner / expiry / change trigger

Detection را جدا بسنجید

Fault activation، first valid signal، detector evaluation و detection declaration timestampهای جدا هستند. Detection latency را از injection command نسنجید مگر activation همان لحظه ثابت باشد. True/false positive/negative، duplicate detection، suppression، cooldown، hysteresis و missing signal لازم‌اند. Detector خاموشی را «سلامت» تفسیر نکند.

Diagnosis همیشه Root Cause نیست

Action ممکن است بر basis یک symptom classification اجرا شود، بدون اینکه root cause قطعی شده باشد. Record باید candidate causeها، evidence، confidence/calibration، alternative، unknown و chosen action basis را نگه دارد. «Pod unhealthy» diagnosis برنامه نیست؛ restart شاید symptom را موقتاً حذف کند و علت در config یا dependency بماند.

Knowledge و Policy را Version کنید

Topology، inventory، desired state، threshold، rule/model، recent actions، incident suppression، maintenance window، budget و ownership بخشی از Knowledge‌اند. Authority/source/freshness/consistency و update event را ثبت کنید. Policy باید applicability، priority، conflict resolution، action budget، cooldown، precondition، forbidden state و fallback داشته باشد.

Plan فقط انتخاب یک Action نیست

Planner باید گزینه‌های observe/wait، restart، reschedule، isolate، reroute، scale، degrade، clear safe cache، rotate lease، rollback، compensate، page و no-action را با constraint مقایسه کند. Expected benefit، cost/risk، prerequisites، dependency/capacity، reversibility و confidence ثبت شوند. گاهی safest plan توقف automation است.

Action Contract و Effector

ActionID / attempt / controller / policy decision
Target identity / expected current state / preconditions
Command/parameters/idempotency key/action budget
Authorization / approval / lock or lease
Start/ack/commit/complete timestamps
Timeout/retry/backoff/dedup/cancel semantics
Expected state transition and side effects
Verification oracle / compensation / escalation

Timeout-before و Timeout-after-commit

اگر Ack نرسید، Action ممکن است اجرا نشده یا اجرا و پاسخ گم شده باشد. Retry بدون idempotency scope می‌تواند دو replica replacement، دو traffic shift یا دو compensation بسازد. AttemptID، idempotency key، commit evidence، dedup window و reconciliation لازم‌اند. «دستور موفق بود» از status client به‌تنهایی قابل استنتاج نیست.

State Machine ترمیم را مدل کنید

نمونهٔ stateها: HEALTHY→SUSPECT→DEGRADED→ACTION_PENDING→ACTING→VERIFYING→RECOVERED یا FAILED/ESCALATED. Event، guard، owner و timeout هر transition را بنویسید. Late/duplicate/reordered signal و concurrent action باید rule داشته باشند. Dashboard label جای state authority نیست.

Desired State و Real Outcome متفاوت‌اند

Replica count=۳ یعنی controller object با desired count همسو است؛ نمی‌گوید سه instance آماده، درست، دارای data سازگار و قادر به انجام Journey هستند. Outcome Oracle باید user/service behavior، correctness، latency/error، queue/backlog، state/data invariants، side effects و dependency impact را بسنجد. Health endpoint می‌تواند shallow یا cached باشد.

Kubernetes چه چیزی را Self-heal می‌کند؟

مستند رسمی Kubernetes Self-Healing restart container، replacement replica، reschedule روی node failure، برخی مسیرهای persistent-volume attachment و حذف Pod failed از Service endpoint را توضیح می‌دهد. همان صفحه هشدار می‌دهد storage failure ممکن است recovery step بخواهد و restart، مشکل زیربنایی application را حل نمی‌کند. بنابراین replacement Pod evidence یک لایه است، نه ضمانت continuity یا business correctness.

Readiness، Liveness و Startup Probe را قاطی نکنید

Liveness ممکن است restart را trigger کند؛ Readiness ورود به traffic را کنترل کند؛ Startup زمان شروع آهسته را محافظت کند. Probe اشتباه می‌تواند restart loop یا premature routing بسازد. endpoint، initial delay، period، timeout، thresholds، dependency coupling، shallow/deep semantics و behavior هنگام overload را آزمایش کنید.

Convergence را تعریف و اندازه بگیرید

Convergence یعنی در یک time bound و تحت input/fault schedule تعریف‌شده، state و outcome به region پذیرفتنی برسند و همان‌جا پایدار بمانند. Detection time، action start/commit، first healthy، first correct outcome، backlog drain و stability window را جدا کنید. Recovery لحظه‌ای که دوباره degrade می‌شود convergence نیست.

Oscillation، Thrashing و Retry Storm

Action count/rate، state transition frequency، alternating scale/restart/route، resource churn، queue growth و retry amplification را بسنجید. Cooldown، hysteresis، rate/action budget، max attempts و stabilization window لازم‌اند. چند controller مستقل ممکن است هرکدام policy خود را درست اجرا کنند ولی در ترکیب ناپایدار شوند.

Safety Invariant و Harm Floor

Automation نباید duplicate side effect، data loss/corruption، unauthorized access، excessive blast radius، unsafe capacity depletion، irreversible action یا suppression بی‌انقضا بسازد. Invariant را مستقل از health metric بررسی کنید. Fast recovery که order را دوبار commit کرده Fail است، حتی اگر latency و replica سبز باشند.

Actionهای برگشت‌ناپذیر و Approval

Delete state، promote primary، rotate key، disable control، compensate transaction یا broad traffic shift نیازمند risk-based authorization است. Dry-run/preview، two-person approval، bounded target selector، break-glass، audit trail و kill switch را طراحی کنید. Model confidence به‌تنهایی authorization نیست.

Escalation بخشی از Self-healing است

شرط‌های Escalate: diagnosis confidence پایین، action budget تمام، no-convergence، repeated recurrence، conflicting controllers، safety invariant breach، unsupported fault، missing telemetry یا irreversible step. Route، severity، context/evidence pack، acknowledgment، human decision authority و automation pause/resume semantics را ثبت کنید.

Observability؛ Signal شرط لازم است، نه Verdict

راهنمای رسمی OpenTelemetry درباره Observability آن را توان پرسش از state سیستم از طریق outputها و instrumentation می‌داند و trace/metric/log را telemetry می‌شمارد. داشتن این سه نام، correctness یا diagnosis را تضمین نمی‌کند؛ semantic convention، resource/subject identity، context propagation، sampling، loss/delay، clock، retention و correlation لازم‌اند.

Healing Trace بسازید

HealingTraceID / FaultID / ClaimID
Subject/controller/policy/model/build identities
Fault activate→signals→detection→diagnosis candidates
Plan options / selected action / rationale / authority
Action attempts / ack / commit / side effects
State transitions and user/business outcome checks
Convergence/stability/recurrence/oscillation evidence
Escalation/human intervention/decision/correction

Oracle را از Controller مستقل کنید

اگر همان health bit هم Action را trigger و هم Success را اعلام کند، خطای مشترک ممکن است پنهان بماند. Independent oracle می‌تواند probe خارج از controller، business invariant، reconciliation، synthetic journey یا state observer جدا باشد. Expected result و verdict vocabulary در راهنمای Test Oracle مالک مستقل دارد.

History و Replay برای رفتار هم‌زمان

Operation/Message/Action history با stable ID، invoke/return، process/node، payload digest، causal/context link و fault schedule نگه دارید. Wall-clock order به‌تنهایی causal order نیست. Duplicate، late، reorder، partition و concurrent controllerها را برای Replay حفظ کنید. مدل History/Consistency/Replay در راهنمای تست سیستم توزیع‌شده مرز تخصصی دارد.

Mutation Testing را با Fault Injection مخلوط نکنید

تغییر threshold یا bug در controller source یک Code mutation است اگر توسط mutation operator و test-suite assessment مدیریت شود؛ ایجاد latency/partition/crash در runtime Fault injection است؛ تغییر policy/config یک Configuration perturbation است. Universe، safety و Oracle آن‌ها متفاوت است. Mutation score و survivor analysis در راهنمای تست جهش مالک مستقل‌اند.

Test Matrix برای Control loop

Fault type×location×duration×magnitude×timing×concurrency×traffic×state×controller version×policy×topology×dependency×data mode را مدل کنید. همهٔ ترکیب‌ها قابل اجرا نیستند؛ Intended/Selected/Executed/Passed/Failed/Inconclusive/Blocked/Unsupported/Unknown denominator صریح می‌خواهد. Pairwise یا sampling، interactionهای پرریسک را خودکار پوشش نمی‌دهد.

False Positive و False Negative Action

False positive detection می‌تواند restart سالم، traffic churn و data risk بسازد؛ false negative اجازه می‌دهد failure ادامه یابد. اما حتی detection درست ممکن است action غلط داشته باشد. Detection precision/recall، action appropriateness، unnecessary-action rate و missed-action outcome را جدا اندازه بگیرید و label authority/uncertainty را ثبت کنید.

Layered Verdict

لایهنمونه Verdictسؤال
FAULTACTIVATED / INVALIDFault واقعاً و در Scope فعال شد؟
SENSORVALID / STALE / LOSTSignal معتبر و تازه بود؟
DETECTIONTP / FP / FN / INCONCLUSIVEDetector درست اعلام کرد؟
DIAGNOSISSUPPORTED / AMBIGUOUSAction basis قابل دفاع بود؟
ACTIONCOMMITTED / FAILED / DUPLICATEEffector چه کرد؟
OUTCOMECORRECT / HARM / UNKNOWNرفتار و state درست شدند؟
CONVERGENCESTABLE / OSCILLATING / TIMEOUTحلقه همگرا ماند؟
CLAIMSUPPORTED / NOT-SUPPORTEDادعای محدود چه وضعی دارد؟

Healing Action Evidence Record

RecordID / version / status / supersedes
Claim/Fault/Experiment/HealingTrace identities
Managed subject/controller/policy/model/topology digests
Sensor/detector/diagnosis/knowledge contracts
Plan options / selected action / authority
Attempts / idempotency / state transitions / side effects
Independent outcome and safety oracles
Detection/action/recovery/convergence/stability times
Coverage denominator / findings / uncertainty / alternatives
Layered verdict / decision / action / expiry / correction

Fault Injection Safety

Environment، authorization، target selector، blast radius، excluded resources، steady-state guardrail، abort/kill switch، observer، cleanup و evidence capture را پیش از Run ثبت کنید. Production experiment مجوز ضمنی ندارد. شروع از simulation/local/staging و افزایش fidelity/risk باید تصمیم‌محور باشد؛ برای Production safety، راهنمای Shift-Right و ORR مسیر جدا دارند.

Operational Readiness و Ownership

Controller owner، service owner، on-call، risk owner و action authority را مشخص کنید. Runbook، monitoring، rollback، incident route و exception تازه لازم‌اند. راهنمای آمادگی عملیاتی مالک Capability/Rehearsal/Exception برای بهره‌برداری است؛ Healing evidence جای آن را نمی‌گیرد.

آزمایش آفلاین فارسی: Restart سبز اما Heal نامعلوم

Fixture خیالی SYN-HEALING-LOOP-01 یک Checkout ساختگی دارد. FaultDetected=true، RestartExecuted=true، DesiredReplicasRestored=true و HealthDashboardGreen=true هستند؛ Checker سطحی SELF_HEALED_AND_SAFE می‌دهد. اما fault activation، sensor freshness، subject binding، diagnosis، policy/model version، action idempotency، state/data invariant، business outcome، harmful side effect، convergence و escalation ثبت نشده‌اند.

داده‌های فارسی/ایرانی Fixture

Fixture از Order/PaymentAttempt/Callback/Ledger/Reconciliation کاملاً ساختگی، IRR canonical و «تومان» فقط presentation استفاده می‌کند؛ رقم‌های فارسی/عربی/لاتین، ی/ی و ک/ک، ZWNJ/Bidi، UTC و نمایش Asia/Tehran/جلالی نمایشی دارد. timeout-before/after-fake-action-commit، retry، duplicate، late، reorder، stale sensor، restart loop و duplicate fake side effect در حافظه شبیه‌سازی می‌شوند. هیچ شبکه، Production، Kubernetes cluster، شرکت، سازمان، اپراتور، ترافیک، کاربر، سفارش، پرداخت، PSP، بانک، پول واقعی، PII، token یا credential وجود ندارد.

Validator مستقل و قابل تکرار

const sizes={identity:22,claim:18,topology:20,fault:24,sensor:24,
 detection:26,diagnosis:20,knowledgePolicy:24,planning:20,action:28,
 state:26,outcomeOracle:28,convergence:24,safety:24,observability:18,
 escalation:16,evidenceDecision:22,lifecycle:13};
const controls=Object.entries(sizes).flatMap(([g,n])=>
 Array.from({length:n},(_,i)=>`${g}.${String(i+1).padStart(2,'0')}`));
if(controls.length!==397||new Set(controls).size!==397) throw Error('CONTROL_SET');

خروجی Validator چه بود؟

CONTROL_COUNT=397
SUPERFICIAL=SELF_HEALED_AND_SAFE
AUDIT=HOLD-397
INDEPENDENT_TARGET=real-system-organization-operator-or-traffic:false:PASS
CORRECTED=READY_FOR_HEALING_ACTION_EVIDENCE_REVIEW-0

۳۹۷ کنترل در ۱۸ گروه با نام group-qualified و assertion یکتایی ساخته شدند. نسخهٔ اولیهٔ fixture حتی به‌علت جمع نادرست گروه‌ها assertion خورد و اجرا متوقف شد؛ پس از اصلاح واقعی اندازهٔ گروه‌ها نتیجهٔ بالا به دست آمد. Pin شدن همهٔ فیلدهای مصنوعی فقط Record را آمادهٔ review می‌کند، نه Self-healing عمومی، diagnosis درست، root-cause repair، safety، resilience، availability، continuity، Production readiness یا واقعیت هر سیستم.

Evidence Pack حداقلی

  • Claim، controller inventory و Fault modelهای versioned؛
  • subject/controller/policy/model/topology/config digests؛
  • Sensor/Detector/Action/Outcome Oracle contracts؛
  • fault schedule و safety/abort/cleanup record؛
  • Healing Trace با stable IDs و timestamps؛
  • state/data/business invariants و side-effect evidence؛
  • coverage denominator، findings و uncertainty؛
  • layered verdict، decision، expiry و correction.

۲۴ Anti-pattern رایج

  • Restart مساوی repair؛
  • Running Pod مساوی outcome صحیح؛
  • Replica count مساوی continuity؛
  • Health سبز مساوی safety؛
  • Automation کامل مساوی بلوغ؛
  • MAPE بدون Knowledge؛
  • Symptom مساوی root cause؛
  • Detection درست مساوی action درست؛
  • همان health bit برای trigger و oracle؛
  • سه telemetry signal مساوی observability؛
  • Fault injection مساوی Chaos Engineering؛
  • Code mutation مساوی runtime fault؛
  • یک crash نمایندهٔ همهٔ failureها؛
  • بدون Fault activation evidence؛
  • نادیده‌گرفتن stale/missing sensor؛
  • Retry action بدون idempotency؛
  • timeout به‌عنوان not-executed؛
  • Action بدون current-state precondition؛
  • Controllerهای متعدد بدون conflict test؛
  • اولین healthy بدون stability window؛
  • نادیده‌گرفتن oscillation/backlog؛
  • Action برگشت‌ناپذیر بدون authority؛
  • Escalation به‌عنوان شکست طراحی؛
  • Record بدون expiry/correction.

چک‌لیست ۲۲ موردی مالک Healing Test

  • Claim و fault scope محدود است؟
  • Managed subject/controller هویت دقیق دارند؟
  • Desired state و real outcome جدا هستند؟
  • Fault/Symptom/Failure تفکیک شده؟
  • Fault activation و cleanup شاهد دارد؟
  • Sensor semantics/freshness/subject binding روشن است؟
  • FP/FN و missing signal policy داریم؟
  • Diagnosis uncertainty/alternatives ثبت شده؟
  • Knowledge/policy/model versioned هستند؟
  • Plan option و no-action وجود دارد؟
  • Action precondition/authority/idempotency دارد؟
  • Ack/commit/complete جدا هستند؟
  • State transitionها مدل شده‌اند؟
  • Oracle از controller مستقل است؟
  • Correctness و side effect سنجیده می‌شوند؟
  • Convergence/stability window تعریف شده؟
  • Oscillation/retry storm action budget دارد؟
  • Safety invariant و kill switch داریم؟
  • Multiple-loop conflict آزموده شده؟
  • Escalation route/authority آماده است؟
  • Coverage denominator و Unknown آشکارند؟
  • Decision/expiry/change trigger/correction ثبت شده؟

Pilot سی‌روزه بدون سیستم واقعی

هفتهٔ اول Control-loop inventory، Claim، Fault model و state machine خیالی بسازید. هفتهٔ دوم sensor/detector/action/oracle قراردادها و crash/stale-signal/timeout-after-commit را در Runner آفلاین اجرا کنید. هفتهٔ سوم oscillation، duplicate action، controller conflict و Escalation را تمرین دهید. هفتهٔ چهارم Reviewer مستقل Healing Trace را Replay، Unknownها را challenge و Record/schema را version کند. اتصال به cluster، Production، account ابری، operator telemetry یا traffic واقعی مجوز و طراحی ایمنی جدا می‌خواهد و در این Pilot نیست.

تغییر و Expiry

تغییر controller code، policy/model/threshold، probe، topology، dependency، schema، traffic mix، action permission، telemetry pipeline یا incident learning می‌تواند Evidence را Stale کند. Expiry تقویمی و event-based، selective retest map و visible correction لازم‌اند. Result قدیمی را برای controller جدید clone نکنید.

جمع‌بندی اجرایی

برای تست Self-healing، restart را با repair و desired state را با outcome اشتباه نگیرید. Subject/Fault/Sensor/Policy/Action را Pin کنید، activation تا convergence را trace کنید، diagnosis uncertainty و false detection را نگه دارید، Action را با idempotency/current state/authority محدود کنید، Oracle مستقل و safety invariant بسازید، oscillation و side effect را بسنجید و Escalation را رفتار درست بدانید. خروجی حرفه‌ای یک Healing Action Evidence Record محدود و منقضی‌شونده است، نه وعدهٔ «سیستم خودش همه‌چیز را درست می‌کند».

سؤالات متداول تست سیستم خودترمیم

تست سیستم خودترمیم چیست؟

ارزیابی Evidence یک Control loop مشخص از Fault و Signal تا Detection، Policy، Action، Outcome، Convergence و Escalation است. Claim باید Subject، failure mode، time bound، safety invariant و autonomy level محدود داشته باشد.

آیا جایگزینی خودکار Pod یعنی Self-healing موفق؟

فقط نشان می‌دهد controller برای desired replica state اقدامی کرده است. Readiness، traffic continuity، data consistency، business correctness، backlog drain، recurrence و علت زیربنایی باید جدا سنجیده شوند؛ storage یا application failure ممکن است اقدام دیگری بخواهد.

فرق Mutation Testing و Fault Injection چیست؟

Mutation Testing کد را با operatorهای تعریف‌شده تغییر می‌دهد تا قدرت test suite سنجیده شود. Fault Injection condition runtime مانند crash/latency/partition را فعال می‌کند تا رفتار سیستم دیده شود. تغییر config/policy نیز perturbation دیگری است و universe/Oracle خاص خود را دارد.

Convergence را چگونه می‌سنجیم؟

Region پذیرفتنی state+outcome و stability window را از پیش تعریف کنید؛ fault activation، detection، action commit، first correct outcome، backlog drain و stable recovery را timestamp بزنید. بازگشت لحظه‌ای health که دوباره degrade می‌شود convergence نیست.

حداقل Healing Action Evidence Record چه دارد؟

Claim/Fault/Trace IDs، subject/controller/policy/model identities، Sensor/Detector/Action contracts، state transitions، attempts/idempotency، Oracle و safety evidence، convergence/oscillation/escalation، coverage، uncertainty، layered verdict، decision، expiry و correction.

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