Привет, Хабр!
Сегодня я хочу поделиться своим опытом тестирования десктопных приложений, который может быть особенно полезен для тех, кто сталкивается с вакансиями десктопного тестировщика.
Так какие особенности сопутствуют тестированию десктопных приложений?
-
Операционная Система
Необходимо помнить о различиях в системных вызовах, библиотеках и API, которые используются для взаимодействия с операционной системой. Например, для Windows приложения могут использовать WinAPI, для Linux - GTK или Qt, на macOS - Cocoa и Objective-C. Эти различия требуют адаптации кода под каждую конкретную операционную систему, а также новые версии ОС.
-
Оперативная память
Работоспособность приложения может зависеть от объема оперативной памяти устройства. Обычно, чем больше оперативной памяти, тем лучше приложение может обрабатывать данные и выполнять операции. Для десктопных приложений рекомендуется иметь не менее 4 ГБ оперативной памяти для стабильной работы. Когда приложение использует больше памяти, чем операционная система может предоставить, приложение начинает тормозить. В результате начинается использование виртуальной памяти, что замедляет производительность из-за более медленного доступа к данным.
-
Утечки памяти
Утечка памяти — это ситуация, при которой программа использует память компьютера менее эффективно, чем нужно. В результате этого процесса приложение продолжает потреблять больше и больше оперативной памяти, что в конечном итоге может привести к исчерпанию ресурсов системы. Утечки памяти могут серьезно повлиять на производительность и стабильность работы приложения.
Инструменты мониторинга памяти:
Task Manager в Windows
Activity Monitor в MacOS
Mtrace в Linux
-
Размеры экранов
Десктопные приложения должны адаптироваться к разным размерам экранов. Важно проверить масштабируемость на экранах различных размеров, обратить внимание на расположение и размер элементов интерфейса, чтобы они не перекрывались или не становились слишком мелкими на более крупных или более маленьких экранах.
Понять, какие размеры экранов наиболее распространены в вашем регионе, можно благодаря статистике.
Например, для РФ наиболее популярны разрешения экрана 1920x1080 (38.58%), 1366x768 (11.84%), 1536x864 (10.91%).
5. Гайдлайны
Hidden text
Гайдлайны – это набор правил и рекомендаций, определяющих, каким образом приложения должны выглядеть и вести себя на определенной платформе.
Интерфейс должен соответствовать гайдлайнам операционной системы, учитывать переходы и навигацию в окнах.
Ниже представлена сравнительная таблица некоторых пунктов в гайдлайнах Windows, Linux и MacOS.
Аспект |
Windows |
Linux |
MacOS |
Графический интерфейс |
Windows UX Design Principles. |
GNOME Human Interface Guidelines |
Human Interface Guidelines |
Оформление окон |
Fluent Design System |
GNOME Adwaita Theme |
Human Interface Guidelines |
Системные кнопки |
Кнопки в правом верхнем углу окна - "закрыть", "свернуть", "развернуть". |
Расположение и стиль кнопок могут зависеть от окружения рабочего стола. |
Кнопки обычно в верхнем левом углу окна - "закрыть", "свернуть", "развернуть". |
Работа с клавишами |
Часто использует комбинации клавиш с клавишей "Ctrl". |
Различные дистрибутивы могут использовать разные комбинации, но часто используется клавиша "Ctrl". |
Часто использует комбинации клавиш с клавишей "Command" (⌘). |
Типографика и шрифты |
Segoe UI, Calibri, Arial |
Cantarell, Ubuntu, DejaVu, Noto, Liberation |
San Francisco, Lucida Grande |
Системные уведомления |
Toast Notifications |
Desktop Notifications |
Notification Center |
Знание гайдлайнов помогает создавать приложения, которые соответствуют ожиданиям пользователей и интегрируются с окружением операционной системы.
6. Тестирование взаимодействия с устройствами
Неотъемлемой частью проверки десктопных приложений является интеграция с другими устройствами.
Если приложение предполагает работу с игровыми устройствами, необходимо проверить поддержку джойстиков, геймпадов, а также корректность распознавания их сигналов.
Удостоверься, что приложение правильно реагирует на действия с мышью и клавиатурой, включая различные типы мышей (сенсорные, обычные).
! Также важно проверить поддержку виртуальной клавиатуры, особенно если ваше приложение предназначено для устройств с сенсорными экранами.
7. Работа с Интернетом
При тестировании нужно учитывать зависимость приложения от интернета. Обрати внимание на работу:
Без подключения к интернету.
Во время прерывания интернета.
При различных условиях сети, например, использование 3G, 4G, 5G.
Не забывай учитывать как приложение:
Восстанавливает работу после прерывания.
Обрабатывает большие объемы данных при быстром и медленном интернете.
Как происходит синхронизация с облаком при изменении условий интернет-соединения.
Несколько инструментов в помощь:
Network Link Conditioner (для macOS/iOS)
Charles Proxy, Fiddler
Network Emulation в Android Emulator
8. Уведомления
При тестировании уведомлений следует учесть несколько аспектов:
Отображение: Убедись, что уведомления корректно отображаются на различных разрешениях экрана и в различных режимах окна приложения (развернутое, свернутое, полноэкранное).
Звук: Проверь, что звук уведомлений воспроизводится правильно и в соответствии с настройками звука пользователя. Убедись в наличии возможности включения и выключения звука для уведомлений.
Переход по уведомлениям: Проверь, что клик по уведомлению открывает соответствующее окно или выполняет предусмотренное действие. Удостоверься, что уведомления исчезают после их просмотра или выполнения действия. Также важно проверить отображение уведомлений в различных режимах энергосбережения, спящем режиме и тд.
! Учти, что стили и поведение системных уведомлений могут различаться в зависимости от операционной системы.
9. Работу в различных режимах компьютера
Проверка работы приложения в различных режимах компьютера включает в себя тестирование в режимах энергосбережения. Режимы, такие как High Performance, Balanced и Power Saver, могут влиять на производительность компьютера. Кроме того, стоит учесть режимы спящего режима, гибернации и быстрого запуска, если они доступны в операционной системе. Проверь, как приложение ведет себя в каждом из этих режимов.
10. Работа в foreground и background
Проверь, как приложение обрабатывает переход в фоновый режим. Удостоверься, что оно правильно сохраняет свое состояние, чтобы пользователь мог вернуться к предыдущим данным при возвращении.
11. Установка, обновление и удаление
Тестирование установки включает проверку:
установки для всех пользователей компьютера,
установки с правами админа и без,
проверка наличия указания издателя приложения,
предложенного пути для сохранения по умолчанию и возможности его изменения,
наличия ярлыка на рабочем столе и в меню пуск,
локализации и поведения при установке с разными языковыми настройками операционной системы.
Тестирование обновления включает проверку:
получения уведомлений о наличии новых версий приложения,
есть ли выбор у пользователя обновить или оставить старую версию приложения,
требования согласия пользователя на обновление,
сохранения данных и файлов пользователя после обновления.
Тестирование удаления включает проверку отсутствия удаленных файлов в директории установки, меню пуск, отсутствие ярлыка и логов приложения.
Тестирование десктопных приложений – это многогранный процесс, охватывающий различные аспекты взаимодействия пользователя с приложением и его работы в различных условиях. С учетом разнообразия операционных систем, устройств и сценариев использования пользователей, тестировщики десктопных приложений должны быть готовы к широкому спектру задач, чтобы обеспечить стабильность, производительность и удовлетворение конечного пользователя.
А что еще можно учесть при тестировании?
Комментарии (13)
Sergey_VR
27.12.2023 06:08+1Тстирование установки я бы рекомендовал именно на голую ОС. То есть на ту, где тестируемое приложение вообще не устанавливалось. Потому что совсем не факт, что при удалении приложения всё подчищается корректно (папки, ключи в реестре, библиотеки и т.д.). Виртуалки идеально для этого подходят;
Если есть работа с дробными числами, то в языковых настройках рекомендую проверить работу с обоими вариантами разделителя целой и дробной частей (точка и запятая). Встречал проблемы при вводе дробей в приложениях и при запуске командных файлов с дробями;
Вызов сторонних приложений надо тщательно проверять (если он есть, конечно). Офис, графика, pdf и т.д;
Комбинации клавиш надо также проверять. Особенно если есть компоненты, у которых есть быстрый вызов. Интересные явления возникают если у 2-х резидентов одинаковые комбинации клавиш задействованы :)
3vi1_0n3
27.12.2023 06:08+1В результате начинается использование виртуальной памяти, что замедляет производительность из-за более медленного доступа к данным.
Тут требуется уточнить, мне кажется.
Десктопные приложения в принципе с самого начала работы используют виртуальную память, которую операционная система им выделяет, а не оперативную память напрямую. Приложение может запросить больше памяти, чем физически доступный объём оперативной памяти в системе, и операционная система может вполне себе выделить этот объём. Она потому и называется виртуальной, что где хранить страницы памяти, в оперативной памяти или на диске (в свопе), решает операционная система, приложение обычно не может сказать "хочу столько-то физической оперативной памяти". Начинает тормозить обычно в случае, когда происходит активный обмен страницами между оперативной памятью и диском, что для самого приложения должно быть прозрачно. И основная причина - приложению требуется иметь доступ к бОльшему объему памяти, чем операционная система позволяет разместить в данный момент в оперативной памяти (либо потому,что другим приложениям она тоже требуется, либо потому, что приложение хочет больше, чем доступно физической памяти).
Sergey_VR
27.12.2023 06:08+1Ещё вспомнилось:
Если предусмотрена одновременная работа нескольких экземпляров, то надо проверить работу каждого экземпляра. А если такой режим непредусмотрен, то тем более надо проверять как будет выглядеть для пользователя запуск 2-го экземпляра. И как после неудачной попытки повторного запуска будет работать первый экземпляр;
Взаимодействие с устройствами обязательно проверить на ситуацию когда устройство в системе заявлено, а по факту недоступно. Приложение должно корректно обрабатывать эту ситуацию, а не выпадать в осадок.
MargoLog Автор
27.12.2023 06:08согласна.особенно, что касается приложений с отображением графиков(биржы)
korolevayuliya
Хотелось бы подробнее узнать о тестирование утечек памяти. Не хватило этой инфы
MedicusAmicus
После завершения ресурсоемких задач приложение (и его дочерние процессы) должно освободить ОЗУ. До фонового режима, или полностью, если оно закрыто.
Если в процессе работы было занято 2Гб оперативки, то после завершения эти 2Гб должны освободиться.
Ну и в режиме "простоя" потребление памяти не должно расти.
Karopka
Если выделяемая память передается во владение объекта-контроллера, который находится в области видимости диспетчера памяти приложения, то она скорее всего будет освобождена при завершении приложения, т.е., с Вашей точки зрения, утечки нет. В то же время, выделенная память может быть уже и не нужна в то же время, когда приложение "задыхается" от её нехватки. Как вы контролируете такую ситуацию?
MedicusAmicus
"в то же время, когда приложение "задыхается" от её нехватки"
Не понял, что вы имеете в виду.
Если приложение до начала обработки изображения занимало 100Мб, то, в идеальных условиях, после окончания обработки оно должно занимать те же 100Мб.
Если процесс отъел всю доступную ОЗУ и не осовобождает ресурсы после выполнения операции - снимаю дамп и отправляю разработчику. Он уже под отладчиком разберется, что, куда и почему.
Karopka
ОК, спасибо.