All streams
Search
Write a publication
Pull to refresh
2
0
AlekseiM @m_aleksei

Пользователь

Send message

Да интересно. Но все-таки 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.

Расскажите сколько тестов и как долго бегут. Сколько удалось сэкономить...

Если бы ваше приложение есть на Андроид - там тоже пишут девелоперы?

Как вовлечены обычные тестировщики? Кто проверяет какие тесты пишут дев?

спасибо

скорость мне нравится. молодцы что автоматизированием занимаетесь.
1 «Практически все позитивные сценарии проверки покрыты тест кейсами». Это почему так? Ведь и отрицательные тоже прекрасно покрываются автотестами.

2 Чисто профессионально. Как быстро пробегают у вас эти 200 тестов на телефонах?

5 симуляторов на 1 машине? Думаю с трудом. Проще реальные тел. Реальные у нас сейчас 20 тел тянет один макМини с видео :).


ПС ясно что скорость зависит от самого продукта и кол-ва шагов. Я думал у вас уже есть цифры. Хотел сравнить с нашими. Хоть примерно.

Занимаюсь тем же, только на Аппиуме. Интересно почитать как в чистом 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)". Только еще драйвер передаем.

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Registered
Activity