В данном руководстве я расскажу о модульном тестировании GUI с помощью Qt Test, фреймворка Qt для модульного тестирования кода на C++. В частности, я расскажу, как написать базовый юнит-тест для класса виджета, как имитировать события мыши и клавиатуры и как для графических интерфейсов писать тесты, управляемые данными. Она визуализирует многие компоненты в виде графических объектов, например, кнопки, меню, стрелки и т. Графический пользовательский интерфейс (GUI) — это уровень представления программы, сайта или мобильного приложения.
GUI считается автоматизированым тестированием или можно и манульно это делать? / Я просто много где уже перечитал и так и не могу понять,некоторые только и пишут про GUI как автоматизированое тестирование,а другие пишут про GUI как мануальное. Полный исходный код данного руководства доступен на GitHub.
Сами пункты проверки могут быть «общими», а могут быть достаточно «подробными». Интерфейс командной строки, где вы набираете текст и компьютер ответчик к этой команде. Особенно акцент делается на дизайн структуры, образы, которые они работают должным образом или нет. Бизнес-логика, процессы, данные и транзакции, вычисления — все это управляется функционалом бэкенда. Результаты работы бэкенда затем показываются пользователю через интерфейс (текстовый или графический).
Тестирование GUI участвует проверку экранов с элементами управления, такими как кнопки меню, иконка и все виды баров – панели инструментов, панели меню, диалоговым окном и т.д. Более продвинутый способ выполнения модульного тестирования графического интерфейса с помощью Qt Test – это тестирование на основе данных. Идея состоит в том, чтобы разделить тесты и данные, чтобы избежать длинного списка похожих макросов QVERIFY или QCOMPARE и повторения всего кода, необходимого для инициализации теста. Успех программного продукта очень зависит от того, как GUI взаимодействует с пользователем и легкость в использовании его различных функций. Ручное тестирование GUI может быть иногда повторяющимся и скучным. Автоматизация настоятельно рекомендуется для тестирования графического интерфейса пользователя.
Это означает, что дизайн и код должны быть способны адаптироваться к изменениям в функциях. Благодаря этому обслуживание пользовательского интерфейса становится простым. В противном случае поддержка GUI при меняющихся требованиях будет дорогостоящей. Юзабилити-тестирование проверяет, насколько легко пользователь может работать с приложением. Давайте рассмотрим основные аспекты удобства использования, которые нужно проверить. Если полученный и заранее определенный результаты совпадают, это означает, что функции приложения работают в соответствии с нашими ожиданиями.
Например, текстовое поле позволяет пользователям вводить в него текст и выводить его на экран. Функциональное тестирование проверяет, правильно ли это происходит. Функциональное тестирование определяет, работает ли пользовательский интерфейс в соответствии с функциональными требованиями. Сначала необходимо определить функции, которые вы хотите протестировать.
GUI-тестирование важно проводить, чтобы в дальнейшем не потерять потенциальных пользователей тестируемого приложения, ведь оно помогает выявить проблемы качества и удобства. А это те вещи, которые очень важны для обычных пользователей. Нажатие кнопки CONCAT объединяет строки двух полей ввода и выводит результат на виджет надписи QLabel. Ничего особенного или сложного, но это всего лишь пример. Автоматизированное тестирование проходит быстрее и позволяет обрабатывать несколько тест-кейсов одновременно.
А делаете вы это тактильно/визуально или опосредованно, через некие Фреймворки/ЯП/АПИ – дело десятое. Тестирование кода GUI обычно требует подхода, https://deveducation.com/ отличающегося от обычного модульного тестирования. Это потому, что обычно тестирования общедоступных функций виджета недостаточно.
Обратите внимание, что в этом случае я не использовал QCOMPARE, потому что он не работает со статической константой, определенной в другом классе. Возможное решение этой проблемы – присвоить внешнюю статическую константу локальной константе и передать ее QCOMPARE, но в этом случае я решил упростить задачу и использовал QVERIFY. В этом примере TestSize проверяет, установлен ли минимальный размер панели. Кликеры как раз и работают посылая в программу какой-нибудь WM_RBUTTONDOWN или ButtonPress с нужными координатами. Если в оконной системе нет возможности посылать события другим программам, то ой. Нужно лезть в потрошка Qt и писать что-то используя какой-нибудь QTest.
Графический интерфейс пользователя (англ. Graphical User Interface, сокращенно – GUI) содержит визуальные элементы, такие как кнопки, текстовые поля, меню, флажки, изображения и т.д. Тестирование GUI относится к проверке функций или возможностей, которые видны пользователям, поэтому его также называют тестированием пользовательского интерфейса. GUI-тестирование — это тестирование интерфейса пользователя.
Интерфейс пользователя — это «посредник» между программным обеспечением и пользователем приложения. По большому счету, качество пользовательского интерфейса напрямую влияет на удобство и функциональность программного продукта. Если приложение будет функциональным, а интерфейс «не очень», тогда у пользователей просто не будет возможности воспользоваться всей функциональностью приложения. GUI означает графический интерфейс пользователя, где вы взаимодействуете с компьютером, используя изображения, а не текст. Его цель – обеспечить конечному пользователю беспроблемную работу. Поскольку пользователи часто не знают о специфике пользовательского интерфейса, они обращают внимание на дизайн приложения, его цвета, а также на то, легко ли в нем ориентироваться.
Это и есть базовая причина тому, почему тестирование GUI крайне важно и должно выполняться надлежащим образом. При выполнении модульного тестирования GUI с помощью Qt Test вы обычно хотите протестировать обычное использование графического интерфейса. Это означает тестирование того, как ваши виджеты реагируют на события мыши и клавиатуры. Еще одно базовое тестирование графического интерфейса – проверка правильности установки всех важных свойств виджета и его элементов. В этом случае проверка довольно проста, поскольку код просто проверяет, не являются ли указатели различных внутренних виджетов NULL. В реальном приложении всё может быть сложнее, так как некоторые элементы создаются не всегда, и поэтому при модульном тестировании важно охватить все случаи.
Чтобы ответить на них, нужно думать не как тестер, а как пользователь. Поскольку только GUI является тем ключевым фактором, который в действительности определяет, есть ли желание gui это у пользователя использовать ПО сейчас и в будущем, или нет. В следующем и последнем посте этой серии я расскажу о более продвинутом модульном тестировании GUI с помощью Qt Test.
Если пользователь ощущает дискомфорт (например, из-за низкого качества изображений или текста, запутанной структуры меню), он очень быстро выйдет из программы. Если это мобильное приложение, оно, вероятно, будет удалено в течение нескольких минут. Элементы пользовательского интерфейса — это компоненты, позволяющие пользователю взаимодействовать с программой.
Мы должны обеспечить загрузку программного обеспечения в течение 3-6 секунд. А в завершение статьи давайте рассмотрим практический пример стандартного юзкейса тестирования GUI. Зеленые пометки на скриншоте — это ссылки на конкретные действия по тестированию, описанные ниже.
Проверка GUI — это особый вид тестирования ПО, при котором реализуется проверка соответствия графического интерфейса пользователя установленным стандартам и нормам, заявленных клиентом. Такие проверки состоят из валидации объектов пользовательского интерфейса, которые непосредственно отображаются пользователям при их взаимодействии с программным обеспечением. Всё, что пользователь видит перед собой и есть графический интерфейс.
Самой распространенной проблемой приходят при этом регрессионного тестирования является то, что GUI приложения часто меняется. Это очень трудно проверить и определить, является ли это проблемой или аксессуара. Проблема проявляется, когда у вас нет каких-либо документов, касающихся изменений GUI. Проверьте расположение элементов графического интерфейса для различного разрешения экрана.
Затем – определить входные и выходные данные в соответствии с требованиями. После этого можно выполнить тест-кейсы и сравнить фактический результат с ожидаемым. По сути, пользовательский интерфейс — это все возможности и функции, доступные пользователю в программе. А поскольку это именно та часть ПО, с которой взаимодействует пользователь, важность ее тестирования очевидна. Визуальный шум повышает сложность системы пользовательского интерфейса. Ненужные пробелы и контрастность являются причиной этой проблемы.
Тестирование графического интерфейса — это проверка этих компонентов. Главной особенностью любой программы является графический пользовательский интерфейс (GUI), обеспечивающий взаимодействие с программой. Чтобы предоставить данные тестовой функции, вы должны создать еще один частный слот с тем же именем функции, но с дополнительным суффиксом « _data ». Например, функцией данных для TestConcat() является TestConcat_data().
Во время записи шаги теста записываются инструментом автоматизации. Во время воспроизведения записанные этапы тестирования выполняются в тестовом приложении. GUI тестирование, является проверкой указанных элементов[1]. Время отклика программного обеспечения должно быть небольшим.
Быстрое развитие мобильных технологий повлекло за собой рост конкуренции в индустрии разработки приложений. Благодаря этому все современные популярные программы визуально привлекательны, просты в использовании и надежны. Единственный способ добиться такого результата, помимо эффективной разработки, — тщательное тестирование. Глобальная идея GUI тестирования состоит в том, чтобы сделать визуальную часть максимально привлекательной и удобной для повсеместного использования. То есть, тест-кейсы не всегда должны содержать шаблонные условия проверки. Порой без методик исследовательского тестирования никак не обойтись.