advertisement

Acceptance testing with Selenium 2 and PHPUnit

58 %
42 %
advertisement
Information about Acceptance testing with Selenium 2 and PHPUnit
Technology

Published on February 27, 2014

Author: bissertodorov

Source: slideshare.net

Description

Acceptance Testing with Selenium 2 and PHPUnit
advertisement

Acceptance Testing with Selenium & PHPUnit BULGARIA PHP GROUP

Software testing

Подходи при тестване • White box testing Това са тестове базирани на вътрешната структура на софтуера. Рарзработчика на този тип тестове трябва да има програмистки умения. Тези тестове най-често се асоциират с Unit Test. • Black box testing Този тип тестове третират софтуера като черна кутия. Те проверяват функционалността на софтуера без да познават неговата вътрешна структура. • Gray box testing Тестове които се изпълнява на ниво black box обаче използват знания за вътрешната структура и алгоритми на софтуера. (Нещо като хибриден вариант от горните два подхода).

Нива на тестване • Unit testing Тези тестове са предназначени да верифицират функционалността на определен модул от кода – най-често функция, клас. • Integration testing Този тип тестове целя да верифицират интерфейса между отделните компоненти на софтуерната система. • System testing Провеждат се върху готовата, интегрирана система за да проверят дали тя отговаря на съответните изисквания. Попадат в групата на black-box тестовете.

Нива на тестване • Acceptance testing Тези тестове целят да установят дали системата може да отговори на ежедневните бизнес изисквания и дали е завършена или готова за бизнес употреба.

Selenium 2.0

Какво е Selenium? • Selenium 1, 2 – browser automation tool! Софтуерен framework за предназначен за тестване на web приложения. Той поддържа пакет от инструменти всеки от които предлага различен подход за автоматизиране на тестовете. Създаден е от програмиста Jason Huggins през 2004 г.

Архитектура • Selenium 2 : WebDriver + Selenium Server – Обектно ориентирано API посредствеом което можем да контролираме поведението на браузъра – Драйвери за голям брой браузъри. • Selenium 1 – Selenium RC – Версията преди WebDriver – все още се поддържа за обратна съвместимост. • Selenium IDE – Графичен инструметн за създаване на прототипи на тестови скриптове.

Selenium IDE

Selenium IDE • Какво е Selenium IDE Selenium IDE (Integrated Development Environment) е графичен инструмент който може да използвате за създаванена вашите тестове. Той представлява лесен за използване plugin за Mozila Firefox. Съдържа и контекстно меню което ви дава възможност първо да селектирате даден елемент от отворената в браузъра страничка и след това да изберете от него дадена команда, параметрите на която се попълват в зависимост от контекста. • Инсталиранe

Selenium IDE • Интерфейс – Test Case Pane • • • • Table Source Log Reference Показва резултата от изпълнението на скрипта Показва кратка документация на текущата команда

Selenium IDE • Създаване на Test Case – Записване Записва действията на потребителя. – Добавяне на verification, assert с контекстно меню Понякога нашите тестове трябва да проверят свойства на обекти от страницата. В този случаи се нуждаем от команди verify, assert. – Редактиране Добавяне и редактиране на команди и коментари.

Selenium IDE • Отваряне, стариране и записване на тестове. • Базов URL

• Пример: Създаване на потребителски акаунт - записване на тест; - редактиране на тест; - добавяне на команда verify.

Selenium IDE • Команди – Actions Команди които манипулират състоянието на приложението. Повечето actions може да се извикват и със суфикс: andWait. Note: Ако даден actiоn пропадне, изпълението на теста се прекратява. – Accessors Проверява състоянието на приложението и записва резултата в променлива. Автоматично генерира assertion. (http://selenium-sipendra.blogspot.com/2011/04/selenium-accessors.html) – Assertions Проверяват дали състоянието е такова каквото се очаква. Всички assertion имат три режима: assert, verify, waitFor.

Selenium IDE • Синтаксис на командите Команда и един или два параметъра. Единият обикновено е локатор. А другия текстов щаблон. • Локатори Множество команди изискват “target”. Target – идентифицира елемента. Той се състои от две части: location strategy, и location. Записва се в долния формат: locatorType = location – by Id – by Name – by CSS – by XPath

WebDriver

WebDriver • Selenium WebDriver прави заявки директно към браъзъра като използва browsers native support for the automation. Това е доста различно от начина по който работи Selenium RC. Selenium RC работи по един и същи начин с всеки браузър който поддържа. Той „инджектава“ JavaScript функции, когато браузъра се зареди. И след това използва тези функции за автоматизация. WebDriver използва съвсем различна техника . Той управлява браъзъра директно като използва вградената поддръжака за автоматизация на самия браъзър.

WebDriver • WebDriver дава възможност да изпълнявате вашите тестове на различни браузъри а не само на Firefox. • WebDriver ви дава възможност да използвате език за програмиране при създаване на вашите тестове. • WebDriver има native поддръжка за Java, C#, Python, Rubby. За Perl, PHP разчитаме на third party библиотеки.

Selenium Server

Selenium Server • Вие може да се нуждаете или не от selenium server, в зависимост от това как искате да изпозлвате селениум WebDriver. Ако искате да изпозлвате само WebDriver-API вие не се нуждаете от сървър. Ако вашите тестове се стартират на същата машина на която и браузъра – и ползвате само API то, не се нуждаете от сървър, WebDriver ще стартира браузъра директно.

Selenium Server Вие се нуждаете от Selenium Server ако: • • • използвате SeleniumGrid; искате да стартирате браузъра на отдалечена машина; няма native поддръжка на езика който ползат.

Selenium, PHP & PHPUnit

Selenium, PHP & PHPUnit • Selenium & PHP За съжаление Selenium не поддържа WebDriver API за PHP. За това за да ползваме Selenium с PHP ние се нуждаем от: – Selenium Standalone Server (и тъй като той е написан на Java се нуждаем и от jre.) – и разбира се от клиентски PHP Selenium библиотеки, освен ако не искаме да пращаме JSON съобщения дирекнто а сървъра.

Selenium, PHP & PHPUnit • Клиентски библиотеки – PHPUnit_Selenium – Facebook’s php-webdriver – php-webdriver-bindings – WebDriver-PHP

PHPUnit Selenium

PHPUnit_Extensions_SeleniumTestCase

PHPUnit_Extensions_SeleniumTestCase • Описание Реализира Selenium RC API – Selenium 1. Поддържа client/server протокола посредством който скрипта комуникира със Selenium Server. Освен това поддържа специализирани assertion методи.

PHPUnit_Extensions_Selenium2TestCase

PHPUnit_Extensions_Selenium2TestCase • Описание Този клас ни дава възможност да използваме WebDriver API (което обаче за съжаление е частично реализирано). • Изисквания – PHPUnit – curl – Selenium Extension – Selenium Server (+jre)

PHPUnit_Extensions_Selenium2TestCase • Инсталиране – PHPUnit_Selenium pear channel-discover pear.phpunit.de pear install pear.phpunit.de/PHPUnit_Selenium – Selenium Server Изтегляме jar файла от долната страничка: http://docs.seleniumhq.org/download/ и го стартираме преди да пуснем тестовете: java –jar selenium-server-standalone-2.39.0.jar

PHPUnit_Extensions_Selenium2TestCase • използване class WebTest extends PHPUnit_Extensions_Selenium2TestCase { protected function setUp() { // конфигурация – този метод е задължителен. } public function testTitle() { // тестове } } ?>

PHPUnit_Extensions_Selenium2TestCase • Метод setUp() – setBrowser(string $browser) Задава браузъра който да бъде използван от Selenium Server. – setBrowserUrl(string $browserUrl) Задава базовият URL. – setHost(string $host) Задава хоста на който се намира Selenium Server.

PHPUnit_Extensions_Selenium2TestCase – setPort(int $port) Задава порта на който отговаря сървъра. – setTimeout(int $timeout) Задава timeout при свързване със сървъра. – setSleep(int $second) Задава интервала на изчакване между изпращането на action команди.

PHPUnit_Extensions_Selenium2TestCase • Locators – byId($id) Намира елемента на базата на неговот id. – byName($name) Намира елемента на базта на неговото име. – byCssSelector($cssSelector) Намира елемента на базта на невогия css selector.

PHPUnit_Extensions_Selenium2TestCase – byClassName($className) Намира елемента на базата на името на неговия клас. – byXPath($id) Намира елемента използвайки XPath. – byLinkText($id) Текста съдържащ се в линка.

PHPUnit_Extensions_Selenium2TestCase • PHPUnit_Extensions_Selenium2TestCase_Element Всеки един от гореизброените локатори връща обект от горния клас, който има следните методи: – atribute($name) Връща атрибута на елемента. – clear() Изтрива съдържанието на form element. – click() Кликва върху елемента.

PHPUnit_Extensions_Selenium2TestCase – css($propertyName) Връща съответното CSS свойстов. – equals() Проверява дали два елемента са еднакви. – location() Връща масив с x, y позицията на елемента. – selected() Проверява състонието на опция или друг елемент на форма.

PHPUnit_Extensions_Selenium2TestCase • size() Връща масив с x, y позицията на елемента. • submit() Събмитва форма. • value($newValue = null) Връща или задава стойност на даден елемент. Ако той вече има стойност новата се добавя към старата. • text() Връща съдържанието на елемента.

Примери: Верификация на линковете от горната лява част на сайта на базата на тяхното id (метод: byId()). Проверяваме: - дали присъстват на всяка една от трите странички - дали съдържат верните текстове - дали съдържат верните линкове

Пример: тестваме размера на логото. Изплзваме: локатор – byClassName(). Очакваме Размера да е 80x80.

Пример: Тестваме позицията на трите изображения от индексната страница. Използваме: локатор byCssSelector(). Очакваме: ... картинката на следващата страница.

PHPUnit_Extensions_Selenium2TestCase • Actions – url($url = null) Отваря страницата с указания url. Ако няма url – връща текущя. – title() Връща заглавието на текущата страница. – clickOnElement($id) Кликва върху елемента с указаното id. – moveto($element) Премества маркера на мишката върху указания елемент.. – click($button = 0) Кликва върху позицията на която сме преместили маркера с moveto.

Пример: Искаме да проверим дали линковете от тулбара работят. Използваме: - метода click() на върнатия от локарора елемент; - също така $this->moveto(), $this->click().

PHPUnit_Extensions_Selenium2TestCase – keys($keys) Изпраща поредица от клавиши. – select($element) Като параметър получава обект от тип: PHPUnit_Extensions_Selenium2TestCase_Elemen и връща обект от тип: PHPUnit_Extensions_Selenium2TestCase_Select.

PHPUnit_Extensions_Selenium2TestCase_Select • PHPUnit_Extensions_Selenium2TestCase_Select – selectedLabel() Връща текущо избрания лейбъл на обекта. – selectedValue() Връща текущо избраната стойност на обекта. – selectOptionByLabel($string) Селектира опцията с указания лейбъл. – selectOptionByValue($string) Селектира опцията с указаната стойност.

Пример: Попълване и събмитване на форма. Очакваме : 1. Събмитването да мине успешно и да бъдем препратени на долния url: http://selenium.bulgariaphp.com/signup.php 2. Страничката на която сме препратени да съдържа текста: Sussessful Signup. Please, check your email. 3. Данните които сме въвели да се запишат в базата данни.

Пример: Въвеждаме потребител с име което съвпада с вече въведено такова. Очакваме: - да останем на същата страница; - да видим съобщението за дублиращото се име; - във формата да се запазят всички въведени от потребителя данни.

PHPUnit_Extensions_Selenium2TestCase – acceptAlert() Щраква OK върху alert или confirmation box. – dismissAlert() Щраква върху cancel при confirmation box, или не натиска OK при alert. – alertTesxt() Връща текста от текущия alert.

Пример: Alerts – Имаме контролен панел посредством който трием потребители, щраквайки върху техните потребителски имена. При щракване върху дадено име се отваря alert. Като потвърдим – потребителя се трие. Ако щракнем на cancel – не се случва нищо. Искаме да се уверми: - че пренасочва към правилната стграница; - на нея излиза съобщение че потребителя е изтрит; - требителя го няма в базата данни.

PHPUnit_Extensions_Selenium2TestCase – timeout() Връща обект от тип PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts. • PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts – implicitWait($time) Задава времето на изчакване при търсене на даден обект.

Пример: Тестване за наличието на елемент който се зарежда от Ajax. Очакваме: - да намерим зареждания от Ajax обект, на страничката.

PHPUnit_Extensions_Selenium2TestCase • Мобилни устройства – orientation – touch • Ако елемента не бъде намерен? – PHPUnit_Extensions_Selenium2TestCase_WebDriverException

PHPUnit_Extensions_Selenium2TestCase • Assertion – assertFalse() – assertTrue(); – assertContains(); – assertEquals()

Facebook’s php-webdriver

Selenium GRID

Selenium GRID • Какво е Selenium GRID? Selenium GRID ни дава възможност да стартираме паралелно множество тестове на различни машини с различни операционни системи и различни браузъри. Най-общо казано има две причини поради които да ползваме Selenium GRID: – – • искаме да стартираме нашите тестове на ралзични браузъри или различни верси на един и същи браузър; да редуцираме времето за изпълнение на пакета от тестове. GRID Състои се от един hub и един или повече nodes. И двете се реализират посредством: selenium-standalone-server.jar.

Selenium GRID • Как работи? Selenium HUB получава скрипта с информация за това на коя платформа трябва да го стартира. HUB-ът „познава“ конфигурацията на всеки регистриран note. На базата на тази информация той избира node с указаната комбинация платформа-браузър. • Инсталиране Инсталирането е просто. Изтеглете Selenium Server jar файла от долния линк и го запишете на всички nodes и на сървъра. http://docs.seleniumhq.org/download/

Selenium GRID • Стартиране – HUB java -jar selenium-server-standalone-2.21.0.jar -role hub – Node java -jar selenium-server-standalone-2.21.0.jar -role node -hub http://<hub hostname> :4444/grid/register

Selenium GRID

Пример: Конфигуриране на Selenium GRID: hub, nodes. Стартиране на тестове – последователно.

HUB NODE1 NODE CentOS OS X Solaris

Пример: Selenium GRID: Стартиране на тестове – паралелно.

Благодаря за вниманието

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Working with PHPUnit and Selenium Webdriver

Working with PHPUnit and Selenium ... of user acceptance testing with Selenium. We will do this with classical unit testing framework PHPUnit, ...
Read more

Using Selenium with PHPUnit - SitePoint – Learn HTML ...

Younes Rafie demonstrates the use of Selenium for acceptance testing ... Selenium WebDriver (Selenium 2 ... using Selenium with PHPUnit for acceptance ...
Read more

PHPUnit Manual – Chapter 13. PHPUnit and Selenium

PHPUnit and Selenium. ... can be used for both acceptance testing ... decision is that Selenium 2 is backward compatible and Selenium RC is not ...
Read more

PHPUnit – The PHP Testing Framework

PHPUnit 5.3 is the current stable release series. It became stable on April 1, 2016. Its support ends on June 3, 2016 when PHPUnit 5.4 is released.
Read more

Acceptance testing using PHPUnit and Selenium ¶

Acceptance testing using PHPUnit and Selenium ... There also is demonstration project using difference kinds of Selenium tests with PHPUnit. Docstart; Show ...
Read more

Testing with PHPUnit and Selenium -- NetBeans IDE Tutorial

Testing with PHPUnit and Selenium. ... == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 * @assert (1, 2) == 4 ...
Read more

Executing Selenium tests - TYPO3 Documentation

Acceptance testing using PHPUnit and Selenium. ... Executing Selenium ... Start it from the console by running java-jar selenium-server-standalone-2.7 ...
Read more

Webapp Acceptance Test with Selenium - Web Applications ...

Webapp Acceptance Test with Selenium. ... Selenium automates acceptance testing ... JDK/JRE is needed to run Selenium Server. Step 2: Install PHPUnit ...
Read more

Acceptance Testing of Web Applications with PHP - Zend ...

Acceptance Testing of Web ... to use a recent Selenium 0.9.2 ... replacement for proper Acceptance Testing. With PHPUnit and Selenium, ...
Read more