Автоматизация тестирования: нужно ли изучать теорию?
Зачем тестировщику-автоматизатору учить теорию? Может быть достаточно освоить какой-нибудь популярный инструмент, например, Selenium или TestComplete? Выучить какой-нибудь язык программирования, например, Java или Python? И никакая теория не нужна.
Но подождите! Раз уж зашла речь о программировании (“выучить какой-нибудь язык”) – давайте посмотрим, как там обстоят дела с теорией.
Обучение программированию начинается с понимания того, что такое алгоритм. Базовые элементы описания алгоритма одинаковы для множества языков программирования. И если человек один раз понял, что такое условие и что такое цикл – он сможет узнать их под разными масками в разных языках программирования.
После этого, конечно, хорошо бы уже научиться писать на каком-нибудь языке, чтобы эти теоретические знания об алгоритмах применить на практике.
Но через некоторое время оказывается, что помимо алгоритмов языки содержат конструкции для описания классов – и тогда приходится снова возвращаться к теории, чтобы понять суть объектно-ориентированного подхода. Это тоже достаточно универсальная идея, которая применяется во многих языках программирования, хотя может выглядеть очень по разному.
Освоив принципы работы с классами и объектами, человек получает в руки новый мощный инструмент. Он уже не только алгоритмы пишет, он строит архитектуру приложения. Это позволяет писать более сложные программы.
Но ещё через какое-то время выясняется, что архитектура местами получается какая-то кривая, костыли подпирают её тут и там. И приходится снова возвращаться к теории – читать книжки про шаблоны проектирования, изучать типовые приёмы, учиться избегать стандартных ошибок проектирования.
И эти колебания от теории к практике и обратно могут повторяться многократно. Потому что есть ещё много интересного, выходящего за рамки отдельно взятого языка программирования.
А когда вы разрабатываете автоматизированные тесты – к общей теории программирования добавляется ещё и специфическая дополнительная теория.
Во-первых, надо уметь проектировать тесты.
Во-вторых, для создания автотестов используются специальные фреймворки, которые построены на общих принципах, и понимание этих принципов позволяет более эффективно эксплуатировать возможности фреймворков.
В-третьих, есть особые шаблоны проектирования, применяемые именно для создания тестов, и они также позволяют избежать стандартных ошибок.
И если вы владеете этим общим над-языковым и над-инструментальным пониманием принципов разработки автотестов – вам будет достаточно легко переключаться с одного языка или инструмента на другой, вы сможете правильно выбирать подходящий инструмент под конкретную задачу, ваши тесты будет легче понимать и поддерживать.
Все помнят высказывание Суворова про то, что теория без практики мертва. Но не все помнят, что на самом деле великий полководец говорил так: “Теория без практики – мертва, практика без теории – слепа”.
До недавного времени мы проводили только “практические” тренинги для тестировщиков-автоматизаторов, нацеленные на освоение конкретных инструментов (Selenium, TestComplete), языков программирования (Java, C#, Python), тестовых фреймворков (JUnit и TestNG).
Но в какой-то момент мы осознали, что не хватает связующего звена, тренинга, в котором рассматривались бы общие принципы, который был бы полезен и интересен всем тестировщикам-автоматизаторам, независимо от того, на каком языке они пишут и какими инструментами пользуются.
И мы сделали такой тренинг, который называется просто Автоматизация функционального тестирования.
Если вы чувствуете себя новичком в этой области – приходите на тренинг, не стесняйтесь, может быть будет не всё понятно, но зато полезно сначала посмотреть на автоматизацию с высоты птичьего полёта, чтобы понять, в каком направлении лучше двигаться, какие инструменты стоит начать изучать и почему.
Если вы уже немного умеете пользоваться каким-нибудь инструментом – вам будет интересно сравнить выбранный инструмент с другими, понять, какое место он занимает в общей картине мира, как его можно интегрировать с другими инструментами и какую пользу это может принести.
Если вы считаете себя достаточно опытным автоматизатором – попробуйте проверить себя, может быть найдутся ещё такие области, в которых вы обнаружите для себя что-то новое.