@qa_ru

Страница 493 из 1080
Juliya
16.05.2017
12:43:21
если это TDD то наоборот)

Richard
16.05.2017
12:43:53
BDD, ты хотела сказать? )

Pavel
16.05.2017
12:44:03
Да потому что тесты по определению не зависят от имплементации проекта

Google
Pavel
16.05.2017
12:44:31
Его можно хоть на другом языке переписать, хоть с ООП на функциональный, хоть на брейнфаке - тесты проверяют аутпут.

Anton
16.05.2017
12:45:33
мне кажется это зависит от Уровня написания тестов: на "черный ящик" мы их пишем или на "прозрачный"

Pavel
16.05.2017
12:45:45
По какому определению?
По определению теста. Тест - это штука которая проверяет что заявленные требования правильно реализованы в ПО. При этом вообще никак не важно, как и в какой архитектуре они реализованы.

Yevhenii
16.05.2017
12:48:57
интересно, но пожалуй все зависит от подхода, тестирование на уровне кода или тестирование пользовательского интерфейса.

Shoo
16.05.2017
12:49:34
У вас есть сеть из 30 микросервисов или один монолит, вы считаете что это не будет влиять на архитектуру тестов?

Если да, то сориян, проблема снова в вас.

Pavel
16.05.2017
12:50:57
Если да, то сориян, проблема снова в вас.
Проблема в том то ты пишешь эвфемизмы. В микросервисах PageObject - он где?

Shoo
16.05.2017
12:51:58
Pavel
16.05.2017
12:52:03
Когда мы говорим про PageObject - тест получает html страницу. Как, кем, когда она была сгенерена, в какой архитектуре, из каких источников данных - хоть монолитом, хоть сотней микросервисов - абсолютно не должно волновать тесты.

Shoo
16.05.2017
12:52:17
Когда мы говорим про PageObject там вообще может фронтенда не быть.

Google
Shoo
16.05.2017
12:52:41
Когда мы говорим про пейджобджект там может быть страница, которая динамически собирается из блоков на реакте, каждый из которых живет независимой жизнью.

Pavel
16.05.2017
12:52:43
Если там отдается json то ровно то же самое.

Shoo
16.05.2017
12:53:09
Вы страницы jsonами отдаете?

Pavel
16.05.2017
12:54:06
Микросервисы отдают исключительно страницы?

Shoo
16.05.2017
12:55:31
> Когда мы говорим про PageObject - тест получает html страницу

Pavel
16.05.2017
12:55:58
А если не меняется логика?

Dmitry
16.05.2017
12:58:23
А если не меняется логика?
ну например, если тесты не умеют работать адекватно с дроп даун меню, и на ангуляре тесты совсем не видит этот дропдаун

придется переписывать

Shoo
16.05.2017
12:58:31
Если не меняется логика то вы, вероятнее всего, ничего не переписали.

Если меняется бизнес-логика -> переписываются тесты. Если меняется логика взаимодействия с сервисом -> переписываются page objectы. Если меняются локаторы -> переписывается мап локаторов.

Всё просто и логично.

Pavel
16.05.2017
12:59:51
Если не меняется логика то вы, вероятнее всего, ничего не переписали.
Very sad for you. Можно полностью переписать все приложение, ускорив производительность, но ни капли не поменяв логику. И тесты проверят что рефакторинг прошел корректно. В этом их и смысл.

Это называется в программировании интерфейс, или, по-другому - "контракт".

Shoo
16.05.2017
13:01:12
> Very sad for you.

Скорее for you, если под логикой вы понимаете только бизнес логику.

Arseniy
16.05.2017
13:01:38
может срач в личку, а результаты срача сюда, если будут осмысленные?

Shoo
16.05.2017
13:01:41
Рефакторинг производительности -> тоже изменение логики приложения, сориян.

Google
Николай
16.05.2017
13:02:26
похоже на паттерн разработки тестов PageObject
да. Оно и есть. Мне не нравиться что в месте которое называется @Test есть строки типа cat = new cat или написано cat.run вместо run Сколько примеров в инете не смотрел везде есть что то лишнее в том блоке который называется @Test

Pavel
16.05.2017
13:02:48
Shoo
16.05.2017
13:03:14
Я этот перл сейчас даже коллегам покажу.
Ни в чем себе не отказывайте, можете даже стикер на монитор повесить, что бы не забыть.

Николай
16.05.2017
13:03:47
чет вы злые сегодня )

Evgeniy
16.05.2017
13:04:48
Рефакторинг производительности -> тоже изменение логики приложения, сориян.
это спорный вопрос. Например, одно дело заменять инициализацию коструктора каким-нибудь языковым сахаром, который использует генераторы (новые возможности языка) и совсем другое - делать это будучи в своей бизнес логике, убирая ненужные вызовы функций

рефакторингом можно назвать все то, что из 3rd party (а еще лучше - стд либа) было поменяно и ты переписал код на "получше" - заодно, например, убрав deprecated ворнинги

Pavel
16.05.2017
13:06:27
А если добавить индекс на таблицы в базу, то это тоже изменение логики, ага.

Evgeniy
16.05.2017
13:06:38
но Павел немного лукваит называя что ускорение проивзодительности -это рефакторинг. Это бизнес задача

Shoo
16.05.2017
13:06:55
это спорный вопрос. Например, одно дело заменять инициализацию коструктора каким-нибудь языковым сахаром, который использует генераторы (новые возможности языка) и совсем другое - делать это будучи в своей бизнес логике, убирая ненужные вызовы функций
У тебя либо используется другая схема взаимодействия компонентов, либо нет. Если используется - это аффектит логику всех тестов, завязанных на эти компоненты. Если не используется - это аффектит логику тестов, затрагивающих проверки производительности этих модулей.

Evgeniy
16.05.2017
13:07:07
А если добавить индекс на таблицы в базу, то это тоже изменение логики, ага.
в SQL проектах это целая бизнес задача, которая аффектит дохрена чего, если что

например, пересчет индекса может идти пару недель

=)

Richard
16.05.2017
13:08:46
не очень

Pavel
16.05.2017
13:09:11
Ну если считать любое передвижение байтов на продакшен сервере изменением логики, то конечно оно да, но другое дело что тогда надо к психотерапевту наведаться.

Evgeniy
16.05.2017
13:09:55
в общем я считаю так: Ускорение производительности - чаще бизнес задача и под рефакторинг не подходит. Ускорение проиизводительности *может* быть рефакторингом, если был переписан код на новый языковой стандарт, в котором есть обратная совместимость

Pavel
16.05.2017
13:10:51
Ну, а тесты то, которые при этом проверяют селекторы в сгенеренной странице, будут переписываться или нет?

Evgeniy
16.05.2017
13:14:56
эти тесты - не будут :)

Anton
16.05.2017
13:14:58
да. Оно и есть. Мне не нравиться что в месте которое называется @Test есть строки типа cat = new cat или написано cat.run вместо run Сколько примеров в инете не смотрел везде есть что то лишнее в том блоке который называется @Test
есть какие-то готовые решения, но я конкретные не назову для вашего случая: Недавно знакомился с appium очень поверхностно: очень похоже на то, что это то, что вам нужно Но нужно понимать, что то, что в сценарии нет ничего лишнего, это не значит что не придется писать всю ту же логику где-то в другом месте. На мой взгляд такие подходы к написанию АТ это только способ сделать читабельнее сами сценарии, но не архитектуру тестов

Dmitry
16.05.2017
13:16:02
эти тесты - не будут :)
а если поменялся способ генерации страниц ?

Google
Dmitry
16.05.2017
13:16:34
или же при изменения фреймворка, автомейшн перестанет видеть какой-то селектор ?

Evgeniy
16.05.2017
13:18:41
или же при изменения фреймворка, автомейшн перестанет видеть какой-то селектор ?
то значит это вам ответ того, как правильно разработчики "рефакторят"

цели рефакторинга - не сделать "быстрее". Цели рефакторинга - сделать поддерживаемее.

Richard
16.05.2017
13:20:06
цель рефакторинга определяет заказчик рефакторинга.

Если заказчик просит чтобы было быстрее - идёт рефакторинг для увеличения скорости. Если техлид решает, что надо чтобы было поддерживаемо или ещё что - он заказывает рефакторинг, да.

Evgeniy
16.05.2017
13:21:46
процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы

Richard
16.05.2017
13:21:49
это например.

Evgeniy
16.05.2017
13:22:03
Вы путаете терминологию

Читаем Фаулера

Admin
ERROR: S client not available

Dmitry
16.05.2017
13:22:31
процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы
получается что UI тесты не будут никоем образом затронуты, но все остальное может быть огого как затронуто

Anton
16.05.2017
13:24:16
получается что UI тесты не будут никоем образом затронуты, но все остальное может быть огого как затронуто
из определения: ни UI, ни Unit тесты не должны будут изменится в результате рефакторинга - и логика не должна быть затронута... но это из определения в идеальном мире...

и "остальное" - получается то же должно остаться не изменным

Evgeniy
16.05.2017
13:26:01
и "остальное" - получается то же должно остаться не изменным
все так. Именно поэтому я несколько раз уточнил, что в реальном мире "малый" рефакторинг - это переписывание 3rd party либ и языковых stdlib или еще уже - тупо конструкторы типов данных

Anton
16.05.2017
13:27:25
вывод: рефакторинга с бизнесс смыслом не бывает

Evgeniy
16.05.2017
13:27:48
есть и другой рефакторинг - когда ты переписав а ничего с точки зрения business value не добавив - сделал код понятнее, поменял вызовы, или доказал и проверил, что можно обойтись без лишнего вызова процедуры. Тесты показали, что твой рефакторинг не сломал business value = профит.

Pavel
16.05.2017
13:29:13
Употреблять термин "рефакторинг", как что-то, что заставляет измениться бизнес логику, или тесты, или его заказывает бизнес-работник - не нужно.

Это все запутывает и взрывает моск.

Далее, если мы обмазались TDD подходом и сначала написали тесты, а приложения еще нету, то архитектура приложения ну никак не может повлиять на архитектуру тестов, ведь ее не существует!

Google
Николай
16.05.2017
13:30:43
есть какие-то готовые решения, но я конкретные не назову для вашего случая: Недавно знакомился с appium очень поверхностно: очень похоже на то, что это то, что вам нужно Но нужно понимать, что то, что в сценарии нет ничего лишнего, это не значит что не придется писать всю ту же логику где-то в другом месте. На мой взгляд такие подходы к написанию АТ это только способ сделать читабельнее сами сценарии, но не архитектуру тестов
спасибо посмотрю. А вообще да мне хочется чтобы тесты были максимально читабельными. а все что глубже пусть обрастает своей логикой реализации. норм. хотя может используя тот же Page object делать как есть а сверху надстраивать еще что то. типо bdd cucumber кажется там удобочитаемость приятной становиться

Filipp
16.05.2017
13:31:05
вывод: рефакторинга с бизнесс смыслом не бывает
Это если product owner некомпетентный. Потому что без рефакторинга все тонет в говнокоде и костылях Плавали, знаем, жуткое и жалкое зрелище

Alexei
16.05.2017
13:31:21
TDD это написание приложения, с помощью написания тестов.

Anton
16.05.2017
13:32:02
Это если product owner некомпетентный. Потому что без рефакторинга все тонет в говнокоде и костылях Плавали, знаем, жуткое и жалкое зрелище
скоректирую: бизнесс смысл рефакторинга в том, что бы дальнейшие задачи по изменению бизнес логики обходились дешевле

Pavel
16.05.2017
13:32:38
Ну тест на методы класса может быть написан, а сам класс еще нет. Это жиза вообще.

Filipp
16.05.2017
13:32:52
скоректирую: бизнесс смысл рефакторинга в том, что бы дальнейшие задачи по изменению бизнес логики обходились дешевле
Совершенно верно - ускорение, упрощение и удешевление разработки. Еще можно баги почистить

Pavel
16.05.2017
13:33:06
Да и написать приемочные тесты на верстку без логики тоже вполне реально.

Dmitry
16.05.2017
13:33:43
незнаю кто такой этот Фаулера, но видимо придеться почитать

Evgeniy
16.05.2017
13:34:38
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%83%D0%BB%D0%B5%D1%80,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD

Pavel
16.05.2017
13:34:39
это как, прости? :)
Ну так, вписываешь в тесты что посылая запрос на /abc ты ожидаешь по таким-то селекторам увидеть значения x,y,z.

А потом все это прогеры уже закодивают.

Filipp
16.05.2017
13:35:23
Да и написать приемочные тесты на верстку без логики тоже вполне реально.
в кровавом водопаде, где есть утвержденный дизайн "кнопка с id=X" с легкостью. Только в реальности я про такое не слышал

Dmitry
16.05.2017
13:35:25
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%83%D0%BB%D0%B5%D1%80,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD
когда ты сказал всем читать ты какой менно его труд имел ввиду ?

Evgeniy
16.05.2017
13:35:49
"Рефакторинг" =)

Nikita
16.05.2017
13:36:06
у тебя селекторы продуманы изначально?))

Evgeniy
16.05.2017
13:36:12
у Фаулера можно читать всё - чувак пишет хорошие вещи

Pavel
16.05.2017
13:36:38
в кровавом водопаде, где есть утвержденный дизайн "кнопка с id=X" с легкостью. Только в реальности я про такое не слышал
Ну так речь же о том чтобы стремиться к этому. Со временем и приходом опыта этот скилл возрастает. Частично можно реализовать тесты уже до того как прогеры выкатили первую версию.

у тебя селекторы продуманы изначально?))
Ну так верстальщик классы то у себя вписал.

Потом эта верстка приходит к прогерам, они ее нарезают на свои блоки, шаблоны, и закодивают рендеринг значений из приложения. А QA остается только запустить тест.

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