Освоение автоматизации тестирования для тех, кто не имеет опыта программирования |
30.01.2017 11:37 |
Автор: Андрей Шальнев На сегодняшний день многие проекты, имеющие сложную разнообразную функциональность, характеризуются очень короткими промежутками между релизами. В таких случаях приходится часто выполнять большое количество повторяющихся проверок (регрессионных тестов). Возможно, этот факт и является главной (хотя и не единственной) движущей силой активного развития автоматизации тестирования. Все больше компаний в сфере IT принимают решение оптимизировать процесс тестирования, сократив затратные по времени и финансам действия. При этом автоматизация является довольно молодым направлением. Опытных специалистов, владеющих соответствующими навыками, как правило, не хватает. Зачастую встает задача подготовить таких специалистов самостоятельно внутри компании в разумные сроки. Однако, освоение автоматизации предъявляет высокие требования к технической подготовленности тестировщика, так как от него требуется читать и писать программный код, редактировать конфигурационные файлы, читать логи и т. д. В этой статье речь как раз пойдет о том, какие именно шаги можно предпринять для достижения нужного уровня технической подготовленности такого специалиста. Мне пришлось осваивать автоматизацию «с нуля», т. е. не имея академического образования в сфере IT, навыков программирования и практики работы в смежных «технических» направлениях (например, в системном администрировании). Теперь, уже имея опыт написания тестов на двух языках программирования (Python и Java) и продолжая совершенствоваться в сфере автоматизации, я дам рекомендации, как приобрести нужные знания и опыт. 1. Учите английский (если еще не владеете им хотя бы на уровне intermediate).
Фактически, знание английского является международным стандартом в сфере IT. Соответственно, владение им открывает для вас широкие возможности. Я не случайно подчеркнул – «хотя бы на уровне intermediate». Важен не только высокий уровень владения языком (хотя среднего уже достаточно для решения многих задач), но и то, что изучение литературного или разговорного языка всегда происходит дольше, чем изучение языка программирования или технологии. Научиться писать несложный программный код, который действительно выполняет полезные задачи, можно за пару-тройку месяцев. Освоить хотя бы элементарный уровень владения иностранным языком за это же время гораздо сложнее. Если вы еще не владеете английским, то начните изучать его прямо сейчас. Да, это займет время. Но каждое новое слово, которое вы запомните, поможет вам лучше понимать документацию и обсуждения. 2. Учитесь читать код.
С чего же начать развивать навык чтения? Желательно, с несложных вещей. Например, просматривая очередную веб-страничку, нажмите Ctrl+U и попытайтесь изучить структуру html-кода, который увидите. При этом не важно, чтобы вы поняли все. Разберите небольшой фрагмент, поищите описания тегов. С одной стороны, html является языком разметки (не языком программирования), потому относительно несложен для понимания. С другой стороны, это хорошее подготовительное упражнение, так как при написании автоматизированных тестов, исполняемых через графический интерфейс в браузере (самая обширная область автоматизации на сегодня и вместе с тем самая несложная в освоении), вам придется часто просматривать html-код странички. Это пока не программирование, но уже чтение кода, при котором глаза привыкают искать нужную строчку и анализировать структуру. 3. Учитесь писать код.
Но не бойтесь «великого и ужасного» языка JAVA! В нем сначала пугает разнообразие модификаторов (public, protected, private) и строгая типизация (вы должны сразу указать, что именно хранится в переменной: строки, числа и т. д.). Однако, если вы все свои тестовые классы и методы объявите public («нет ограничений доступа»), то с большой вероятностью не изменится НИЧЕГО. Что касается типизации, то вы почти всегда в своем тесте знаете, что хотите получить: строку текста или число, true/false или еще что-то. Так что это тоже не вызовет проблем. 4. Запишите свои первые тесты рекордером и преобразуйте их в код.
Составив первые тесты с помощью рекордера, проанализируйте последовательность полученных команд. Попробуйте самостоятельно ввести какие-либо действия или изменить существующие. Это удивительно, но как только вы выделите часто используемые команды и проанализируете их характерные последовательности, вам сразу станет удобнее добавлять их самому, не прибегая к автоматической записи. Следующим вашим шагом станет преобразование инструкций записанного теста в язык программирования. Selenium IDE и Selenium Builder дают такую возможность. Проанализируйте сгенерированный код. Вы обнаружите, что многие фрагменты текста весьма похожи на уже знакомый и понятный язык команд рекордера, просто они уже включены в конструкции выбранного языка программирования. С высокой вероятностью будет найдено некоторое количество ошибок и недочетов в последовательности действий. Это нормально. Механизм преобразования пока не идеален. Но вместе с тем, обнаружив такие ошибки, вы получите возможность их исправить и обретете уверенность в понимании кода. Как только вы сами нашли ошибки в нескольких тестах и сумели их исправить, восстановив желаемую последовательность действий, рекордер становится вам практически не нужен. Таким образом, у вас есть все для того, чтобы продолжить писать тесты на языке программирования, обращаясь к самостоятельно подготовленным фрагментам кода. 5. Начните покрывать автотестами план регрессионного тестирования.
6. Пройдите обучающие курсы.
7. Общайтесь с коллегами.
8. Улучшайте свой стиль написания кода.
Чтобы улучшить его качество, рекомендую выполнить следующие действия:
Выполнение этих рекомендаций поможет написать удобный в поддержке код, понятный вам и вашим коллегам-автоматизаторам. В заключение Хочу еще раз отметить, что самое главное – это ваша готовность регулярно самостоятельно учиться и находить ответы. Вы часто будете сталкиваться с новыми вопросами, ответы на которые только предстоит узнать, и никогда не будете знать достаточно. Но этот факт совершенно не мешает развиваться в области автоматизации и разрабатывать интересные и полезные решения. Поэтому не ограничивайте себя в выборе задач теми областями, что вы уже знаете. Выбирайте новую интересную задачу и приобретайте необходимые знания в процессе ее решения. Именно такой подход позволит вам быстро продвигаться вперед и становиться профессионалом в выбранной области. |