Selenium چیست؟
Selenium یک Test Suite(مجموعه ابزار تست) اتوماتیک رایگان و Open Source است که برای برنامههای وب در بین مرورگرها و سیستمعاملهای مختلف استفاده میگردد. این ابزار کاملا شبیه به ابزار HP Quick Test Pro یا QTP است. تنها با این تفاوت که Selenium بر روی اتوماسیون برنامههای مبتنی بر وب تمرکز دارد. تست انجام شده با استفاده از ابزار Selenium معمولا Selenium Testing نامیده میشود.
سلنیوم نه تنها یک ابزار منفرد است بلکه یک مجموعه نرمافزاریست که هر کدام نیازهای مختلف تستی یک سازمان را تغذیه میکنند. این ابزار چهار کامپوننت دارد:
- Selenium Integrated Development Environment-Selenium IDE
- Selenium Remote Control-Selenium RC
- WebDriver
- Selenium Grid
در این آموزش، در مورد چه چیزهایی صحبت خواهیم کرد:
- Selenium چیست؟
- چه کسی سلنیوم را توسعه داده است؟
- مسئله سیاست منشاء یکسان
- تولد Selenium Remote Control-Selenium RC
- تولد Selenium Grid
- تولد Selenium IDE
- تولد WebDriver
- تولد Selenium 2
- چرا نام Selenium؟
- مقدمهای مختصر بر Selenium IDE
- مقدمهای مختصر بر Selenium Remote Control-Selenium RC
- مقدمهای مختصر بر WebDriver
- Selenium Grid
در حال حاضر، Selenium RC و WebDriver برای تشکیل Selenium 2، در یک Framework واحد ادغام شدهاند. ضمنا Selenium 1، به Selenium RC اشاره دارد.
چه کسی سلنیوم را توسعه داد؟
از آنجایی که سلنیوم مجموعهای از ابزارهای مختلف است، دارای توسعهدهندگان مختلف نیز میباشد. در زیر افراد کلیدی که مشارکت قابل توجهی در پروژه Selenium داشتهاند، معرفی شدهاند.
در ابتدا، Selenium توسط جیسون هوگینز(Jason Huggins) در سال ۲۰۰۴ ایجاد شد. وی یکی از مهندسین شرکت ThoughtWorks بود که روی Web Applicationای کار میکرد که نیازمند تست مکرر بود. هوگینز متوجه شد که تست دستی و تکراری برنامه، هر روز بیشتر و بیشتر ناکارآمد میشود، به همین دلیل او یک برنامه جاوا اسکریپت ایجاد نمود، که به طور خودکار Actionهای مرورگر را کنترل مینمود. او این برنامه را “JavaScriptTestRunner” نامگذاری کرد.
با مشاهده پتانسیل در این ایده برای کمک به اتومات کردن وب اپلیکیشنهای دیگر، وی یک JavaScriptRunner به صورت Open Source ایجاد کرد که بعدا Selenium Core نامگذاری شد.
مسئله منشاء یکسان
سیاست منشاء یکسان، کد جاوا اسکریپت را از دستیابی به عناصر توسط دامنهای که متفاوت از محل لانچ باشد، منع میکند. به عنوان مثال، کد HTML در www.google.com از برنامه جاوا اسکریپت “randomScript.js” استفاده میکند. سیاست منشاء یکسان تنها به randomScript.js اجازه میدهد تا به صفحات موجود در google.com دسترسی پیدا کند، مانند google.com/mail، google.com/login یا google.com/signup. با این حال، نمیتواند به صفحاتی از سایتهای دیگر مانند yahoo.com/search دسترسی پیدا کند، زیرا آنها متعلق به دامنههای متفاوت دیگری هستند.
به همین دلیل است که قبل از Selenium RC، تسترها نیاز به نصب کپیهای محلی Selenium Core(یک برنامه جاوا اسکریپت) و Web Server شامل وب اپلیکیشن(که قرار است تحت تست قرار بگیرد، به شکلی که آنها متعلق به یک دامنه باشند) داشتند.
تولد Selenium Remote Control-Selenium RC
متاسفانه تسترها با استفاده از Selenium Core بایستی کل اپلیکیشن تحت تست و Web Server را روی کامپیوترهای محلی خود نصب میکردند، چرا که محدودیتهای مربوط به سیاستهای منشاء یکسان روی آنها اِعمال میشد. پس یکی دیگر از مهندسین ThoughtWork، یعنی پُل هامانت(Paul Hammant)، تصمیم گرفت سروری ایجاد نماید که به عنوان یک پروکسی HTTP عمل کند تا بدین ترتیب مرورگر را فریب داده و برای آن اینچنین تداعی کند که Selenium Core و اپلیکیشن تحت تست، از یک دامنه مشابه هستند. این سیستم به عنوان Selenium Remote Control-Selenium RC یا Selenium 1 شناخته شد.
تولد Selenium Grid
Selenium Grid توسط پاتریک لایتبادی(Patrick Lightbody) توسعه داده شد تا زمان اجرای تستها را به حداقل زمان ممکن تقلیل دهد. او ابتدا سیستم را “Hosted QA” نامید. این ابزار قادر به Capture کردن اسکرینشات از Browser در مراحل مهم بود، و علاوه بر آن قادر به ارسال دستورات Selenium به ماشینهای مختلف به طور همزمان نیز بود.
تولد Selenium IDE
شینیا کاساتانی(Shinya Kasatani) از ژاپن Selenium IDE را ایجاد کرد، که یک افزونه فایرفاکس است که میتواند مرورگر را بواسطه امکان Record-And-Playback اتومات نماید. او این ایده را به منظور افزایش سرعت در ایجاد Test Caseها پیادهسازی نمود. وی Selenium IDE را در سال ۲۰۰۶ به پروژه Selenium اهدا نمود.
تولد WebDriver
سیمون استوارت(Simon Stewart) حوالی سال ۲۰۰۶ یعنی زمانیکه مرورگرها و وباپلیکیشنها قویتر شده و با برنامههای جاوااسکریپتی مانند Selenium Core محدودتر میشدند، موفق به تولید WebDriver شد. این اولین Cross-Platform Testing Framework بود که میتوانست مرورگر را از سطح سیستم عامل کنترل کند.
تولد Selenium 2
در سال ۲۰۰۸، کل تیم سلنیوم تصمیم به ادغام WebDriver و Selenium RC برای تشکیل یک ابزار قدرتمندتر به نام Selenium 2، با هسته WebDriver گرفت. در حال حاضر Selenium RC هنوز در حال توسعه است اما تنها به منظور نگهداشت. اکثر پروژههای Selenium اکنون بر ساختار سلنیوم ۲ متمرکز هستند.
چرا نام Selenium؟
این یک نام توام با شوخیست که جیسون به تیمش ارائه داد. یکی دیگر از چارچوبهای تست خودکار که در زمان توسعه Selenium بسیار محبوب بود، توسط شرکتی به نام Mercury Interactive(بله، شرکتی که محصول محبوب QTP را قبل از فروش آن به HP درست کرده بود) درست شده بود. از آنجا که عنصر شیمیایی Selenium یک پادزهر شناخته شده برای مسمومیت با Mercury(جیوه) است، جیسون این نام را پیشنهاد کرد. هم تیمیهایش این عنوان را پذیرفتند و از آن زمان تا امروز نام Selenium روی این ابزار حک شده است.
مقدمهای مختصر بر Selenium IDE
Selenium Integrated Development Environment یا همان Selenium IDE سادهترین Framework در Selenium Suite(مجموعه سلنیوم) است و البته سادهترین آنها برای یادگیری. این ابزار در حقیقت یک پلاگین فایرفاکس است که شما به همان سادگی که دیگر پلاگینها را نصب میکنید، میتوانید این پلاگین را نیز نصب نمایید. با این حال، به دلیل سادگی آن، Selenium IDE فقط باید به عنوان یک ابزار نمونهبرداری(Prototyping) استفاده شود. اگر میخواهید Test Caseهای پیشرفتهتری ایجاد کنید، باید از Selenium RC یا WebDriver را استفاده کنید.
جوانب مثبت Selenium IDE
- بسیار آسان برای استفاده و نصب
- نیازی به تجربه برنامهنویسی ندارد، گرچه به دانش HTML و DOM نیاز است
- قابلیت Export کردن تستها به فرمتهای قابل استفاده در Selenium RC و WebDriver
- حاوی ماژول گزارشگیری نتایج تست و Help به صورت Built-in(توکار)
- ارائه پشتیبانی برای Extensionها
جوانب منفی Selenium IDE
- فقط برای Firefox در دسترس است
- فقط برای ایجاد پروتوتایپهای تست طراحی شده است
- بدون پشتیبانی برای Operationهای شرطی و Iteration
- اجرای تست در مقایسه با Selenium RC و WebDriver کند است
مقدمهای مختصر بر Selenium Remote Control-Selenium RC
Selenium RC برای یک مدت زمان طولانی، گل سرسبد چارچوب تست در کل پروژه Selenium بود. این ابزار اولین ابزار تست وب به صورت اتوماتیک است که کاربران را قادر به استفاده از یک زبان برنامهنویسی که خودشان ترجیح میدادند، میکرد. از نسخه ۲٫۲۵٫۰، RC میتواند از زبانهای برنامهنویسی زیر پشتیبانی کند:
- Java
- #C
- PHP
- Python
- Perl
- Ruby
جوانب مثبت Selenium RC
- Cross-Browser و Cross-Platform
- میتواند Operationهای شرطی و حلقوی را انجام دهد
- از Data-Driven Testing پشتیبانی میکند
- دارای API کامل و بالغ
- به سادگی میتواند مرورگرهای جدید را پشتیبانی کند
- اجرای تست سریعتر از IDE
جوانب منفی Selenium RC
- نصب سختتر از IDE
- باید دانش برنامهنویسی داشته باشید
- باید Selenium RC Server در حال اجرا باشد
- APIها شامل فرامین زائد و گیجکننده هستند
- تعامل مرورگر کمتر واقعبینانه است
- نتایج متناقض و استفاده از جاوااسکریپت
- زمان اجرای کندتر از Webdriver
معرفی مختصر WebDriver
WebDriver ثابت کرده است که در بیشتر جنبهها از Selenium IDE و Selenium RC بهتر است. این ابزار یک رویکرد مدرنتر و پایدارتر در خودکارسازی Actionهای مرورگر پیادهسازی کرده است. WebDriver، بر خلاف Selenium RC، برای اتوماسیون به جاوا اسکریپت وابسته نیست. این ابزار، مرورگر را با ارتباط مستقیم با آن کنترل میکند.
زبانهای پشتیبانی شده همانهایی هستند که در Selenium RC هم پشتیبانی میشوند.
- Java
- #C
- PHP
- Python
- Perl
- Ruby
جوانب مثبت WebDriver
- نصب سادهتر به نسبت Selenium RC
- مستقیما با مرورگر ارتباط برقرار میکند
- تعامل با مرورگر واقعبینانهتر است
- نیازی به کامپوننت مجزا مانند RC Server نیست
- زمان اجرای سریعتر از IDE و RC
جوانب منفی WebDriver
- نصب سختتر به نسبت Selenium IDE
- نیاز به دانش برنامهنویسی
- به سادگی نمیتواند مرورگر جدید را پشتیبانی نماید
- مکانیزم توکار برای Log کردن پیامهای Runtime(زمان اجرا) و تولید نتایج تست ندارد
Selenium Grid
Selenium Grid ابزاریست که به همراه با Selenium RC برای تست موازی در دستگاههای مختلف و مرورگرهای مختلف به صورت همزمان استفاده میشود. اجرای موازی(Parallel Execution) به معنی اجرای چندین تست به صورت یک باره است.
امکانات
- امکان اجرای همزمان تستها در مرورگرها و محیطهای مختلف را فراهم میکند
- صرفه جویی بسیار زیاد در زمان
- از مفهوم Hub-and-Nodes استفاده میکند. Hub به عنوان یک منبع مرکزی از دستورالعملهای Selenium برای هر Node متصل به آن، ایفای نقش میکند.
این یک آموزش طولانی مدت است. بنابراین قسمتهای بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.
سلام وقت بخیر
برای خودکار سازی فرایند تست یک وب سایت آیا می توان از سلنیوم استفاده کرد و پیش نیازش چی هست؟ (منظورم آشنایی با زبان برنامه نویسی و … )
اگر کسی آشنایی با زبان برنامه نویسی نداشته باشه آیا باز هم می تواند از سلنیوم استفاده کنه یا خیر؟