Плюсы и минусы
автоматизации, пример из
         жизни
О себе
              Владилена Шпатыковская


              Тестировщик, тест менеджер,
              автоматизатор.

              Обучение, менеджмент, автоматизация
              ПО.

              Интересы: теория тестирования,
              распределение времени, управление


Цель: развивать тестирование и автоматизацию в
своей компании
О чем я расскажу

 Выбор инструмента
 Создание первого с помощью рекордера
 Оптимизация
 Тестирования дизайна
 Переход на WebDriver
 Идея создания Testing Framework
Пример
     • Проект на 2 года
     • Несколько магазинов на одной
       платформе


     • В конце спринта демо и деплоймент
     • 5 разработчиков, 1 тестировщик


     • В спринте 6-8 новых фич
     • Всѐ нужно покрыть тестами
Недовольные клиенты
Дефекты
Репутация
ЧТО БЫЛО?




Налаженный процесс ручного тестирования
Как начать автоматизацию?

Выбрать инструмент

Научиться писать тесты
Запуск              Выполнение
         Создание    команд в
тестов    тестов     браузере
Раньше тест кейс выглядел так
 Тест кейс:
        перейти по линке
        убедится, что страница открылась
        открыть логин форму
        выбрать «Sign in with Facebook»
        ввести логин и пароль, нажать на кнопку

 Ожидаемый результат – успешная авторизация
Тест записан
                                    рекордером

@Test
        public void testUntitled() {
                  selenium.open("https://soundcloud.com/");
                  assertEquals(selenium.getTitle(), "SoundCloud - Hear the world’s sounds");
                  selenium.click("link=Log in");
                  selenium.waitForPopUp("connectWithSoundCloud", "30000");
                  selenium.selectWindow("name=connectWithSoundCloud");
                  selenium.click("link=Sign in with Facebook");
                  selenium.waitForPageToLoad("30000");
                  assertEquals(selenium.getTitle(), "Войти | Facebook");
                  selenium.click("id=u_0_1");
                  selenium.waitForPageToLoad("30000");
        }
Тестов стало много
Нужна оптимизация
Было




Стало
ТЕСТ


    ЛОГИКА                      ДАННЫЕ



             ШАГИ ТЕСТА
                                            .XML

ДЕЙСТВИЯ                  СТРАНИЦЫ




             ЭЛЕМЕНТЫ                    ПРОВЕРКИ
                          МЕТОДЫ


ПОИСК ПО
ЛОКАТОРУ
Textbox




          Button
Создали шаблоны страниц




Написали
вспомогательн
ые методы
Перестали
запускать
сервер руками
Вынесли работу с браузером в отдельный класс



seleniumRC=new ReleniumRC();
seleniumRC.RunSelenium();




       selenium.StopSelenium();
       seleniumRC.Stop();
private void NTpopup()
  {
     aut3.WinWaitActive ( general.title_popup, general.text_popup, 1);
     if (aut3.WinExists ( general.title_popup, general.text_popup ).Equals(0))
     {
        aut3.Send ( "studentt", 1 );
        aut3.Send ( "study", 1 );
        aut3.Send ( "{ENTER}", 0 );
     }
  }


                           Тестирование беты
Тестовые Данные   Страницы




Вспомогательные
                  Браузер
    методы
Selenium 2.0 - WebDriver
Переписали тесты
    IWebDriver driver = new FirefoxDriver();                   selenium.open()


            driver.Navigate().GoToUrl(general.URL_Base);



                                                      selenium.Click(id);
driver.FindElement(By.Id(elementID)).Click();


                                   driver.FindElement(By.Id(elementID)).SendKeys(name);



        selenium.Type(id, name);
Selenium RC




              WebDriver
•   Check               •   Type          •   Click
•   UnCheck             •   HasValue      •   DoubleClick
•   IsChecked           •   Focut         •   ClickAndWait
•   …                   •   Clear         •   …
                        •   …


Checkbox                Textbox           Button




Table           Items        Menu      Panel       Form
Бэклог и приоритеты
Чего хотел кастомер?
Автоматизировать тестирование дизайна
Сделать screenshot каждой страницы во всех
браузера

Картинки сохранять в папки с именами
браузеров

Использовать comparing для сравнения
картинок
Метод для снятия screenshots




private void MakeScreenShot ( IWebDriver driver, string path )
  {
     Screenshot screen = ((ITakesScreenshot) driver).GetScreenshot();

      StringBuilder filepath = new StringBuilder ( path );
      filepath.Append ( “.jpg” ) ;
      screen.SaveAsFile ( filepath.ToString(), System.Drawing.Imaging.ImageFormat.Jpeg );
  }
Comparing для накладывания картинок
Результат накладывания
Драйвера для IE, Chrome




            Firefox профайл




                      Safari Extension
Тестовые шаги




                     логика   данные



                         драйвер

Работа с браузером




                Идеальныйфреймворк
Нажимаем на кнопку...
Плюсы автоматизации

 Исключен «человеческий фактор»

 Точное и быстрое выполнение

 Меньшие затраты на поддержку чем на
 тестирование вручную

 Отчеты

 Выполнение без вмешательства (могут
 выполнятся ночью)
Минусы автоматизации

 Долгий старт

 Повторяемость

 Затраты на разработку, поддержку и анализ
 результатов

 Пропуск мелких ошибок

 Обновление ПО
Итоги
• внедряйте автоматизацию только тогда, когда есть
  стабильные процессы тестирования

• в команде должен быть опытный специалист по
  автоматизации с выделенным временем

• руководство должно поддерживать ваши начинания

• начните с малого, не забывайте про план и стратегию

• ответственно относитесь к выбору инструмента для
  автоматизации
Спасибо за внимание!

Плюсы и минусы автоматизации, пример из жизни

  • 1.
  • 2.
    О себе Владилена Шпатыковская Тестировщик, тест менеджер, автоматизатор. Обучение, менеджмент, автоматизация ПО. Интересы: теория тестирования, распределение времени, управление Цель: развивать тестирование и автоматизацию в своей компании
  • 3.
    О чем ярасскажу Выбор инструмента Создание первого с помощью рекордера Оптимизация Тестирования дизайна Переход на WebDriver Идея создания Testing Framework
  • 4.
    Пример • Проект на 2 года • Несколько магазинов на одной платформе • В конце спринта демо и деплоймент • 5 разработчиков, 1 тестировщик • В спринте 6-8 новых фич • Всѐ нужно покрыть тестами
  • 5.
  • 6.
    ЧТО БЫЛО? Налаженный процессручного тестирования
  • 7.
    Как начать автоматизацию? Выбратьинструмент Научиться писать тесты
  • 8.
    Запуск Выполнение Создание команд в тестов тестов браузере
  • 9.
    Раньше тест кейсвыглядел так Тест кейс: перейти по линке убедится, что страница открылась открыть логин форму выбрать «Sign in with Facebook» ввести логин и пароль, нажать на кнопку Ожидаемый результат – успешная авторизация
  • 10.
    Тест записан рекордером @Test public void testUntitled() { selenium.open("https://soundcloud.com/"); assertEquals(selenium.getTitle(), "SoundCloud - Hear the world’s sounds"); selenium.click("link=Log in"); selenium.waitForPopUp("connectWithSoundCloud", "30000"); selenium.selectWindow("name=connectWithSoundCloud"); selenium.click("link=Sign in with Facebook"); selenium.waitForPageToLoad("30000"); assertEquals(selenium.getTitle(), "Войти | Facebook"); selenium.click("id=u_0_1"); selenium.waitForPageToLoad("30000"); }
  • 11.
  • 12.
  • 13.
  • 14.
    ТЕСТ ЛОГИКА ДАННЫЕ ШАГИ ТЕСТА .XML ДЕЙСТВИЯ СТРАНИЦЫ ЭЛЕМЕНТЫ ПРОВЕРКИ МЕТОДЫ ПОИСК ПО ЛОКАТОРУ
  • 15.
    Textbox Button
  • 16.
  • 17.
  • 18.
    Вынесли работу сбраузером в отдельный класс seleniumRC=new ReleniumRC(); seleniumRC.RunSelenium(); selenium.StopSelenium(); seleniumRC.Stop();
  • 19.
    private void NTpopup() { aut3.WinWaitActive ( general.title_popup, general.text_popup, 1); if (aut3.WinExists ( general.title_popup, general.text_popup ).Equals(0)) { aut3.Send ( "studentt", 1 ); aut3.Send ( "study", 1 ); aut3.Send ( "{ENTER}", 0 ); } } Тестирование беты
  • 20.
    Тестовые Данные Страницы Вспомогательные Браузер методы
  • 21.
    Selenium 2.0 -WebDriver
  • 22.
    Переписали тесты IWebDriver driver = new FirefoxDriver(); selenium.open() driver.Navigate().GoToUrl(general.URL_Base); selenium.Click(id); driver.FindElement(By.Id(elementID)).Click(); driver.FindElement(By.Id(elementID)).SendKeys(name); selenium.Type(id, name);
  • 23.
    Selenium RC WebDriver
  • 24.
    Check • Type • Click • UnCheck • HasValue • DoubleClick • IsChecked • Focut • ClickAndWait • … • Clear • … • … Checkbox Textbox Button Table Items Menu Panel Form
  • 25.
  • 26.
    Чего хотел кастомер? Автоматизироватьтестирование дизайна Сделать screenshot каждой страницы во всех браузера Картинки сохранять в папки с именами браузеров Использовать comparing для сравнения картинок
  • 27.
    Метод для снятияscreenshots private void MakeScreenShot ( IWebDriver driver, string path ) { Screenshot screen = ((ITakesScreenshot) driver).GetScreenshot(); StringBuilder filepath = new StringBuilder ( path ); filepath.Append ( “.jpg” ) ; screen.SaveAsFile ( filepath.ToString(), System.Drawing.Imaging.ImageFormat.Jpeg ); }
  • 28.
  • 29.
  • 30.
    Драйвера для IE,Chrome Firefox профайл Safari Extension
  • 31.
    Тестовые шаги логика данные драйвер Работа с браузером Идеальныйфреймворк
  • 32.
  • 33.
    Плюсы автоматизации Исключен«человеческий фактор» Точное и быстрое выполнение Меньшие затраты на поддержку чем на тестирование вручную Отчеты Выполнение без вмешательства (могут выполнятся ночью)
  • 34.
    Минусы автоматизации Долгийстарт Повторяемость Затраты на разработку, поддержку и анализ результатов Пропуск мелких ошибок Обновление ПО
  • 35.
    Итоги • внедряйте автоматизациютолько тогда, когда есть стабильные процессы тестирования • в команде должен быть опытный специалист по автоматизации с выделенным временем • руководство должно поддерживать ваши начинания • начните с малого, не забывайте про план и стратегию • ответственно относитесь к выбору инструмента для автоматизации
  • 38.