Я думаю, каждый тестировщик хоть раз в жизни сталкивался с вопросом о том, автоматизировать или не автоматизировать? И поверьте, этот вопрос для нас звучит даже серьезнее, чем знаменитый "Быть или не быть...". Чем же автоматизация так хороша?
Во-первых, она позволяет существенно сократить время на тестирование, например, при выходе новой версии ПО. Во-вторых, автоматизация исключает человеческий фактор: представьте, что у вашего тестировщика всю неделю, отведенную на тестирование новой версии, была мигрень на фоне нестабильного состояния геомагнитного поля, но при автоматизации это никак не скажется на качестве конечного продукта.
Очевидно, что клиент охотнее выберет быстроту доставки и качество продукта. Поэтому, когда у меня на проекте начались размышления на эту тему, все были только "за" и на этой волне решено было провести реинжиниринг процесса тестирования. Тут то и произошел круговорот технологий в природе, ведь для автоматизации тестирования программного обеспечения уже создано множество инструментов: Selenium, HP QuickTest Professional, IBM Rational Functional Tester и т.д. А к этим инструментам прикручиваются системы анализа автотестов, отчетности, интеграции с баг-трекинговыми системами. К слову сказать, в айтишных кругах я часто слышу шутку о том, как мучается программист при желании попробовать новый javascript-фреймворк. Все дело в том, что они "растут" как грибы после дождя и у программиста разбегаются глаза от того, какой же именно выбрать.
Итак, как было у нас? Моя компания —«Сервис Плюс» разрабатывает новый многофункциональный кассовый софт для розничных торговых сетей с дивным названием «универсальный кассовый модуль версии 5», сокращенно УКМ5. То есть, надо тестировать не только работу самого приложения, но и работу оборудования (сканер, контрольно-кассовую технику, считыватель магнитных карт, интеграцию с банками и т.д.). Задача нетривиальная: эмитировать работу оборудования в одном из инструментов для автоматизации. Мы решили начать с малого и исследовать возможности Selenium IDE. И он нам не подошел по нескольким причинам:
1. Selenium IDE позволяет записывать действия над приложением, что существенно может облегчить жизнь тестировщика: создал тестовый сценарий, включил запись в Selenium IDE, прогнал сценарий, в следующий раз Selenium IDE сделает это за тебя. Но из-за специфики, наш проект не позволяет записывать действия над приложением, поэтому основная функция Selenium IDE не облегчала нам работу. Приходилось писать все команды вручную.
2. Эмитировать работу оборудования в Selenium IDE невозможно. А она занимает около 50% тестовых сценариев для нашего проекта.
Далее, наши светлые головы решили изучать Selenium WebDriver. На просторах Интернета можно найти статьи о том, что Selenium WebDriver—это не инструмент для автоматизации тестирования. Но для нас он стал универсальным решением! Мы написали мини-интеграцию Selenium WebDriver с нашим проектом, а самое главное —смогли эмитировать работу сканера штрих-кодов и считывателя магнитных карт. И буквально за неделю создали в этой среде около 200 автоматических тестов. Мы сделали большой шаг в реинжиниринге тестирования, но не менее важная задача: сделать процесс тестирования качественным. Ведь проверка качества тоже должна быть качественной! Чтобы найти решение этой задачи, я отправилась на TestCon Moscow 2017—международная конференция по вопросам тестирования и QA. И привезла с данной конференции полный чемодан полезной информации:
1. Если у вас в компании много проектов и автоматические тесты должны выполняться одновременно в несколько потоков —посмотрите в сторону Selenium Grid. Единственное, при настройке SG используйте динамическое управление ресурсами, а не статическое.
2. Для проектов, на которых по тем или иным причинам невозможна автоматизация, используйте Risk-based Testing: при выпуске новой версии тестируйте только те места, которые могут повлиять на работу проекта. Данный метод подойдет для команд, которые работают по принципу Agile или Scrum. Изучите FMEA и ACC-анализ по методике тестирования от Google.
3. Многие автоматизаторы тратят огромное количество времени на поддержку тестов. Некоторые, в этом случае, даже отказываются от автоматизации и возвращаются к любимому ручному тестированию. Так начните свою работу с KISS. Думаю, что моим программистам понравится получить такое предложение от меня. И нет, я не про служебные романы, а про Kiss PageObjects —технология, которая позволяет сделать ваши автотесты легко поддерживаемыми.
4. Автоматизация тестирования —это пустые слова, если нет отчетности. Ваши менеджеры никогда не поймут, за что вам платят деньги, пока не увидят, как работают ваши автотесты, и работаю ли они вообще. С этой целью используйте Report Portal или Allure Framework.
5. Ручное и автоматизированное тестирование —это конечно прекрасно, но помните про юнит-тестирование, которое обязательно должно существовать на проекте и осуществляться силами программистов. Ведь уже давно прошли времена, когда тестировщик для программиста— враг. Поэтому, прежде чем передать проект в тестирование, пусть программист немного позаботится о качестве своего кода с помощью юнит-тестирования.
6. И самое главное: не стремитесь автоматизировать все и вся. Помните, что тестирование —это, в первую очередь, экспертиза. Ни один инструмент для автоматизации не даст гарантии, что нажатие на кнопку на вашем софте не приводит к неожиданному появлению искр из глаз соседского кота. Автотесты могут проверить, делает ли ваш продукт то, что описано в требованиях. И только человек может узнать, а делает ли ваш продукт что-то еще?
В результате, на сегодняшний день мы прошли около 40% от пути, который нам еще предстоит, но я уверена, что на следующей конференции по вопросам QA и тестирования команда от «Сервис Плюс» будет рассказывать о своих достижениях и делиться опытом с другими компаниями, которые только начинают путь под названием "автоматизация". Как говорится:"Viam supervadet vadens" или "Дорогу осилит идущий".
P.S статья посвящается всем тестировщикам, которые задумались об автоматизации своей работы, а также моей команде УКМ5, как благодарность за помощь во всем.
Шишкина Яна,
обозреватель в области тестирования и QA
© Сервис Плюс, Группа Компаний, 2017
© Издание 12NEWS (ИП Маринин А.Л.), 2017