Do it yourself: как тестировать приложение без QA |
24.04.2024 00:00 |
Автор: Женя Шаповалов, Senior Android/Flutter Developer в компании Innowise (и хэд mobile department там же). В мобильной разработке я с 2015 года, начинал с Android, а за Flutter мы принялись вместе с коллегами в Innowise - да так мощно, что в итоге в компании появилось отдельное направление разработки. Сегодня рассказываю, как правильно тестировать код, и делимся личным опытом. Да-да, ты все понял верно: при разработке мобильных приложений тестирование проводит не только QA-инженер, но и сам автор кода. Причем не только в самом конце, когда приложение почти готово, но и в процессе. Мы сегодня рассмотрим оба этапа. Логика компонентов Что проверяем: реализованная логика должна соответствовать описанной в задаче. Так что уделяем внимание и логике работы внутри приложения, и его взаимодействию с источниками данных и внешними компонентами. А именно: В рамках этого необходимо уделить внимание как логике работы внутри приложения и его взаимодействия с источниками данных, так и внешними компонентами: 1.1.1 Проверяем корректность данных в приложении (с помощью сопоставления данных в Postman или сборки противоположной платформы). 1.1.2 Тестируешь взаимодействие приложения с локальной базой данных? Используй внешний инструмент (DB Browser for SQLite) для управления базой данных. Это ускорит работу с SQL-запросами. 1.1.3 При тестировании взаимодействия с системным компонентом / внешним приложением (Внешний Браузер, Галерея, Камера, Почтовый клиент, ...) удели внимание следующим ситуациям:
1.1.4 Важно, чтобы приложение правильно реагировало на внешние факторы и действия пользователя со стеком приложений:
1.1. Свернуть приложение в Background 1.2. Вернуть приложение в Foreground (через Task Manager и иконку приложения) 1.3. Остановка приложения и его перезапуск 1.4. Взаимодействие с Home кнопкой 2. Изменение скорости интернет-подключения: 2.1. Переход с WiFi на Mobile Data и обратно 2.2. Изменение скорости сети с 4G, 3G, 2G 3. Прерывание работы внешними ивентами: 3.1. Входящий вызов 3.2. SMS 3.3. Push-notification UI Что проверяем: верстку экрана. 1.2.1 Она должна полностью совпадать с макетом:
1.2.2 Верстка экрана проверяется на девайсах разных размеров (минимальном и максимальном):
1.2.3 Вёрстку экрана необходимо протестировать во всех возможных реализациях:
UX Что проверяем: реализацию экрана с точки зрения удобства для пользователя. На этом этапе важно убедиться, что поведение экрана соответствует описанному в задаче, нет критических проблем, которые блокируют виджеты и препятствуют взаимодействию с пользователем. Тут масса нюансов ⎼ пробежимся по самым очевидным. 1.3.1 Случаи, когда экран становится неинтерактивным:
1.3.2 При тестировании логики загрузки данных на экране необходимо проверить, что обработаны все необходимые состояния экрана:
1.3.3 При заполнении экрана контентом он должен быть отрисован в понятном и удобном для пользователя виде:
1.3.4 При тестировании запросов и логики валидации данных проверяем, чтобы все состояния ошибок обработаны и понятны пользователю:
1.3.5 Если есть поля ввода, удостоверься, что пользователю удобно вводить текст:
Также важно проверить, что клавиатура не закрывает важные компоненты и при этом правильно сдвигает, сжимает или перекрывает оставшуюся часть экрана. 1.3.6. Тестируешь состояния виджетов действий? Убедись, что они обновляют свои состояния:
1.3.7 При тестировании локализации проверь, что приложение поддерживает требуемый набор языков:
1.3.8 Тестирование работы с системными компонентами требует проверки приложения на наличие permissions:
1.3.9 При тестировании функциональности приложения, которая доступна с определённой версии системы, проверь, что обработаны следующие состояния:
1.3.10 И наконец: тестируя логику восстановления состояния приложения, убедись, что пользователь возвращается к тому состоянию, которое было для него последним в приложении. Тестирование билда Когда приложение более-менее готово, а ты вроде бы не прочь показать его миру ⎼ наступает время проверять сборку. Что надо тестировать на этом этапе? 2.1.1 Файл сборки (.apk, .ipa) обязан быть рабочим и без проблем устанавливаться на любой девайс. Приложение не должно содержать явных крэшей, которые можно воспроизвести очень просто. 2.1.2 При тестировании новой версии приложения её необходимо как устанавливать поверх старой версии (эмулировать обновление), так и выполнять чистую установку (эмулировать загрузку с магазина) Установка поверх старой версии нужна, чтобы проверить, что приложение обновляется, старая логика не сломана обновлением, а при обновлении новая логика доступна пользователю. 2.1.3 При подготовке сборки для релиза проводится регрессионное тестирование: поэтапная проверка основной функциональности приложения на корректность работы. 2.1.4 Приложение имеет правильное название, иконку и логотип, а минимальная версия соответствует заявленной. 2.1.5 Тестирование сборки необходимо проводить как на эмуляторах/симуляторах, так и на реальных девайсах. Нужно по максимуму использовать девайсы от различных компаний: Apple, Huawei, Samsung, Lenovo, HTC, Nokia и пр. 2.1.6 Если приложение содержит личные данные пользователя, ты обязан проверить, что при удалении приложения данные исчезают из файловой системы. |