معرفی استراتژی‌هایی به منظور تست امنیت و عملکرد اپ‌های موبایل

معرفی استراتژی‌هایی به منظور تست امنیت و عملکرد اپ‌های موبایل

Security (امنیت) و Performance (عملکرد) دو نکته مهم و کلیدی در دنیای توسعهٔ اپلیکیشن‌های موبایل هستند و نیاز به توضیح نیست که وقتی یک اپلیکیشن موبایل بدون گذراندن تست و آزمایش‌های دقیق راهی بازار می‌شود، با‌ توجه به تهدیدات زیادی که در فضای مجازی وجود دارد می‌تواند اعتبار شرکت یا دولوپری که آن را توسعه داده به کلی از بین ببرد و این در حالی است که بررسی و تست کارایی اپلیکیشن نقش مهمی در چرخهٔ توسعه یک اپلیکیشن موبایل بازی می‌کند و خبر امیدوارکننده اینکه استراتژی‌های بسیاری وجود دارند که می‌توانند برای بررسی عملکرد اپلیکیشن مورد استفاده قرار بگیرند که در این مقاله به بررسی برخی از آن‌ها پرداخته‌ایم (اگر علاقمند به مقولهٔ تست اپ‌های اندرویدی هستید، توصیه می‌کنیم به پادکست مصاحبه با حمید صدقی‌نژاد: دولوپر اندروید و متخصص امنیت مراجعه نمایید.)

به دلیل آسیب‌پذیری زیاد اپلیکیشن‌های موبایل، خطرات بی‌شماری همواره در کمین هستند و بسیار مهم است که آن‌ها را با پارامتر‌های ورودی مختلف تست کنید. عرضهٔ یک اپ موبایل به بازار بدون آزمایش‌های تخصصی و دقیق می‌تواند برای تولیدکنندهٔ آن ریسک‌های بی‌شماری به همراه داشته باشد. به عنوان مثال، اگر یک اپلیکیشن فروشگاه آنلاین بدون تست و آزمایش راهی بازار شود، عواملی مانند هکر‌ها یا ترافیک سنگین ایجاد شده در اپلیکیشن می‌توانند خروجی آن را کاملاً تحت‌الشعاع قرار دهند و یا به عنوان مثالی دیگر می‌توان به برخی کیف پول‌های اینترنتی اشاره کرد که به دلیل طراحی نادرست، مورد سوء‌استفادهٔ هکرها قرار گرفته و باعث خالی‌ شدن حساب کاربران اپلیکیشن و نارضایتی آن‌ها می‌شود.

کارایی اپلیکیشن‌های تلفن‌‌ همراه را می‌توان از طریق تعدادی از استراتژی‌های تست در فرآیندی تحت عنوان Performance Audit (بررسی عملکرد) مورد تجزیه و تحلیل قرار‌ داد به طوری که در این فرآیند عمداً ورودی یا ترافیک مخربی به اپلیکیشن هدایت می‌شود تا رفتارش در چنین شرایطی مورد بررسی قرار‌ گیرد. انواع مختلفی از روش‌ها و استراتژی‌های تست وجود دارند که برخی از مهم‌ترین آن‌ها عبارتند از:

Functional Testing 
این استراتژی تضمین می‌کند که تمام توابع، لینک‌ها و دکمه‌ها در اپلیکیشن همان‌گونه که انتظار می‌رود رفتار می‌کنند. همچنین از گزینه‌ها و لینک‌های مختلف بیشتری نیز استفاده می‌شود تا روند کلی برنامه تست و تأیید شود.

Interruption Testing
از آنجا که بسیاری از اپلیکیشن‌های موبایل نیاز به دسترسی به اینترنت دارند، لازم است تا رفتار آن‌ها در طول وقفه‌های مختلف حین اجرای اپلیکیشن بررسی شود (زمانی می‌توانیم برچسب خوب روی یک اپ موبایل بزنیم که بتواند تمامی این وقفه‌ها را بدون هیچ خطا، هشدار و یا اِکسپشنی هَندل کند.) که از آن جمله می‌توان به موارد زیر اشاره کرد:

- پوشش شبکه
- تماس‌های برقرارشده
- پیام‌های ورودی و خروجی
- خارج شدن ناگهانی باتری از دیوایس
- کار با فایل‌های مالتی‌مدیا
- انتقال داده‌ها از طریق کابل
- رومینگ 
- پاور سایکل (Power Cycle شدن یک دستگاه الکترونیکی اصطلاحاً روشی فنی برای اشاره به ری‌استارت شدن است که در‌ واقع با این کار دستگاه خاموش و مجدداً روشن می‌شود که دلیلش هم این است که خطاهای کوچک در دستگاه‌ها می‌تواند از کارکرد صحیح آن‌ها جلوگیری کنند و ری‌استارت شدن این ارورها را رفع‌ کرده و اجازه می‌دهد که دستگاه دوباره به‌ درستی کار‌ کند.)

Usability Testing
چنین تست به شما این امکان را می‌دهد تا اطمینان حاصل کنید که اپلیکیشن‌تان با سیستم‌عامل‌ها و دستگاه‌های مختلف سازگار بوده و به خوبی کار می‌کند. در این پروسه، سهولت استفاده از اپلیکیشن و انعطاف‌پذیری در برخورد با آپشن‌ها و گزینه‌های مختلف برای تست در نظر گرفته شده‌‌اند.

Stress Testing 
هدف از این تست، تجزیه و تحلیل قابل‌اعتماد بودن و ثبات اپلیکیشن در مواقعی است که آن را در معرض انواع مختلف ترافیک و یا ورودی‌های غیرطبیعی قرار می‌دهید. تست استرس بررسی می‌کند که چه‌ زمانی اپلیکیشن با گرفتن ورودی‌های خاص، خروجی دلخواهی در معرض دید شما قرار می‌دهد. علاوه بر این، مواقعی که اپ موبایل مد نظر نمی‌تواند از عهدهٔ سناریوهایی از این دست برآید به خوبی مشخص خواهند شد و دولوپر می‌تواند شروع به رفع آن‌ها نماید.

Memory Leakage Testing
از آنجایی که دستگاه‌های تلفن همراه دارای محدودیت حافظه همچون حافظهٔ رُم، حافظهٔ داخلی، حافظهٔ خارجی و ... هستند، ضروری به نظر می‌رسد تا بررسی کنید ببینید که چه زمانی اپلیکیشن حافظه اضافی مصرف می‌کند (نیاز به توضیح نیست که اپلیکیشنی خوب است که بتواند با منابع کمتر به خوبی کار‌‌ کند و حافظه را به درستی مدیریت کند.)

Lab Testing 
تست آزمایشگاهی، اپلیکیشن شما را در یک محیط بی‌سیم شبیه‌سازی شده بدون پوشش واقعی شبکه تست می‌کند به طوری که این پروسه به شکلی اجرا می‌شود که می‌توان رفتار تماس‌ها، پیام‌ها و سایر عملیات‌ را در پهنای‌باند‌های مختلف مورد ارزیابی قرار داد.

Load Testing 
این تست نشان‌ می‌دهد که اپلیکیشن شما زمانی که در معرض استفادهٔ کاربران بسیار زیاد است، چه رفتاری از خود نشان خواهد داد. Load Testing (آزمون بار) بررسی می‌کند که در صورت بروز یک ترافیک سنگین از سوی کاربران، آیا اپ کِرَش می‌کند یا خیر (به عنوان مثال، اپلیکیشن در یک لحظه و به‌ صورت ناگهانی توسط هزار کاربر باز می‌شود تا توانایی اپلیکیشن برای هندل کردن چنین باری بررسی شود.)

Location Testing 
این تست بررسی می‌کند که آیا اپلیکیشن می‌تواند به درستی پوشش شبکه و موقعیت کاربر را شناسایی کند یا خیر. به عبارتی، سازگاری اپلیکیشن با مکان‌ها و شبکه‌های مختلف در طول این آزمون بررسی می‌شود.

Installation Testing 
این فرآیند قابلیت نصب اپلیکیشن در انواع و اقسام دستگاه‌ها با تنظیمات مختلف و سیستم‌عامل‌های متفاوت را بررسی می‌کند. به عنوان مثال، اپلیکیشن را می‌توان در نسخه‌های مختلف سیستم‌عامل یا در گوشی‌های دارای محدودیت سخت‌افزار مورد آزمایش قرار‌ داد. 

Penetration Testing 
فرآیند تست نفوذ بررسی می‌کند که فرم‌ها و ویجت‌های اپلیکیشن در حین دریافت ورودی کاملاً امن باشند. این تست همواره در‌ مورد برنامه‌های حساس و مالی مانند اپلیکیشن‌های تجارت الکترونیک، خرید آنلاین یا نرم‌افزار‌های بانکی مورد نیاز است. در یک کلام، هکر‌ها نباید قادر به نفوذ به سیستم پرداخت برنامه با ترفند‌های خود باشند. 

حال نوبت به نظرات شما می‌رسد. فکر می‌کنید که بررسی و تست اپلیکیشن موبایل تا چه اندازه می‌تواند مفید و مؤثر واقع شود و همچنین شما از چه استراتژی‌هایی برای اطمینان حاصل کردن از سِکیوریتی و پِرفورمنس اپلیکیشن خود استفاده می‌کنید؟ نظرات، دیدگاه‌ها و تجربیات خود را با دیگر کاربران سکان آکادمی به اشتراک بگذارید.

منبع


محمدمهدی تهرانی