вторник, июня 18, 2013

Будущее автоматизации тестирования уже здесь! Три идеи «на завтра»

Вы думаете, это глупо делится стратегическими планами на будущее? – Совсем, нет. Ведь сами идеи, без практической реализации – стоят очень мало. Если кто-то тихо реализует идею внутри своей компании – это останется никому неведомым. Ну, а если кто-то начнет свой проект и поделится своей реализацией с общественностью… то я радо буду частью этой общественности. А между тем, идею я таки тут уже “застолбил”.  Кроме того, когда работаешь над чем-то, очень не хватает конкуренции, подгоняющей тебя работать быстрее. 



Генерация или запись PageObjects? 
Многие люди считают, что генерация PageObjects – это что-то из области искусственного интеллекта.

Создание качественного инструмента генерации  PageObjects – это либо невозможно, либо очень близко к тому. А тем временем автоматизаторы продолжают мануальный труд по выдергиванию локаторов из FireBug, ковыряясь в DOM. Согласитесь, это не очень приятное занятие. И при этом не известно, будет ли выковырянный локатор точно работать в WebDriver или нет.

Почему бы вместо генерации пейджобжектов не создать инструментарий, который бы помогал делать работы выковывания и тестирования локаторов быстрее? Почему бы не сделать это средствами самого Selenium Webdriver? Ведь локатор, добытый и протестированный через WebDriver… ну наверно будет работать потом в WebDriver тестах.
Selenium WebDriver Page Recorder – это то, над чем я работаю сейчас. Это инструмент, который будет общаеться с браузером через протокол Вебдрайвера и представлять унифицированный инструментарий для работы со всеми браузерами и надеюсь, не только браузерами, ведь уже существуют и инструменты десктоп-автоматизации, поддерживающие WebDriver протокол.
Пока что проект находится на стадии прототипа. Множество запланированных функций еще не работают. Тем не менее, я вижу создание инструментария, упрощающего рутинное создание PageObject’ов – единственным верным путем.

Я не предоставляю рабочего запускаемого файла приложения ввиду существующих багов и недоработок. Среднестатистический пользователь скажет: «фу… как много багов». Ну, а не среднестатистическим пользователям – Вэлкам ту Гитхаб:

https://github.com/dzhariy/swd-recorder




Approval-тесты
Вы когда-нибудь сравнивали огромные массивы данных: ожидаемые и актуальные. Возможно, с огромными, я погорячился. Но вот представьте, вы снимаете состоянии страницы приложения, состоящее из 25-ти элементов. Сколько времени уйдет на то, чтобы пересмотреть всю разницу и создать «эталон», который мы будем использовать в последующих тестах? А где хранить эталон? В виде огромного массива в коде? В текстовом файле?
Если вы уже столкнулись с проблемой таких эталонов, возможно, библиотека Approval Tests будет вам полезна?
Алгоритм работы очень прост.

  1. Соберите актуальные данные
  2. Прогоните данные через специальную Approval проверку
  3. Проверка упадет, потому что эталона не существует
  4. При помощи специальной утилиты, обновите эталон 
  5. Перезапустите тест – он пройдет. 
  6. Добавьте созданный эталон в систему контроля версий. 
  7. Теперь каждый следующий прогон теста будет падать при несовпадении с эталоном. 


И еще раз, ссылка на этот амбициозный проект:
http://approvaltests.sourceforge.net/
И блог автора проекта:
http://blog.approvaltests.com/

Полу автоматизированное тестирование через Selenium Webdriver
Эта идея запомнилась мне больше всего на Selenium Conference 2013. Автор доклада создал простое приложение для заполнения рутинных форм. Это Win Forms приложение, с которым работают все: от тестировщиков до программистов и отдела продаж, позволяющее заполнять формы посредством Selenium Webdriver и оставлять окно браузера открытым для последующего мануального тестирования. Код, который работает для такой автоматизации также работает и для обычных автоматизированных прогонов.   Подумайте, насколько больше будут доверять вашему коду автоматизации, если позволить его переиспользовать через интерфейс пользователя?

В моих планах создать нечто подобное.
Надеюсь, удастся использовать Automapper вместе с Winforms приложением и переиспользовать код автоматизации в нем. (https://github.com/vantreeseba/winforms-automapper)

Ссылка на доклад: John Chandler, Bringing Selenium to the Rest of the Company

Комментариев нет: