@qa_ru

Страница 747 из 1080
Shoo
01.11.2017
15:40:42
Это вы по какой причине так решили, простите?

Vage
01.11.2017
15:40:47
Вы сами накрутили это себе))

Dmitry
01.11.2017
15:41:12
Если я верно понимаю, I.amonPage гарантирует, что следующая строка теста будет выполнятся только после полного рендера страницы, нет?

Vage
01.11.2017
15:43:17
Не факт. Например, при работе с некоторыми библиотеками для таблиц с вложенностями - сперва отправляется запрос на страницу, а потом когда страница отрендерилась начинается рендерится таблица.

Google
Dmitry
01.11.2017
15:43:57
Иначе пришлось бы писать костыли как вы советуете или же ставить wait на неизвестное кол-во времени, которое на разных железках будет разным...

Vage
01.11.2017
15:44:56
Ну у вас поидее должны быть перфоманс метрики, и именно на основе этих метрик нужно и добавлять ожидания элементов

И это не костыли - давать пользователю возможность работы со страницей, и параллельно рендерить какой-то кусок

Shoo
01.11.2017
15:46:06
Иначе пришлось бы писать костыли как вы советуете или же ставить wait на неизвестное кол-во времени, которое на разных железках будет разным...
Или научиться писать правильные вэйты, которые будут ждать столько, сколько нужно ждать в рамках конкретной сессии.

Dmitry
01.11.2017
15:57:37
WaitForText решает проблему. Т. е. мне нужно самому позаботится о проверке, загрузилась ли страница полностью? Какова тут best practice? Ждать заданного текста в подвале?

Для меня это как-то было неочевидно :) Я думал, браузер там сам рапортует, что "всё отрендерил и можете тестировать дальше!".

Evgeniy
01.11.2017
15:59:51
мы живем в 2к17ом году, где готовность страницы как документа не очевидна. А каждый веб компонент готов тогда, когда сам посчитает нужным.

Vage
01.11.2017
16:00:51
Best practice - это добавлять к элементам дополнительный класс .rendered, и в своих тестах ещё и проверять пефвоманс клиентской части

Evgeniy
01.11.2017
16:02:49
Ух ты, это где написано про такое?

Vage
01.11.2017
16:04:00
эмм ну как бы waitForElement это и подразумевает

Evgeniy
01.11.2017
16:04:55
эмм ну как бы waitForElement это и подразумевает
подразумевает что? можно почитать про добавление классов .rendered и т.д. и что это best practice. Как вообще функциональное тестирование предполагает как бест практис под собой еще тестирование производительности.

Google
Vage
01.11.2017
16:05:25
Я говорил только о данной команде, а не про всю автоматизацю

Evgeniy
01.11.2017
16:07:27
А можно все-таки пруфы. Человек сейчас пойдет городить везде кастомные приписки. а всего-то нужно было использовать неявное ожидание + правильный EC (Expected Condition)

Vage
01.11.2017
16:09:42
(facepalm) Ещё раз говорю, насчёт времени ожидания из перфоманс метрик и доп. класса я говорил в контексте команды waitForElement. Я не говорю, что нужно "везде городить кастомные приписки" точно как же как и не говорю, что не нужно использовать неявное ожидание.

Evgeniy
01.11.2017
16:13:16
кто-нибудь понял, что написано выше?

объясните мне пожалуйста.

Dmitry
01.11.2017
16:26:36
Поясните мне всё же логику происходящего: CodeceptJS написан почти что для домохозяек. Там вроде бы в логику зашито последовательное выполнение тестовых заданий: зашёл на URL, тут же начинаю проверять элементы, заполнять формы и т. д. Я в документах не видел конструкций вида, "а проверь-ка сначала, есть ли нужный тебе элемент, и только потом с ним взаимодействуй". Это я был невнимателен или авторам было это "и так понятно" и они просто не писали это как само-собой разумеющееся?

Shoo
01.11.2017
16:27:58
Думаю вряд ли авторы документации станут писать за вас тесты.

Vage
01.11.2017
16:28:34
http://codecept.io/acceptance/#smartwait

Dmitry
01.11.2017
16:36:05
Спасибо. Я это видел, только интерпретировал по-другому. Типа это нужно использовать только когда идёт какой-то интерактив - пользователь тычет, окошки появляются. В общем, я понял - теперь прежде чем взаимодействовать с любым элементом, первой строчкой должен быть wait этого элемента.

Pavel
01.11.2017
16:36:34
подскажите где посмотреть рекомендации W3C или еще кого авторитетного по времени загрузки страницы?

есть ли какие-то метрики для анализа что такое быстрая загрузка/медленная загрузка страницы. Тулзы типа YSlow, Google Page speed, Консоль показывают аналитику, но метрики удачного/неудачного перфоманса непонятно какие применять

Shoo
01.11.2017
16:40:50
Спасибо. Я это видел, только интерпретировал по-другому. Типа это нужно использовать только когда идёт какой-то интерактив - пользователь тычет, окошки появляются. В общем, я понял - теперь прежде чем взаимодействовать с любым элементом, первой строчкой должен быть wait этого элемента.
Повсеместное впихивание вейтов тоже плохая идея, так что поняли вы, конечно, не совсем правильно. Но в целом да, проблема того, что клик идет в элемент, который ещё не отрисовался\не кликабелен\не в нужном состоянии решается вэйтами.

Не зависимо от того, связано ли это с действиями пользователя (пользователь кликает, окошки открываются) или с рендерингом страницы, или ещё с чем-либо.

Dmitry
01.11.2017
16:49:18
Всем большое спасибо - основную мысль я понял. Дальше - детали. Кстати, вот по теме правильных и неправильных wait'ов статья: https://habrahabr.ru/company/ruvds/blog/338984/

Shoo
01.11.2017
16:53:11
Ну, какой-то финальный вариант в конце статьи выглядит откровенно убогим.

Но чего не сделаешь ради того, что бы вкорячить промиси в свои тесты.

Можно, имхо, посмотреть как в протракторе реализован smartWait и на этом успокоиться.

Dmitry
01.11.2017
16:55:47
В статье есть фраза "Помните о том, что текущая версия Selenium для JavaScript самостоятельно управляет промисами. Поэтому каждое выражение будет полностью завершено до перехода к следующему выражению. " Либо я его неверно истолковываю, но я также руководствовался - к следующей строке тест не перейдёт, пока полностью не выполнит предыдущую, т. е. в моём случае - пока страница не загрузится полностью, даже не рыпаться чего-то там делать или искать.

И авторы CodeceptJS вон чего пишут: "Tests are written in synchronous way. Test scenarios should be linear, so tests by themselves should not include promises or callbacks as well. However, behind the scene all actions are wrapped in promises inside the I object. Global promise chain is initialized before each test and all I.* calls will be appended to it as well as setup and teardown."

Google
Dmitry
01.11.2017
17:11:51
И здесь пишут, что я вроде как должен быть прав: "WebDriver будет дожидаться полной загрузки страницы (то есть момента, когда сработает событие “onload”), перед тем как вернуть управление обратно в ваш тестовый сценарий." https://selenium2.ru/docs/webdriver

Evgeniy
01.11.2017
17:13:27
окей. событие онлоада сработало. А дальше у вас есть N элементов на странице, которые как-то асинхронно в дом прикручиваются.

Dmitry
01.11.2017
17:14:09
А у меня нет. Рассмотрим пока простой случай.

Evgeniy
01.11.2017
17:25:34
Т.е.? вы не использовали неявно ожидание - у вас падал тест. Падал он потому что onload сообщал вебдрайверу - "иди дальше". код исполнялся дальше, не находил нужный элемент на странице и падал. вы заметили, что вставка ожидание "чинит" тест. Починился он потому, что селектор правильный, но он не был еще готов к этому моменту. onload() в современном мире jquery, ajax и SPA фрейморков ни разу не союзник вам, вот и все.

Dmitry
01.11.2017
17:32:45
Большое спасибо за терпение! Последний вопрос и больше приставать не буду по этой теме :) Этот мой простенький тест то выполняется, то нет. Вот только что прям последовательно его запустил 10 раз. Половина раз OK, половина - "не вижу элемент"! Что, первый раз браузер быстренько успел сработать, поэтому элемент успел "увидеться", а второй раз рендеринг по какой-то причине замедлился (хотя не понятно по какой, процессор не загружен, всё кроме сайта локально на машине, а сам сайт в локальной сети) и без дополнительного wait элемент уже не "увиделся"?

Браузер рестартуется каждый раз.

Anton
01.11.2017
22:13:05
Если CodeceptJS написан по аналогии с обычным Codeception, то там должно быть что-то вроде waitForElement/waitForElementVisible, которая будет ждать пока на странице не появится/отрендерится нужный элемент. Тут идёт ожидание не какого-то абстрактного времени, а именно конкретного элемента, что гораздо лучше. Перед каждым кликом на каждый элемент это, конечно, вставлять не стоит, но если точно известно, что после каких-то действий на странице может появится что-то новое, то стоит использовать

Oksana
02.11.2017
02:14:34
Для простых случаев , без всяких там ангуляров, и реактов, использование селенид фреймворка решает большинство проблем — методы типа click() уже за вас обернуты в ожидания. И на селениде тесты писать проще, чем на голом селениуме.

Я для себя решила,что bdd шикарная штука для автотестов, даже если вся разработка ведется не в bdd . Это дополнительный слой абстракции, который не только мне, как тестировщику, помогает писать тесты, но и любой человек видит адекватный отчет и может понять, что конкретно протестировано, какими шагами. А scenario outline кукумбера — удобнейшая вещь

Мне в бдд важнее всего наглядность покрытия функционала тестами. Есть фича — она покрыта такими и такими и сценариями. Тут даже pm может всунуться и сказать "о, а еще вот такой случай нам надо проверить". И мне очень важно то, что я могу отказаться от отдельно ведущихся тесткейсов (при должной ловкости) — все кейсы вести в фича файлах. Даже если они неавтоматизированны — в отчете по прогону будут шаги с пометкой "прогнать руками"

Anton
02.11.2017
04:03:07
а мне на это фоне очень интересно, а как реализуется описание страниц приложения, когда еще нет приложения ? Вот написалы мы на bdd тест: Перейти на страницу авторизации Заполнить поля корректными данными и нажать кнопку "Отправить" Увидеть сообщение об успешной авторизации где-то должно быть описание веб-страницы/страницы приложения, что бы тестовое приложение осознало "куда конкретно тыкнуть" и "куда конкретно текст ввести" - но как написать, например, локаторы, пока страница не реализована? и еще момент: непонятно как решается проблема Наглядности покрытия (на мой взгляд, обычно, автоматизируется не все, а только бизносовые или смоут проверки) - или у вас автоматизируются Реально все кейсы которые генерирует тест-дизайн ? Как автоматизация не захлебывается поддержкой всего этого ?..

Oksana
02.11.2017
05:37:50
по первому пункту: у кукумбера в фича файле вы описываете сценарий - собственно то, что вы напечалали выше - это будут ваши шаги (given when then)? Затем в файле реализации прописываете методы для этих шагов. Можно помечать шаги Pending - это кукумбер будет понимать, что ваши шаги еще не покрыты тестовыми методами. Но даже если еще не реализована страница, вы сможете описать метод - например: this.When(/^ввожу логин"([^"]*)"$/, function (password: string) { loginField. setValue(password); return 'pending'; }). Затем в файле PageObject прописываете елемент loginField например: @selector(".login-field") public loginField: Element; когда вы получите реализацию - вам достаточно будет проставить/подменить локатор в вашем файле PageObject. ну или сказать разработчикам, а сделайте мне поле логина с классом "login-field"

Evgeniy
02.11.2017
06:45:16
Любое объяснение полезности бдд упирается на "придёт ПМ / человек с улицы и ему будет понятно " . Это какой бас фактор на проекте должен быть, чтобы тесты были проходным двором для случайных людей?)

Складывается ощущение, что yet another layer нужен для бизнеса, в котором нет доверия к языку программирования, сам код не может быть предельно понятен, тест рейл сьюты написаны на клингонском и только given when then обёртка автомагически делает хорошо

Richard
02.11.2017
06:49:13
Ht,zn/

Коллеги.

Вы сейчас обсуждаете BDD с точки зрения TDD

почитайте про идею и философию BDD

Although BDD is principally an idea about how software development should be managed by both business interests and technical insight, the practice of BDD does assume the use of specialized software tools to support the development process.[2] Although these tools are often developed specifically for use in BDD projects, they can be seen as specialized forms of the tooling that supports test-driven development. The tools serve to add automation to the ubiquitous language that is a central theme of BDD.

Google
Shoo
02.11.2017
07:50:39
Richard
02.11.2017
07:51:23
In software engineering, behavior-driven development (BDD) is a software development process that emerged from test-driven development (TDD). Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software development and management teams with shared tools and a shared process to collaborate on software development.

И правда, при чем?

Shoo
02.11.2017
07:51:41
И правда, причем?

Речь выше о работе тестировщиков и функциональных тестов. Надеюсь мне не надо тебе рассказывать, что тдд не про это?

Richard
02.11.2017
07:53:33
Нет, не надо, разумеется.

Просто посмотри саму оценку и суждения.

Shoo
02.11.2017
07:55:41
Я смотрел, люди обсуждают использование бдд инструментов в рамках процесса тестирования (а не написания кода). Это беседа про инструменты, а не про философии подходов, никак к тестированию не относящихся.

Ivan
02.11.2017
09:09:08
Всем привет. Посоветуйте для Java какой нить тестовый фреймворк, или что то в этом роде. Ситуация такая: у нас есть АПИ, который можно тестить только пошагово (найти такси, заказать найденный такси) и прочее. Так же с возможностью просматривать отчет на каком этапе оно сломалось

Konstantin
02.11.2017
09:15:02
Знает кто чат с автотестами на java?

Ivan
02.11.2017
09:18:32
rest assured
это либа для работы с rest api. У нас своя либа используется для работы с апи. Получается теперь хотим прогонять тесты по заданному workflow и потом результат показывать на телевизоре

Evgeniy
02.11.2017
09:20:47
вы спрашиваете нас, как вам получить результаты от вашей написанной либы?

заверните все в junit или testNG

Shoo
02.11.2017
09:24:53
А чего в личку, я б послушала.
Если интересно, то всегда можно ломануться в личку следом, расскажу\форвардну.

Он есть.

Светлана
02.11.2017
09:31:55
ссылку в студию)

Irga
02.11.2017
09:32:06
плз

Yuryi
02.11.2017
09:32:46
кстати да, тоже интересно было бы

Google
Maxim
02.11.2017
09:39:13
Он есть.
господа просят ссылочку)

Andrey
02.11.2017
09:40:43
пазязя

Shoo
02.11.2017
09:41:07
Там пока категорически мало контента, что бы это имело смысл куда-то шарить. Плюс меня Ричард за рекламу забанит.

Желающие ссылочек лучше могут наспамить мне в личку, что им там было бы интересно почитать. Как раз думаю на праздниках доберусь до саблайма и накатаю туда пару текстов. (В замен могу инвайтнуть :D)

Меня нет во флуде.

Так что нет, нельзя. :)

Evgeniy
02.11.2017
09:46:00
у нас появился флуд, где флуда мало и он вроде как имеет Code of Conduct, в отличии от предыдущей флудилки

Shoo
02.11.2017
09:53:23
Ничосе.

Andriano
02.11.2017
09:55:08
Попозже будет, пока что здравый смысл и уважение к участникам.

Evgeniy
02.11.2017
09:55:17
это коллективное-сознательное. Просто вести себя, как хочешь, чтобы себя вели по отношению к тебе :)

Ivan
02.11.2017
09:55:40
я так понял в java тестовые фреймворки есть только testng и junit?

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