Да интересно. Но все-таки 2 проекта по мне накладных расходов больше. Переключения Kotlin/XCUItest/Api.
У нас сейчас 822 E2E теста. Для Android и iOS. Java. На Java написаны E2E и API тесты и все создание тестовых данных. Т.к. сервер на яве тоже, то девы иногда помогают или чинят когда автоматчики в отпуске.
Автоматчиков 2 на все E2E и API (WEB есть тоже, но там мало. Простой он у нас. 50 тестов).
Так у вас получается 2 проекта тестирования, которые надо как то синхронизовать. Писать одинаковые тесты с проверками. Писать одни и теже шаги. Править при изменении оба проекта...
Но самое главное ведь в крупных проектах это создание тестовых данных. Как вы это делаете имея 2 различных по коду проекта?
Интересно сколько у вас тестов в каждом проекте и сколько автотестеров их поддерживает?
при автоматизации используют то, что просит заказчик.
вы можете привести пример автоматизации? просто интересно как сильно это отличается от тестирования.
ЗЫ 4 года назад у меня был пример автоматизации (как мин это я так понял). задача проверять логин реальным клиетном каждые 15мин. проблемы - отсылка по слаку в чем проблема. Умерла сама джоба в CI, неправильный экран после кого-то действия (какой вместо), не пришла за хх секунд смс-ка реально на тел. Продолжать по возможности логин - например смс-ку взять по апи или в базе.
Appium поддержал видео не так давно(год или чуть больше).
Для Android нативными ADB командами (хотя мы так и не перешли еще. используем те же команды сами).
Для iOS написал Appium свой видео стрим делают. Мы забираем фактически его. Переменный битрейт делает iOS видео с маленьким размером. В Android я быстро пережимаю ffmpeg командами.
Ну а вообще Appium удобная штука. И именно им и поддержали все.
Модульные тесты конечно быстрее. Но их тоже надо поддерживать особенно если пишем моки запросов. Мок может устареть и получается надо как то поддерживать его актульность.
Как то сложно... Все сами пишут. Тестеры не очень управляют тестами.
Видимо эти 4 часа и решают.
Мы пошли иным путем. 750 UI тестов для каждой платформы. Время прогона 1500 тестов (обе платформы iOS + Android) на 24тел около 2.5 часов. Видео всех тестов, Аллур отчет, ошибки только с описанием (никаких NPE, только то то и то то не появилось или неправильно), совместили с ТестРейлом. Как результат Тестеры сами все запускают, смотрят, говорят что добавить. Девелоперы (как мобайл так и сервер) тоже уже научились запускать (разбили сьюты по фичам).
За первый час уже практически вся регрессия ловится.
Занимаюсь тем же, только на Аппиуме. Интересно почитать как в чистом XCUITest.
Хотелось бы дальше продолжения и сравнить:
— как параллелить тесты в XCUITest (1 тест = 1 тел)
— можно ли сохранять видео теста
— как быстро бегут (скажем 100 тестов с 5-10 тел)
Для меня всегда BDD был больше преградой при написании 500+ тестов. Слишком много надо писать этих условий. Каждый норовит дать свое названия. Легко дуплятся. Это все значительно усложняет поддержку. Может только у меня?
Ну типа того. Только вместо «pageObjectFactory» у нас «myApp», где конструктор с драйвером.
далее внутри myApp все поделено по функционалу, а сама myApp инициализируется автоматом перед тестом.
Таким образом получилось типа того:
myApp()
.homePage()
.tapSomeButton()
.isSomePageLoaded()
.tapSomeButton();
// если нужен переход на иную станичку в тесте, чем обычно
myApp()
.login().loginPage()
.isLoginPageLoaded()
.tapSomeButton()
А доступность какой-то странички всем другим страницам в Java просто решается добавлением ее в BasePage класс. В принципе похоже на вас.
ЗЫ в общем меня смутил у вас лишь «return pageObjectsFactory.makeMainScreenPageObject()», а не к примеру «return new SomePage()».
class ExampleLoginTestSuit: BaseTestCase {
func testExampleLogin() {
let user = userFixtureService.createUser()
mainScreen
.openProfileTab()
.goToAuthorization()
.goToLogin()
.enterLogin(user.login)
.enterPassword(user.password)
.logIn()
}
}</source>
где "openProfileTab" возвращает "ProfileScreen" класс напрямую.
Мы именно так пишем на Java: "return new SomePage(driver)". Только еще драйвер передаем.
Да интересно. Но все-таки 2 проекта по мне накладных расходов больше. Переключения Kotlin/XCUItest/Api.
У нас сейчас 822 E2E теста. Для Android и iOS. Java. На Java написаны E2E и API тесты и все создание тестовых данных. Т.к. сервер на яве тоже, то девы иногда помогают или чинят когда автоматчики в отпуске.
Автоматчиков 2 на все E2E и API (WEB есть тоже, но там мало. Простой он у нас. 50 тестов).
Так у вас получается 2 проекта тестирования, которые надо как то синхронизовать. Писать одинаковые тесты с проверками. Писать одни и теже шаги. Править при изменении оба проекта...
Но самое главное ведь в крупных проектах это создание тестовых данных. Как вы это делаете имея 2 различных по коду проекта?
Интересно сколько у вас тестов в каждом проекте и сколько автотестеров их поддерживает?
так и в тестиравании мы каждый день делаем ночные раны. практичести бесконечно - пока проект не умрет -)
по мне ваш пример идеален для небольших задач. в Аппиме начало не такое быстрое, особенно с Аппл тел.
при автоматизации используют то, что просит заказчик.
вы можете привести пример автоматизации? просто интересно как сильно это отличается от тестирования.
ЗЫ 4 года назад у меня был пример автоматизации (как мин это я так понял). задача проверять логин реальным клиетном каждые 15мин. проблемы - отсылка по слаку в чем проблема. Умерла сама джоба в CI, неправильный экран после кого-то действия (какой вместо), не пришла за хх секунд смс-ка реально на тел. Продолжать по возможности логин - например смс-ку взять по апи или в базе.
Для фанатов ADB есть https://github.com/ashishb/adb-enhanced.
Про Аппиум: 12 Android + 12 iPhpone тел при одновременном использовании кушают процессор современного масМини на 10-15%.
Ну а для себя вы конечно молодец.
лет через 50... судя по нынешним тенденциям...
ЗЫ это я вам как автоматизатор говорю. в большинстве фирм автомазации нет. даже если есть люди кто ей там занимается.
Блин сорри. Вы это написали....
Я как-то пропустил.
Интересно как вы tap по id сделали.
adb
exec-out uiautomator +adb shell input tap ?
Appium поддержал видео не так давно(год или чуть больше).
Для Android нативными ADB командами (хотя мы так и не перешли еще. используем те же команды сами).
Для iOS написал Appium свой видео стрим делают. Мы забираем фактически его. Переменный битрейт делает iOS видео с маленьким размером. В Android я быстро пережимаю ffmpeg командами.
Ну а вообще Appium удобная штука. И именно им и поддержали все.
Slack, TestRail report это уже просто на Java.
ЗЫ я тут если есть вопросы -> https://discuss.appium.io/u/Aleksei на официальном их форуме или тут тоже.
Мне нравится. У нас похоже:
12 iPhone
12 Android (Nokia где чистый Андроид)
1 macMini (недавно добавили еще один)
Java + Appium + TestNG + Maven
1500 тестов за 2,5 часа
Самое интересное - даже один макМини легко держит это все хозяйство. А мы еще видео всех тестов делаем 24 потока...
Модульные тесты конечно быстрее. Но их тоже надо поддерживать особенно если пишем моки запросов. Мок может устареть и получается надо как то поддерживать его актульность.
Как то сложно... Все сами пишут. Тестеры не очень управляют тестами.
Видимо эти 4 часа и решают.
Мы пошли иным путем. 750 UI тестов для каждой платформы. Время прогона 1500 тестов (обе платформы iOS + Android) на 24тел около 2.5 часов. Видео всех тестов, Аллур отчет, ошибки только с описанием (никаких NPE, только то то и то то не появилось или неправильно), совместили с ТестРейлом. Как результат Тестеры сами все запускают, смотрят, говорят что добавить. Девелоперы (как мобайл так и сервер) тоже уже научились запускать (разбили сьюты по фичам).
За первый час уже практически вся регрессия ловится.
А вы на чем UI тесты пишете? У нас Аппиум + Java.
Расскажите сколько тестов и как долго бегут. Сколько удалось сэкономить...
Если бы ваше приложение есть на Андроид - там тоже пишут девелоперы?
Как вовлечены обычные тестировщики? Кто проверяет какие тесты пишут дев?
спасибо
2 Чисто профессионально. Как быстро пробегают у вас эти 200 тестов на телефонах?
5 симуляторов на 1 машине? Думаю с трудом. Проще реальные тел. Реальные у нас сейчас 20 тел тянет один макМини с видео :).
ПС ясно что скорость зависит от самого продукта и кол-ва шагов. Я думал у вас уже есть цифры. Хотел сравнить с нашими. Хоть примерно.
Хотелось бы дальше продолжения и сравнить:
— как параллелить тесты в XCUITest (1 тест = 1 тел)
— можно ли сохранять видео теста
— как быстро бегут (скажем 100 тестов с 5-10 тел)
Для меня всегда BDD был больше преградой при написании 500+ тестов. Слишком много надо писать этих условий. Каждый норовит дать свое названия. Легко дуплятся. Это все значительно усложняет поддержку. Может только у меня?
далее внутри myApp все поделено по функционалу, а сама myApp инициализируется автоматом перед тестом.
Таким образом получилось типа того:
А доступность какой-то странички всем другим страницам в Java просто решается добавлением ее в BasePage класс. В принципе похоже на вас.
ЗЫ в общем меня смутил у вас лишь «return pageObjectsFactory.makeMainScreenPageObject()», а не к примеру «return new SomePage()».
а в чем сложность написать так?