Тестуємо web-додатки за допомогою selenium rc

Інфраструктури модульного тестування, такі як JUnit, дозволяють тестувати код, що виконується на стороні сервера. Однак в типовому Web-додатку серверний код є лише малою частиною всього коду програми. У таких додатках може бути багато коду, який можна протестувати тільки за допомогою інструменту, що працює з браузером.

У цій статті ви познайомитеся з інструментом Selenium, за допомогою якого можна створювати і автоматизувати тести web-додатків. Ви дізнаєтеся, як швидко створювати приклади тестів, розширювати їх, і як за допомогою Selenium Remote Control запускати їх у вигляді автоматичних тестів.

Знайомимося з Selenium RC

Selenium RC є частиною набору інструментів, наявних в проекті Selenium. З його допомогою можна автоматично запускати створені тести. Selenium RC працює на багатьох операційних системах та з різними браузерами, в тому числі з Windows® Internet Explorer®, Mozilla Firefox і Opera.

Використовуючи Selenium RC, можна автоматично виконувати тести скільки завгодно раз. Крім того, цей інструмент дозволяє створювати більш складні тести, ніж ті, які можна робити в Selenium IDE. В тести можна додавати інструкції умов і повторів, які можуть вам стати в нагоді, якщо ви хочете виконати тести з певним набором даних. Також можна обробляти очікувані виключення з допомогою конструкцій, наявних в інфраструктурах модульного тестування, таких як JUnit.

Завантажуємо і встановлюємо Selenium RC

Для початку роботи з Selenium RC його потрібно завантажити і встановити. Сервер Selenium є звичайним JAR-файлом, який можна виконати в середовищі виконання (JRE або Java ™ Runtime Environment) .Загрузіть JAR-файл і інші необхідні файли можна з сайту SeleniumHQ (див. Посилання в розділі Ресурси).

Після закінчення завантаження розпакуйте архів, що містить Selenium RC, і помістіть його куди-небудь на своїй файлової системи. Тепер можна запустити сервер Selenium, виконавши наступну команду:

Приклад програми для тестування

Лістинг 1. Сторінка index.jsp
Лістинг 2. Сторінка enterInfo.jsp

Пишемо перший тест

Для швидкого написання початкових тестів, які потім будуть використовуватися в якості основи для створення автоматичних тестів, можна скористатися середовищем Selenium IDE. Середа Selenium IDE являє собою модуль розширення Firefox, який дозволяє записувати тести. Після запису тести можна експортувати, щоб в них можна було додати умови, повтори і т.д.

Для початку роботи з Selenium IDE завантажте її за посиланням в розділі Ресурси. Натисніть на посилання і встановіть Selenium IDE як модуль розширення Firefox. Firefox запропонує вам встановити модуль розширення, після чого потрібно буде перезапустити браузер, щоб зміни вступили в силу.

Встановивши модуль розширення, запустіть сервер, після чого можна приступати до роботи з web-додатком. Щоб відкрити Selenium IDE, натисніть в Firefox Tools> Selenium IDE. Коли Selenium IDE відкриється, натисніть Record. Selenium IDE почне запис: вона буде запам'ятовувати всі дії, які ви виконуєте в браузері. Щоб увійти в тестове додаток, виконайте наступні кроки:

  1. Увімкніть запис в Selenium IDE і перейдіть на сторінку index.jsp.
  2. Введіть ім'я користувача.
  3. Введіть правильний пароль в поле Password.
  4. Натисніть Login.

Після успішного входу в web-додатку повинна відкритися сторінка enterInfo.jsp. На даний момент в тесті вже є кроки, проте ще немає ніяких перевірок того, що вони виконані успішно. Середа Selenium повинна знати, на що їй треба подивитися, щоб зрозуміти, відобразилася чи сторінка enterInfo.jsp так, як очікувалося.

Можна додати перевірочні дії, щоб переконатися, що додаток відображає правильне вміст. Не вимикаючи запис в Selenium, виконайте наступні кроки:

  1. Натисніть правою кнопкою миші на будь-якому HTML-елементі, наприклад написи Your name і натисніть verifyTextPresent Your name :.
  2. Повторіть крок 1 для напису Your birth date.
  3. Натисніть Record. щоб зупинити запис.

Якщо ви хочете побачити свій тест в дії, натисніть Run All (див. Малюнок 1). Тест почне виконуватися і завершиться успішно.

Малюнок 1. Натискаємо Run All

Щоб переконатися, що Selenium IDE насправді тестує наш додаток, відкрийте свою IDE і поміняйте в коді значення імені користувача. Перезапустіть програму і знову натисніть Run All. На цей раз тест не пройде, тому що web-програма не відобразить сторінку enterInfo.jsp з правильними написами.

Експортуємо тест в JUnit

Ми записали свій перший тест і тепер можемо експортувати його для використання в JUnit. Виберіть в Selenium IDE свій тест, натисніть File> Export Test Case As> Java (JUnit) - Selenium RC. Введіть назву тесту (наприклад, IndexTests.java), і збережіть його, щоб потім імпортувати в Eclipse.

Виконайте наступні кроки:

  1. Створіть новий Java-проект, що включає в себе модульні тести Java, створені за допомогою JUnit.
  2. Завантажте виконувані файли Selenium RC (див. Посилання в розділі Ресурси). Збережіть файл архіву куди-небудь, звідки його вміст можна буде імпортувати в ваш новий Java-проект в Eclipse.
  3. Створіть у своєму Java-проект нову папку з ім'ям lib.
  4. Натисніть File> Import. а потім виберіть у списку File System. Натисніть Next.
  5. Перейдіть в директорію, в яку ви витягли файли Selenium RC, і виберіть директорію selenium-java-client-driver-1.0.1.
  6. Виберіть в списку selenium-java-client-driver.jar і натисніть OK. щоб імпортувати JAR-файл з клієнтським драйвером Selenium для Java в директорію lib свого проекту.
  7. Імпорт Java-файл тесту, який ви експортували з Selenium IDE, в директорію src свого нового Java-проекту.

Перше, що ви після цього побачите - це безліч помилок компіляції. По-перше, ваш новий Java-файл, можливо, не знаходиться в правильному пакеті, так як зараз він розташований безпосередньо в директорії src. По-друге, неможливо знайти класи JUnit або Selenium. На щастя, ці помилки можна легко вирішити за допомогою Eclipse.

Дозволяємо помилки в Eclipse

Для виправлення помилки з пакетом, виберіть помилку і натисніть Ctrl-1. щоб відкрити підказки. Виберіть Move MyTest.java to package 'com.example.mywebapp.tests'. Eclipse створить за вас пакет і помістить в нього файл.

Додаємо тест JUnit

Тепер додамо тести Selenium і JUnit. Для цього виберіть в Package Explorer наш Java-проект і натисніть Build Path> Configure Build Path. На вкладці Libraries натисніть Add JARs і виберіть файл selenium-java-client-driver.jar. Натисніть OK.

Коли вихідні Java-файли скомпілюйте, тест повинен виглядати так, як показано в лістингу 3.

Лістинг 3. JUnit-тест, заснований на коді, експортованому з Selenium IDE

Якщо ви не можете завантажити і встановити Selenium IDE через будь-яких обмежень, які не дозволяють вам використовувати Firefox, ви все одно можете писати тести, які можна буде запускати за допомогою Selenium RC. Просто використовуйте в якості відправної точки показані тут приклади, а також звертайтеся до документації Selenium, зазначеної в розділі Ресурси.

Переглядаємо результати тестів

Ми вже написали перший приклад тесту, тепер давайте подивимося на нього в дії. Запустимо сервер Selenium і виконаємо тест як стандартний модульний тест JUnit. Запустіть сервер Selenium, виконавши наступну команду:

Запускаємо сервер з IDE

Для найбільш повної інтеграції можна конфігурувати запуск сервера Selenium безпосередньо з Eclipse. Натисніть Run> External Tools> External Tool Configurations і введіть в налаштуваннях зовнішнього інструменту команду для запуску сервера.

Після запуску сервера Selenium можна виконати модульний тест, натиснувши правою кнопкою миші на файл IndexTest.java і вибравши Run As> JUnit Test. Для того щоб сервер Selenium запустив екземпляр вашого браузера і виконав тести, може знадобитися деякий час. Після закінчення тесту ви побачите в Eclipse той же висновок, що і для звичайних модульних тестів.

копнемо глибше

Ми зробили за допомогою Selenium IDE простий тест і експортували його в Java-файл, а тепер давайте створимо складніший тест, який перевіряє функції сторінки enterInfo.jsp. Приклад такого тесту показаний в лістингу 4.

Лістинг 4. JUnit-тест для перевірки enterInfo.jsp

Метод testBadDate () використовується для введення некоректних значень в поле birthdate і відправки форми. У ньому перевіряється, що при введенні некоректної дати з'являється відповідне повідомлення про помилку. Метод testValidDate () перевіряє, що при введенні коректної дати з'являється повідомлення з правильним віком користувача.

автоматизуємо тести

Тепер, коли ми вміємо запускати тести з Eclipse, давайте повністю автоматизуємо виконання тестів за допомогою сценарію Apache Ant з кількома цілями. Маючи сценарій Ant, можна за допомогою таких інструментів, як Hudson або CruiseControl (див. Ресурси), реалізувати постійне виконання цих тестів.

Для автоматизації виконання тестів можна використовувати сценарій Ant, в якому будуть застосовуватися мети JUnit для виконання тестів Selenium RC. Сценарій показаний в лістингу 5.

Лістинг 5. Сценарій Ant для запуску тестів Selenium

Виконуємо тести в інших браузерах

Поки в нашому прикладі тести виконувалися в браузері Firefox. Однак іноді буває потрібно протестувати web-додаток в інших браузерах, щоб переконатися, що воно працює правильно в різних браузерах.

Можливо, ви помітили, що при налаштуванні тестів в метод setUp () тесту JUnit батьківського методу setUp () передається другий параметр * firefox Цей параметр запускає екземпляр браузера Firefox.

Щоб виконати тест в іншому браузері, просто передайте в другому аргументі назву браузера. Наприклад, для запуску браузера Internet Explorer використовується значення * iexplore. Для браузерів Opera і Apple Safari використовуються значення * opera і * safari відповідно.

Зауважте, що обраний вами браузер має підтримувати операційна система, на якій ви запускаєте тести. Якщо ви спробуєте виконати тести в браузері, якого немає в операційній системі, наприклад в * safari або * iexplore на системі Linux® буде видано виняток, і тести не пройдуть.

висновок

У цій статті ми познайомилися з інструментом Selenium і двома його компонентами: Selenium IDE і Selenium RC. Selenium IDE надає простий спосіб запису тестів для web-додатків. За допомогою компонента Selenium RC можна автоматизувати тести і додавати в них нові можливості.

Автоматичне тестування web-додатки за допомогою браузера може стати відмінним доповненням до існуючих модульним тестів, які покривають їхню інші частини вашого застосування. Автоматичні тести прискорюють регресійне тестування і дозволяють розробникам швидше дізнаватися про проблеми.

Ресурси для скачування

Схожі теми