@qa_ru

Страница 288 из 1080
Slow
18.01.2017
05:27:29
кстати, недавно стал работать с заказчиком, который надух не переносил селениум или его наследника, сказал, из-за этих, залётных, проект постоянно затягивали + когда попросили рассказать, как разворачить, потребовалось до фига народу привлекать. может, мне на эмоциях всё рассказали, но вправду, неужели так много нужно приседаний сделать, что под тот же селениум начать тесты писать?

Anton
18.01.2017
05:29:57
ну селениум же это не тестовый фреймворк - это фреймворк для управления браузерами.. так что приседания понадобятся в любом случае: но за то когда настроил - пиши и радуйся; ну или пиши и мучайся... Смотря как настроил

Slow
18.01.2017
05:31:59
чтобы просто понимали: для тесткомплита: есть образ винды запустили установку винды, поставили, обновились последними обновлениями установили тесткомплит птшем тест

а с селениумом не так?

Google
Slow
18.01.2017
05:35:18
и, пообщавшись с разработкой, что когда они при разработке забывали на нужный элемент прописать id, то тестеры вечно ныли, что нужен осмысленный id

id - хорошо, но нахрена осмысленность?

Anton
18.01.2017
05:36:06
селениум - драйвер для управления браузером. Существует на нескольких языках. Для запуска тестов на java нужен раннер (junit, testng), для сборки проека нужен сборщик (ant,maven,gradle), для отчетов нужен фреймворк(allure). Это по сути и плюс и минус опенсорса наверное =)

без id можно найти элемент по тексту, только если в таблице не 10 элементов с текстом "Сумма"

Slow
18.01.2017
05:36:54
моё предложение - id = "o_%guid%" восприняли на ура

Anton
18.01.2017
05:37:16
а вот когда их 10, тогда приходится изголяться Сумма[5]

у нас на одном проекте были id типа i_autogen164

xpath хорошо но чем сложнее тем дольше работает

Max
18.01.2017
05:39:28
без id можно найти элемент по тексту, только если в таблице не 10 элементов с текстом "Сумма"
к тексту привязываться, на мой взгляд, последнее дело, особенно если несколько локалей

Anton
18.01.2017
05:40:46
к тексту привязываться, на мой взгляд, последнее дело, особенно если несколько локалей
с локалями не работал, но тут имелся ввиду вообще запущенный случай когда никаких id или других опознавательных атрибутов небыло, только по тексту (как ручной тестировщик)

Anton
18.01.2017
05:42:03
а с селениумом не так?
селениум требует окружения: мне конечно сложно сравнивать с тест-комплитом - но требуется устаоновить еще как минимум драйвер на тестируемые браузеры; правильно их прописать в запуске тестов; установить какую-то библиотеку с тестами: TestNG, Junit, rspec или что-то другое; сборщик нужен: maven для java - bundler для руби и дальше исходя из реализации: пишем "просто тесты" - тогда можно не следовать шаблонам. Хотим page-object - берем какой-то вариант имплементации шаблона - библиотека ли, гем ли какой-то: по разному в разных ситуациях. Хотим выводить отчеты в html? То же начинаем придумывать "как и в каком виде": в итоге это конечно сводится "подключи библиотеку, пропиши 15 строк кода и будет счасть" - но перед этим приходится разобраться "как", "зачем" и "почему" в общем: запустить селениум это скорее "разработка приложения автотестов" - это несколько шире чем просто "писать тесты" - конечно все ИМХО

Google
Egor
18.01.2017
05:43:57
к тексту привязываться, на мой взгляд, последнее дело, особенно если несколько локалей
Ну в таком случае можно использовать текст который тянется из ресурсов и при этом во время выполнения теста заодно и корректность локали будет глядеться

Anton
18.01.2017
05:44:25
//*[text()="наше значение"] ?
а таких полей в таблице с таким же текстом - 10 штук, тогда уж //*[text()="наше значение"](5) =)

Anton
18.01.2017
05:48:05
а таких полей в таблице с таким же текстом - 10 штук, тогда уж //*[text()="наше значение"](5) =)
если их 10, то должен включится тумблер: "мы что-то делаем не так" - у элемента должен присутсвовать какой-то уникальный идентификатор: Если уж это автотесты - можно текст генерировать в ходе теста и их же и проверять: никто же не запрещает написать: "наше значение 123" - а при следующем выполнении "наше значение 124"

ну или тут недавно обсуждался вопрос: очищать данные после теста; то же вариант выхода :)

John
18.01.2017
05:49:24
а в чём проблема деббага?
Во времени.. т.е. может, как правило бывает, тест падает на последнем из сценариев, а большая часть уже отработала, ты правишь кусок и опять по новой запуск, опять косяк и т.д..

Anton
18.01.2017
05:49:55
вопрос был про id. Идентификаторы это хорошо, но и без них тоже можно (сложнее но можно)

Max
18.01.2017
05:50:28
Ну в таком случае можно использовать текст который тянется из ресурсов и при этом во время выполнения теста заодно и корректность локали будет глядеться
Из каких ресурсов? Ну и "заодно" в тест-кейсах не очень люблю. Мухи отдельно, котлеты отдельно. Проверка контента сама по себе, а привязываться в функциональных тестах, не знаю. Xpath на мой взгляд логичней

Faust
18.01.2017
05:54:28
селениум требует окружения: мне конечно сложно сравнивать с тест-комплитом - но требуется устаоновить еще как минимум драйвер на тестируемые браузеры; правильно их прописать в запуске тестов; установить какую-то библиотеку с тестами: TestNG, Junit, rspec или что-то другое; сборщик нужен: maven для java - bundler для руби и дальше исходя из реализации: пишем "просто тесты" - тогда можно не следовать шаблонам. Хотим page-object - берем какой-то вариант имплементации шаблона - библиотека ли, гем ли какой-то: по разному в разных ситуациях. Хотим выводить отчеты в html? То же начинаем придумывать "как и в каком виде": в итоге это конечно сводится "подключи библиотеку, пропиши 15 строк кода и будет счасть" - но перед этим приходится разобраться "как", "зачем" и "почему" в общем: запустить селениум это скорее "разработка приложения автотестов" - это несколько шире чем просто "писать тесты" - конечно все ИМХО
Скачивание и определение драйвера можно запилить и в pom/build.gradle

И тогда руками не придется делать

Egor
18.01.2017
05:55:01
Из каких ресурсов? Ну и "заодно" в тест-кейсах не очень люблю. Мухи отдельно, котлеты отдельно. Проверка контента сама по себе, а привязываться в функциональных тестах, не знаю. Xpath на мой взгляд логичней
В тестах подключить текстовые ресурсы из проекта или самим написать, чтобы если вы запустили тест для русской локали все тексты тянулись из русской, если англ то англ. Насчет мух и котлет, как по вашему должен повести себя тест на логин если вдруг кнопка логина потеряла свой текст, а это кнопка у вас была как див с текстом на который повешаны события, т.е. если она потеряла свой текст то пользователь никак ее и не увидит. тест не должен зафэйлиться в данном случае?

Faust
18.01.2017
05:56:00
Из того что написали выше, ни одной проблемы не вижу

Само долго, это пилить конфиг и это разовая операция

Дальше пихаешь в CI и забываешь

Egor
18.01.2017
06:01:11
А на проверку текста кнопки которую можно получить только выполнив 100500 шагов вы тоже будете писать отдельный тест?

Max
18.01.2017
06:04:58
Конечно, а вы сотню проверок в один тест-кейс пихаете?

К тому же, вполне очевидно, что все зависит от ситуации и любой из этих подходов не является панацеей

Google
Slow
18.01.2017
06:07:43
Max
18.01.2017
06:08:04
а вы с таким не сталкивались?
Нет, не сталкивался

Slow
18.01.2017
06:09:20
например, имеем пользователя, статус которого меняется именно от состояний множеств объектов, состояния каждого их которых зависит от каждого состояния объектов, входящих в это множество

Egor
18.01.2017
06:09:22
Конечно, а вы сотню проверок в один тест-кейс пихаете?
В тесте идет проверка только на проверяемый функционал, и она одна. Вероятность смены текста кнопки примерно равна вероятности того что слетит/поменяется id/css класс и прочие на что вы завязались. Следовательно не вижу ни одного серьезного аргумента чтобы заявлять что юзать текст - последнее дело. У меня ни разу не возникало проблем со стабильностью в таких тестах или завышения цены поддержки

Slow
18.01.2017
06:10:12
или просто ТАК глубого никто не заходит тестами. считая, что покрытие базового функционала достаточна, а как до бизнес логики речь доходит - да у нас тут с базовым функционалом не всё впорядке и т.д.

знаю-знаю, таких

John
18.01.2017
06:11:59
А запустить отдельно упавший тест не судьба?
Я как раз про одни сценарий и говорил.

Max
18.01.2017
06:13:45
Как я уже сказал это не панацея. Все зависит от ситуации, и если у меня 10 элементов с текстом сумма, то лично я не уверен, что в этом случае буду привязываться к тексту

Вам так удобней, мне так, вот и вся разница

Faust
18.01.2017
06:24:38
Faust
18.01.2017
06:25:13
Локально прогнали один тестик, занимает не много времени

Slow
18.01.2017
07:17:13
немного офисного оффтопа

Anton
18.01.2017
07:19:18
немного офисного оффтопа
кажется склеено видео между 1 и 2 поворотами головы

Richard
18.01.2017
07:46:51
офисный оффтоп можно во флудилку )

Slow
18.01.2017
07:47:17
ооукей, но почему бы немного не разбавить серость))

Кирилл
18.01.2017
07:53:26
Если UI на ангулярчике и он перепиливается - айдишники наше все. Иначе боль

в Бекенд тестировании боли нет. Просто нужно использовать как на картинке - 2-х уровневую реализацию, подхаченную для своего проекта.

Google
Кирилл
18.01.2017
08:01:00
вообще всегда в автотестах лучше максимально игнорировать функционал который непосредственно не проверяется тестом

Например зачем переходить в раздел по кнопке, если можно по урле)

Slow
18.01.2017
08:02:09
Кирилл
18.01.2017
08:02:24
А если урла не статична - использовать кнопку, но напрямую. Не определяя икспасами все елементы страницы)

если там выполняется ещё и js, то?
ДЖ разный, пример, если можно)

Slow
18.01.2017
08:06:22
имеет ввиду, что нажимая на кнопку - выполняться некий JS, результат выполнения которого, в БД, появляется запись, например, с какой страницы и куда собираемся перейти, в свою очередь эта запись меняет состояния объекта, от состояния которого зависит другой и т.д. что в конечном итоге, все вот эти изменения, влияют на тот самый объект, который привёл к ошибке

Кирилл
18.01.2017
08:07:25
выполняй JS напрямую/создавай сущность уже с нужными параметрами в БД

Admin
ERROR: S client not available

Кирилл
18.01.2017
08:08:07
Но, да, не всегда удается упростить. Есть болезненный функционал всегда. Но почти всегда можно выкрутится.

Slow
18.01.2017
08:08:12
по вашим словам, ну жно будет сидеть ещё и высчитывать и анализировать, а чё такого поместить в БД, чтобы провести быстренько тестирование объекта, который упал в ошибку?

Кирилл
18.01.2017
08:08:25
Эм

ну, у тебя ж автотест

определяешь изначальную сущность

выполняешь действия через UI

смотришь изменения в БД

Slow
18.01.2017
08:09:08
автотест для того и создан, чтобы за меня всё выполнять

Кирилл
18.01.2017
08:09:19
ну дык

Slow
18.01.2017
08:09:23
а не чтобы я что-то за него выполнял

Кирилл
18.01.2017
08:09:44
ты изменением БД через автотест перепрыгнешь UI с JS, если он так часто меняется

Slow
18.01.2017
08:10:54
ты изменением БД через автотест перепрыгнешь UI с JS, если он так часто меняется
ой, то есть, мне ещё и автотест существующий менять нужно так, чтобы что-то там перепрыгивать, это уже тестирование ради тестирования какое-то

Google
Slow
18.01.2017
08:11:25
проще - перезапустить

я автоматизатор простой, Вижу багу в автотесте - перезапускаю, с установленными бряками.

Кирилл
18.01.2017
08:12:24
lol

Дмитрий
18.01.2017
08:12:24
В автоматизацию попасть можно джуном, без опыта ручного или идти через ручника нужно?

Кирилл
18.01.2017
08:13:07
Идеальный тест - стабильный, тестирующий исключительно целевой функционал.

Slow
18.01.2017
08:13:31
В автоматизацию попасть можно джуном, без опыта ручного или идти через ручника нужно?
Всё зависит от того, есть понимание того, чем автоматизировать можно ваш объект

Кирилл
18.01.2017
08:13:51
Не кнопки, поля, ссылки и прочую лобуду по пути к цели. Я говорю как можно попытаться стабилизировать тесты и избежать их частого фикса

Дмитрий
18.01.2017
08:15:08
Спасибо

Slow
18.01.2017
08:16:38
часто вот так происходит при запуске автотестов на opensource движках

вроде, всё хорошо-при хорошо, как надо, а потом кааак...полетит

Кирилл
18.01.2017
08:22:05
Простой пример. Два теста: 1. Проверка возможности создания пользователя через форму регистрации. 2. Проверка что созданный пользователь сохраняется и им можно авторизироваться. Есть два частых варианта реализации. 1. И в первом и во втором тесте пользователь регистрируется через кнопочку "Регистрация". 2. Первый тест регистрирует пользователя по UI кнопке. Второй тест делает прямой POST запрос регистрации, а потом по кнопочке "Логин" авторизуется.

У тебя сломалась кнопка "Регистрация". В каком случае ты сможешь проверить максимум функционала несмотря на баг?

Что приведет к экономии времени после фикса? Ведь вдруг сломана и кнопочка "логин"?

И если сломана - програмисты сразу смогут фиксить обе ошибки

Slow
18.01.2017
08:24:26
А как пользователь по вашему может зарегистрироваться на сайте, тоже через POST?)

Кирилл
18.01.2017
08:24:29
а если серьезный релиз, багов штук пять, а все ждут пока пофиксится кнопочка и не знают о них. Ведь тесты валятся

да

нажмите Ф12 и посмотрите что происходить после клика на "Регистрация"

Страница 288 из 1080