AI testing و debugging
AI testing و debugging — راهنمای فارسی از مجموعهٔ «کدنویسی با AI» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

یکی از مهمترین چیزهایی که باید در مورد کدنویسی با AI بدونی اینه: AI خوبه در نوشتن کد، ولی در تست کردن و debug کردنش — اگه بدانی چطور ازش استفاده کنی — میتونه بهمراتب قویتر باشه. خیلی از توسعهدهندهها از AI برای تولید کد استفاده میکنن ولی وقتی bug پیدا میشه یا test میخوان بنویسن، سراغ AI نمیرن. این یه فرصت از دست رفتهست.
چرا AI در debugging خوبه
خطاها یه ساختار دارن. Stack traceها، error messageها، و رفتار غیرمنتظره کد معمولاً از یه دسته محدود مشکلات میان: null pointer، race condition، type mismatch، مشکل encoding، خطای async، و... . AI مدلهای زبانی میلیونها قطعه کد و bug مشابه دیدن و patternشناسیشون قویتر از اغلب ماست.
این به این معنا نیست که AI همیشه جواب درست میده — بلکه یعنی میتونه فضای احتمالات رو خیلی سریعتر از تو محدود کنه.
تکنیک ۱: Stack Trace رو مستقیم بده
بدترین کاری که میتونی بکنی اینه که بگی «کدم کار نمیکنه». بهترین کاری که میتونی بکنی اینه که بگی:
این error میده:
TypeError: Cannot read property 'map' of undefined
at ProductList.render (ProductList.jsx:42)
at updateFunctionComponent (react-dom.development.js:17435)
این context کدمه:
[کد مربوطه]
با این اطلاعات، AI میتونه مستقیماً بگه: «این خطا معمولاً وقتی پیش میاد که products هنوز undefinedه — احتمالاً data هنوز load نشده. اینجا یه optional chaining یا یه loading state اضافه کن.»
تکنیک ۲: Rubber Duck Debugging با AI
تکنیک کلاسیک Rubber Duck Debugging اینه که مشکلت رو برای یه اردک لاستیکی توضیح بدی — چون خود توضیح دادن اغلب باعث میشه جواب رو پیدا کنی. AI این روش رو upgrade میکنه: اردک جواب میده.
پرامپت موثر: «میخوام مشکل رو برات توضیح بدم. فقط گوش بده و در آخر بگو چه سؤالاتی از این توضیح داری.»
این رویکرد کمک میکنه مشکل رو از زاویهای ببینی که خودت نمیدیدی.
تکنیک ۳: تستنویسی — بذار AI unit test بنویسه
یکی از کارهایی که AI در اون بینظیره اینه: با یه تابع موجود، برات unit test بنویسه. مخصوصاً edge caseهایی که خودت بهشون فکر نکردی.
پرامپت نمونه:
این تابع Python دارم:
def parse_persian_date(date_str):
# ...
برام unit test بنویس که این موارد رو cover کنه:
- ورودی معتبر
- ورودی null
- فرمت اشتباه
- تاریخهای مرزی (اول و آخر ماه)
- سال کبیسه
AI معمولاً edge caseهایی رو میآره که تو بهشون فکر نکردی — مثل whitespace اضافه در string، کاراکترهای Unicode عجیب، یا اعداد خیلی بزرگ.
تکنیک ۴: Test-Driven Development با راهنمایی AI
یه workflow موثر اینه: ۱. اول به AI بگو «میخوام تابعی بسازم که X کنه. قبل از نوشتن کد، unit testهاشو بنویس» ۲. Testها رو review کن — ببین آیا همه چیزی که میخوای رو cover میکنن ۳. بعد از تأیید، بگو «حالا تابع رو بنویس که این testها pass بشن»
این روش کمک میکنه از همون اول مشخص باشه «تابع باید چیکار کنه» نه فقط «چطور کار کنه».
تکنیک ۵: Code Review با AI
قبل از اینکه کدت رو merge کنی، به AI بگو:
این کد رو review کن. دنبال این مشکلات بگرد:
- Security vulnerabilities
- Memory leaks احتمالی
- Edge caseهای نادیدهگرفتهشده
- بهبود performance
- کدهای تکراری که میشه refactor کرد
AI یه code reviewer خستگیناپذیره — هیچوقت عجله نداره، هیچوقت بیحوصله نمیشه، و از چشمش چیز زیادی دور نمیمونه (البته همهچیز رو پیدا نمیکنه، ولی بیشتر از اون چیزیه که بیreview میذاشتیش بره).
تکنیک ۶: «چرا این کد غلطه» بپرس، نه «این کد رو درست کن»
فرق مهمی هست بین اینکه بگی «این bug رو fix کن» و اینکه بگی «توضیح بده چرا این کد رفتار اشتباه داره».
وقتی AI توضیح میده «مشکل اینه که X اتفاق میافته چون Y»، تو میفهمی مشکل اصلاً کجاست. اگه مستقیم fix بخوای، ممکنه AI یه patch سطحی بده که root cause رو حل نکنه.
محدودیتهای واقعی
چند جا AI debugging ضعیفه و باید بدونی:
Race condition و concurrency bugها: اینها timing-dependentان و AI نمیتونه واقعاً runtime رو شبیهسازی کنه. میتونه راهنمایی کنه ولی نه guarantee.
Bugهای environment-specific: «روی mac کار میکنه، روی linux نه» معمولاً نیاز به اطلاعاتی داره که AI نمیتونه داشته باشه — filesystem pathها، permissions، system library versions.
Production bugهای پیچیده با log حجیم: AI با log چند هزار خطی کلافه میشه. خودت باید ابتدا با grep و ابزارهای log analysis اطلاعات رو فیلتر کنی.
Security vulnerabilityهای پیچیده: برای SQL injection، XSS، و مشکلات امنیتی جدیتر، AI یه نقطه شروع خوبه ولی نه جایگزین یه security audit واقعی.
ابزارهای AI مخصوص debugging
GitHub Copilot Chat: inline توی VS Code، میتونی مستقیم روی کد توضیحخواهی کنی.
Cursor: ویرایشگری که model کل codebase رو میبینه — برای debugging مشکلاتی که چند فایل درگیرن مفیده.
AiraCode: CLI agent که با project context آشناست. وقتی AiraCode میدونه ساختار پروژهات چیه، debug suggestionهاش به context پروژه مرتبطترن. اگه قبلاً گفتی «من از PostgreSQL و SQLAlchemy استفاده میکنم»، یادش میمونه — لازم نیست هر بار توضیح بدی.
یه workflow کامل
یه مثال واقعی از یه workflow debug با AI:
۱. Bug report میگیری: «صفحه پرفایل کاربر گاهی blank لود میشه» ۲. به AI میدی: error log + کد component + network request مربوطه ۳. AI میگه: «احتمالاً race condition بین fetch user data و render هست — اینجا loading state اضافه کن» ۴. اضافه میکنی، مشکل حل نشد ۵. برمیگردی: «با این تغییر هنوز گاهی blank میشه — فقط کمتر» ۶. AI میگه: «پس root cause عمیقتره — بذار Network tab رو چک کنیم، request دومی هست؟» ۷. میبینی که دو request به API میره و دومی null برمیگردونه ۸. مشکل پیدا میشه: یه re-render غیرضروری باعث fetch دوم میشه
این رفتوبرگشت — که هر دور اطلاعات بیشتری میده — کار debugging با AI رو واقعی میکنه. یه پیام، یه جواب کافی نیست.
همچنین بخوان
- کدنویسی با هوش مصنوعی چیست؟
- AiraCode — همراه کدنویسی توسعهدهنده ایرانی
- AI برای code review
- شناخت پیوسته در هوش مصنوعی — چرا context پروژه در کدنویسی مهمه
ادامهٔ مسیر
همهٔ مقالهها ←AiraCode در برابر Cursor — کدام برای توسعهدهندهٔ ایرانی بهتر است؟
مقایسهٔ AiraCode (CLI و وب فارسی) با Cursor در پنج محور تصمیمگیری: دسترسی، حافظهٔ پروژه، قیمت و کیفیت پیشنهاد کد.
AiraCode در برابر GitHub Copilot — مقایسهٔ کامل برای کدنویس ایرانی
تفاوت AiraCode و GitHub Copilot از زاویهٔ کاربر ایرانی: دسترسی، حافظه، تنوع مدل و کیفیت autocomplete.

کدنویسی با هوش مصنوعی چیست؟
کدنویسی با هوش مصنوعی چیست؟ — راهنمای فارسی از مجموعهٔ «کدنویسی با AI» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

Cursor — ویرایشگر کدنویس هوشمند
Cursor — ویرایشگر کدنویس هوشمند — راهنمای فارسی از مجموعهٔ «کدنویسی با AI» در وبلاگ آیرا. بازنویسیشده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.
بیشتر در «کدنویسی با AI»
- GitHub Copilot — راهنمای کامل
- Windsurf (سابق Codeium)
- Claude Code — Anthropic CLI کدنویسی
- AiraCode — همراه کدنویسی فارسی توسعهدهنده ایرانی
- Cursor در مقابل AiraCode
- Aider — pair programming روی ترمینال
- Continue.dev — IDE-agnostic AI
- Cline — autonomous coding agent
- Bolt.new، Lovable و v0 — ساخت اپ با پرامپت
- Devin AI — اولین مهندس نرمافزار هوشمند
- Vibe coding چیست؟
- Agentic coding — نسل جدید کدنویسی
- MCP servers برای کدنویسی
- Sub-agents در Claude Code
- Plan mode چیست و چرا اهمیت دارد
- Tab completion هوشمند
- Multi-file edit با AI
- AI code review
- پرامپتنویسی برای کدنویسی
- Context-aware refactoring با AI
- AI برای DevOps
- آیندهٔ کدنویسی با AI
- چرا Cursor و Copilot هر روز با یه غریبه میبینندت