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. Нажав кнопку « Создать сейчас» , пользователи могут просматривать состояние выполнения теста. Система отчетов обеспечивает хорошую среду для «быстрого отказа, быстрой обратной связи».
Рисунок 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 для различных целей, таких как передача знаний о предметной области и сохранение истории изменений.
Рисунок 2: Документ Javadoc, созданный из тестов.
Визуализация качества обслуживания с помощью браузера и знания предметной области
Любой, кто нажимает кнопку « Build Now» в Гудзоне, может проверить качество обслуживания в браузере.
Рисунок 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.