تست نرمافزار فرایندی است برای ارزیابی کیفیت، عملکرد و صحت نرمافزار نسبت به نیازمندیها. هدف کاهش خطاها، بهبود پایایی، تضمین امنیت و ارتقای تجربه کاربر است. بدون تست کافی، محصول ممکن است نقایص جدی، باگهای امنیتی یا شکست در مواجهه با شرایط واقعی داشته باشد.
- پوشش کد (Code Coverage)
- نرخ شکست تستها (Fail Rate)
- تعداد باگهای پیدا شده پس از انتشار (Post-release Defects)
- زمان میانگین رفع باگ (MTTR)
- زمان اجرای بسته تست (Test Suite Run Time)
- معیارهای عملکرد مثل تاخیر (latency)، توان عملیاتی (throughput) و نرخ خطا تحت بار.
- تحویل پیام: تضمین ارسال و دریافت پیامها (در حالت آنلاین و آفلاین).
- ترتیب پیامها: حفظ ترتیب منطقی ارسال/دریافت.
- همگامسازی چندکلاینتی: دریافت پیامها روی دستگاههای مختلف بدون تناقض.
- رمزنگاری: صحت پیادهسازی رمزنگاری end-to-end و مدیریت کلید.
- عملکرد: تاخیر (latency) هنگام ارسال و دریافت، مقیاسپذیری سرور.
- ذخیرهسازی و حذف پیامها: قوانین نگهداری، پاکسازی و بازیابی.
- اعلانها (push notifications) و مدیریت حالتها (online/offline).
- امنیت: جلوگیری از تزریق محتوا، XSS، فایلهای مخرب و مدیریت پیوستها.
- طراحی صفها و پردازش ناهمزمان (message queues).
- استفاده از کش (caching) و تکنیک shard بندی برای توزیع بار.
- تست بار و استرس برای سناریوهای اوج ترافیک.
- مانیتورینگ تاخیر ارسال/دریافت، نرخ خطا و مصرف منابع سرور.
- پیادهسازی مکانیزم backpressure برای جلوگیری از فروپاشی سیستم.
- فایلسیستم محور (File Storage): مناسب فایلها و اشتراکگذاری (مثلاً NFS).
- بلوکمحور (Block Storage): دیسک مجازی بلاکبهبلاک (مثلاً EBS)، مناسب VMها و دیتابیسها.
- شیءمحور (Object Storage): مقیاسپذیری بالا برای فایلهای بزرگ و متادیتا (مثلاً S3).
- تفاوتها در دسترسی، مقیاسپذیری، هزینه، و موارد استفاده است.
- تست بازیابی از خطا (failover) و سناریوهای خرابی سختافزار.
- تست از دست رفتن داده و بازیابی (data corruption testing).
- بررسی نسخهبندی (versioning) و نگهداری پشتیبان (backup) و بازیابی (restore).
- تستِ سنکرون/آسنکرون بودن رپلیکیشن و سازگاری دادهها.
- آزمایش QoS و عملکرد در شرایط I/O بالا.
- تست اپلیکیشن روی سطح برنامه اجرا میشود و تمرکز بر عملکرد اپ در محیط OS است.
- تست سیستمعامل بررسی لایههای پایینتر: درایورها، مدیریت حافظه، امنیت سطح سیستم، بروزرسانی OTA و پایداری کلی رابط.
- تست OS نیازمند دسترسی به سختافزار، لاگهای سیستمی عمیق و گاهی firmware-level tools است.
- بوت و ریبوت و زمان بوت.
- مدیریت حافظه و نشتهای حافظه (memory leaks).
- مصرف باتری و بهینهسازی انرژی در سناریوهای مختلف.
- اتصالها: Wi Fi، Cellular, Bluetooth، NFC و رفتار هنگامی که شبکه تغییر میکند.
- بهروزرسانی سیستم (OTA): نصب، rollback، قطعی در میانهٔ بروزرسانی.
- امنیت سیستمی: کنترل دسترسی، sandboxing، SELinux/ASM policyها.
- عملکرد در شرایط دمایی/ولتاژی نامطلوب و سناریوهای استرس.