Автоматизация тестирования с использованием Agile-подхода. Часть 2

Часть 1Часть 2Часть 3Часть 4

Автоматизация тестирования с использованием Agile-подхода

За последние 10 лет движение «Agile-разработка ПО» всплыло из неизвестности и стало мощным толчком в культуре разработки программного обеспечения в США, особенно в коммерческих компаниях по разработке ПО. Я был вовлечен в это движение с конца 80-х годов. Большинство моих статей описывают перспективы Agile-подхода (см. мою статью от 1994г. Process Evolution in a Mad World, http://www.satisfice.com/articles/process-evolution.pdf). Одной из форм Agile-разработки является «Экстремальное программирование», которое является набором 12 практик, описанных Вардом Канингемом и Кентом Беком (Ward Cunningham and Kent Beck).

Основная суть гибкого подхода изложена в Agile Manifesto. Среди элементов гибкой разработки выделяют профессионально-ориентированную (practitioner-centered) методологию, в которой присутствуюет очень тесный контакт с заказчиками, многочисленные короткие итерации и доброжелательное отношение к внесению изменений. Гибкая разработка дает менеджменту и заказчикам больше контроля над процессом разработки, до тех пор, пока сохраняется творческий подход и продуктивность технической работы.

Agile-автоматизация тестирования – это применение принципов гибкой разработки ПО (Agile-development) для решения проблем автоматизации тестирования.

Принципы Agile-автоматизации тестирования

Я предлагаю руководствоваться этими принципами для получения хороших и непрерывных результатов от автоматизации тестирования:

  • Автоматизация тестирования означает инструментальную поддержку всех аспектов тестируемого проекта, не только выполнения тестов;
  • Автоматизация тестирования проводится под руководством тестировщиков;
  • Автоматизация тестирования улучшается при поддержке специально назначенных разработчиков;
  • Разработчики тестовых инструментов ответственны за тестируемость функций и разрабатывают инструменты, которые их используют;
  • Разработчики тестовых инструментов подбирают и применяют всевозможные инструменты для поддержки процесса тестирования;
  • Процесс автоматизации тестирования происходит путем решения краткосрочных задач;
  • Для решения долгосрочных задач автоматизации тестирования требуется убедительное экономическое обоснование.  

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

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

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

Задачи автоматизации с использованием Agile – принципов разработки

Разработчики автоматизированных тестов должны делать следующее:

  • Оперативно реагировать на все запросы о помощи от тестировщиков;
  • Исследовать проблемы тестирования производительности;
  • Совместно с тестировщиками искать возможные решения имеющихся задач;
  • Применять технологию для усовершенствования процесса тестирования;
  • Ответственны за добавление специального функционала в продукте для его тестирования;
  • Исследовать различные доступные инструменты и изучать, как их можно использовать;
  • Упорядочивать все инструменты, которые разрабатывают программисты или тестировщики;
  • Пересматривать изменения в плане разработки продукта, чтобы оценить возможности автоматизации.

Структура команды, занимающейся автоматизацией тестирования по Agile-подходу

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

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

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

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

Как развивается agile-автоматизация

Автоматизация тестирования определяет себя в терминологии «как … »:

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

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

Автоматизация тестирования с использованием принципов agile-разработки, реализуется по определенному циклу:

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

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

  • Список требований. Это список всех новых запросов и требований от заказчиков (тестировщиков);
  • Список задач. В этом документе перечислено, какой задачей занимается каждый из разработчиков тестов;
  • Список реализованных решений. Это список уже реализованных решений, которыми на данный момент пользуется команда тестирования. Каждый пункт в этом списке должен содержать короткое описание и отчет о позитивном вкладе решения для увеличения продуктивности тестирования;
  • Список запросов на поддержку решений. Это список реализованных решений, которые нуждаются в доработке. Он должен состоять из двух частей: критических доработок и улучшений.
  • Список проблем/помех. Это список проблем продуктивности тестирования, которые останутся нерешенными, так как для них нужны новые дорогостоящие инструменты, существенные дополнения в функционале для тестируемости, или для их реализации потребуется больше времени.

Фоновые задачи:

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

Часть 1Часть 2Часть 3Часть 4