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

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




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

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

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


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

**نکته : ما برای انجام هر تستی باید یک سناریوی تست داشته باشیم. سناریوی تست شامل کارهای مختلفی است که از ابتدا تا انتهای تست قرار است انجام شود.

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

 - تست بار (Load Test) : ما می دانیم که در شرایط مختلف تقریبا چند کاربر همزمان از سیستم ما استفاده خواهند کرد. پس با کمک ابزارها و روش هایی که در ادامه خواهیم دید این تعداد کاربر همزمان را برای سیستم خود شبیه سازی خواهیم کرد و نحوه عملکرد و کارکرد سیستم را ارزیابی می نمائیم.

- تست فشار (Stress Test) : در این تست ما بیشترین تعداد کاربر همزمانی که می دانیم قرار است به سیستم ما وصل شود را شبیه سازی می نمائیم و کارائی سیستم را ارزیابی می نمائیم.

- تست پایداری (Stability Test) : در این تست سیستم خود را به مدت طولانی زیر بار کاربر همزمان زیاد می گذاریم تا ببینیم در این شرایط که طولانی است چه اتفاقی برای سیستم و سرور ما خواهد افتاد.

برای هر کدام از این تست ها روش ها و ابزارهای آفلاین و آنلاین وجود دارد که می خواهیم در ادامه با آنها آشنا شویم. نکته مهم در هر تستی، Log برداری از وضعیت نرم افزار شما، وب سرور و سرور شما می باشد که در شرایط مختلف چه رفتاری را از خود نشان داده است. مثلا در تعداد درخواست بالا سرور شما دچار قطعی اینترنت می شود و یا وب سرور شما به دلیل نامشخص restart شده است. همه اینها را باید خیلی دقیق مانیتور و log برداری نمائیم تا بتوانیم به صورت دقیق بررسی کنیم.

معرفی ابزارهای آنلاین تست کارائی نرم افزارهای تحت وب :

- وب سایت https://loader.io : این ابزار به شما کمک می کند شرایط مختلف تست با کاربران مشخص، در بازه های زمانی مشخص و برای بخش های مختلف را شبیه سازی نمایید و در نهایت گزارش های کاملی از نتیجه این تست ها را به شما نشان می دهد.در ادامه چند تصویر از نتیجه یک تست بار آمده است.


در این سایت تست ها برای یک آدرس اینترنتی رایگان می باشد. بخش های مختلفی وجود دارد که می توانید از آن استفاده نمایید.

- وب سایت https://loadimpact.com : این وب سایت نیز یکی از قویترین ابزارهای تست وب سایت ها می باشد که از بخش های مختلفی از سیستم شما گزارش می دهد. حالت بدون ثبت نام و زمانی که شما آدرسی را برای تست وارد می نمائید این سایت به مدت زمان دلخواه، با تعداد کاربری که شما انتخاب می نمایید تست بار را بر روی آدرس مورد نظر شما انجام داده و گزارش های بسیار خوبی از وضعیت شما را نمایش می دهد که بسیار مفید می باشند. گزینه های بسیار خوبی مانند آستانه تحمل که اگر به این مرحله رسید تست را قطع کند از ویژگی های بسیار خوب این سرویس آنلاین تست کارایی می باشد. در ادامه تصویر یکی از گزارش های این سرویس آورده شده است.



- وب سایت https://loadstorm.com : این سرویس آنلاین نیز مانند دو سرویس قبلی شرایط مورد نظر شما را از نظر تعداد کاربر همزمان واقعی شبیه سازی می نماید و می توانید به شکل های مختلف تست استرس و بار روی سرویس خود انجام دهید.



تا به این جای کار فقط بخش اول کار انجام شده است. یعنی بخش شبیه سازی تعداد درخواست و کاربر همزمان بر روی سیستم شما. البته سرویس های معرفی شده بخشی از مرحله دوم را نیز با گزارش های مفید پوشش می دهند. ولی خود شما نیز باید به صورت مستقیم در زمان هایی که تست ها را اجرا می کند وضعیت منابع سرور خود را توسط ابزارهایی مانند performance monitor لاگ و مشاهده نمائید. همچنین وضعیت سرور دیتابیس خود را. مثلا  اگر از MS SQL SERVER استفاده می نمائید می توان از SQL Profiler و ابزارهای دیگر برای بررسی منابع استفاده شده توسط دیتابیس در شرایط بحرانی را بررسی نمود.

یکی از مهم ترین بخش ها نیز Log خود سیستم نرم افزاری شما می باشد که باید آن را در زمان برنامه نویسی و پیاده سازی سیستم به صورت خوب استفاده کرده باشید و وضعیت خطاها (exception ها),و دیگر اتفاق ها را دقیق در log file نوشته باشید.

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

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

در مقاله بعدی در مورد تست به جزئیات و مباحث بیشتر در رابطه با تست کارایی خواهیم پرداخت.

امیدوارم خواندن این مقاله برای شما مفید بوده باشد.



آموزش برنامه نویسی سی شارپ، آموزش ASP.NET MVC، آموزش طراحی صفحات وب، آموزش برنامه نویسی موبایل (Xamarin) - از مقدماتی تا پیشرفته در سپیدآریا