Тестирование в agile среде отличается от традиционных методологий, например таких как waterfall. Agile - это итерационная модель создания продукта, которая нуждается в постоянном взаимодействии между членами команды, обеспечивая быструю обратную связь и возможность быть самоуправляемой командой.
Самые популярные проблемы тестирования возникающие в Agile среде, это:
недостаток документации,
постоянно изменяющиеся приоритеты,
нехватка времени для тестирования.
Именно поэтому большую ценность для Agile команд составляют тестировщики с правильным mindset и ориентированные на результат, это позволяет создавать качественный продукт на постоянной основе.
Итак, давайте посмотрим, что делают хорошие Agile тестировщики в Agile команде?
Разница между тестированием и обеспечением качества.
Хороший Agile тестировщик знает, что его работа не ограничивается только выполнением тестовых скриптов, отчётах об ошибках и окончанием релизов. Тестирование – это часть QA.
Тестирование - это не этап в Agile разработке ПО, это непрерывная деятельность до, во время и после каждого спринта. В Agile команде каждый несет ответственность за качество программного обеспечения и качество должно присутствовать с самого начала работы, а не подгоняться в конце. Если какая-либо из заинтересованных сторон - BАs, stakeholders, разработчики или же другие члены команды, не сфокусированы на качестве, то тестировщик должен напомнить команде о последствиях такого игнорирования, которое может отразиться на качестве программного обеспечения.
Технические знания и тестовая автоматизация.
Тестовая автоматизация имеет жизненно-важное значение для успеха Agile проекта, потому что автоматизированные тесты могут обеспечить быстрый и надежный feedback команде разработчиков. Тесты могут быть автоматизированы на разных уровнях и иметь различные цели.
Хороший Agile тестировщик, вооруженный техническими знаниями, способен:
определить и сообщить, какие тесты должны быть автоматизированы и на каком уровне;
выбрать необходимые ему инструменты для тестирования;
помочь разработчикам в написании автоматизировнных тестов и анализе результатов этих тестов;
создание различных наборов автоматизации, таких как smoke pack, full regression pack, end-to-end regression pack и так далее;
минимизировать время выполнения тестов для получения быстрой обратной связи;
выполнять тесты постоянно;
обеспечить полезные метрики для бизнеса;
применять различные методы и инструменты, чтобы помочь ручному тестированию.
Agile тестировщики также знают, что независимо от того, насколько хороши автоматизированные тесты, exploratory тестирование по-прежнему требуется в дополнение к автоматизации тестирования, так как не все ошибки могут быть найдены с помощью автоматизации тестирования.
Для того, чтобы получить максимальную выгоду от автоматизации тестирования, следует применять только best practices
Обеспечение обратной связи.
Одним из ключевых преимуществ Agile разработки является - возможность быстро предоставить рабочее решение. Нам нужно получать быструю обратную связь по каждой версии кода, для того, чтобы дальше двигаться максимально быстро.
В течении короткого периода времени, мы должны узнать, имеет ли новый или обновленный код какие-либо регрессивные баги (ошибки). Следовательно, одна из целей Agile тестирования заключается в быстром предоставлении соответствующей информации о состоянии приложения.
Когда вы обнаруживаете проблему, то нужно сообщить о ней как можно раньше, тогда мы можем сразу её исправить и двигаться дальше. Если же обратная связь задерживается, а команда продолжает двигаться дальше, то работа с проектом становится всё труднее и требуется уже больше времени, чтобы определить основную причину ошибки.
Kniberg и Skarin как-то сказали:
«Измените что-то => Проверьте, как это работает => Запомните это => Измените что-то снова.
В общем, вам необходимо как можно быстрее получать обратную связь, чтобы у вас появилась возможность, как можно быстрее адаптировать процессы».
Обратную связь можно обеспечить в различных формах, таких как:
Парное программирование (Pair Programming)
Code Reviews
Модульные тесты (Unit Tests)
Automated Integration Tests
Automated Acceptance Tests
Automated Regression Tests
Exploratory Testing
Конечно, Agile тестировщик должен гарантировать, что правильные и эффективные тесты пишутся и выполняются на каждом уровне.
Как разобраться в Agile методологии.
Хорошие Agile тестировщики прочитали и поняли «Agile manifesto» и реализуют эти принципы в своих повседневных задачах. Agile тестировщики понимают, что они являются частью команды, и что нет никакого разделения на стадию тестирования и стадию разработки, а тестирование представляет собой непрерывную деятельность, которая является частью разработки.
Agile тестировщики должны знать, что изменения неизбежны и приоритеты меняются ежедневно. Даже в последнюю минуту может понадобиться срочно исправить ошибку, которую нужно будет проверить, а также протестировать новые возможности и функции.
Хорошие Agile тестировщики изучают Agile терминологию и постоянно практикуются. Они читают книги, такие как: Agile Testing by Lisa Crispin и Janet Gregory, User Stories Applied by Mike Cohn, Specifications By Example by Gojko Adzic..
Базовые знания.
Для того, чтобы иметь возможность разработать эффективные тесты, направленные на выявление ошибок и проведения успешной проверочной сессии тестирования, Agile тестировщики должны иметь хорошие знания, чтобы уметь разбираться в этой области применения.
Хорошие Agile тестировщики не боятся находить время, чтобы выучить терминологию конкретной области, понять архитектурные схемы и помочь разработать значимые сценарии бизнес-кейсов.
Несмотря на то, что базовые знания имеют жизненно-важное значение в среде Agile тестирования, из-за ограниченного времени и сумасшедших нагрузок, хорошие Agile тестировщики должны быть высококвалифицированными IT профессионалами, чтобы разрабатывать меньше тестов с более широким охватом и удобством в применении, используя такой метод, как парная разработка тестов.
Базовые знания можно получить: общаясь с BАs и разработчиком, работая с приложением и читая спецификации.
Стремление к знаниям и самосовершенствованию.
Члены Agile команды должны иметь все необходимые знания для создания и передачи хорошего решения, содержащего в себе технические и деловые навыки.
Члены команды являются многопрофильными специалистами. Разработчики знают о важности тестирования (или, по крайней мере, должны знать) и создают автоматизированные тесты, где это целесообразно и применимо.
Также, хорошие Agile тестировщики идут в ногу с постоянно эволюционирующими технологиями, осваивают новые навыки, такие как кодирование/программирование, НТТР, базы данных, API тестирование, технические испытания, для того, чтобы помочь своим разработчикам двигаться быстрее.
Все вышесказанное совсем не означает, что если тестировщик не умеет писать код, то ему нет места в Agile команде. Высококвалифицированные тестировщики приносят много пользы для Agile команды, однако, повышая уровень технических знаний, имеют возможность развивать свою карьеру дальше и становится более востребованными.
Заключение.
«Основными факторами для успешной Agile команды являются менталитет и отношения между членами команды, стремление каждого из команды к единой цели, что приводит к общему успеху. Это объединяет команду и каждый из её членов действует по принципу – «Один за всех и все за одного».
Мы стремимся к тому, чтобы отношения внутри команды были – «Что я могу сделать для того, чтобы помочь вам?», а не – «Это не моя проблема.»
4 ноября / 2016
Comentários