2016-10-19 3 views
0

Я отвечаю за автоматизацию iOS в своей компании, и я работаю с Swift в XCTest. Моя компания находится в процессе конвертации в Swift 3, и в промежутке времени я преобразовал свои тесты в Swift 2.3 до тех пор, пока мы не завершили конверсию. Автоматизация замедлилась до неприемлемой скорости. Настолько плохо, что если бы мы были в начале снова и выбрали рамки XCTest, были бы дисквалифицированы. Мои тестовые времена выросли почти на треть в этом переходном быстром преобразовании. Пытаясь раскрыть то, что проблема была эта ссылка было полезно: Swift 3 Compile Time Incredibly SlowXCTest in Swift 2.3 болезненно медленный

Мы применили final для всех моделей класса, чтобы иметь дело с ленивым Варсом набравших нам 6 секунд на тест! К сожалению, не вернуть его обратно к своей первоначальной скорости :(

, как у нас в мобильном мире автоматизации знают, используя NSPredicate в соответствии с рекомендациями @Joe Masilotti это лучший способ ждать элементов https://stackoverflow.com/users/384110/joe-masilotti

Я прокомментировал тест, в котором использовался пользовательский func waitForElement(), который включал в себя let existsPredicate = NSPredicate(format: "exists == true"). Тот же тест получил дополнительные 3 секунды! Так что в общей сложности 9 секунд существенны, но, к сожалению, это все еще не возвращается к исходной скорости. Надеюсь, что это выражает мои слова о том, как медленный swift 2.3 стал.

Я собираюсь преобразовать только тестовые цели для быстрого 3 и посмотреть, поможет ли это. Моя теория о том, что Xcode 8 оптимизирована для swift 3 не swift 2.3

Мой вопрос в том, есть ли другой способ написать NSpredicate/waitForElement или hittable метод в расширении, которое не замедлит мои тесты?

+1

Вы уверены, что это не потому, что вы работаете с iOS 10 симуляторами, так как вы обновились до Xcode 8? По моему опыту, симуляторы iOS 10 работают намного медленнее, чем iOS 9. – Oletha

+0

интересно, я попробую, и да, я запускаю 10 симов. – JJacquet

+0

Святое дерьмо, которое взяло тест, который с 120 секунд в OS 10 sim до 55 секунд в OS 9 sim. Спасибо за совет. Не могу поверить, что Apple выпустила Swift 3 вот так. Если код, который идет медленнее, является целью их, тогда они достигли важной вехи. Поздравляю Apple, сообщите мне, нужен ли вам QA. – JJacquet

ответ

1

Симулятор iOS 10 значительно более ресурсоемкий, чем симулятор iOS 9.

Если вы хотите быстрее запускать тесты, переключитесь на симулятор iOS 9, однако вам нужно будет выполнить более медленные тесты, чтобы протестировать текущую версию iOS.

Удостоверьтесь, что у вас есть высокопроизводительный Mac в качестве вашего сервера CI. Люди часто ошибаются в использовании Mac Mini Mac, который ужасно медленен при выполнении тестов. Больше энергии может многое помочь.

Смежные вопросы