Автоматизация тестирования ПО
Введение | |
WEB | |
Desktop | |
Выбор языка программирования | |
Автотестирование API | |
Производительность | |
CI/CD | |
Связанные статьи |
Введение
Обычно под автоматизацией тестирования подразумевается что-то из списка:
- Использование софта для симуляции действия пользователя на сайте.
- Использование софта для симуляции действия пользователя в приложении.
- Автоматическое тестирование API
- Создание инструментов, которые помогают тестировщикам
- Написание скриптов для тестирования производительности
- Внедрение тестовых скриптов в существующий CI/CD процесс.
Как в русскоязычной, так англоязычной среде нет на сто процентов устоявшегося термина для автоматизации тестирования.
Частота запросов по фразам Test Automation и Automated Testing в Google сопоставима в США.
Но в мире более популярным является вариант Test Automation
WEB: Симуляция действий пользователя
Более современная библиотека для симуляции браузера - PlayWright
В автотестировании сайтов, или как это можно ещё назвать - Web UI Testing,
в основном всё было завязано на
Selenium
Можно изучить эту библиотеку и использовать вместе с одним из
следующих языков программирования:
Выбор языка
Так как и
Selenium
и
Playwright
поддерживают работу с совершенно разными языками программирования
перед начинающим тестировщиком может встать вопрос - на каком из них стоит
изучать автоматизацию.
Если вы уже работаете тестировщиком и хотите начать автоматизацию в той же компании -
ответить на этот вопрос сможет
DevOps
инженер или тот, кто выполняет эту функцию, сисадмин или кто-то из разработчиков.
Решающий фактор - это имеющаяся инфраструктура. Ваши автотесты будут интегрированы
в существующий
CI/CD
процесс и делать это желательно самым органичным образом.
Например, если все используют
Maven
то и тесты желательно писать на
Java
а если везде
Ruby
то вам возможно нужно присмотреться к Watir а не к чистому Selenium.
Что делать, если вы пока нигде не работаете?
Советую изучить сайты с вакансиями и выучить ту связку язык-фреймворк, на которую больше спрос.
Я пользовался следующими связками:
- Selenium + Java
- Playwright + Python
- Selenium + Python
- Selenium + Robot Framework
- RFBrowser + Robot Framework
Python
я выбрал, потому что немного знал язык + он присутствует во многих вакансиях.
Java
я выбрал, потому что это наиболее родной язык, часть Selenium написано на Java + в
интернете довольно много самоучителей именно по этой связке.
Пара слов про библиотеку Selenium.
Учить сам
Selenium
необязательно. Существует несколько фреймворков более высокого уровня
с «более простыми» командами, рассчитанные на непрограммистов.
Самый популярный из них это, пожалуй
Robot Framework
Есть ещё
Watir
Cucumber
и другие.
С появлением
Playwright
многие проекты переориентируются на него с Selenium.
Автоматическое тестирование десктоп приложений
Существует ряд фреймворков, которые позволяют
имитировать действия пользователя в десктопных приложениях.
Под
Windows
мне доводилось использовать проприетарный
TestComplete
и Opensource библиотеку
PyWinAuto
В данный момент не имею достаточно опыта с последней, но уже столкнулся с ситуацией, где
TestComplete не разобрался с WPF объектами а PyWinAuto справился.
Другие фреймворки/библиотеки для тестирование десктопа
- WinAppDriver от Microsoft. Статус - неактивен с 2021-го года
- Winium . Статус - неактивен с 2016-го года
Автоматическое тестировани API
Первый шаг к автоматическому тестированию API - это изучение
обращений к API с помощью какого-либо инструмента.
Как обращаться к REST API с помощью
Python 3
вы можете узнать
здесь
Примеры обращений к API GitHub с помощью
curl
можете изучть
здесь
Создание инструментов для тестировщиков
Не самая очевидная трактовка термина автоматизация, но мне приходилось этим заниматься. Допустим тестировщик для
проведения теста делает одни и те же действия вручную, например, что-то скачивает или устанавливает.
Разработчик написал скрипт, который будет делать часть этих действий на порядок быстрее.
Этот скрипт очевидно является автоматизацией.
Он участвует в процессе тестирования
Сам по себе тестом не является.
В данном случае я склоняюсь к том, что разработчик поучавстовал в автоматизации тестирования. Если написание таких скриптов -
это его основная деятельность, можно назвать его инженером по автоматизации тестирования. Даже если созданные инструменты
ничего не тестируют напрямую их вклад в эффективность тестирования может достигать значений близких к 100%.
Написание скриптов для тестирования производительности
В этой дисциплине понадобится знание хотя бы одного языка программирвоания.
Выбор широк и завист от стэка компании. Но в целом это может быть как
Bash Scripting
так и
Python
или
Golang
Пример простейшего
Bash
скрипта, который мониторит состояние системы можете изучить
здесь
Внедрение тестовых скриптов в существующий CI/CD процесс.
Это совсем другая история и учить нужно инструмент, который используют для CI/CD . Это может быть
или что-то ещё.
Умение грамотно интегрировать свои тесты - это первый шаг в направлении к DevOps