
Andrey
21.02.2017
14:11:27
нормально отвязали фронтэнд тесты от api. api тестится отдельно, фронт отдельно. Интеграционных тестов количество снижается, общее покрытие увеличивается, время прохождения тестов снижается, волосы шелковистые

Ivan
21.02.2017
14:11:45
я к тому, что всем известно, что изобретать велосипед это священный долг каждого, так что в существовании специализированных мастерских я ни в коем случае не сомневаюсь.

Nikita
21.02.2017
14:12:51
особенно если тебе нужно замокать 10 сервисов чтобы все взлетело

Google

Nikita
21.02.2017
14:13:15
или подменять траффик в 10 сервисах, без разницы

Ivan
21.02.2017
14:13:24

Andrey
21.02.2017
14:13:36

Nikita
21.02.2017
14:16:55


Andrey
21.02.2017
14:18:40
вот не знаю) я слышал про такой подход, и даже доклады смотрел. то, что ваше API работает, не говорит ни о чем кроме того что ваше API работает :) вы фактически повышаете риски того, что фронт где-то забыл про API или что-то криво замокано, или все сразу. нужно ведь мейнтейнить API тесты и мейнтейнить запросы в моках, не забывать о фичетестах и бизнес логике. а какой профит?
профит в том, что без этого релизы "всё вместе" тестились по 20 часов. И находили нерабочую кнопку покупки тесты, которые исполнялись по 3-4 часа, в виду специфики сервиса.
а теперь замоканые фронтовые тесты запускаются на коммите, и дают фидбек в течении 5 минут
релизные тесты сократились до тех же самых тестов, что замоканые, но уже без моков, в меньшем количестве


Ivan
21.02.2017
14:19:11
наверное, работу с 3тей стороной они отдельно проверяют.
а в данном случае они просто компонентно и интеграционно проверили, что внутри себя они хорошо будут работать, при условии корректного ответа от иных участников

Andrey
21.02.2017
14:19:52

Nikita
21.02.2017
14:20:09
сколько там тестов?)

Ivan
21.02.2017
14:20:32

Andrey
21.02.2017
14:22:00
одна покупка - 5 минут. Нужно около 75 покупок чтобы проверить все внешние сервисы. Плюс комбинации с разными входными данными :\
количество тестов считать неблагодарное занятие. 75 тестов исполняются 90% времени из 900+

Google

Nikita
21.02.2017
14:22:42
5 минут на один тест, серьезно?
а почему именно так? там супердлинный сценарий?

Richard
21.02.2017
14:23:04
Может быть процессинг долгий сам по себе.

Andrey
21.02.2017
14:23:17
только поиск, только 1 запрос

Nikita
21.02.2017
14:23:59
у вас бэк асинхронный? оО или он просто так долго реплаит?

Andrey
21.02.2017
14:24:01
выписка, бронь - еще минуты 2 на еще два запроса

Ivan
21.02.2017
14:24:10
а почему не вынести комбинации с разными данными на апи уровень?

Andrey
21.02.2017
14:24:39

Nikita
21.02.2017
14:25:09
ясно-понятно))
соболезную

Andrey
21.02.2017
14:25:28
почему? ;) отличный простор для помощи разработке. То, что требуется от QA

Nikita
21.02.2017
14:25:37
а я думал у меня тесты медленные)
соболезную тех. долгу
не задачам, так-то они звучат интересно

Ivan
21.02.2017
14:27:45
потому что технический долг обычно живёт до последнего, так как никто не хочет его выполнять
всё сваливают на "бизнесс приоритеты" и тем самым, мол мы тут не причём, это всё бизнесс

Nikita
21.02.2017
14:28:21

Andrey
21.02.2017
14:28:45

Google

Ivan
21.02.2017
14:29:08
и как успехи? пока с этим долгом стало удобнее жить

Andrey
21.02.2017
14:29:43
успехи за 6 месяцев в кратце можно описать с "релизы раз в две недели, тесты на проде" до "два релиза в день, на прод можно не смотреть"

Nikita
21.02.2017
14:29:51

Ivan
21.02.2017
14:30:17

Nikita
21.02.2017
14:30:22
а, сорян)

Ivan
21.02.2017
14:30:54

Andrey
21.02.2017
14:31:27

Ivan
21.02.2017
14:31:44
просто делой нового функционала у меня как-то опосредованно соотносится с уменьшением техдолга
ну так вы "понижение testability" исправляете за счёт этих самых грязных хаков
я вот про это утверждение больше уточняю
> моя задача как раз в создании инструментария для более гладкого процесса ликвидации этого долга
Насколько это помогает выпиливать техдолг, который мешает жить

Andrey
21.02.2017
14:34:08
не правда :( не понимаю, где грязные хаки в том, чтобы отрепортить фронтендеру о проблеме заранее исключив влияние бекенда, и наоборот..
> Насколько это помогает выпиливать техдолг, который мешает жить
разработчики более спокойно рефакторят, имея инструмент который им оперативно сообщает о поломках (юниты не 100% покрывают еще)
время на рефактор выделяется в рамках задач "Добавить возможность тестировать то то то то"

Ivan
21.02.2017
14:34:52
теперь понятнее стало, спасибо

Nikita
21.02.2017
14:37:13
ну если запросы по 40 секунд бегают то тут только мокать фронт совсем, это да))

Ivan
21.02.2017
14:37:33
не правда :( не понимаю, где грязные хаки в том, чтобы отрепортить фронтендеру о проблеме заранее исключив влияние бекенда, и наоборот..
> Насколько это помогает выпиливать техдолг, который мешает жить
разработчики более спокойно рефакторят, имея инструмент который им оперативно сообщает о поломках (юниты не 100% покрывают еще)
в этом случае, самый простой пример - настройка таймаутов, когда запрос не успел за отведённое время, и запрос оборвался, вместо заказа - на экране фига.
но в случае с внешними сервисами там сложнее, конечно же.

Nikita
21.02.2017
14:37:39
либо поднимать копии бэкенда у себя локально
но если вы не все данные берете от себя то наверное это не очень возможно

Andrey
21.02.2017
14:39:26

Ivan
21.02.2017
14:40:10
"можно"

Google

Nikita
21.02.2017
14:40:56

Andrey
21.02.2017
14:40:58
докер в помощь
у нас больше десятка разных сервисов нужны, чтобы воссоздать полную картину проекта, некоторые из них пригодны для переноса, некоторые уже в докерах, но другие надо допиливать

Admin
ERROR: S client not available

Иван
21.02.2017
15:26:10
https://t.me/Blockchain_Developers

Alexander
21.02.2017
16:51:18
Котоны, я тут краем уха услышал что срок валидности сертификатика istqb 4 годика.
Рили?

Andrey
21.02.2017
16:52:35
вроде пишут, что нет:
ISTQB certification will not expire like the CSTP certification

Alexander
21.02.2017
16:53:44
Вот я и задумался. Вроде бессрочен)

Pavel
21.02.2017
18:38:31
Народ в PageObject верхняя менюшка сайта является частью страницы или же это часть лейаута? Куда пихать логику по взаимодейсвтию с этим меню?

Ivan
21.02.2017
18:39:45
а она часть каждой страницы или нет?

Pavel
21.02.2017
18:54:49
Это сложный вопрос

Nikita
21.02.2017
18:56:33
пихай куда удобнее, в чем вообще вопрос)

Pavel
21.02.2017
18:57:59
А куда удобнее?)

Nikita
21.02.2017
18:58:45
куда тебе удобнее и как работать проще будет туда и пихай, нет?)
тебе паттерны или тестить?)

Pavel
21.02.2017
18:59:48
Паттерны они созданы для того чтобы потом не умереть при чтении и использовании кода
Т.е. для удобства
Мне удобнее вообще не писать тесты а фигачить лапшекод и сразу в продакшен

Nikita
21.02.2017
19:02:00

Ivan
21.02.2017
19:09:26
в BasicPage можешь, что б оно потом было на всех страничках

Google

Pavel
21.02.2017
19:34:12
+1 к basepage, а если блок не на всех страницах, как вариант, можно одну эту менюшку описать отдельным пейджем

Ivan
21.02.2017
19:41:48
Можно сделать дополнительную страничку, от которой наследовать те, на которых она есть, а те на которых её нет - от base page или иной её реинкарнации

Pavel
21.02.2017
19:47:46
А как насчет trait/mixin ?

Ivan
21.02.2017
19:50:54
Так ведь оно одинаково будет работать на всех подстраницах

Pavel
21.02.2017
19:54:29
Ну да менюшка то одна и та же

Ivan
21.02.2017
19:54:30
Или это не про контракты, а-ля implements
Так и зачем описывать эти методы в каждой странице заново?)

Pavel
21.02.2017
19:55:31
Написать трейт а потом его подключить в каждый класс страницы
Это даже лучше наследования имхо

Ivan
21.02.2017
20:01:40
Вот чёт не уверен, но можно попробовать
Как минимум ты в каждой странице будешь указывать его.

Pavel
21.02.2017
20:09:41
Зато можно разные трейты подключать
FooterTrait, IndexFooterTrait и т.д.

Alexei
21.02.2017
22:10:16
Смотрите про пейдж обджект на ютьбах страны