3. Подходи при тестване
• White box testing
Това са тестове базирани на вътрешната структура на софтуера. Рарзработчика на този
тип тестове трябва да има програмистки умения. Тези тестове най-често се асоциират с
Unit Test.
• Black box testing
Този тип тестове третират софтуера като черна кутия. Те проверяват функционалността
на софтуера без да познават неговата вътрешна структура.
• Gray box testing
Тестове които се изпълнява на ниво black box обаче използват знания за вътрешната
структура и алгоритми на софтуера. (Нещо като хибриден вариант от горните два
подхода).
4. Нива на тестване
• Unit testing
Тези тестове са предназначени да верифицират функционалността на определен модул
от кода – най-често функция, клас.
• Integration testing
Този тип тестове целя да верифицират интерфейса между отделните компоненти на
софтуерната система.
• System testing
Провеждат се върху готовата, интегрирана система за да проверят дали тя отговаря на
съответните изисквания. Попадат в групата на black-box тестовете.
5. Нива на тестване
• Acceptance testing
Тези тестове целят да установят дали системата може да отговори на ежедневните
бизнес изисквания и дали е завършена или готова за бизнес употреба.
7. Какво е Selenium?
• Selenium 1, 2 – browser automation tool!
Софтуерен framework за предназначен за тестване на web приложения. Той поддържа
пакет от инструменти всеки от които предлага различен подход за автоматизиране на
тестовете.
Създаден е от програмиста Jason Huggins през 2004 г.
8. Архитектура
• Selenium 2 : WebDriver + Selenium Server
– Обектно ориентирано API посредствеом което можем да контролираме
поведението на браузъра
– Драйвери за голям брой браузъри.
• Selenium 1 – Selenium RC
– Версията преди WebDriver – все още се поддържа за обратна съвместимост.
• Selenium IDE
– Графичен инструметн за създаване на прототипи на тестови скриптове.
10. Selenium IDE
• Какво е Selenium IDE
Selenium IDE (Integrated Development Environment) е графичен инструмент който може
да използвате за създаванена вашите тестове. Той представлява лесен за използване
plugin за Mozila Firefox. Съдържа и контекстно меню което ви дава възможност първо
да селектирате даден елемент от отворената в браузъра страничка и след това да
изберете от него дадена команда, параметрите на която се попълват в зависимост от
контекста.
• Инсталиранe
11. Selenium IDE
• Интерфейс
– Test Case Pane
•
•
•
•
Table
Source
Log
Reference
Показва резултата
от изпълнението
на скрипта
Показва кратка документация
на текущата команда
12. Selenium IDE
• Създаване на Test Case
– Записване
Записва действията на потребителя.
– Добавяне на verification, assert с контекстно меню
Понякога нашите тестове трябва да проверят свойства на обекти от страницата. В
този случаи се нуждаем от команди verify, assert.
– Редактиране
Добавяне и редактиране на команди и коментари.
14. • Пример: Създаване на потребителски акаунт
- записване на тест;
- редактиране на тест;
- добавяне на команда verify.
15. 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.
16. Selenium IDE
• Синтаксис на командите
Команда и един или два параметъра. Единият обикновено е локатор. А другия текстов
щаблон.
• Локатори
Множество команди изискват “target”. Target – идентифицира елемента. Той се състои
от две части: location strategy, и location. Записва се в долния формат:
locatorType = location
–
by Id
–
by Name
–
by CSS
–
by XPath
18. WebDriver
•
Selenium WebDriver прави заявки директно към браъзъра като използва browsers native
support for the automation. Това е доста различно от начина по който работи Selenium
RC. Selenium RC работи по един и същи начин с всеки браузър който поддържа. Той
„инджектава“ JavaScript функции, когато браузъра се зареди. И след това използва
тези функции за автоматизация. WebDriver използва съвсем различна техника . Той
управлява браъзъра директно като използва вградената поддръжака за автоматизация
на самия браъзър.
19. WebDriver
•
WebDriver дава възможност да
изпълнявате вашите тестове на различни
браузъри а не само на Firefox.
•
WebDriver ви дава възможност да
използвате език за програмиране при
създаване на вашите тестове.
•
WebDriver има native поддръжка за Java,
C#, Python, Rubby. За Perl, PHP разчитаме
на third party библиотеки.
21. Selenium Server
•
Вие може да се нуждаете или не от selenium server, в зависимост от това как искате да
изпозлвате селениум WebDriver. Ако искате да изпозлвате само WebDriver-API вие не
се нуждаете от сървър. Ако вашите тестове се стартират на същата машина на която и
браузъра – и ползвате само API то, не се нуждаете от сървър, WebDriver ще стартира
браузъра директно.
22. Selenium Server
Вие се нуждаете от
Selenium Server ако:
•
•
•
използвате SeleniumGrid;
искате да стартирате браузъра
на отдалечена машина;
няма native поддръжка на
езика който ползат.
24. Selenium, PHP & PHPUnit
• Selenium & PHP
За съжаление Selenium не поддържа WebDriver API за PHP. За това за да ползваме
Selenium с PHP ние се нуждаем от:
–
Selenium Standalone Server (и тъй като той е написан на Java се нуждаем и от jre.)
–
и разбира се от клиентски PHP Selenium библиотеки, освен ако не искаме да пращаме JSON
съобщения дирекнто а сървъра.
30. PHPUnit_Extensions_Selenium2TestCase
• Описание
Този клас ни дава възможност да използваме WebDriver API (което обаче за
съжаление е частично реализирано).
• Изисквания
– PHPUnit
– curl
– Selenium Extension
– Selenium Server (+jre)
31. 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
33. PHPUnit_Extensions_Selenium2TestCase
• Метод setUp()
– setBrowser(string $browser)
Задава браузъра който да бъде използван от Selenium Server.
– setBrowserUrl(string $browserUrl)
Задава базовият URL.
– setHost(string $host)
Задава хоста на който се намира Selenium Server.
34. PHPUnit_Extensions_Selenium2TestCase
– setPort(int $port)
Задава порта на който отговаря сървъра.
– setTimeout(int $timeout)
Задава timeout при свързване със сървъра.
– setSleep(int $second)
Задава интервала на изчакване между изпращането на action команди.
39. PHPUnit_Extensions_Selenium2TestCase
•
size()
Връща масив с x, y позицията на елемента.
•
submit()
Събмитва форма.
•
value($newValue = null)
Връща или задава стойност на даден елемент. Ако той вече има стойност новата се
добавя към старата.
•
text()
Връща съдържанието на елемента.
40. Примери: Верификация на линковете от горната лява част на сайта
на базата на тяхното id (метод: byId()).
Проверяваме:
- дали присъстват на всяка една от трите странички
- дали съдържат верните текстове
- дали съдържат верните линкове
41.
42.
43.
44. Пример: тестваме размера на логото.
Изплзваме: локатор – byClassName().
Очакваме
Размера да е 80x80.
45.
46.
47.
48. Пример: Тестваме позицията на трите изображения от индексната
страница.
Използваме: локатор byCssSelector().
Очакваме: ... картинката на следващата страница.
49.
50.
51.
52. PHPUnit_Extensions_Selenium2TestCase
• Actions
– url($url = null)
Отваря страницата с указания url. Ако няма url – връща текущя.
– title()
Връща заглавието на текущата страница.
– clickOnElement($id)
Кликва върху елемента с указаното id.
– moveto($element)
Премества маркера на мишката върху указания елемент..
– click($button = 0)
Кликва върху позицията на която сме преместили маркера с moveto.
53. Пример: Искаме да проверим дали линковете от тулбара работят.
Използваме:
- метода click() на върнатия от локарора елемент;
- също така $this->moveto(), $this->click().
57. Пример: Попълване и събмитване на форма.
Очакваме :
1. Събмитването да мине успешно и да бъдем препратени на долния url:
http://selenium.bulgariaphp.com/signup.php
2. Страничката на която сме препратени да съдържа текста:
Sussessful Signup. Please, check your email.
3. Данните които сме въвели да се запишат в базата данни.
58.
59.
60.
61. Пример: Въвеждаме потребител с име което съвпада с вече въведено такова.
Очакваме:
- да останем на същата страница;
- да видим съобщението за дублиращото се име;
- във формата да се запазят всички въведени от потребителя данни.
65. Пример: Alerts – Имаме контролен панел посредством който трием
потребители, щраквайки върху техните потребителски имена. При щракване
върху дадено име се отваря alert. Като потвърдим – потребителя се трие.
Ако щракнем на cancel – не се случва нищо.
Искаме да се уверми:
- че пренасочва към правилната стграница;
- на нея излиза съобщение че потребителя е изтрит;
- требителя го няма в базата данни.
66.
67.
68. PHPUnit_Extensions_Selenium2TestCase
– timeout()
Връща обект от тип PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts.
•
PHPUnit_Extensions_Selenium2TestCase_Session_Timeouts
– implicitWait($time)
Задава времето на изчакване при търсене на даден обект.
69. Пример: Тестване за наличието на елемент който се зарежда от Ajax.
Очакваме:
- да намерим зареждания от Ajax обект, на страничката.
79. Selenium GRID
• Какво е Selenium GRID?
Selenium GRID ни дава възможност да стартираме паралелно множество тестове на
различни машини с различни операционни системи и различни браузъри. Най-общо
казано има две причини поради които да ползваме Selenium GRID:
–
–
•
искаме да стартираме нашите тестове на ралзични браузъри или различни верси на един и
същи браузър;
да редуцираме времето за изпълнение на пакета от тестове.
GRID
Състои се от един hub и един или повече nodes. И двете се реализират посредством:
selenium-standalone-server.jar.
80. Selenium GRID
• Как работи?
Selenium HUB получава скрипта с информация за това на коя платформа трябва да го
стартира. HUB-ът „познава“ конфигурацията на всеки регистриран note. На базата на
тази информация той избира node с указаната комбинация платформа-браузър.
• Инсталиране
Инсталирането е просто. Изтеглете Selenium Server jar файла от долния линк и го
запишете на всички nodes и на сървъра.
http://docs.seleniumhq.org/download/