تجزیه و تحلیل استاتیک و تجزیه و تحلیل پویا در تست نرم افزار



تجزیه و تحلیل استاتیک چیست؟

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

تجزیه و تحلیل استاتیک پس از کدگذاری و قبل از اجرای آزمایشات واحد انجام می شود.

تجزیه و تحلیل استاتیک می تواند توسط یک ماشین انجام شود تا به طور خودکار کد منبع را 'مرور' کند و قوانین غیرقابل انطباق را تشخیص دهد. مثال کلاسیک یک کامپایلر است که اشتباهات لغوی ، نحوی و حتی برخی از معناهای معنایی را پیدا می کند.


تجزیه و تحلیل استاتیک همچنین می تواند توسط شخصی انجام شود که کد را بازبینی کند تا اطمینان حاصل کند که از استانداردها و قراردادهای کدگذاری مناسب برای ساخت برنامه استفاده شده است. این اغلب Code Review نامیده می شود و توسط یک توسعه دهنده مشابه انجام می شود ، شخص دیگری غیر از توسعه دهنده ای که کد را نوشته است.

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


وقتی توسعه دهندگان آنالیز کد را انجام می دهند ، معمولاً به دنبال آن می گردند

  • خطوط کد
  • فرکانس نظر
  • لانه سازی مناسب
  • تعداد تماس های عملکردی
  • پیچیدگی سیکلوماتیک
  • همچنین می تواند آزمایشات واحدی را بررسی کند

ویژگی های کیفی که می توانند کانون آنالیز ایستا باشند:

  • قابلیت اطمینان
  • قابلیت نگهداری
  • قابل آزمایش بودن
  • قابلیت استفاده مجدد
  • قابل حمل بودن
  • بهره وری


مزایای تجزیه و تحلیل استاتیک چیست؟

مزیت اصلی تجزیه و تحلیل استاتیک این است که قبل از اینکه برای ادغام و آزمایش بیشتر آماده شود ، مشکلات مربوط به کد را پیدا می کند.

مزایای تجزیه و تحلیل کد استاتیک:


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

    • کد غیر قابل دسترسی

    • استفاده متغیر (اعلام نشده ، بلااستفاده)

    • عملکردهای فراخوانی نشده

    • نقض ارزش مرزی

محدودیت های تجزیه و تحلیل کد استاتیک:

  • اگر به صورت دستی انجام شود وقت گیر است.
  • ابزارهای خودکار باعث تولید مثبت و منفی کاذب می شوند.
  • پرسنل آموزش دیده کافی برای انجام کامل تجزیه و تحلیل کد استاتیک وجود ندارند.
  • ابزارهای خودکار می توانند احساس کاذب امنیتی را ارائه دهند که به همه چیز پرداخته می شود.
  • ابزارهای خودکار فقط به اندازه قوانینی هستند که برای اسکن استفاده می کنند.
  • این آسیب پذیری را در محیط زمان اجرا معرفی نمی کند.


تحلیل پویا چیست؟

بر خلاف تحلیل استاتیک ، جایی که کد اجرا نمی شود ، تجزیه و تحلیل پویا بر اساس اجرای سیستم ، اغلب با استفاده از ابزار.

از ویکی پدیا تعریف تجزیه و تحلیل برنامه پویا :

تجزیه و تحلیل برنامه پویا ، تجزیه و تحلیل نرم افزار کامپیوتر است که با اجرای برنامه های ساخته شده از آن نرم افزار بر روی پردازنده واقعی یا مجازی انجام می شود (تجزیه و تحلیل انجام شده بدون اجرای برنامه ها به عنوان تجزیه و تحلیل کد استاتیک شناخته می شود). ابزارهای تجزیه و تحلیل برنامه پویا ممکن است نیاز به بارگذاری کتابخانه های خاص یا حتی کامپایل مجدد کد برنامه داشته باشند.


متداول ترین روش تجزیه و تحلیل دینامیکی ، اجرای Unit Tests برابر کد برای یافتن هرگونه خطا در کد است.

مزایای تجزیه و تحلیل کد پویا:

  • این آسیب پذیری ها را در یک محیط زمان اجرا شناسایی می کند.
  • این امکان را برای تجزیه و تحلیل برنامه هایی که در آنها به کد واقعی دسترسی ندارید فراهم می کند.
  • این آسیب پذیری را شناسایی می کند که ممکن است منفی کاذب در تحلیل کد استاتیک باشد.
  • به شما اجازه می دهد یافته های تجزیه و تحلیل کد استاتیک را تأیید کنید.
  • این می تواند در برابر هر برنامه ای انجام شود.

محدودیت های تجزیه و تحلیل کد پویا:

  • ابزارهای خودکار احساس امنیت کاذبی را ارائه می دهند که به همه چیز پرداخته می شود.
  • پوشش کامل آزمایشی کد منبع را نمی توان تضمین کرد
  • ابزارهای خودکار باعث تولید مثبت و منفی کاذب می شوند.
  • ابزارهای خودکار فقط به اندازه قوانینی هستند که برای اسکن از آنها استفاده می شود.
  • ردیابی آسیب پذیری به محل دقیق کد ، مشکل تر است و برای رفع مشکل زمان بیشتری لازم است.