تست سیستمهای توزیعشده با هوش مصنوعی
خلاصهٔ کاملتر
تست سیستمهای توزیعشده یکی از سختترین کارها در دنیای نرمافزاره — چون باگهای اصلی این سیستمها معمولاً از پارتیشنبندی شبکه، شرایط رقابتی (race condition)، خرابی و بازیابی، یا پیامهای تکراری ناشی میشن، نه از منطق ساده. یک ابزار متنباز جدید به نام distributed-testing-skills دو فایل SKILL.md ارائه میده که ایجنتهای کدنویسی هوش مصنوعی میتونن ازشون برای طراحی و اجرای تست استفاده کنن.
ایدهی اصلی اینه که تست باید از ادعاهای محصول (claims) شروع بشه، نه از ساختار کد. هر سناریو یک ادعای مشخص رو زیر یک fault خاص امتحان میکنه — مثلاً «آیا append تحت partition شبکه همچنان linearizable هست؟» این رویکرد باعث میشه تستها نتونن بیسروصدا ضعیف بشن، چون هر تست اسمش از ادعایی که میخواد رد کنه گرفته شده.
اسکیل اول (designing-distributed-system-tests) ریپازیتوری رو اسکن میکنه، ادعاها رو استخراج میکنه، و یک پلن Markdown با ۱۰ بخش (§0 تا §9) تولید میکنه. بخش مهم §7.M هست که برای سناریوهای حساس به consistency، مدل انتزاعی (مثل log | register | queue)، طرح تاریخچهی عملیات، checker مشخص (مثل linearizability با ابزار Porcupine)، و نحوهی برخورد با نتایج مبهم مثل timeout رو تعریف میکنه.
§7.M (model / history / checker discipline)
- Model under test: log
- Checker: linearizability (Porcupine) per-key, then
no-lost-ack against final state
- Nemesis + landing: asymmetric-partition (iptables drop one
direction). Landing evidence = iptables drop
counter goes 0 → 14,712 over the 30s window
اسکیل دوم (executing-distributed-system-tests) پلن رو میخونه، محیط رو بررسی میکنه، و سناریوها رو اجرا میکنه. هر سناریو یک verdict از ۹ حالت ممکن میگیره — مثل PASS-hardening، FAIL-reproducible، یا INCONCLUSIVE-fault-not-proven. اگه fault اصلاً فعال نشده باشه، نمیشه نتیجه رو PASS حساب کرد. هر FAIL هم با یک برچسب مقصر مشخص میشه: SUT / harness / checker / environment.
نصب با یک خط انجام میشه — کافیه دستور زیر رو به ایجنت بدی تا خودش repo رو کلون کنه و اسکیلها رو وصل کنه. برای Claude Code از symlink زیر ~/.claude/skills/ استفاده میکنه و برای بقیه یک pointer block در ~/AGENTS.md میذاره. این ابزار روی AgentDB (یک runtime توزیعشده با Rust) تست شده و شش باگ واقعی کشف کرده، از جمله یک P0 که بسته شده.
نکات کلیدی:
- دو فایل SKILL.md برای طراحی و اجرای تست سیستمهای توزیعشده
- رویکرد claim-driven: هر تست یک ادعای محصول رو زیر یک fault مشخص آزمایش میکنه
- ۹ نوع verdict مختلف که «chaos بدون اثبات landing» رو به عنوان PASS قبول نمیکنه
- هر FAIL برچسب مقصر داره: SUT، harness، checker، یا environment
- سازگار با Claude Code، Codex، Copilot CLI، Cursor، Gemini و هر ایجنت مبتنی بر Markdown




