
میتوان تست نرمافزار را به عنوان یکی از مهمترین مراحل طراحی و پیاده سازی یک سیستم نرمافزاری دانست. هدف از تست نرمافزار یافتن خطاها، بررسی عملکرد بخشهای مختلف نرمافزار، آنالیز عملکرد سیستم در شرایط مختلف و … است. امروزه یکی از مهمترین انتظارات کاربران سیستمهای نرمافزاری، عملکرد درست و سریع سیستم مورد نظر میباشد. بنابراین باید مشکلات سیستم را پیش از کاربر نهایی پیدا و برطرف کرد. مشکلاتی مانند:
- زمان پاسخگویی سیستم برای هر تراکنش سرور (Response time)
- عملکرد اجزای مختلف سیستم تحت بارهای مختلف
- عملکرد بخشهای مختلف پایگاه داده تحت بارهای مختلف
- مشکلات مربوط به طراحی سیستم نرمافزاری
- مشکلات مربوط به سخت افزار مثل حافظه، CPU و …
بدین منظور تستها و ابزارهای مختلفی طراحی شدهاند که به تیمهای نرمافزاری کمک میکنند که یک نرمافزار بهینهتر و مطابق با نیازهای کاربر ارائه دهند. مانند تست بار، استرس و ...
ابزارهای مختلفی برای اجرای این تستها پیاده سازی شدهاند که میتوان از Apache JMeter به عنوان یکی از کاربردیترین ابزارها نام برد. که در ادامه این آموزش بیشتر با آن آشنا میشویم.
جیمیتر یک ابزار رایگان و قدرتمند با قابلیتهای بسیار برای تست است که زیر مجموعه بنیاد آپاچی و متن باز است. این ابزار با زبان جاوا توسعه داده شده و بر روی انواع سیستم عاملها و پلتفرمهای مختلف قابل اجراست. در ابتدا جیمیتر برای تست پرفورمنس وبسرور Apache Tomcat طراحی شده بود که بعدها با توسعه رابط کاربری و ویژگیهای مختلف، به یک ابزار مستقل برای تست و خودکارسازی تبدیل شد.
از جیمیتر میتوان برای اهداف مختلفی استفاده کرد که در ادامه مهمترین و کاربردی ترین موارد را بررسی میکنیم:

برای شناخت بیشتر، در ادامه به مزایا و معایب استفاده از آن میپردازیم:
text، XML، HTML و … پشتیبانی میکند.HTTP, JDBC, LDAP, SOAP, JMS و FTP پشتیبانی میکند. همچنین بسیاری از پروتکلهای دیگر نیز توسط پلاگین پشتیبانی میشوند.JMeter WebSocket Samplers by Peter Doornbosch وب سوکت را به راحتی تست کرد.PerfMon Servers Performance Monitoring میتوان مواردی مانند CPU، حافظه و … را آنالیز کرد.همچنین میتوانیم بر اساس نیاز خود، با طراحی پلاگینهای جدید، ویژگیهای جیمیتر را گسترش دهیم. (در مقالههای بعدی به آموزش انواع پلاگینها خواهیم پرداخت.)
برای درک نحوه کار جیمیتر، فرض کنید یک تست ساده در جیمیتر طراحی کردهاید که یک یا چند درخواست http را به سمت یک سرور ارسال میکند. فرآیند کلی در جیمیتر بصورت زیر است که در عکس نیز بطور شماتیک نشان داده شده است:
1. ارسال درخواست به سرور: ابتدا درخواست مورد نظر (مثلا یک درخواست http که توسط طراح تست در جیمیتر به عنوان سناریوی تست ایجاد شده است) شبیهسازی شده و به سمت سرور ارسال میشود. همزمان اطلاعات مربوط به این درخواست همچون حجم درخواست و زمان ارسال درخواست به عنوان یک «نمونه اندازهگیری» در جیمیتر ذخیره میشود.
2. دریافت پاسخ سرور: پس از ارسال درخواست توسط جیمیتر به سرور سامانه تحت تست، پاسخ از سرور به سمت جیمیتر ارسال میشود. جیمیتر پس از دریافت پاسخ از سرور، اطلاعات «نمونه اندازهگیری» ایجاد شده در بخش قبل را نیز تکمیل میکند. برخی اطلاعات تکمیلی عبارتاند از پاسخ موفقیت یا عدم موفقیت سرور، زمان دریافت پاسخ از سرور، حجم اطلاعات پاسخ و غیره.
3. اجرای پردازشهای مورد نیاز بر روی پاسخ: ممکن است پردازشهایی برای پاسخ درخواست توسط طراح تست اضافه شده باشد. جیمیتر بعد از دریافت پاسخ، پردازشهای مربوط به پاسخ را اجرا میکند. به عنوان مثال پردازش اینکه متن خاصی در پاسخ باشد یا قسمتی از پاسخ (مثلا اطلاعاتی که به صورت JSON دریافت شده) شامل اطلاعات مشخصی باشد.
4. جمع آوری و محاسبه دادهها برای تولید نتیجه تست: با اجرای درخواستها بصورت مکرر، جیمیتر تمام نمونههای اندازهگیری شده را ایجاد کرده و آنها را حین اجرای آزمون ذخیره میکند. سپس نتایج کلی و جزئی را براساس همه نمونههای اندازهگیری شده استخراج میکند.
5. نمایش نتیجه تست به صورت آماری و گرافیکی: سپس میتوان نتایج استخراجی از نمونههای اندازهگیری شده را در قالب گراف، جدول و … نمایش داد.

از جیمیتر و سلنیوم برای تست برنامههای وب استفاده میشود. تفاوت عمده آنها این است که به صورت کلی از جیمیتر برای تست کارایی برنامههای وب مانند تست استرس و تست بار و از سلنیوم برای تست خودکار برنامههای وب استفاده میشود. در واقع جیمیتر ارتباط با سرور را شبیهسازی میکند، به عنوان مثال در برنامههای تحت وب، درخواستهای http و https را شبیهسازی، به سمت سرور ارسال کرده و در نهایت پاسخ را دریافت میکند. در صورتی که سلنیوم ابتدا پروسه ایجاد یک مرورگر را باز کرده و سپس درخواستها را در مرورگر به صورت خودکار اجرا میکند و در نتیجه منابع سیستمی(همچون پردازنده و رم) بیشتری مصرف میشود; بنابراین برای تست کارایی (خصوصا تستهای کارایی با لود بالا) مناسب نیست.
در جیمیتر با استفاده از المانهای مختلف مانند Thread Group، Controller، Assertion، Plugin و ... میتوان سناریوهای مختلف را ضبط،طراحی و اجرا کرد. به طور کلی مراحل زیر برای اجرای یک تست مرسوم با استفاده از جیمیتر انجام میشود:
- مشخص کردن سناریوهایی که میخواهید تست کنید.
- ضبط کردن سناریوهای مورد نظر با استفاده از روشهای مختلفی مانند افزونه Blazemeter در مرورگر، ویژگی Recording جیمیتر و …
- ویرایش اسکریپتهای رکورد شده
- اجرای تست طراحی شده
- تحلیل نتایج و عملکرد سیستم
برای تست کارایی علاوه بر گامهای اشاره شده، باید موارد زیر هم در نظر گرفته شود:
- ویژگیهای سخت افزاری، نرمافزاری سیستم تحت تست
- تنظیمات شبکه
- میزان باری که میخواهید روی سیستم ایجاد کنید.
- معیارهای کارایی مانند زمان پاسخ، نرخ خطا و …
در این آموزش به معرفی جیمیتر پرداختیم، در مقالههای بعدی با نحوه پیکربندی جیمیتر و استفاده از ویژگیهای متفاوت آن برای انواع مختلف تست آشنا میشوید.