Рефакторинг фирмы, специализирующейся на тестировании |
06.10.2010 17:51 |
Автор: Илья Комендантов Описанное ниже, вряд ли подойдёт аджайл-проектам.
Хочу на всякий случай попросить прощения у людей, кого заденут выражения "дешёвый" сотрудник, не корысти ради, а токмо что объяснить идею. Когда встречаю объявления типа: "В связи с расширением штата сотрудников, требуется..", "Молодая развивающаяся компания ищет.. " и подобные им, сразу представляю, как маленькое село вырастает в пгт, оно, в свою очередь, в город, а тот – в мегаполис. Всё хорошо, если развитие фирмы идёт по плану. Изначальная цель – именно "мегаполис", и на этапе становления предприняты меры по созданию "скелета", на который сейчас наращивается "масса" сотрудников. Ну, может не всё хорошо, но хотя бы многие проблемы не стали неожиданностью. Картина кардинально меняется, если тихая, небольшая фирмочка, вдруг получает большое количество заказов, и руководство берёт курс на расширение штата. Вот здесь начинается основные весёлости: "Количество людей неуклонно растёт, но также, как снежный ком, наваливаются проблемы, которые ранее не стояли столь остро". Наступает момент "насыщения", когда следующий нанятый человек, привносит больше вреда, чем пользы. Такое себе – нагрузочное тестирование. Может стоит для анализа проблем фирмы нанимать перформанс инженеров? Почему бы и нет.. Интересно, были прецеденты? Психологи говорят, что многие проблемы человека уходят корнями в его детство, этот же допущение верно и по отношению к организациям: Детство. Много воды утекло с тех пор, как руководство осознало необходимость проверки продукта до его продажи и постановило – создать отдел тестирования. Сначала наняли аж двух тестировщиков, а когда всплыло, что продукт не такой совершенный (как уверяли программисты) ещё к ним тим-лидера (ТЛ) и гастрабайтера, пусть тоже будет. ТЛ распределил области ответственности между тестировщиками и понеслась, каждый пишет себе план и выполняет определённый объём работ, рапортует менеджеру, тот – дальше. Все при деле. Взрослые годы. Сейчас отдел тестирования разросся (занялись аутсорсингом тестирования), давно подняли баг-трекер, набрали ещё людей (общей суммой около ста!), сформировали команды, даже попытались автоматизировать часть продуктов (правда путного получилось мало, ну и ладно). Да только так и работают по-старинке: у каждого инженера своя область ответственности, работы много, и основное время съедает выполнение тестов. Стоп! Вы заметили проблемы, которые тянутся из "детства"?
Модель работы тестировщика, пришедшую из "детства" фирмы, назовём "вертикальной моделью" и она порождает проблемы при увеличении штата сотрудников (список проблем см. выше, можете расширить и углубить). Схематично можно представить так:
Естественно, в каждой фирме свои особенности, что-то из "серой" области переходит в "зелёную", не суть. Как сделать рефакторинг, чтобы пускай не полностью, но хотя бы частично решить проблемы, описанные выше? Давайте рассмотрим несколько "постулатов":
Основываясь на всех этих постулатах, создадим модель распределения труда тестировщиков, которую так и назовём "горизонтальная модель": Senior QA (SQA) – это "мостик" между командой тестировщиков и практически всеми участниками процесса разработки, он не выполняет тесты, всё его время направленно на подготовку непосредственно процесса тестирования. Он тесно общается с ответственным за создание требований к продукту, а когда они созданы (FA) и проверены (им же), внесены возможные коррективы, он переключается на структуру и дизайн будущего приложения. Общается с ответственными за это дело архитекторами и дизайнерами, пишет тест-план. После того, как разработчики приступили к кодированию, SQA занимается написанием тест-кейсов для всех фич продукта. Долгими вечерами общается с девелоперами (пивко?) для получения целостной картины работы приложения и написания подробных тест-кейсов. Знание различных методик тестирования позволяет оптимизировать набор тест-кейсов, а "подсмотренный" у программистов код – не пропустить ничего действительно важного. Такой подход к работе позволяет SQA целиком сосредоточиться на написании тест-кейсов, создания разнообразных шаблонов, как тест-планов, так и шаблонов тестирования стандартных диалоговых окон и др. Подобными шаблонами можно делиться с SQA других команд, а также черпать идеи из чужих шаблонов. Подробные тест-кейсы являются той квитэссенцией знания, выжатой из всеобъемлющего понимания продукта, опыта SQA и бест-парктисес соседних команд (либо мировых бест-практисес). Middle QA (MQA) – этот человек уже своеобразный "мостик" между SQA и JQA. Он подготавливает возможности для выполнения тест-кейсов. Настраивает тестовое окружение: конфигурирует сервера, пишет необходимые AUTs (Applications Under Test), устанавливает ОС. Занимается автоматизацией (если решено какую-то часть продукта автоматизировать), изучает дополнительные программы (Selenium, QTP, AutoIt, BOM check, InputDirector и др.). После приобретения опыта в такого рода "тестировании", MQA уже накопил достаточное количество образов (ghost, acronis..) как ОС так и серверов. Он занимается оптимизацией использования машин и ресурсов. Подключается к выполнению тест-кейсов в случае необходимости. Junior QA (JQA) – по сути, именно этих людей называют тестировщиками. Их основная обязанность – выполнение тест-кейсов, описание багов, создание отчётов, проверка починенных дефектов. Для большей эффективности работы, они мониторят список всех дефектов (если над продуктом работает ещё команды, например, из других стран). И если кто-то думает, что SQA выполнит свои тесты лучше чем JQA, то это совсем не обязательно так. Принцип "Матрёшки": Человек приходит в тестирование без опыта. Знакомится с жизненным циклом дефектов, выполняет тест-кейсы (прошу заметить, очень грамотные тест-кейсы), тем самым обучаясь. Если может – дополняет их. Получает опыт. Из JQA переходит в MQA. Подготавливая тестовое окружение, он уже может учесть все нюансы, с которыми сталкивался в процессе тестирования. Получает новый опыт в программировании либо использовании программ автоматизации (если таковая присутствует на проекте), глубокие знания в конфигурировании серверов и операционных систем. Переходит на позицию SQA – тут так вообще не паханное поле для развития, но так как он был и JQA и MQA, при написании тест-кейсов он учитывает не только теорию, но и весь свой предыдущий опыт. Естественно, не все смогут пройти путь от JQA до SQA, получается своеобразное "просеивание" кадров, это позволяет нанимать на позицию тестировщика людей, которые хотят попробовать себя в тестировании, возможно на данный момент не квалифицированны или существует серьёзные пробелы в знаниях, но ведь никогда не знаешь – кто идеальный SQA? Им будет у кого учиться, и если есть способности – фирма вырастит отличного специалиста. Теперь разберём, как решаются, описанные выше проблемы "вертикальной модели":
Теперь преимущества, которые появляются как следствие перехода на другую модель работы:
Недостатки: Долго думал над недостатками, но те, что смог придумать, решаются довольно быстро и просто. Кто, что придумает, сообщайте, будем дописывать ;). ВЫВОДЫ: Отделение мух от котлет Разделение труда позволяет сосредоточить серьёзных специалистов на работе, требующей знаний, опыта, английского языка (для общения) и много ещё чего, то есть на "дорогой" работе, на подготовке тест-плана и создании тест-кейсов, их приоритезации и оптимизации. Выполнение же самих тестов забирает много времени, но и может быть выполнено человеком (или несколькими) с достаточно "посредственными" знаниями и без опыта работы. То есть позволяет подключать людей с улицы, практически в любой фазе проекта. UPDATE: Обсудить в форумеTags: |