У вас слишком много тестов. Ваши тесты слишком запутаны. Иногда ваши тесты дают сбой, и вы даже не знаете, с чего начать. «Весь набор тестов требует капитального ремонта. Полная перезапись ».

Если что-то из этого звучит знакомо, возможно, вы сможете изменить свой подход к работе и произвести революцию в своей карьере специалиста по тестированию программного обеспечения. Это звучит кричащо и театрально? Хорошо!

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

Представьте свои автоматизированные тесты программного обеспечения как дом. Перейдите к первой запущенной функции, запустив тестовые библиотеки. Используйте специальный метод распараллеливания, который вы написали, чтобы сократить время выполнения набора регрессии. Выпейте чашку кофе в вашем самом большом объектном файле страницы.

Есть где сесть? Есть ли темные углы, где пауки могут плести паутину? Играет ли легкая классическая музыка или просто какофония стучания кастрюль и сковородок?

Не могли бы вы пригласить другого практикующего, чтобы он посмотрел на ваши тесты?

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

Приведите в порядок свои тесты ради собственного счастья, счастья коллег-разработчиков и счастья владельца продукта (не говоря уже об их прибыли).

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

Прежде чем вы сможете приступить к приведению в порядок своих тестов, вам необходимо определить, что для вас сделает идеальный набор тестов.

  • Возможно, вам понадобится система, которая улавливает регрессии как можно раньше в процессе разработки.
  • Если ваше приложение ориентировано на клиента, вы можете представить себе тесты, которые выявляют визуальные ошибки во всех наиболее часто используемых вами браузерах при любом размере области просмотра.
  • О неудачах тестов сообщалось бы быстро и четко, и их было бы легко отсортировать.
  • Документация и тестовые примеры будут актуальными и доступными для поиска.

Как только вы и ваша команда определились с идеальной парадигмой тестирования, вы готовы приступить к работе по приведению в порядок тестов и приближению к качественной нирване.

Аккуратная тестовая система - это система, в которой вы можете с уверенностью получить доступ к необходимой информации о тестируемом приложении.

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

Ваша тестовая система должна быть полна вещей, которые приносят вам душевное спокойствие.

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

Каскадные сбои тестов, вызванные зависимыми тестами, только вызывают хаос, стыд и вмешательство в ваш процесс разработки.

Избавив свою тестовую систему от тестов, которые замедляют цикл выпуска, вы станете более целенаправленным и обдуманным в отношении эффективных тестов, которые вы сохранили.

Не бойтесь удалить тест. Удаление может вызвать укол страха, что вы потеряли часть покрытия. Это хорошо!

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

Аккуратный набор тестов улучшит ваши рабочие отношения и карьеру

Цель капитального ремонта вашего тестового кода не только в том, чтобы он выглядел красиво в вашем редакторе. Ваша цель - создать среду, повышающую эффективность вашей команды.

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

Начните с сортировки тестов. По ходу дела сосредоточьтесь на поиске тестов, которые по-прежнему действительно полезны, вместо того, чтобы искоренять тесты, которые уже устали. Организуйте хорошие тесты по категориям, внимательно изучая каждую строку за строкой. Спросите себя: «Это говорит мне, что мне нужно знать о приложении? Какова его цель? »

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

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

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

Очистка старого тестового кода - это средство выведения токсинов из вашей рабочей жизни.

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

Положите свой технический долг, чтобы прояснить кодовую базу, которую вы хотите

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

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

Стоит отметить тесты, которые заставят вас вспомнить, что вам нравится в практике автоматизации тестирования.

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

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

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

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

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

Мне нравится распечатать тест, положить его на лодку и устроить для него небольшие похороны викингов. Делайте то, что вам подходит.

Создайте здоровую культуру кода, окружив себя тестами и документацией, которые сделают вас счастливыми.

Это может показаться невероятным, но приведение в порядок тестов может иметь решающие последствия не только для вашей способности действовать, но и для счастья вашей команды. Для многих команд получение контроля над своими тестами - это первый шаг к получению контроля над всем проектом.

При переписывании тестов стремитесь к простоте и наглядному порядку. Подумайте, что вы чувствуете, когда отлаживаете или изменяете существующий тест в созданной вами тестовой системе.

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

Установите единое соглашение для своего кода и применяйте его повсеместно.

Это может помочь разделять и побеждать. Если вы приводите в порядок тесты автоматизации браузера, начните с организации объектов страницы, затем файлов тестов, а затем перейдите к файлам вспомогательной библиотеки и файлам конфигурации.

Изменение формы всего этого кода может не повлиять на результат тестов во время выполнения, но это влияет на читабельность кода, приглашая соавторов прочитать его и изменить его уверенно и радостно.

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

Многие специалисты по тестированию начали программировать по другим профессиям. Они могли бы начать свою профессию как «тестировщики вручную» и взяться за автоматизацию тестирования в качестве учебного проекта. Часто возникает ощущение, что вы окружены людьми, которые «действительно умеют кодировать», и что тестовый код никогда не будет иметь шансов стать по-настоящему превосходным.

Я не куплюсь на это. На самом деле часто бывает совсем наоборот - эта негативная интернализация проявляется в неаккуратном коде.

Любой, кто может писать рабочие тесты, должен иметь возможность приводить их в порядок и систематизировать.

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

Вам нужно провести рефакторинг только один раз, чтобы внести в проект длительные изменения.

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

Это неправильный способ думать об этом. Скорее, если вы организуете свои тесты и документацию так, чтобы система обеспечивала максимальную уверенность и простоту, вам нужно будет провести капитальный ремонт только один раз в жизни проекта.

К этому большому изменению следует относиться как к особому событию. Это будет решающее и кардинальное изменение в жизненном цикле вашего приложения - новый старт на вашем пути к идеальному покрытию тестами.

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

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

Прочтите тестовые примеры, задокументированные в вашей системе управления тестовыми примерами. Отражают ли они по-прежнему покрытие, гарантированное вашими автоматическими тестами?

Если ваша команда проводит ручное тестирование, следуют ли они задокументированным тестовым случаям? Соответствуют ли они реальным требованиям вашего продукта?

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

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

Прочтите свой автоматизированный тестовый код построчно.

Если вы привыкнете при чтении кода слышать язык тестов, вы проясните свое отношение к тестам и тестируемому приложению. Продолжайте слушать, и вы получите интуитивное представление о том, какие тесты вам еще нужны.

Хотя масштабный пересмотр тестов - это разовое задание, ваши повседневные отношения с тестами также важны. Обратите внимание на тесты, которые не работают или запускаются слишком долго, и поблагодарите их за их усилия.

Узнайте о трудностях, с которыми сталкиваются эти тесты. Вы сохраняете эти тесты в интерактивном режиме из-за их уверенности и простоты расширения, которые они обещают. Как вы можете найти способы сохранить эти радостные условия, посещая несовершенные тесты в своем наборе?

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

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

К счастью, есть несколько уловок, которые упростят процесс удаления.

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

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

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

Будет ли работать с приложением менее рискованно или даже безопаснее, если тест не пройдет? Выполняется ли его цель?

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

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

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