Ответ
Тестирование смены ориентации (портретной на ландшафтную и обратно) необходимо, потому что пользователи часто вращают устройство для удобства просмотра контента, и приложение должно корректно адаптироваться к этому изменению.
Основные цели тестирования:
- Сохранение состояния (State Retention): Данные на экране (текст в полях, позиция прокрутки, выбранные элементы) не должны теряться или сбрасываться при повороте. Это обеспечивается правильной обработкой событий жизненного цикла Activity/Fragment (
onSaveInstanceState,onRestoreInstanceState). - Целостность UI: Элементы интерфейса не должны накладываться, обрезаться или становиться недоступными. Вёрстка должна перестраиваться в соответствии с новыми размерами экрана.
- Функциональность: Все интерактивные элементы должны оставаться кликабельными, а клавиатура — корректно отображаться в обеих ориентациях.
- Производительность: Перерисовка экрана при повороте не должна вызывать заметных лагов или падений приложения.
Пример ручного тест-кейса:
- Открыть экран с формой.
- Ввести текст в поле
EditText. - Повернуть устройство в ландшафтную ориентацию.
- Ожидаемый результат: Введённый текст сохраняется в поле, форма остаётся полностью видимой и функциональной.
Автоматизация (псевдокод):
// Используя UIAutomator или Appium можно симулировать поворот
device.setOrientationLeft(); // Поворот в ландшафт
// ... проверки состояния UI ...
device.setOrientationNatural(); // Возврат в портрет
// ... проверки, что состояние сохранилось ...
Игнорирование этого типа тестирования приводит к плохому пользовательскому опыту и восприятию приложения как ненадёжного.
Ответ 18+ 🔞
Да ты посмотри на них, на этих пользователей! Вращают они своё устройство, как будто в рулетку играют — то портрет, то ландшафт, то опять портрет. И приложение твоё должно, сука, как швейцарские часы, перестраиваться, не теряя ни одной буквы, ни одной цифры. А иначе — пиздец, нахуй, рейтинг в маркете ниже плинтуса, и все тебя будут ненавидеть.
Вот в чём, блядь, соль-то:
Чего мы хотим добиться, чтобы не было мудацких ситуаций:
- Чтобы всё на месте оставалось (State Retention): Ввёл юзер текст в поле, повернул телефон — а там пусто, блядь! Вот это пиздец, вот это пизда! Чтобы этого не было, твоя Activity/Fragment должна уметь вовремя схватить всё состояние и потом его вытащить обратно, как из кармана.
onSaveInstanceState,onRestoreInstanceState— это святое, ёпта! Прокрутку запомнить, выбранную хуйню запомнить, всё. - Чтобы интерфейс не разъехался (Целостность UI): Повернул — а кнопки нахрен под экран уехали, или текст на картинку налез. Этого быть не должно, блядь! Вёрстка должна быть не упоротая, чтобы и там, и тут всё красиво и доступно было.
- Чтобы всё работало (Функциональность): Кнопки чтоб нажимались, клавиатура чтоб выезжала и не перекрывала поле ввода. Вообще, чтобы пользователь не орал: «Да как же нажать-то, блядь?!»
- Чтобы не тормозило (Производительность): Пересобрало экран — и всё, быстро, чётко. Не должно виснуть, как будто мир перезагружается. И упасть — тем более.
Как это руками проверить, если ты не ленивая жопа:
- Открываешь экран, где есть форма.
- Вбиваешь в поле какую-нибудь похабщину, типа «тест123».
- Берёшь и хуяк — поворачиваешь телефон боком.
- И если ты не мудак, то увидишь: Твоя похабщина «тест123» так и осталась на месте, никуда не делась. И форма не разъехалась, и ты можешь дальше с ней работать. Вот это победа!
А если ты совсем умный и хочешь автоматизировать эту хуйню (псевдокод):
// Эмулируем, что пользователь — вертушка
device.setOrientationLeft(); // Повернули в ландшафт, ёба!
// ... тут проверяем, что мир не рухнул ...
device.setOrientationNatural(); // Вернули как было
// ... и снова проверяем, что всё на своих местах ...
А если этим пренебречь, то получишь, блядь, приложение-одноразовку. Пользователь повернёт телефон, всё слетит — и он тут же пошлёт тебя нахуй. И будет прав, сука. Так что не хуй собачий, а тестируй эту смену ориентации.