Автоматическое тестирование интерфейса. Лекция № 8

Содержание

Слайд 2

Где будете подробно изучать тестирование?

Курс «Проектирование и архитектура программных систем»
Бакалавриат, 6 семестр,

Где будете подробно изучать тестирование? Курс «Проектирование и архитектура программных систем» Бакалавриат,
раздел «Жизненный цикл ПО»
Курс «Тестирование программного обеспечения»
Бакалавриат, 6 семестр, 8 лекций, 24 практики
Курс «Современные технологии разработки ПО»
Магистратура, разделы TDD, Scrum, Crystal

Слайд 3

Понятия

Тестирование – процесс установления соответствия изучаемого объекта заданному эталону
Тестирование ПО –

Понятия Тестирование – процесс установления соответствия изучаемого объекта заданному эталону Тестирование ПО
процесс установления соответствия реального и ожидаемого поведения ПО на конечном наборе тестов
Тестирование интерфейса ПО – процесс установления соответствия реального интерфейса ПО заявленным требованиям удобства и функциональности

Слайд 4

Методы тестирования программных интерфейсов

Проведение фокус-групп – группа пользователей оценивает интерфейс
Практика 02
Лекции 02,

Методы тестирования программных интерфейсов Проведение фокус-групп – группа пользователей оценивает интерфейс Практика
03
Ручное тестирование – сверка соответствия интерфейса макетам дизайна и прототипа
Практика 13
Лекции 05, 07
Автоматическое тестирование – выявление ошибок и регрессионных багов
Сегодня, сейчас

Слайд 5

Автоматическое тестирование

Плюсы:
Низкая стоимость по сравнению с юзабилити-тестированием
Высокая скорость
Большой объект покрытия
Не требуется участие

Автоматическое тестирование Плюсы: Низкая стоимость по сравнению с юзабилити-тестированием Высокая скорость Большой
оператора
Минусы:
Только формальные признаки
Невозможность поиска «косметических» дефектов
Стоимость выше по сравнению с функциональными тестами

Слайд 6

Методы автоматического тестирования

Координатный метод
click(120,70)
type_keys("Hello world")
Распознавание образов
find("OK_button.png").click()
Подход, использующий механизмы реализации специальных возможностей и

Методы автоматического тестирования Координатный метод click(120,70) type_keys("Hello world") Распознавание образов find("OK_button.png").click() Подход,
особенности реализации GUI фреймворков
dlg.ColorComboBox.select("Green")
Гибридный метод

Слайд 7

Координатный метод

Каждый элемент графического интерфейса пользователя ищется по координатам, заданным относительно окна

Координатный метод Каждый элемент графического интерфейса пользователя ищется по координатам, заданным относительно
или экрана
Плюсы:
Быстрая разработка тестов
Простота поиска элементов при неизменности условий
Минусы:
Крайне дорогая поддержка тестов
Зависимость тестов от настроек платформы (разрешение, шрифты, DPI, ...)
Невозможность отслеживания состояний объекта (активна кнопка или нет, установлен флажок у checkbox’a или не установлен и т.д.)

Слайд 8

Координатный метод

Координатный метод

Слайд 9

Координатный метод

def main():
waitForObject(":_QWidget")
sendEvent("QResizeEvent", ":_QWidget", 22, 22, 769, 474)
waitForObject(":_QGraphicsItem")
mouseClick(":_QGraphicsItem", 221, 193, 1, Qt.LeftButton)
waitForObject(":_QLineEdit")
dragItemBy(":_QLineEdit",

Координатный метод def main(): waitForObject(":_QWidget") sendEvent("QResizeEvent", ":_QWidget", 22, 22, 769, 474) waitForObject(":_QGraphicsItem")
153, -191, 26, 198, 1, Qt.LeftButton)
waitForObject(":_QLineEdit")
sendEvent("QMouseEvent", ":_QLineEdit", QEvent.MouseButtonRelease, 179, 7, Qt.LeftButton, 1)
waitForObject(":MDC: Авторизация_QGraphicsView")
type(":MDC: Авторизация_QGraphicsView", "")
waitForObject(":MDC: Авторизация_QGraphicsView")
type(":MDC: Авторизация_QGraphicsView", " squish@mail.ru")
waitForObject(":MDC: Авторизация_QGraphicsView")
type(":MDC: Авторизация_QGraphicsView", "")
waitForObject(":MDC: Авторизация_QGraphicsView")
type(":MDC: Авторизация_QGraphicsView", "1234")
waitForObject(":MDC: Авторизация_CStartUpWidget")
sendEvent("QMoveEvent", ":MDC: Авторизация_CStartUpWidget", 577, 70, 734, 62)
mouseClick(":MDC: Авторизация_QWidget", 66, 372, 1, Qt.LeftButton)
waitForObject(":MDC v1.0.3.1.nightly_CContactListWidget")

Слайд 10

Распознавание образов

Метод поиска элементов UI с использованием распознавания образов и (или) сравнение

Распознавание образов Метод поиска элементов UI с использованием распознавания образов и (или)
с образцом
Плюсы:
Быстрая разработка тестов
Простота поиска элементов при неизменности условий
Минусы:
Крайне дорогая поддержка тестов
Зависимость тестов от настроек платформы (разрешение, шрифты, DPI, ...)
Низкая «интеллектуальность» тестов

Слайд 11

Распознавание образов – пример теста

Запустить приложение
Найти главное окно приложения
Найти требуемый элемент, сравнив

Распознавание образов – пример теста Запустить приложение Найти главное окно приложения Найти
в шаблоном
Произвести действие

Слайд 12

Accessibility метод

Метод управления UI через встроенные в ОС/SDK технологии воздействия на элементы

Accessibility метод Метод управления UI через встроенные в ОС/SDK технологии воздействия на
UI
Технологии
Microsoft Active Accessibility (MSAA)
Assistive Technologies Service Provider Interface (AT-SPI)
Плюсы
более тесное взаимодействие с элементами UI
независимость от параметров отображения
Близкий к кодированию язык
Минусы
не всегда есть поддержка
слабая кроссплатформенность

Слайд 13

Accessibility технологии

Accessibility технологии

Слайд 14

Accessibility метод Пример скрипта на pywinauto

Accessibility метод Пример скрипта на pywinauto

Слайд 15

Гибридный подход

На этом примере:
Координатный метод для тестирования управления элементами формы
Распознавание образов для

Гибридный подход На этом примере: Координатный метод для тестирования управления элементами формы
анализа диаграммы

Слайд 16

Гибридный подход: инструментарий

Windows
Coded UI (Visual Studio)
Ranorex Automation Tools
Winium.Cruciatus (2GIS)
Microsoft UI Automation (MSAA)
AutoIt
Web
Selenium

Android
Espresso

Гибридный подход: инструментарий Windows Coded UI (Visual Studio) Ranorex Automation Tools Winium.Cruciatus
(Google)
Robotium
UI Automator
Monkey testing
iOS
iOS UI Testing
Универсальные
Robot Framework

Слайд 18

Selenium

[info] Executing: | open | https://www.google.com.ar/?gws_rd=ssl | |
[info] Wait for the new

Selenium [info] Executing: | open | https://www.google.com.ar/?gws_rd=ssl | | [info] Wait for
page to be fully loaded
[info] Executing: | click | id=lst-ib | |
[info] Executing: | type | id=lst-ib | test |
[info] Wait for all ajax requests to be done
[info] Executing: | sendKeys | id=lst-ib | ${KEY_ENTER} |
[info] Wait for the new page to be fully loaded
[info] Executing: | click | link=test — Википедия | |
[info] Test case passed

Слайд 19

Онлайн-сервисы

Яндекс Метрики – Вебвизор, тепловая карта кликов
Optimal Workshop – Treejack (информационная архитектура)
FengGUI
и

Онлайн-сервисы Яндекс Метрики – Вебвизор, тепловая карта кликов Optimal Workshop – Treejack
огромное количество онлайн-сервисов для юзабилити-тестирования

Слайд 20

Что мы не успели изучить?

Практические занятия:
Интерфейсы для совместной и коллективной работы (пропало

Что мы не успели изучить? Практические занятия: Интерфейсы для совместной и коллективной
занятие 2 мая)
Средства тестирования интерфейса (пропало занятие 9 мая)

Слайд 21

Что мы не успели изучить?

Разделы (нельзя объять необъятное!)
Отличия Machine-Centered Design, User-Centered Design,

Что мы не успели изучить? Разделы (нельзя объять необъятное!) Отличия Machine-Centered Design,
Human-Centered Design, Activity-Centered Design, Goal-Centered Design
Интерфейсы технических устройств
Различные методы анализа контекста
Методы повышения конверсии приложений с помощью интерфейса
Инфографика
Типографика
и другое

Слайд 22

Что мы не успели изучить?

Не успели поговорить о людях:
Алан Купер
Алан Дикс
Скотт МакКензи
Джеф

Что мы не успели изучить? Не успели поговорить о людях: Алан Купер
Раскин
Бен Шнайдерман
Ларри Константин
Сергей Орлик
Сергей Жарков
и другие