iOS медленнее соглашусь, Android скорость такая что пытается тапать кнопку на экране, пока она еще появляется. Решается отрубанием анимации. Это кстати и для iOS помогает немного.
У нас 900+ тестов, 25 тел (12 iOS + 13 Андроид). По ночам бегают около 700 (1400 на две платформы) при релизах все. У нас много долгих тестов (например 2 платежа в тесте с заполнением кучи полей). Вообщем вполне сносно все 1800 (900 на обе платформы) бегут за 3.5 часа Андроид и немного дольше iOS.
C фермами типа browserstack заморачиваться не стали (наша ферма окупается за 3 месяца если выбирать планы с 20+ параллельными тел против самой дешевой фермы).
Я бы порекомендовал добавлять описание ошибки. Вот у нас я автомачу мобильные тесты один, а юзают их все манульщики. И писать 2 <> 3 не совсем ясно, что такое 2 и почему 3. Ошибки должен понимать человек кто видит продукт первый раз.
И еще я не вижу мягкие ассерты, которые не останавливают тест. Это очень удобно когда тест флоу бежит до конца и накапливает сбор мелких ошибок.
2) это не НА каждый, а ПОСЛЕ каждого. нету смысла искать мгновенно элементы другой страницы
3) Аппиум аннотации типа @iOSXCUITBy, @AndroidBy и т.д. (их много) также имеют ожидания. Не помню по умолчанию, я заменяю его на свое 20сек. Ну а когда мне нужно короче (часто проверить что нету элемента) то уменьшаю и потом восстанавливаю. Пример
2) все tap(el), setInput(el, value), getText(el)... со всех страниц ведут в 1 единственную функцию для каждого действия. например все tap ведут одну функцию. Это супер удобно. Во первых можно поправить в одном месте КАК тап делаем и везде меняется. Во вторых после ACTION действий типа тап, которые приводят к изменениям удобно добавить маленькую паузу (я использую 150ms). Это значительно повышает надежность.
3) как видно из примера оборачивание дает также название действия для Allure отчета + логирования. это все крайне полезно особенно если бегут много тестов одновременно.
пример в Allure как видно
все действия понятны любому QA
плюс в обертке мы пишем человекочитаемые ошибки типа:
т.е. это не ХЗ какой-то элемент со стактрейсом который мануальщикам ничего не говорит, а понятная ошибка.
Эти действия приводят в легкому чтению результатов тестов любым сотрудником.
А вы аппелируйте к тому, что тесты НЕ должны все все покрывать. Ибо система которая тестирует любое приложение на 100% всегда сложнее самого приложения.
Кому надо, чтобы затраты на тестирования были больше создания? Есть конечно варианты: космос, медицина, системы управления - если ваша апка к ним не относится, вы не должны покрывать все случаи. Это дорого.
Это проблема того, что девы не видят выхлопа тестов. В противном случае они сохраняют идшки, зная что могут быть причиной падений тестов.
Ну а поправить идшки в форме это вообще не проблема. Вот если меняется флоу, то сложнее. Тут все зависит как написаны тесты, поправить в 1 месте не проблема.
Вначале я сам ставил идшки в ios коде. Через пол года, когда авто тесты стали находить быстро регресии, програмисты сами стали помогать и сохранять идшки.
Сейчас у нас 870 тестов мобильных тестов под ios и столько же под android.
Представьте как обслуживать это? Так вот у нас всего 2 авто тестера на эти мобильные, апи (сейчас очень много его), веб и т.д.
Все зависит от того как написано, так и обслуживаться будет.
все верно! я видел толпы автоматчиков, работу которых никто в фирме не понимает, кроме них самих.
1) любые тесты должны быть такими, чтобы их запускали ВСЕ члены команды. Мануальщики в первую очередь, программеры во вторую, а сами автоматчики в последнюю.
2) качество описания ошибки в тесте должно быть таким, чтобы ваша жена (врач, учитель и т.д.) поняли не зная вашего продукта. Не поняли, вы показываете стактрейс или строку кода, где упало - это никому не понятно и не нужно кроме вас самих.
3) наличие видео крайне повышает комфортность и полезность (хотя вначале так не кажется пока не начнешь пользоваться). Ясно, что с АПИ так не получится, а вот web + mobile видео обязательно давно.
4) большинство регрессий должно быть найдено, до того как мануальщики пытаются скачать новый билд и запустить (грубо. понятно что скажем мобильные тесты помедленнее).
Я начал проставлять айдишки в приложении iOS сам. Позднее девелоперы увидев помогли сделать генерацию всех айдишек автоматически если билд не релиз или не продакшн.
iOS медленнее соглашусь, Android скорость такая что пытается тапать кнопку на экране, пока она еще появляется. Решается отрубанием анимации. Это кстати и для iOS помогает немного.
У нас 900+ тестов, 25 тел (12 iOS + 13 Андроид). По ночам бегают около 700 (1400 на две платформы) при релизах все. У нас много долгих тестов (например 2 платежа в тесте с заполнением кучи полей). Вообщем вполне сносно все 1800 (900 на обе платформы) бегут за 3.5 часа Андроид и немного дольше iOS.
C фермами типа browserstack заморачиваться не стали (наша ферма окупается за 3 месяца если выбирать планы с 20+ параллельными тел против самой дешевой фермы).
Молодцы!
У нас примерно тоже только Appium + Java + TestNG + Allure.
Из плюсов на Java можно писать умопомрачительные локаторы
пример теста:
Видео всех тестов вставляем в отчет тоже.
Поделитесь для сравнения количеством тестов и скоростью выполнения. Спасибо.
аааааа. ну это прямо основы математики которые в банке должен знать каждый!
ЗЫ Про Excel или расчеты на калькуляторе пару значений это вы точно сказали. Отвык народ работать руками.
что то не понятно... почему сразу не использовать?
и подобно остальные переменные. тогда никаких "хвостов" не будет.
Я бы порекомендовал добавлять описание ошибки. Вот у нас я автомачу мобильные тесты один, а юзают их все манульщики. И писать 2 <> 3 не совсем ясно, что такое 2 и почему 3. Ошибки должен понимать человек кто видит продукт первый раз.
И еще я не вижу мягкие ассерты, которые не останавливают тест. Это очень удобно когда тест флоу бежит до конца и накапливает сбор мелких ошибок.
1) Step это от Allure - https://docs.qameta.io/allure/#_testng
2) это не НА каждый, а ПОСЛЕ каждого. нету смысла искать мгновенно элементы другой страницы
3) Аппиум аннотации типа @iOSXCUITBy, @AndroidBy и т.д. (их много) также имеют ожидания. Не помню по умолчанию, я заменяю его на свое 20сек. Ну а когда мне нужно короче (часто проверить что нету элемента) то уменьшаю и потом восстанавливаю. Пример
где isLoaded проверяет за МАКС время есть или нет + восстанавливает значение по умолчанию. Понятно что максимум искать будет только если нету.
Привет.
1) по скроллу я написал гайд -> http://appium.io/docs/en/writing-running-appium/tutorial/swipe-tutorial/ . только немного уже устарел сам тап. правильнее уже использовать http://appium.io/docs/en/commands/interactions/actions/
2) все tap(el), setInput(el, value), getText(el)... со всех страниц ведут в 1 единственную функцию для каждого действия. например все tap ведут одну функцию. Это супер удобно. Во первых можно поправить в одном месте КАК тап делаем и везде меняется. Во вторых после ACTION действий типа тап, которые приводят к изменениям удобно добавить маленькую паузу (я использую 150ms). Это значительно повышает надежность.
3) как видно из примера оборачивание дает также название действия для Allure отчета + логирования. это все крайне полезно особенно если бегут много тестов одновременно.
пример в Allure как видно
все действия понятны любому QA
плюс в обертке мы пишем человекочитаемые ошибки типа:
т.е. это не ХЗ какой-то элемент со стактрейсом который мануальщикам ничего не говорит, а понятная ошибка.
Эти действия приводят в легкому чтению результатов тестов любым сотрудником.
Ну и видео дополняет картину.
Красивее я имел ввиду чтобы действия вели или на ту же страницу или на следующую. Таким образом очень удобно писать тесты не прерывая типа:
по статик импорту не понял вопроса. не вижу его. вот пример всех импортов с какого-то теста:
а вот пример импортов с PageObject (тут только логирование из статиков):
Kaspresso представил удобную обертку, зато за Аппиумом поддержка всех платформ.
За что мне нравится Аппиум:
поддержка всех платформ. пишем тест 1 раз
поддержка умопомрачительных возможностей поиска элементов
видео тоже есть
у нас 900 тестов под обе платформы (iOS + Android)
кол-во автотестеров сейчас 1 (было 2. второй ушел на другой проект сейчас)
запускают тесты все мануальщики
ноль проблем со стабильностью. у нас больше проблема в стабильности сервера из-за наличия многих ThirdParty сервисов.
Пример поиска элементов прям с кода:
PS ах да. я бы посоветовал код писать чуть красивее типа -> (сек прям с кода...)
где например:
Мне симпатизирует ваша точка зрения, но иного выхода как блокада ресурсов я не вижу.
Вот вы как предлагаете действовать в данном случае?
Неправда. Мы недавно джуниора из Пакистана вытащили. Уже почти месяц у нас. Всем довольны. Толковый, быстро учится, минимальный надзор.
Сейчас конечно больше кандидатов толковых с России едет и стало временно проще.
Многие знакомые годами народ у нас в Эстонии найти не может. Слишком много стартапов у нас и бегают по кругу все подымая зарплаты и плюшки.
oi пропустил.
java + maven + testNG + appium + allure reporter.
А вы аппелируйте к тому, что тесты НЕ должны все все покрывать. Ибо система которая тестирует любое приложение на 100% всегда сложнее самого приложения.
Кому надо, чтобы затраты на тестирования были больше создания? Есть конечно варианты: космос, медицина, системы управления - если ваша апка к ним не относится, вы не должны покрывать все случаи. Это дорого.
Это проблема того, что девы не видят выхлопа тестов. В противном случае они сохраняют идшки, зная что могут быть причиной падений тестов.
Ну а поправить идшки в форме это вообще не проблема. Вот если меняется флоу, то сложнее. Тут все зависит как написаны тесты, поправить в 1 месте не проблема.
Вначале я сам ставил идшки в ios коде. Через пол года, когда авто тесты стали находить быстро регресии, програмисты сами стали помогать и сохранять идшки.
Сейчас у нас 870 тестов мобильных тестов под ios и столько же под android.
Представьте как обслуживать это? Так вот у нас всего 2 авто тестера на эти мобильные, апи (сейчас очень много его), веб и т.д.
Все зависит от того как написано, так и обслуживаться будет.
все верно! я видел толпы автоматчиков, работу которых никто в фирме не понимает, кроме них самих.
1) любые тесты должны быть такими, чтобы их запускали ВСЕ члены команды. Мануальщики в первую очередь, программеры во вторую, а сами автоматчики в последнюю.
2) качество описания ошибки в тесте должно быть таким, чтобы ваша жена (врач, учитель и т.д.) поняли не зная вашего продукта. Не поняли, вы показываете стактрейс или строку кода, где упало - это никому не понятно и не нужно кроме вас самих.
3) наличие видео крайне повышает комфортность и полезность (хотя вначале так не кажется пока не начнешь пользоваться). Ясно, что с АПИ так не получится, а вот web + mobile видео обязательно давно.
4) большинство регрессий должно быть найдено, до того как мануальщики пытаются скачать новый билд и запустить (грубо. понятно что скажем мобильные тесты помедленнее).
это проблема кривых рук автотестеров (чаще) и окружения (реже).
у крупных городах не у всех дома есть возможность ставить на зардку на ночь. замена батареи решает кучи проблем:
батарея меняется за 1-3 мин
легко заменить 50 - 70 -100 - 150 kW (как пожелаешь на станции)
легко утилизировать - не надо разбирать машину
нет проблем с гарантией на батарею
А у нас был похожий опыт!
Я начал проставлять айдишки в приложении iOS сам. Позднее девелоперы увидев помогли сделать генерацию всех айдишек автоматически если билд не релиз или не продакшн.
пример:
таким образом автоматом были доступны мне (я на аппиуме пишу) хоть какие-то ид чтобы писать не зализая в код iOS.
сейчас я уже не часто меняю сгенеренную идшку на свою (тут в примере - `balanceLabel`).
метод уже прижился в нескольких фирмах. реализация правда сделана чуть по разному.
но в обоих меняю ид (если надо) крайне удобно добавив '.id("myID")' к любому элементу:
вот такой опыт.
Кстати по поводу одиноковых элементов в Аппиуме прекрасные варианты как искать типа:
Так они регулярно каждую неделю новый слепок в staging делают.
кстати идею подсказали! сделал ребуут телефонов джобу на 7 утра. все одной проблемой меньше.