بهروز
بهروز
خواندن ۲ دقیقه·۵ سال پیش

Sikuli: ساده، کاربردی و دوست داشتنی

تاریخ انتشار نسخه اصلی 5 فوریه, 2017
در پست گذشته در مورد ابزارهای اتوماسیون تست برنامه های دسکتاپ نوشتم. در این پست میخواهم در مورد یکی این ابزارها بنام Sikuli بیشتر توضیح بدهم. نکته اول اینکه Sikuli صرفاً برای اتوماسیون دسکتاپ نیست. این برنامه بر دو پایه استوار است. 1) الگوریتم تطبیق تصویر(Template Matching) موجود در OpenCV و 2) شبیه سازی رخدادهای موس و کیبورد با استفاده از java.awt.event.InputEvent. در نتیجه هر آنچیزی را که بر روی مانیتور است را تشخیص داده و میتواند اتوماتیک کند. اما به دلیل محبوبیت Selenium برای وب، استفاده از آن بیشتر محدود به دسکتاپ است. این برنامه قابل اجرا بر روی ویندوز، لینوکس و Mac بوده و فعلا سیستم عاملهای موبایل را رسماً پشتیبانی نمیکند. پروژه Sikuli ابتدا در دانشگاه MIT شروع شد اما از سال 2012 با دست کشیدن آغازکنندگاه آن، پروژه را برنامه نویسی بازنشسته  در آلمانی بنام RaiMan با عنوان تازه SikuliX ادامه داد و امروز هم جامعه برنامه نویسی نسبتاً خوبی بر روی GitHub در آن مشارکت میکنند. این برنامه IDE هم ارائه میکند که بسیار ساده و ابتدایی است و خوبی اصلی آن آسان کردن عملیات مربوط به تصویر مانند کپچر کردن و تشخیص offset یک تصویر است. وگرنه میتوان بسازگی API آن را در زبانهای مورد حمایت آن وارد و در IDE های پیشرفته مانند Eclipse یا PyCharm استفاده کرد.

خود من کار با آن را با IDE خودش شروع کردم که میتوان در آن با استفاده از Python اسکریپ نوشت. Sikuli یکی از راه هایست که میتوان افرادی که تا بحال برنامه نویسی نکرده اند را به این کار علاقه مند کرد. IDE و منطق استفاده بسیار ساده ای دارد که بعد از یادگیری میتوان از طریق اضافه کردن کد های Python و وارد کردن ماژولهای Java آن را گسترش داد، به سیستم continues integration متصل کرد و به یک ابزار کارآمد برای اتوماسیون یا تست تمامی برنامه های وب و دسکتاپ تبدیل کرد. برای شخص من این ابزار آنجایی اهمیت بیشتری پیدا میکند که میخواهیم یکپارچگی سیستم از دید کاربر نهایی حفظ کنیم. به طور مثال در مورد برنامه های تحت وب، المانهایی وجود دارد که بعد از render شدن به دلایل مختلف از دید کاربر پنهان هستند ولی Selenium آنها را تشخیص میدهد. اما Sikuli تنها چیزی را تشخیص یا عملی را انجام میدهد که کاربر معمولی هم میتواند آن را تشخیص داده و عملی را روی آن انجام دهد. تست Sikuli که من بروی محصول نرم افزاری شرکتی در آن مشغول بکار هستم، نوشته ام نیز دقیقاً همین کار را انجام میدهد. یعنی تست یکپارچگی دیداری و عملکردی نرم افزار از دید کاربر نهایی. هر گونه تغییر برنامه ریزی نشده در ظاهر نرم افزار باعث شکست تست میشود.

محیط توسعه Sikuli
محیط توسعه Sikuli

البته این دقت در انجام تست نیز بی هزینه نیست. اول آنکه برای اجرای تست نیاز به کارت گرافیکی و مانیتور است. هر چند Sikuli را میتوان از طریق VNC نیز اجرا کرد. البته از آنجایی که راهکارهای ارائه شده توسط جامعه برنامه نویسان فعال چندان مورد استقبال قرار نگرفته است در نتیجه زیاد قابل اطمینان نیستند.

تست نرم افزار
مهندس تست و امنیت نرم افزار https://www.linkedin.com/in/behroozaghakhanian
شاید از این پست‌ها خوشتان بیاید