вторник, 8 января 2013 г.

Selenium +

Автоматизированное тестирование это очень высокотехнологичный процесс, требующий времени высокооплачиваемых специалистов.

Сегодня мы говорим о Selenium и о том, как разрабатываются автоматизированные тесты с использованием таких языков программирования, как Java и Python.

Когда я экспериментировал с Selenium Web Driver на питоне, передо мной явно вставала проблема нечитаемого кода автоматических тестов. Я экспериментировал, писал простые тесты, но явно видел, что это не то, что я хотел бы использовать в своей работе.

После чего я попробовал Java, и оказалось, что это совсем другое дело. Читаемый код, удобные среды разработки, множество готовых к применению плагинов. Но и здесь было нечто, что мне не нравилось - большое количество файлов и кода.

А потом я посетил сайт pyvideo.org, с которого позаимствовал это видео с выступлением одного из экспертов Selenium





И у меня появилось понимание причин моего прежнего недовольства - "Ведь я писал код на Java и Python так, как будто это Hello World на BASIC!".

Я не использовал всех возможностей этих языков, не думал о том, как можно сделать то же самое, но иначе, не искал способа сделать это лучше. Ведь в Python столько удобных инструментов для того, чтобы писать по-настоящему красивый код. В Java, при правильном подходе, можно так продумать структуру тестов, что написание тестов действительно будет приносить удовольствие.
Есть и другая крайность - использование этих возможностей там, где без них всё было бы куда лучше.

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

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

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

Я уверен, что изучение языков программирования, на которых написаны автоматические тесты, да и других языков тоже, может стать ключом к оптимизации вашей работы. Вы знаете как превратить тысячу строк кода в пять красивых команд? Сделайте это! Обязательно это сделайте. Вы знаете как отказаться от написания собственных методов и использовать для этих задач стандартные библиотеки? Зачем вам тратить время на это?
Почему мы сначала узнаём о том, какие плагины можно использовать для новых задач на проекте, а потом начинаем их изучать? Применять на практике лучше то, с чем уже имел дело, а пробовать новое вне рабочего времени, не на реальном проекте.

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

Я написал больше о себе и применительно к себе. Потому что сейчас я явно вижу эту ситуацию и  она кажется абсурдной. Чтобы увидеть себя со стороны, мне нужно было остановиться. Перестать выполнять повседневные задачи. Две недели не проверять почту. Не думать о тех срочных вещах, "которые надо сделать". Сходить в лес на лыжах и в тишине березовой рощи смотреть на Солнце.

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

У меня есть короткий план из трех действий, которые я теперь держу в голове:
 - Постоянно совершенствовать свои навыки и знания
 - Учиться у лучших
 - Быть лучшими

Учиться у тех, кто уже делает то, что ты хотел бы делать, лучше всех остальных. Не тратить свое время на что-то, что только отдаляет тебя от цели.