Pull to refresh

Comments 28

Спасибо, интересно было почитать.
А сколько по времени делали робота?
Всего разработка заняла полтора года. Мы проводили эксперименты, сделали много лишних действий. Думаю, зная то, что мы знаем сейчас, можно было бы написать за пару месяцев.
UFO just landed and posted this here
Действительно, внешнее сходство есть.
А я то думал, что это и есть миньон из мультика, пока комментарий не прочитал :)
Планируете ли вы развивать этот «эксперимент» в открытом сообществе?
Очень не хочется обещать и не выполнить! Планы такие есть, да.
А в чем состоит самообучаемость робота? Я так понимаю, именно в этом состоит различие между автотестами и роботом. Или же разница сводится лишь к тому, что вам не надо жестко прописывать страницы/формы в сценариях, он способен сам их находить и обрабатывать?

Труд в любом случае большой, и вам респект, просто хотелось бы прояснить этот момент.
У робота самообучаемости нет. Да, универсальность заключается в том, что роботестер самостоятельно выбирает способ взаимодействия с формой и генерирует тестовые сценарии без участия человека. Планируем добавить supervised-методы обучения, например, для классификации страниц с ошибками. Unsupervised-методы для обнаружения ошибок — интересная тема, но к роботу в данный момент отношения не имеет.
А могли бы рассказать, а лучше и привести пример лога?
Интересно какие данные вы получаете на выходе и как в дальшем их обрабатываете.
Результат работы робота — сообщения об ошибках. Лог мы используем только для отладки.
Роботестер выполняет тест-кейс, а потом собирает со страницы различную информацию (текст со страницы, ссылки, текст алертов(если они появились) и отдает эту информацию в JUnit-тесты. JUnit-отчеты нам не совсем подходят, поэтому мы строим из них свои, «красивые» отчеты. Их смотрит тестировщик и пишет баг-репорты. В «красивых» отчетах можно применять фильтры по типу ошибок и склеивать похожие сообщения об ошибках в группы.
Бедные тестировщики потеряют свои рабочие места :(
богатые (=квалифицированные) — не потеряют ;)
Вы правы! Например, с бизнес-логикой даже человеку бывает непросто разобраться.
Не потяреют. Наоборот, мы планируем улучшить жизнь тестировщиков, отдав рутинную работу роботестеру.
С формами вроде бы напрашивается решение встроить доп. семантику в сам HTML-код. Например, [input … name=«address» data-ya-type=«geo-cityname-destination»]. Ну или что-то вроде. Ведь и робот и тестируемые страницы у вас под контролем.
Хорошая мысль, мы думаем сделать что-то вроде «микроразметки для тестирования». Конечно, непросто внедрить общий формат в большой компании и добавить такую разметку в уже существующие интерфейсы.
Все бы хорошо, только вот заставить всех писать такую разметку очень сложно.
Можно пойти с другой стороны и парсить label'ы и placeholder'ы. А дальше по набору эвристик определять тип поля. Дополнительно можно попробовать парсить .error, .validate — поля. Взять наиболее популярные фреймворки, посмотреть, какого вида валидацию они используют и при неправильном вводе смотреть, что вернула валидация. Вот тут масса простора для самообучения робота, хотя и возникает необходимость работы с естественными языкам.
Да, мы используем label, placeholder, name — все что может содержать текст, несущий информацию о типе поля ввода. Парсить валидацию — это интересно! Кстати, в одной статье про краулинг deep web описан примерно такой способ: робот заполняет форму, отправляет ее и смотрит какой контент пришел в ответ. Так он делает много раз. Если очередной вариант заполнения практически не изменяет контент ответа, значит форма была заполнена некорректно.
Может исходный код откроете? Я понимаю, что робот приспособлен к сайтам яндекса, но думаю другим будет легче приспособить под себя, чем писать свой
У нас есть желание сделать этот проект открытым, но в данный момент мы не готовы говорить об этом. Причину описывал выше.
Очень интересно!

Интеграционные тесты (цель которых — иметь большое покрытие и, грубо говоря, отлавливать 404) в UI действительно могут быть автоматизированы влоть до автогенерации множества сценариев.

Текстовые поля (в том числе с числами) можно заполнять одной из подсказок, всплывающей после ввода одной буквы/цифры или пары символов. Правда возникает требование, иметь такие подсказки для все текстовых полей, но это требование вполне разумно и не повредит юзабилити. Для особых текстовых полей, где подсказки вредят юзабилити, можно договорится с разработчиками, что подсказки возникают только для определенного юзерагента. Разработка подсказок для каждого поля проще, тем поддерживать руками интеграционные тесты.

Ну и, конечно, как уже сказали, можно заставить разработчиков давать подсказки роботу через семантику HTML. Семантика кнопок Вперед, Назад, Расширенные настроки, например, позволит роботу не гулять по циклу в длиных визардах, а веса у ссылок и значений позволят в первую очередь покрывать типичные сценарии).

Разработчикам больше работы, зато тестеры будут заниматься только функциональными тестами бизнес логики.
Прошу прощения, хабрасторадж 407 ошибку мне выдавал, вот она
Интересно, спасибо. В хромиуме и firefox 19.0.2 не воспроизводится, кстати. Какая у вас версия браузера?
FireFox 20.0.1 под Win7 Pro. Сегодня у меня уже тоже не воспроизводится =(
Sign up to leave a comment.