Python Challenge, или Как я ознакомился с автоматизированным тестированием за месяц

Чему разработчик научит Manual QA Engineers? Уж точно не тестированию, в этом они профессионалы! Но он может ответить на многие важные вопросы автоматизации, точнее дать базовые знания программирования, которые необходимы QA для успешной работы. Как программисту разобраться в написании автотестов на Python за месяц на уровне, достаточном для обучения тестировщиков, чему стоит их учить — узнайте из этой статьи!

Преамбула

Программирование я полюбил еще во время учебы в институте. Меня настолько увлекала эта сфера, что на старших курсах я разработал методичку и вел практические занятия по кластерным вычислениям в Харьковском национальном экономическом университете.

Сегодня у меня около пяти лет опыта в разработке. За это время освоил несколько технологий: был .NET специалистом, окунулся в веб-разработку на JS и даже успел немного разобраться в Markup. Осенью 2017 года мне сделали предложение, от которого я не мог отказаться: освоить Python и провести внутренний курс по автоматизированному тестированию для специалистов Dev-Pro. Овладеть новой технологией, а затем побывать в роли тренера? Challenge accepted!

Раньше мне не приходилось сталкиваться с Python, но я был мотивирован и полон энтузиазма! QA отдел составил мне программу изучения, основываясь на том, что необходимо изучить Manual QA Engineer для перехода в автоматизаторы. Это послужило мне своеобразной дорожной картой в личном обучении и в подготовке курса.

Как это было

Я разбирал каждую тему из моего списка, держа в уме будущий курс и акцентируя внимание на моментах, которые были мне самому непонятны. Факт того, что у меня не было опыта в Python, стал плюсом. Коллеги-эксперты в автоматизированном тестировании составили программу курса, а я смог разобрать язык так, чтобы объяснить его тем, кто с ним ранее не сталкивался вообще.

Параллельно я был Team Lead на корпоративном благотворительном проекте, где мы на Angular создавали сайт для приюта «Порятунок тварин Харків». Тогда мой типичный день выглядел примерно так: четыре часа я работаю с JS, два часа — изучаю Python, еще два — готовлю курс.

В итоге мы успешно запустили сайт, я освоил написание автотестов и создал программу внутреннего курса. Она состояла из 18 лекций: от синтаксиса и написания простых программ до парадигмы ООП в тестировании, плюс задания для самостоятельной работы.

Материалы и рекомендации

Для изучения тестирования на Python мне пригодились такие источники:

Помимо этого мне помогли следующие факторы:

  • Классическое техническое фундаментальное образование. Кроме навыка быстро и легко обучаться, оно дало мне еще и знание парадигмы ООП, и базовый курс QA. Это тот фундамент, на котором я построил новое знание.
  • Технический бэкграунд. Опыт .NET и JS помог мне быстрее разобраться со структурой и синтаксисом нового языка.
  • Четкая цель. Python очень объемен: он применяется и в Web-разработке, и в системном администрировании, и в научных исследованиях. Однако у меня не было задачи создать Огромного Человекоподобного Робота, мне нужно было автоматизированное тестирование.
  • Мотивация — тоже важный элемент. Стать тренером и испытать себя в новой роли!
  • Грамотный тайм-менеджмент. Мне необходимо было правильно распределить время между несколькими задачами, курировать команду разработчиков и при этом не забывать про учебу. Именно умение планировать помогло мне успеть все.
  • Обязательства. Мне всегда нравилось преподавать, а тут мой курс ждали студенты, на меня рассчитывала компания — я просто не мог не справиться! Когда делаешь что-то для себя, всегда есть риск, что в какой-то моменты ты столкнешься с трудностями и махнешь рукой. Но когда на тебя рассчитывают другие люди, сдаваться нельзя!

Многие могут спросить: почему курс по QA Automation доверили девелоперу, а не тестировщику?

Что такое автоматизированное тестирование

Все начинается с написания простого скрипта. А чтобы написать скрипт, надо иметь навыки программиста. Зачастую специалисты, которые хотят стать автоматизаторами, пришли из ручного тестирования и никогда не занимались разработкой программного обеспечения. Моя задача как раз в том, чтобы научить их программировать и дать лучшие практики написания кода.

В моем понимании хороший код обладает такими характеристиками:

  • Удобен для повторного использования.
  • Написан с использованием принципов проектирования ПО.
  • Имеет лаконичную и понятную структуру.
  • Программная часть легко поддается расширению и изменениям.

Почему это важно? Потому же, почему код должен быть качественный, а не состоять из костылей: автотест, написанный по принципам выше, будет проще в использовании, его можно будет менять и масштабировать под нужды проекта.

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

Этапы обучения

Теперь у меня уже есть опыт проведения как курсов для новичков в программировании, то есть QA-специалистов, которые занимаются ручным тестированием, так и более опытных в автоматизации ребят, проявивших желание изучить именно Python. Если мы говорим о первом курсе из 18 лекций, то он был рассчитан на тех, кто не написал ни строчки кода в своей жизни. Именно поэтому я могу условно разбить занятия на три модуля:

1. Знакомство с программированием, точнее — языком Python. Здесь мы говорим о базовых концепциях. Узнаем, как организовывать данные, об условных операторах и циклах, функциях и параметрах, коллбэках, модулях, системе импорта в Python.

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

2. Подробно мы поговорим о втором модуле — про более углубленное изучение языка. Эти знания нужны, дабы мы могли полноценно использовать все возможности Python при написании тестов. О каждом элементе расскажу детальнее, чтобы возьмись вы изучать автоматизацию на этом языке — сразу обратили внимание на важные аспекты и не распылялись.

2.1. Collections. Basic Algorithms — во время написания программ всегда приходится работать с данными. Чем более удобно они представлены, тем нам легче с ними оперировать. У Python много интересных фишек и дополнительных возможностей, которые значительно упрощают работу с данными. Одна из них — специализированные структуры данных. QA-специалисты наверняка столкнутся с этим.

2.2. Iterators. Generators. Decorators. Когда пишешь свой скрипт, обязательно работаешь с итерированием коллекций и генерацией данных. Интеграторы и генераторы помогают справиться с различными сложными ситуациями, связанными с этим аспектом, например, именно генераторы позволяют не сразу считывать весь файл в память (так как он может быть очень большим), а построчно — облегчая процесс. Декораторы же в свою очередь позволяют нам добавить какую-нибудь функциональность к уже имеющейся, порой это очень удобно, принести домой ёлку, декорировать её новогодними игрушками и получить новогоднюю ёлку.

2.3. Exception handling. Operations with files. Почти в любом программе могут возникать исключительные ситуации, их нужно уметь обрабатывать, этому мы и учимся! Кроме того, не обойтись без знания, как открыть и прочитать файлы.

2.4. OOP and Python. Есть два подхода к написанию тестов: функциональный, сторонником которого я не являюсь, и стиль ООП. Второй метод мне больше по душе, потому что позволяет делать все более организованно. Более того, эти знания точно пригодятся при написании тестового фреймворка. Плюс, у Python есть свои особенности касательно ООП, с которыми обязательно нужно знакомиться, даже если вы разбираетесь в этой теме в рамках других языков.

2.5. MetaClasses. ContextManager. Эта возможность Python позволяет на лету генерировать тестовые методы. То есть вам не понадобится плодить десятки подобных тестов-методов, вместо этого их можно генерировать. Это возможно благодаря мета-программированию в Python. ContextManager — фишка, которая не даст вашему коду заблокировать какой-либо ресурс: проследит, что открытый файл или открытый connection к базе данных был закрыт после завершения программы.

2.6. Design patterns. На занятиях, посвященных этой теме, мы изучаем лучшие практики, выясняем, как решать типичные проблемы, с которыми сталкиваются как автоматизаторы, так и рядовые разработчики.

3. В рамках третьего модуля мы переходим непосредственно к созданию автотестов. Темы, о которых я говорю, это: Functional testing, Integration testing, Unit testing, API architecture approaches, Load testing, Acceptance testing, Selenium, OOP in tests Selenium, OOP in tests. Page Object Pattern — это темы для отдельного материала!

Для более опытных специалистов я сразу начинаю курс со второго модуля.

Выводы

Итак, подведем итог. С чего стоит начать QA-специалисту, который решил освоить автоматизированное тестирование без какого-либо опыта в этом вопросе?

С азов! Особенно рекомендую ресурсы типа Code School и Code Academy, о которых уже писал выше. Составил небольшой список, который рекомендую своим студентам перед курсом:

Разумеется, необходим хороший уровень английского и опыт в тестировании. Но, как я убедился на собственном примере, автоматизированное тестирование на Python реально освоить за месяц, если вам уже знаком другой язык программирования, даже совмещая с занятостью на другом проекте!

Похожие статьи:
Компания J'son & Partners Consulting представила краткие результаты исследования «NFC и мобильные платежи – что выбирает молодое поколение в...
За перші шість місяців 2022 року Web3-проєкти втратили понад $2 млрд через зломи та експлойти. Сума втрат більша, ніж за весь 2021 рік, пише The...
Новые версии ReactOS 0.4.0 Kotlin 1.0 Vulkan 1.0 Docker 1.10 Go 1.6 TypeScript 1.8 htop 2.0 ESLint v2.0.0 FFmpeg 3.0 GitLab 8.5 Аналитика Ukraine has an army of nearly 100,000 IT professionals working for 100+ global...
Наш третій матеріал про стан українського ІТ-ринку через рік повномасштабної війни — про те, як компанії діяли в нових умовах, і їхні...
Google створює Фонд підтримки українських стартапів на 5 мільйонів доларів. Протягом цього року він надасть допомогу для 50 компаній,...
Яндекс.Метрика