Быстрый и простой способ регрессионного тестирования ваших пользовательских интерфейсов

Выпуск новой версии вашего продукта может вызвать стресс, когда не будут приняты необходимые меры, гарантирующие контроль качества. Предполагая, что ваш продукт имеет пользовательский интерфейс (UI), рекомендуется проводить тестирование UI перед каждым выпуском.

Разумеется, у вас есть интеграционные тесты, и вы уверены, что система будет работать непрерывно, включая пользовательский интерфейс. Однако, в зависимости от отрасли, в которой вы работаете, а также от важности вашего приложения, возможно, вам захочется убедиться и доказать, что оно работает. Учитывая, что это то, что вы хотели бы повторять каждый раз при выпуске приложения, вы можете автоматизировать этот тип тестирования.

Быстрый и простой способ сделать это - использовать библиотеку Python под названием PyAutoGUI, которая позволит вам выполнять автоматическое тестирование пользовательского интерфейса.

Введение PyAutoGUI

PyAutoGUI - это, по сути, пакет Python, который работает в Windows, MacOS X и Linux, который предоставляет возможность имитировать движения и щелчки курсора мыши, а также нажатия кнопок клавиатуры.

Вы можете найти более подробную информацию о пакете на их домашней странице, включая краткий обзор, показанный ниже:

import pyautogui
screenWidth, screenHeight = pyautogui.size()
currentMouseX, currentMouseY = pyautogui.position()
pyautogui.moveTo(100, 150)
pyautogui.click()
pyautogui.moveRel(None, 10)  # move mouse 10 pixels down
pyautogui.doubleClick()
pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad)  # use tweening/easing function to move mouse over 2 seconds.
pyautogui.typewrite('Hello world!', interval=0.25)  # type with quarter-second pause in between each key
pyautogui.press('esc')
pyautogui.keyDown('shift')
pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
pyautogui.keyUp('shift')
pyautogui.hotkey('ctrl', 'c')

Пример использования

Чтобы увидеть, как это будет работать на практике, давайте быстро соберем образец скрипта Python. Мы начнем с предположения, что наше приложение Firefox (в качестве примера) было развернуто на тестируемой машине с Windows 10, и мы хотели бы автоматически протестировать определенные аспекты пользовательского интерфейса.

Первое, что нужно сделать, это импортировать пакет и зафиксировать размер нашего экрана. Мы также можем предположить, что панель задач Windows всегда будет в нижней части экрана, поэтому мы можем продолжить и запустить кнопку меню «Пуск».

import pyautogui as gui, time
screenWidth, screenHeight = gui.size()
gui.moveTo(0,screenHeight)
gui.click()

Как только приведенный выше код будет выполнен, мы можем найти Firefox, а затем запустить его.

gui.typewrite('Firefox', interval=0.25)
gui.press('enter')

Я добавил интервал для ввода каждой буквы, чтобы обслуживать более медленные машины. Затем нам нужно убедиться, что окно развернуто до размера экрана. Для этого в Windows используется сочетание клавиш Alt + Пробел, за которым следует x.

time.sleep(2) #give 2 seconds for firefox to launch
gui.keyDown('alt')
gui.press(' ')
gui.press('x')
gui.keyUp('alt')

На этом этапе мы можем начать добавлять функции, которые мы хотели бы протестировать с помощью нашего инструмента. Например, мы можем захотеть протестировать открытие новой вкладки и ввод текста на веб-сайте. Для этого мы хотели бы знать, где на экране находятся определенные места. Чтобы идентифицировать их, мы можем запустить следующий скрипт в фоновом режиме и видеть выходные данные о местоположении, когда мы наводим курсор на то, что нам нужно:

import pyautogui as gui, time
def identifyloc():
    while True:
        currentMouseX, currentMouseY = gui.position()
        print(currentMouseX,currentMouseY)
        time.sleep(3)
identifyloc()

Используя это, я определил, что кнопка «Новая вкладка» находится в месте (250,22), а адресная строка - в (371, 51). Следовательно, я могу использовать следующий код:

gui.click(250,22)
gui.click(371,51)
gui.typewrite('https://medium.com/financeexplained')
gui.press('enter')

Затем мы можем продолжить и добавить столько сценариев тестирования, сколько захотим. Конечно, в конце выполнения всего этого кто-то все равно должен будет просмотреть журналы и пользовательский интерфейс, чтобы убедиться, что мы не обнаружили никаких ошибок.

Собираем все вместе:

import pyautogui as gui, time
def testfirefox():
    screenWidth, screenHeight = gui.size()
    gui.moveTo(0,screenHeight)
    gui.click()
    gui.typewrite('Firefox', interval=0.25)
    gui.press('enter')
    time.sleep(2)
    gui.keyDown('alt')
    gui.press(' ')
    gui.press('x')
    gui.keyUp('alt')
    gui.click(250,22)
    gui.click(371,51)
    gui.typewrite('https://medium.com/financeexplained')
    gui.press('enter')
def identifyloc():
    while True:
        currentMouseX, currentMouseY = gui.position()
        print(currentMouseX,currentMouseY)
        time.sleep(3)
testfirefox()

Прежде чем вы уйдете, я часто пишу в блог о финансах и технологиях. Если вы хотите быть в курсе моих статей, не забывайте подписываться на меня!