Tips&Tricks тестировщику мобильных приложений - сентябрь 2015 |
07.09.2015 00:34 |
Автор: Александр Хозя Tips1. Используйте mind-карты и эвристики/мнемоники для облегчения тестирования - все аспекты мобильного тестирования иногда сложно удержать в голове:
2. Смотрите diff-ы каждой ветки/фичи и задавайте как можно больше вопросов разработчиков. Этим вы:
3. Изучите жизеннный цикл приложений. Activity 1, 2, 3 (Android) и ViewController 1, 2, 3 (iOS) для понимания из какого в какое состояние может переходить экран приложения и самое приложение. 4. Попросите выводить в лог все запросы к серверу и/или попросите удобную 'смотрелку логов' у сервер-side разработчиков, чтобы удобнее было анализировать запросы и выявлять дубликаты и/или находить более удобные способы обновления данных. Например, для обновления одной части профиля разработчик может перезапрашивать весь профиль вместо использования более легковесного запроса. 5. Если у Вас есть приложение для iOS и Android, то важно соблюдать правильный баланс ресурсов для тестирования iOS и Android приложений. Цена ошибки в Android приложениях ниже:
6. Интегрируйте систему soft- и hard-обновлений. У нас вызов soft- и hard-обновлений котролируется сервером и:
Этот механизим будет очен полезен, если необходимо чтобы все пользователи обновились на последнюю версию:
7. Приложение должно работать стабильно при:
8. Девелоперское меню iOS/Android - Ваш лучший друг. Включаем для iOS, Android 9. Парсеры должны стараться учитывать всевозможные “гадости” 10. Если приложение поддерживает портретный и ландшафтный режим – уделите смене ориентации особое внимание.
11. Переходите между скринами много раз:
12. Если есть сторонний сервис – он будет глючить. Необходимо по-максимуму продумать все ситуации и предусмотреть workaround’ы 13. Если есть сторонние библиотеки – они обязательно будут вызывать проблемы. В частности Twitter, PayPal, Facebook довольно часто себя неадекватно ведут. Бывает, даже крашатся и "утаскивают" за собой приложение. 14. Просите разрабочиков debug-меню для себя с функциями которые облегчат им и вам жизнь. Например: фейкать ответы от сервера, открывать определенных пользователей, очищать/терять сессии, обнулять кэш. 15. Не пренебрегайте тестированием на эмуляторах/симуляторах – обычно это очень мощная штука (Android, iOS) 16. Не забывайте проверять миграцию данных/кэшей при апдейте версий. Не забывайте что пользователи могут пропускать версии и необходимо будет проверять обновления с 1.0 до 1.5. Как пример могу приветси краш на старте приложения LinkedIn в июне 2015 - часть пользователей не могли запустить приложение пока не выпустили новую версию (к счастью она была выпущена в тот же день). 17. Необходима система анализа использования и репортов об ошибках, для удобства репорта ошибок при тестировании и анализа фидбека от клиентов/количества крашей на продакшене: TestFlight/FlightPath, GoogleAnalytics, Flurry, BugSense, Crashlytics (теперь часть Twitter Fabric), Crittercism, HockeyApp
TricksОбщие:1a. Часто возникают проблемы у пользователей с определенными девайсами или в определенных странах (например у Vodafone UK проблемы с WebP картинками). Для проверки такой экзотики можно использовать DeviceAnywhere (платный сервис), PerfectoMobile (платный сервис), Samsung Device Lab (бесплатно на некоторое время) 1b. Научитесть даунгрейдить прошивки - платформы фрагментированы, особенно Android и Blackberry. Облачные сервисы хороши, но стоят денег и не все компании имею достаточные денежные средства для оплаты. 2. Используйте цепочки кейсов “проблемы с сетью”, по максимуму используя роутер/проки/WANEm/Network Link Conditioner (MacOS, iOS) 3. Забивайте память девайса перед запуском приложения, тем самым:
4. Запускайте приложение в под дебаггером:
5. Научитесь вставлять логи в исходники вашего приложения. 6. Можно использовать dropbox если ваше приложение обновляет данные из xml/plist. Нам удавалось эмулировать целый сервер :) 7. Если нужен proxy-server - проще всего использовать CharlesProxy (есть мануал для iOS, Android девайсов и эмуляторов). 8. Введите культуру 'pre-qa', когда разработчик завершил девелопмент фичи, но не отправил на равью. Вы просто садитесь с разработчиком за его машину и тестируете 5-10 минут фичу под дебаггером - большинство самых простых и глупых ошибок найдется сразу. Также позволяет научить разработчика базовым навыкам тестирования, как минимум он будет повторять за вами сам - никому не хочется допускать глупые ошибки :) Android:1. Выставьте кастомные разрешения экрана эмулятора – позволит выявить проблемы с layout, если у Вас есть определенная нехватка девайсов 2. Если клавиатура переопределена (используется кастомная) – уделите этому дополнительное внимание. 3. Используйте "обезьянку" Application/UI Monkey Exerciser. Статья в помощь :) 4. Staged rollout и бета-версии - Ваш лучший друг. Для удобства очень рекомендую использовать TestFairy (статья в помощь) - можно видеть графики загрузки девайсов и видео от бета-пользователей. 5. Используйте do not keep activities iOS:1. Проверьте, не переопределены ли стандартные жесты. Например, при активации “Универсального Доступа” – активируются дополнительные жесты, они могут конфликтовать с жестами Вашего приложения (например, трех- и четырехпальцевый жест) 2. Используйте "обезьянку" AntEater или UIAutoMonkey 3. Покажите разработчикам сервис rollout.io, который позволяет 'патчить' некоторые краши на продакшене, переопределять параметры, показывать алерты с извинениями или делать некоторые кнопки неактивными. Нас он уже спасал несколько раз 4. Бета-версии и TestFairy, опять же, Ваши лучшие друзья. Бета программу можно делать с помощью решений Apple, которые купили TestFlight, но к можалению, есть некоторые искусственные ограничения - 1000 пользователей, первое ревью бета-версии. Сервисы дистрибуции тоже можно использовать для бета-программы. Отличный обзор сервисов на хабре: 1, 2, 3, 4 5. Для интерактивного тестирования верстки или проверки что все скрины убрались из иерархии можно использовать стандартные средства Xcode или Spark Inspector/Reveal |