تسریع در خودکار سازی تست از طریق دامنه یک زبان خاص

چکیده:اتوماسیون در تست، روشی برای کاهش مقدار تلاش دستی است. یک رویکرد برجسته برای اتوماسیون تست و اجرای اسکریپت های تست توسط یک دستگاه بجای اجرای دستی است. ابزارهای مختلفی برای اجرای خودکار اسکریپت های تست وجود داشته است از جمله سلنیوم WebDriver ، تست یکپارچه تابعی UFT و تستگر تابعی رابطه ای RFT. با این حال ، پذیرش چنین ابزارهایی در عمل کم است و در پروژه ها مزایای اتوماسیون تست اندک و یا صفر می باشد.این میزان پذيرش کم در تکنیک های فعلی اتوماسیون تست به دليل دو دلیل اساسي است:الف) ایجاداسکریپت های اتوماسیون تست در اصل یک کار توسعه کد است و به طور معمول برای غیر برنامه نویسان دشوار است.ب)حتی اگر اسکریپت های اتوماسیون اولیه توسط توسعه دهندگان ساخته شده باشند ، نگهداری از این گونه اسکریپت های اتوماسیون برای غیر برنامه نویسان، از آنجا که خواندن و درک اسکریپت ها توسط آنها سخت است، هزینه بر است.هدف ما ساخت ابزاری است که بتواند اتوماسیون تست را قابل دسترسی و فهم برای غیر برنامه نویسان سازد. ما بدین منظورشتاب دهنده ای را ارائه می دهیم (ATAP) که به یک تستر اجازه می دهد اسکریپت های تست اتوماسیون را به زبانی انگلیسی ایجاد کند.ورودی و خروجی:ابزار ATAP اغلب با دیگر ابزارهای تست تجاری مقایسه می شود. عملکرد این برنامه مشابه با ابزار سلنیوم WebDriver می باشد. سلنیوم یکی از قدرتمندترین ابزار اتومات سازی تست و بصورت open source است. این ابزار تحت لیسانس آپاچی 2.0 منتشر شد و قابل بارگیری و استفاده بدون هیچ گونه هزینه ای است . به راحتی میتواند با استفاده از یک تست functional ساده از برنامه تحت وب شروع شود . همچنین تست آن برای ضبط و پخش در برنامه مبتنی بر وب پشتیبانی دارد. سلنیوم از ویژگی چند لایه ای پشتیبانی می کند. سابقه اسکریپت را می توان در مرورگرهای مختلف اجرا کرد. سلنیوم شامل چهار مدل می باشد:➢ سلنیوم IDE➢ سلنیومRC➢ سلنیوم WebDriver➢ شبکهورودی test cases و خروجی test scripts مشابه با ابزار سلنیوم است ولی بهینه سازی شده با شبه زبان انگلیسی. راه هایی که ابزار سلنیوم می تواند در آن شکست بخورد در ATAP ، می توان جلوی آنرا گرفت و اجرای برنامه را می توان صرفاً متوقف کرد. یعنی اجرای تست اسکریپت می تواند در حین وقوع مجموعه ای از استثناء ها درزمان اجرا متوقف شود. این به یک تستر اجازه می دهد تا کد را ویرایش کند و اجرای تست را از سر بگیرد. به این ترتیب، برای اجرای تست اسکریپت لازم نیست از ابتدا کار شروع شود. راه دوم برای تسریع تست و رفع اشکال این است که موارد شناخته شده حاصل از شکست را ضبط کنید و در موارد مشاهده بعدی، راه های غلبه بر آن را پیشنهاد کنید.در مورد WebDriver ، اسکریپت اتوماسیون با جاوا کدگذاری شده است. با این حال ، در مورد ATAP، عملکرد مشابه با روشی بسیار قابل فهم و خواندن بیان شده است که از درک کد جاوا اجتناب می شود. ATAP در Eclipse ساخته شده است. ما یک domain specific language یا زبان خاص دامنه (DSL) را ایجاد کرده ایم که گرامر ATAP را تشکیل می دهد . یعنی از کلمات کلیدی برای نویسنده اسکریپت های اتوماسیون استفاده شده. DSL با استفاده از Xtext و چارچوب های Xbase ساخته شده است و از syntax گرکین پیروی می کند. مطالب نوشته شده از طریق این دستور زبان با استفاده از سلنیوم WebDriver به کد جاوا تبدیل می شود. تولید کد به وسیله زبان برنامه نویسی Xtend نوشته شده است که آن هم کد جاوا تولید می کند و سپس تست اتومات انجام می شود.معیارهای ارزیابیاز ATAPدر تست نرم افزارهای صنعتی استفاده شده است . در ATAP مجموعه ای از سناریو های تست که از پیچیدگی مختلف برخوردارند با استفاده از آن خودکار میشوند. ATAP توسط سه گروه از افراد استفاده شده است:الف) مهندسان اتوماسیون پروژه (کسی که می تواند به عنوان متخصص در سلنیوم شناخته شود، اما در ATAP تازه کار است).ب)تست کنندگان دستی پروژه (کسی که در اتوماسیون تست و ATAP تازه کارند.)ج) توسعه دهندگان ATAP(کسی که می تواند به عنوان کارشناس ابزار ATAP در نظر گرفته شود). ما پوشش ATAP (این که آیا می تواند همه سناریوهای برنامه را کاور کند) را بررسی کردیم و میزان زمان لازم برای ایجاد اسکریپت های اتوماسیون را اندازه گیری کردیم. ما دریافتیم که ATAP می تواند تمام سناریوهای مورد نیاز پروژه را پوشش دهد. مهندسان اتوماسیون وتوسعه دهندگان ابزار ATAP می توانند از ATAP به طور کامل استفاده کنند. بعنوان بررسی عملکرد هم ما در 8 سناریوی مختلف به بررسی روند کاری ATAP پرداختیم. دیدیم که همه 8 سناریو با موفقیت و با استفاده از ATAP و با پوشش 100 درصدی توسط ابزار اتوماتیک شدند. نیازی به استفاده از کد جاوا برای هیچکدام از سناریوها هم نبود. مهندسان تست دستی پروژه به طور متوسط می توانند 71٪ از سناریو تست را اتومات کنند. این برای آنان دلگرم کننده است. پس مهندسین تست دستی بکمک ابزار در برخی از موارد نیاز دارند:الف) تنظیم اولیه ATAP و راه های پیمایش Eclipse.ب) کمک به شناسایی دستور کد برای مواردی که نیاز به حلقه دارند.ج) کمک به استفاده از دستورات خاص در اعتبار سنجی. ذخیره تلاش هم با اندازه گیری دقیق مقدار زمانی که توسعه دهندگان و مهندسان پروژه ATAP برای نوشتن تست اسکریپت ها در ATAP استفاده کردند محاسبه شد. این معیارها با برآورد مقدار زمانی که مهندسین اتوماسیون پروژه برای نوشتن اسکریپت ها در سلنیوم استفاده می کردند مقایسه شدند. اندازه گیری تلاش نشان داد که در همه موارد ،مهندسان اتوماسیون و توسعه دهندگان ابزار توانستند اسکریپت ها را سریعتر از زمان تخمینی ایجاد کنند. به طور متوسط، مهندس اتوماسیون می تواند 25٪ از تلاش خود را از طریق استفاده از ATAP پس انداز کند.نوآوریبه طور کلی ابزار و روشها در اجرای خودکار اسکریپت ها برای سیستم های مبتنی بر وب را می توان به 4 مورد طبقه بندی کرد.در هر کدام در صورت وجود به نوآوری های مربوط به ابزار ATAP می پردازیم :الف) اتوماسیون مبتنی بر برنامه نویسیب) ضبط و پخشج) اتوماسیون مبتنی بر تشخیص تصویرد) اتوماسیون مبتنی بر زبان طبیعیالف) اتوماسیون مبتنی بر برنامه نویسی: رویکرد مبتنی بر برنامه نویسی برای اتوماسیون تست نیاز به ایجاد کد از طریق زبان های برنامه نویسی دارد که می تواند با عناصر وب موجود در مرورگر وب تعامل داشته باشد. ابزار برجسته استفاده از این رویکرد شامل سلنیوم WebDriver و UFT و تستگر عملکردی منطقی IBM یا RFT است. تست کنندگان نرم افزار معمولی ،که دانش برنامه نویسی ندارند، نسبت به استفاده از چنین برنامه نویسی ناخشنودند. یعنی در حالی که تست کنندگان می توانند شرایط تست مورد نیاز را فرآهم کنند، همین کار را برنامه نویسان با رویکردی متفاوت انجام می دهند. برای پرداختن به نیازمندی های متفاوت تست کنندگان و برنامه نویسان، ابزار و روشی به نام خیار ساخته شده است. درخیار ، شرایط تست توسط تستر ایجاد می شود. اسکریپت اتوماسیون واقعی با استفاده از کد توسط برنامه نویس انجام می شود. خیار یک راهنمایی در مورد زبان مورد استفاده در تست را ارائه می دهد. شرایط این روش از syntax گرچین پیروی می کند که در آن از کلمات کلیدی "داده شده" ، "چه موقع" و "بعد" استفاده می شود. در ATAP ، ما از syntax مشابه با Gherkin پیروی می کنیم، جایی که اسکریپت های تست بصورت کلمات کلیدی انگلیسی در آن نوشته شده است. رویکرد ما درATAP این است که اتوماسیون تست را در دسترس غیر برنامه نویسان قرار دهیم. در ATAP، یک تستر می تواند یک اسکریپت تست اتوماسیون بدون استفاده از برنامه نویسی ارائه دهد و این تست اسکریپت بصورت خودکار توانایی تبدیل به جملات در زبان جاوا را دارد.ب) ضبط و پخش: روش ضبط و پخش به یک تستر اجازه می دهد تا یک اسکریپت تست اتومات را با انجام مراحل بصورت دستی برای بار اول ایجاد کند. در این مرحله، ابزاری که انتخاب میشود همه بصورت دستی کار را انجام می دهند. سناریوی تست بطور خودکار توسط دستگاه ضبط شده و در مرحله پخش مجدد اجرا می شود. سلنیوم IDE وATA-QV برخی از این دسته ابزارها هستند که از الگوی ضبط و پخش مجدد پیروی می کنند.ضبط و پخش مجدد ساخت اسکریپت اتوماسیون تست را برای یک تستر و بدون نیاز به دانش برنامه نویسی بسیار آسان می کند. با این حال ، این روش منجر به مشکلات شدید در نگهداری می شود. چرا که تست ضبط شده ماژولار نیست و ممکن است با یک به روزرسانی به بروزرسانی چندین اسکریپت تست ضبط شده نیاز داشته باشد. بعلاوه ، برای به روز رسانی یک مرحله از یک تست خاص ، تستر ممکن است نیاز به ضبط مجدد کل سناریو تست از ابتدا را داشته باشد. ابزار ما در این زمینه فاقد نوآوری است.ج) اتوماسیون مبتنی بر تشخیص تصویر: ابزارهای اتوماسیون مبتنی بر تشخیص تصویر، به یک تستر این امکان را می دهد که در یک مرحله تست را با عنصر وب و به عنوان یک تصویر بنویسد. تستر ابتدا تصویر عنصر وب را به عنوان چیزی که در GUI نمایش داده می شود ضبط می کند و از آن در اسکریپت تست استفاده می کند. برای اجرای این مرحله، ابزاری که بعنوان بخشی از رابط کاربری گرافیکی است شبیه به تصویر ارائه شده توسط تستر است. این شناسایی بر اساس شدت پیکسل ها انجام می شود (یعنی که کد نمایانگر پیکسل ها است). Sikuli ابزاری محبوب و با استفاده از این الگو است. روش مبتنی بر تشخیص تصویر ، عناصر وب دو تصاویر را از طریق مقایسه پیکسل به پیکسل مشخص می کند. دیده شده است که چنین تکنیکهایی به زمان بیشتری نسبت به اتوماسیون مبتنی بر برنامه نویسی که در آن تعامل با هر عملی که باید انجام شود نیاز دارد. ATAP در این زمینه فاقد نوآوری است.د) اتوماسیون مبتنی بر زبان طبیعی: رویکرد اتوماسیون تست مبتنی بر زبان طبیعی این امکان را برای تستر فراهم می کند تا از اسکریپت های تست زبان طبیعی برای اتوماسیون تست بهره ببرد. ابزار برجسته ای که از این رویکرد استفاده می کند ATA است. در ATA ، اسکریپت های تست به زبان طبیعی نوشته می شوند و در دسته های action و اشیاء وب تجزیه می شوند. اشیاء وب(که به یک زبان طبیعی تشریح شده اند) که در صفحات وب با یافتن آن عنصر در html که به توضیحات زبان طبیعی نزدیک است قرار میگیرند. در اینجا "نزدیکی" از نظر خطوط کد در html صفحه وب اندازه گیری شده است. به عنوان مثال ، وقتی در زبان متن طبیعی نوشته می شود "پرواز از جعبه متن" ، ATA یک عنصر را در html وب قرار می دهد که به متن "پرواز از" نزدیک است. سپس این عنصر وب با action به تعامل می پردازد. ما معتقدیم که یک مشکل اساسی در روش ATA در استفاده از اسکریپت های تست زبان طبیعی است. زبان طبیعی شناخته شده است ذاتاً مبهم است. غالباً ، هدف رمزگشایی دشوار است و بنابراین در اغلب موارد و در عمل روش با شکست مواجه می شود. مطالعه روش ATA الهام بخش استفاده از DSL در جهت انجام تست با روش های دیگری است. DSL به یک تفسیر نامشخص از تست اسکریپت اجازه عمل می دهد و بنابراین در عمل بسیار کاربردی تر است. ATAP به یک تستر اجازه می دهد تا اسکریپت های تست اتوماسیون را با استفاده از یک دامنه از زبان خاص یا DSL بنویسد . سینتکس DSL مانند زبان انگلیسی است و ساختن و حفظ تست اسکریپت ها را آسان می کند. ATAP در داخل خود عبارات نوشته شده در DSL را با استفاده از API های Selenium WebDriver به کد جاوا تبدیل می کند.متودولوژیویژگی اساسی ATAP توانایی نوشتن اسکریپت های تست اتوماسیون در یک سینتکس مانند زبان انگلیسی است. ما ازچارچوب Xtext و Xbase برای ساختن DSL استفاده کرده ایم و با استفاده از آن می توان دستورات اتوماسیون تست را نوشت. یک اسکریپت اتوماسیون تست در ATAP از دو فایل تشکیل شده است. در یک فایل آن اشیاء اعلام شده اند و در دیگری مراحل تست یا test step ها اعلام شده اند. دستورات مختلفی در DSL ما برای شی پشتیبانی می شوند. استفاده از Xtext و Xbase ویژگی "پیشنهادات" را برایمان به ارمغان می آورد. در اینجا و در هر زمینه، سیستم می تواند لیست کلمات کلیدی ممکن را که می توان وارد کرد فراهم می کند . داشتن پیشنهادات، کار را برای تستر و برای ساخت test step ها بدون نیاز به بخاطر سپردن کلمات کلیدی DSL آسان می کند. از طریق استفاده از پیشنهادات ، تستر می تواند گزینه مورد نظر خود را از لیست DSL انتخاب کند. ما DSL را با توجه به دو مورد در نظر می گیریم:الف) DSL باید تا حد ممکن باید به یک زبان غیر فنی و محبوب مانند انگلیسی نزدیک باشد.ب) DSL باید محدود به دستورات پرکاربرد باشد.با استفاده از اسکوپ سازی ، ATAP گزینه های موجود در پیشنهادات ذکر شده را محدود می کند. به عنوان مثال ، وقتی یک تستر دستور "I click" را انتخاب می کند، لیست اشیاء وب که در پیشنهادها نشان داده شده اند فقط به آنهایی محدود می شوند که برای عملکرد "کلیک" سازگار باشند. این به تستر اجازه می دهد تا test step هایی معتبر را ایجاد کند. همچنین با استفاده از اعتبار سنجی، ATAP قادر به شناسایی خطاها در زمان ایجاد تست اسکریپت تست است. به طور معمول برای مواردی که منجر به ایجاد یک استثناء در زمان اجرا در سلنیوم WebDriver می شود، در ATAP، این خطا در همان زمان ایجاد گرفته می شود. به همین ترتیب ، بهترین شیوه های اعتبار سنجی ATAP درون آن برنامه ریزی شده است.این مقاله تمرین درس اشکال زدایی دانشگاه شهید بهشتی است و جهت انتشار محتوای فارسی بیشتر است.