wait لطفا صبر کنید
05 بهمن 1395
صفحه اصلی  » مقالات
1393/11/12
7291
10

ابزار تست sahi

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

ابزار sahi يك برنامه متن باز تحت جاوا براي تست خودكار برنامه هاي تحت وب مي باشد. نحوه عملكرد اين ابزار به اين صورت است كه كدهاي جاوااسكريپت لازم را به صفحه مورد تست تزريق مي كند. اين كدها طي پروسه تعريف مراحل تست معرفي و به كمك آنها در زمان تست، عمليات شبيه سازي مي گردند. به عنوان مثال براي تست يك صفحه لاگين كدهاي جاوا اسكريپت براي مشخص كردن مقدار نام كاربري و پسورد و محل قرار گرفتن آنها در صفحه لاگين به صفحه تزريق مي شوند.

 

 

از قابليت هاي اين ابزار مي توان به موارد زير اشاره كرد
  1. مستقل از مرورگر و سيستم عامل
  2. قابليت ضبط قدرتمند اعمال كاربر بر روي برنامه وب
  3. داراي APIهاي ساده و قدرتمند
  4. قابليت فراخواني كلاس هاي جاوا در اسكريپت ها
  5. اسكريپت هاي مبتني بر جاوااسكريپت بمنظور كنترل بهتر برنامه نويسي
  6. پشتيباني از صفحات  popup و مودال
  7. پشتيباني از AJAX و برنامه اي تحت وب پويا
  8. امكانات گزارش‌گيري از نتايج آزمونهاي انجام شده
  9. اجراي فرامين كاربر بدون استفاده از موس
  10. بسيار سبك
  11. قابليت تست مبتني بر داده (Data Driven Testing). امكان اتصال به بانك داده، فايلهاي اكسل و CSV
  12. , ...
فرض كنيد مي خواهيم مراحل ارسال پيام در مكاتبات را تست كنيم. ابتدا صفحه وب مكاتبات را باز كرده و بر روي صفحه آن ALT + DBClick مي كنيم تا صفحه كنترلر ساهي باز شود (اگر ALT + DBClick عمل نكرد از CTRL + ALT + DBClick استفاده مي كنيم).

 

ضبط كردن تست:

با انتخاب يك نام و كليك بر روي دكمه ركورد عمليات ضبط تست شروع مي شود. در اين مرحله مي توانيد مراحلي را كه مي خوايد شبيه سازي شود را بر روي برنامه وب خود انجام داده و سپس همان مراحل ذخيره شده و بارها مي توانيد آنها را تكرار كنيد.

همچنين مي توانيد با نگه داشتن كليد كنترل و انتقال موس بر روي هركدام از كنترلهاي صفحه، آن كنترل را در صفحه كنترلر ساهي برده و براي آن اثبات (assert) ايجاد كنيد. بدين ترتيب كه با دكمه assert كدهاي اثبات اضافه مي شوند. همچنين با دكمه test مي توان درست بودن اثبات را بررسي كرد (اثباث ها براي اثبات درستي موارد مورد نظرمان به كار مي روند). در نهايت پس از بررسي assert مي توان آن را با دكمه append to script به اسكريپت افزود.

 

در نهايت اسكريپت تست به صورت زير خواهد بود:

اجراي دوباره تست:

براي اجراي دوباره تست بايد كنترلر ساهي را اجرا كرده، نام فايل و آدرس شروع صفحه تست (صفحه اول مكاتبات) را وارد مي كنيم. با زدن دكمه set صفحه شروع لود شده و با دكمه Play، تست ضبط شده انجام مي گيرد. در اين تست تمام اسكريپت هاي ذخيره شده به صفحه هاي وب ذخيره و عمليات مورد نظر شبيه سازي مي گردند. با مشاهده لاگ ها مي توان موفق و يا غيرموفق بودن اجراي تست، زمان اجرا و ميزان حافظه را بررسي كرد.

 

همچنين براي اجراي تست از طريق خط فرمان مي توان از برنامه تحت داس testrunner.bat (و يا testrunner.sh براي لينوكس) در شاخه sahi/userdata/bin و به صورت زير استفاده كرد.

testrunner.bat <sah file|suite file> <startURL> <browserType>

Cd sahi/userdata/bin

testrunner.bat test.sah http://website:8090 firefox

 همچنين مي توان چندين تست را همزمان اجرا كرده (مود دسته اي ) و در وقت صرفه جويي كرد. بدين منظور نام فايلهاي تست مورد نظر را در يك فايل متني با پسوند suite قرار داده و دستور بالا را براي آن فايل متني اجرا مي كنيم:

tests.suite file

test1.sah

test2.sah

test3.sah

//commented_test1.sah

#commented_test2.sah

 
اجراي همزمان چند تست
testrunner.bat tests.suite http://website:8090 firefox
 
 
يك نمونه ديگر
اسكريپت زير يه نمونه ديگر تست از تست كيس ها مي باشد. در اين تست كيس بايد چك شود كه شماره پرونده تكراري وارد نشود. اسكريپت زير تست مورد نظر را براي تنها يك شماره پرونده (108010) چك مي كند.
_setValue(_textbox("txt_username"), "admin");
_setValue(_password("txt_password"), "123");
_click(_submit("btn_SearchInfo"));
_click(_cell(201));
_click(_span("صفحات"));
_click(_link("شروع روند تطبيق مصوبات"));
_click(_checkbox("ctl00\$CtrlCnt\$FRM_Pre_Document_ascx\$chk_fl_chkbx_manualDocNo"));
_setValue(_textbox("ctl00\$CtrlCnt\$FRM_Pre_Document_ascx\$txt_fl_txt_manualDocNo"), 108010);
_click(_submit(" مرحله بعد"));
_assertExists(_span("شماره پرونده وارد شده:108010 تكراري است. لطفا مقدار شماره پرونده را اصلاح نماييد"));
_click(_div("خروج از سيستم"));
  
براي انجام تست بالا براي شماره پرونده هاي بيشتر (مثلا 108010   و 108008) مي توان بر اساس قابليت تست داده محور sahi اسكريپت زير را تعريف كرد.
 
function doAdd($number){

_setValue(_textbox("ctl00\$CtrlCnt\$FRM_Pre_Document_ascx\$txt_fl_txt_manualDocNo"), $number);

_click(_submit(" مرحله بعد"));

_assertExists(_span("شماره پرونده وارد شده:"+$number+" تكراري است. لطفا مقدار شماره پرونده را اصلاح نماييد."));

}

var $data = [108010,108008]

_setValue(_textbox("txt_username"), "admin");

_setValue(_password("txt_password"), "123");

_click(_submit("btn_SearchInfo"));

_click(_cell(201));

_click(_span("صفحات"));

_click(_link("شروع روند تطبيق مصوبات"));

_click(_checkbox("ctl00\$CtrlCnt\$FRM_Pre_Document_ascx\$chk_fl_chkbx_manualDocNo"));

for (var $i=0; $i<$data.length; $i++){

var $n = $data[$i];

doAdd($n);

}

click(_div("خروج از سيستم"));