Статьи

Автоматизация тестирования с использованием Hudson и Selenium в NHN Services

NHN , компания,  занимающаяся  разработкой баз данных с открытым исходным кодом CUBRID , автоматизирует тесты для различных браузеров (Chrome, Firefox, Internet Explorer, Opera, iOS Safari и Android), которые работают в различных операционных системах (Linux, Microsoft Windows, Mac OS, iOS). и Android) с набором тестовых кодов с использованием Hudson и Selenium WebDriver. В этой статье я кратко изложу процесс автоматизации тестирования, который мы используем на портале NHNER NHN, и преимущества Hudson и Selenium WebDriver для автоматизации.

Как автоматизировать тесты

Я зарегистрировал тестовый код в  Hudson , инструменте Continuous Integration (CI), и настроил выполнение тестового кода с использованием Selenium WebDriver и JUnit всякий раз, когда источник фиксируется в SVN. Тестирование браузера занимает около 2 секунд. Когда возникает проблема, проблема сообщается в течение 10 минут.

Хадсон обычно используется в большинстве отделов разработки NHN. Нажав кнопку «  Создать сейчас» , пользователи могут просматривать состояние выполнения теста. Система отчетов обеспечивает хорошую среду для «быстрого отказа, быстрой обратной связи».

multi_browser_test_with_one_set_of_test_code.png

Рисунок 1: Мультибраузерный тест с одним набором тестового кода.

Автоматизация теста Firefox в Linux

Установите   пакет xserver на сервер Linux с Hudson. Измените  уровень выполнения  на  5,  а затем добавьте следующий параметр в учетную запись, в которой запускается CI, чтобы запустить браузер в текстовой консоли.


1
Xvfb :1 -screen 0 1024x768x24 > /home1/irteam/log/xvfb.log &

Установите последнюю версию Firefox в   каталоге / usr / lib64 и замените символическую ссылку. Теперь вы можете выполнять тесты автоматизации, запустив Firefox в Hudson.

Автоматизация тестов iPhone и iPad в Mac OS X и симуляторе

Для тестов установите Hudson на Mac OS X. Для этого требуется симулятор iPhone или iPad, поэтому вам следует установить Xcode заранее.

Автоматизация Internet Explorer и Opera тестов в Microsoft Windows

Подробнее о том, как автоматизировать тесты в Microsoft Windows, см. Http://seleniumhq.org/docs/03_webdriver.html .

Зачем нужна автоматизация браузера с помощью Hudson?

Если тесты для нескольких браузеров выполняются автоматически при изменении исходного кода, это, несомненно, поможет разработчикам уменьшить количество ошибок и сохранить дерево исходного кода, которое может быть выпущено в любое время. Кроме того, время QA может быть значительно сокращено. Есть много преимуществ браузерных тестов с Hudson, помимо качества и стоимости. Ниже приведены преимущества Hudson.

Ведение живого документа и наращивание знаний о предметной области

При выполнении теста в Hudson документ с иллюстрациями и описанием может быть автоматически сгенерирован с использованием Javadoc  package.htm  в коде теста. Этот документ называется « живым документом », который постоянно обновляется и используется операторами, разработчиками и QAers для различных целей, таких как передача знаний о предметной области и сохранение истории изменений.

javadoc_document_created_from_tests.png

Рисунок 2: Документ Javadoc, созданный из тестов.

Визуализация качества обслуживания с помощью браузера и знания предметной области

Любой, кто нажимает кнопку «  Build Now»  в Гудзоне, может проверить качество обслуживания в браузере.

verifying_mobile_news_service_in_firefox.png

Рисунок 3: Проверка службы мобильных новостей в Firefox.

Например, в некоторых случаях служба новостей должна предоставляться по-разному в зависимости от характеристик службы. Очень трудно передать всю информацию о домене всем соответствующим сотрудникам. Например, индексы KOSPI / KOSDAQ показываются не в новостях по выходным, а после открытия рынка в понедельник утром. Любой, кто нажмет  кнопку «  Build Now» , сможет увидеть процесс работы службы новостей по статусу.

Тесты с Hudson помогают пользователям передавать знания предметной области и собирать информацию, а также повышать качество и сокращать расходы.

Лучшие практики и примеры

Когда-то нам нужно было обновить версию Spring Framework, используемую для службы мобильных новостей. Мы изменили информацию о версии в файле pom.xml Maven и выполнили модульное тестирование и интеграционное тестирование для источника веб-сервера, и в результате проблем не возникло. Разработчики открыли несколько новых веб-страниц, запустив веб-сервер, и проверили, все ли они в порядке.

Тем не менее, было более 80 ошибок во время выполнения. К счастью, у нас был мультибраузерный тест в тесте Хадсона, поэтому мы могли исправить все ошибки и проблемы перед выпуском сервиса.

Selenium WebDriver

Почему Selenium WebDriver?

Мы используем Selenium WebDriver из-за его надежного качества в течение длительного времени, и он прост в использовании. Тест выполняется с помощью браузера, поэтому его легко выполнить с помощью браузера.

Тест виртуального браузера, такой как  HtmlUnit,  не может поддерживать различные версии браузера (он ограничен Firefox 3.6 и ниже и Internet Explorer 8 и ниже). Кроме того, он не поддерживает мобильные браузеры. Поэтому я рекомендую Selenium WebDriver вместо HtmlUnit, хотя Selenium WebDriver требует больше усилий.

С помощью API Java, предоставленного Selenium WebDriver в тестовом коде JUnit, вы можете легко создать тестовый код браузера. Код 1  ниже теперь используется для тестирования службы мобильных новостей.

Код 1. Служба новостей Тестовый код.

@Test(timeout = 1000 * 60)
public void 뉴스홈에_최근3일_최종편집시간이_표시된다() {
    Driver.get(driver, "http://m.news.naver.com/home.nhn");
    String expectedResult = "최종편집";
    String result = Driver.getTextByClass(driver, "last_update");
    assertThat(result.startsWith(expectedResult), is(true));
}

Преимущества Selenium WebDriver

Преимущества Selenium WebDriver разнообразны: он позволяет разработчикам создавать тестовый код на различных языках (Java, C #, Python, PHP, Ruby, Perl) и обеспечивает быструю обратную связь с помощью неявной функции ожидания. Ниже приведены преимущества Selenium WebDriver.

ТЕСТ ПО УКАЗАНИЮ ID / КЛАССА / XPATH

Если рассматривать поддержку HTML, то ID является лучшим выбором для определения элементов HTML / CSS, второй — это Class и, наконец, XPath. Selenium WebDriver поддерживает все три.

МНОГОБРАУЗЕРНЫЕ ИСПЫТАНИЯ С ОДНЫМ НАБОРОМ ИСПЫТАТЕЛЬНОГО КОДА

Вы можете протестировать несколько браузеров с одним набором тестового кода, потому что вы можете изменить тестовый браузер, заменив только WebDriver. С 2012 года WebDriver поддерживает браузеры Firefox, Internet Explorer, Chrome, Opera, iPhone Safari, iPad Safari и Android. Код 2  ниже является частью кода, который создает WebDriver.

Код 2. Пример создания WebDriver.

public WebDriverFactory() throws Exception {
String browsetype = TestConfigParam.getBrowseType();
if ("firefox".equals(browsetype)) {
this.driver = new FirefoxDriver();
} else if ("chrome".equals(browsetype)) {
this.driver = new ChromeDriver();
} else if ("ie".equals(browsetype)) {
this.driver = new InternetExplorerDriver();
} else if ("iphone".equals(browsetype)) {
this.driver = new IPhoneDriver();
} else if ("ie".equals(browsetype)) {
this.driver = new InternetExplorerDriver();
} else if ("android".equals(browsetype)) {
this.driver = new AndroidDriver();
} else if ("htmlunit".equals(browsetype)) {
this.driver = new HtmlUnitDriver(false);
} else {
this.driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(Driver.TIMEOUT, TimeUnit.SECONDS);
}
}

Вывод

Пока что мы рассмотрели автоматизацию тестирования, применяемую к сервисам NAVER. NHN уже автоматизировала тестирование для многих сервисов, используя Hudson и Selenium WebDriver. Я предполагаю, что другие компании проводят автоматические тесты подобными способами. Поэтому я надеюсь, что эта статья даст возможность пообщаться с другими людьми для создания передового опыта, а не показывать его для методов тестирования.

Хехван Ан, инженер-программист отдела разработки новостной службы, NHN Corporation.