Селениум (софтуер)

от Уикипедия, свободната енциклопедия
Селениум
Информация
Последна версия2.53.0
15.03.2016
Програмен езикJava
Платформамеждуплатформен софтуер
ЛицензApache License 2.0
Уебсайтseleniumhq.org

Селениум (Selenium) е портативна структура за тестване на софтуер при уеб приложения. Той е набор от софтуерни инструменти, всяко с различен подход за поддръжка на автоматизацията на тестове. Всичките заедно предоставят множество функции за тестване на всякакви видове уеб приложения. Позволява сравняването на резултата от теста с актуалното поведение на приложението. Едно от най-големите предимства на Selenium е възможността за изпълнение на тестовете върху множество браузър платформи. Има свой собствен домейн-специфичен език (Selenese), на който могат да се пишат тестове на голям брой от популярните програмни езици, включващи Java, C#, Groovy, Perl, PHP, Python и Ruby. Selenium върви върху платформите Windows, Linux и Macintosh. Той е open-source софтуер и може да се изтегли и използва без заплащане.

История[редактиране | редактиране на кода]

Selenium за пръв път се появява през 2004 г., когато Джейсън Хъгинс тества вътрешно приложение в ThoughtWorks. Като един умен човек, той смята, че има по-добри приложения на своето време, отколкото ръчно да преминава едни и същи тестове с всяка промяна, която прави. Той разработил Javascript библиотека, която може да взаимодейства с уеб страници, като му позволява автоматично да изпълнява тестове върху няколко браузъра. Тази библиотека в крайна сметка става ядрото на Селениум, което лежи в основата на цялата функционалност на Selenium Remote Control (RC) и Selenium IDE. Selenium RC е абсолютен хит на своето време, защото няма друг продукт, който да ви позволява да контролирате браузъра с език по ваш избор. Въпреки че Selenium е огромен инструмент, той не е без своите недостатъци. Поради своите JavaScript базирани автоматизации и ограниченията за сигурност, които браузърите прилагат за JavaScript, някой неща е невъзможно да се направят.

Също така, уеб приложенията стават все по-мощни с течение на времето, като се възползват от всички нововъведения, които новите браузъри предоставят и така правейки тези ограничения все по осезаеми и болезнени. През 2006 г. един смел инженер в Google на име Саймън Стюарт започва работа по проект, който той нарича WebDriver. Google отдавна е голям потребител на Selenium, но тестерите е трябвало да работят заобикаляйки ограниченията на продукта.

Саймън иска инструмент за тестване, който комуникира директно с браузъра по естествен и за браузъра, и за операционната система начин, като се избегнат ограниченията на тестовата среда на JavaScript.

Така започва проектът WebDriver с цел да се решат „болките“ на Selenium.

2008 г. бележи сливането на Selenium и WebDriver. Selenium има голяма общност и търговска подкрепа, но ясно се вижда, че WebDriver ще е инструментът на бъдещето.

Сливането на двата инструмента, предоставя общ набор от функции за всички потребители и събира под един покрив някои от най-големите умове в сферата на тестването. Може би най-доброто обяснение за това, защо WebDriver и Selenium се сливат е подробно описано от Саймън Стюарт, създател на WebDriver, в публичен имейл до общностите на WebDriver и Selenium на 6 август 2009 г. „Защо се сливат проектите? Отчасти поради факта, че WebDriver решава някои от недостатъците в Selenium, отчасти защото Selenium решава някои от недостатъци в WebDriver и отчасти, защото основните сътрудници на Selenium и аз чувстваме, че това е най-добрият начин да предложим на потребителите възможно най-добрата софтуерна платформа.“

Компоненти[редактиране | редактиране на кода]

Селениум IDE[редактиране | редактиране на кода]

Selenium-IDE (Интегрирана среда за разработка) е инструмент, който се използва, за да се разработват Selenium тестове. Това е лесен за използване Firefox plug-in и като цяло е най-ефективният начин за разработване на тестови случаи. Той също така съдържа контекстно меню, което ви позволява първо да изберете UI (Потребителски интерфейс) елемент от изведената страница на браузъра и след това да изберете от списъка на Selenium команди с параметри, предварително определени в зависимост от контекста на избрания UI (Потребителски интерфейс) елемент. Това не само спестява време, но и е отличен начин за учене на синтаксисът на Selenium Script – скриптов език за писане на команди за Selenium тестове.

Селениум Remote Control[редактиране | редактиране на кода]

Селениум Remote Control (RC) е сървър, написан на Java, който приема команди за браузъра чрез HTTP. RC прави възможно да се напишат автоматизирани тестове за уеб приложения, на който и да е език за програмиране, което спомага за по-добра интеграция на Selenium в съществуващите софтуерни рамки за компонентно тестване (unit testing frameworks). За да направи по-лесно писането на тестове, проектът Selenium осигурява клиентски драйвери за PHP, Python, Ruby, .NET, Perl и Java. Java драйверът, например, може да се използва с JavaScript (чрез Rhino engine).

Selenium RC се състои от две основни части – сървър и клиентски библиотеки. Сървърът получава Selenese команди от тестовата програма, интерпретира ги и докладва обратно към вашата програма резултатите от изпълнението на тези тестове. Сървърът RC пакетира Selenium Core ​​и автоматично го инжектира в браузъра. Това се случва, когато тестовата програма отваря браузъра (като се използва функцията на клиентската библиотека API). Selenium-Core е JavaScript програма, всъщност представлява набор от функции на JavaScript, който интерпретира и изпълнява Selenese команди чрез вградения в браузъра JavaScript интерпретатор. Сървърът получава Selenese команди от тестовата програма, която използва обикновени HTTP GET/POST заявки. Това означава, че може да се използва всеки език за програмиране, който може да изпраща HTTP заявки, за да се автоматизират Selenium тестовете в браузъра.

Другата основна част на Selenium RC са клиентските библиотеки. Те осигуряват програмната база, която позволява стартирането на Selenium команди от програма с ваш собствен дизайн. Налице е различна клиентска библиотека за всеки поддържан език. Selenium клиентската библиотека предоставя програмен интерфейс (API), т.е. набор от функции, които стартират Selenium команди от вашата собствена програма. В рамките на всеки интерфейс има функция за програмиране, която поддържа всяка Selenese команда. Клиентската библиотека приема Selenese команда и я предава към Selenium сървъра за обработване на конкретно действие или тест на приложението за тестване (AUT – Application Under Test). Клиентската библиотека също получава резултата от тази команда и я изпраща обратно към вашата програма. Вашата програма може да получи резултата и да го съхрани в променлива и така да го отчете като успех или провал, или евентуално да предприеме корективни действия, ако това се окаже неочаквана грешка.

Selenium RC официално бе оттеглен с пускането на Selenium 2 в услуга на Selenium WebDriver.

Селениум WebDriver[редактиране | редактиране на кода]

Selenium WebDriver е усъвършенстван вариант на Selenium RC. Selenium WebDriver приема команди (изпратени от Selenese или ClientAPI) и ги изпраща към уеб браузъра. Имплементира се през browser – специален браузър драйвер, служещ за изпращане на команди към браузър и връщането на резултат. Повечето от браузър драйверите отварят браузър приложения (като Firefox, Internet Explorer); също така има и HtmlUnit драйвер, който симулира браузър, използващ HtmlUnit. WebDriver e името на основния интерфейс, на който трябва да се пишат тестовете, но има и още няколко имплементации, като HtmlUnit Driver, Firefox Driver, Internet Explorer Driver, Chrome Driver, Opera Driver, IOS Driver, Android Driver.

За разлика от Selenium 1, където Selenium сървърът беше нужно да изпълнява тестове, Selenium WebDriver не се нуждае от сървър, за да изпълнява тестове. Вместо това WebDriver директно стартира инстанция на браузъра и го контролира. Въпреки това е възможно използването на Selenium Grid с WebDriver, за да се изпълняват тестове върху отдалечени системи (remote systems). Където е възможно, WebDriver използва вътрешни за операционната система команди за контролиране на браузъра, вместо браузър-базирани JavaScript команди. Това помага да се избегнат проблеми с тънките разлики между командите на операционната система и JavaScript командите, като ограниченията за сигурност. Selenium WebDriver e създаден за по-добра поддръжка на динамични уеб страници, където елементи от страницата могат да се променят, без да се презарежда страницата.

Selenium WebDriver прави директни извиквания към браузъра, използвайки поддръжката за автоматизация на дадения браузър. На практика това означава, че Selenium 2.0 API има значително по-малко извиквания от Selenium 1.0 API. Докато Selenium 1.0 се стреми да представи богат интерфейс за много различни операции на браузъра, Selenium 2.0 се стреми да представи набор от градивни блокове, чрез които потребителите да могат да изградят свой собствен DSL (Domain Specific Language) или по-точно обектно-ориентирано API с добър дизайн и поддръжка на модерни и напреднали „web-app testing“ проблеми. Такъв DSL вече съществува: Watir проектът в езика Ruby има голям набор от добри дизайни. В Ruby, Watir-webdriver имплементира Watir API като обвивка на Selenium WebDriver. Watir-webdriver е създаден напълно автоматично чрез WebDriver и HTML спецификации.

Java версията на WebDriver предоставя имплементация на Selenium-RC API. Това означава, че може да се използва основната технология на WebDriver, използвайки Selenium-RC API. Използва се за обратна съвместимост. Също позволява да се използват двете API-та заедно върху един ѝ същ тестови код. WebDriver не предоставя поддръжка за толкова много браузъри както Selenium RC. За да се предостави тази поддръжка, използвайки WebDriver API, може да се използва SeleneseCommandExecutor.

През 2012 г., Саймън Стюард (създателят на WebDriver), който е работел тогава за Google, а сега за Facebook, и Давид Бърнс от Mozilla са обсъждали с World Wide Web Consortium (W3C) WebDriver да бъде обявен като интернет стандарт. През юли 2012 г. е пуснат работещият проект. Selenium WebDriver (Selenium 2.0) е напълно имплементиран и поддържан от Python, Ruby, Java и C#.

Селениум Grid[редактиране | редактиране на кода]

Selenium-Grid представлява сървър, който позволява да се тества софтуер с различни браузъри паралелно на отдалечени машини. Възможността да се провеждат тестове на отдалечени браузъри е полезна за разпределянето на тестването на няколко машини и за тестването в браузъри, които работят на различни платформи или операционни системи.

Има две причини да се използва Selenium-Grid:

1. За да се пуснат тестове в различни браузъри, различни версии на браузъри и в бразузъри, работещи на различни операционни системи.

2. За да се намали времето, което отнема на теста да приключи.

Selenium-Grid се използва, за да се намали времето на изпълнение на тестването, като се използват няколко машини, които изпълняват тестове паралелно.

Селениум Ecosystem[редактиране | редактиране на кода]

Няколко забележителни инструменти позволяват лесно да се изпълняват Selenium тестове и да се виждат резултатите от тях:

  • Jenkins осигурява plug-in за интегриране на резултатите от теста, и работи със Selenium Grid.
  • Grails осигурява plug-in за лесно добавяне на Selenium тестове за Grails апликации.
  • Apache Maven осигурява Selenium 2 артефакти в централното хранилище Maven.
  • Visual Studio осигурява plug-in за изпълнение на Selenium тестове от Visual Studio.
  • Drupal`s internal testing framework, SimpleTest, осигурява интеграция на Selenium.
  • Silk Central е платформа за управление на тестове, която позволява да се постигне възможността за докладване в реално време и способността за изпълнение на Selenium скриптове.
  • SOAtest e API testing инструмент, който може да използва Selenium WebDriver framework за Web UI testing, включващ cross-browser testing.
  • Testdroid осигурява достъп до ръчно, автоматично или чрез API Selenium WebDriver framework на реални мобилни устройства и браузъри.
  • Vaadin TestBench е инструмент за автоматизация на браузъра, подходящ за създаване на тестове на ниво интерфейс за Vaadin приложения. Изграден е върху Selenium 2.

Външни препратки[редактиране | редактиране на кода]

  Тази страница частично или изцяло представлява превод на страницата Selenium (software) в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​