February 2012
M T W T F S S
« Jan    
 12345
6789101112
13141516171819
20212223242526
272829  

О времени, планировании, лошадях и QA

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

Представим что  у нас только-только начинается проект. На проекте есть только ПМ, который  начинает оценивать сроки разработки. Здесь и начинаются первые проблемы…


Время на тестирование сильно ограничено

При оценке времени  на проект ПМ (хотя нужна экспертная команда) даёт нереально маленький срок на тестирование, так как не владеет необходимыми знаниями в этой области. Например, при плане на 5 мес разработку, на тестирование после code freeze’a отводится 2 недели. Можете представить сколько багов может сделать команда из трёх разработчиков за 5 месяцев? =) А сколько итераций тестирования — багфикса потребуется чтобы получить стабильно работающую версию?

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

Тестирование  проекта проводится в дополнительное время, выделенное на риски разработки

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

Предложение: тестирование не риск!  Нужно чтобы ПМ планировал качество и отражал это в содержании проекта, которое является частью контракта.  Но это конечно надо всю «консерваторию» исправить.

Со следующей проблемой  я столкнулась совсем недавно:

«Мёртвая  лошадь»

После некоторого времени  упорного труда (например, месяца 3), команда  разработчиков выдаёт первые версии продукта, которые можно начинать тестировать. Уже есть UI c основными экранами и кнопками, но функциональность ещё не полностью реализована. Тестировщики пробуют систему — и тут на них сыплется немыслимое количество эксепшенов и багов, больших и маленьких, серьёзных и не очень. Что делать? По логике — прекращать тестирование и отдавать «продукт» разработчикам. Очевидно, что цепь разработчик добавил кнопку — разработчик проверил кнопку короче цепи, в которую включен тестироващик.

В реальности, тестировщики строчат по 20 багов в день, на разработчиках  висит по 55  открытых багов —  заняты все! =)

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

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

Тестирование  выкидывается из итерации разработки

Собирается новый  билд с «багфиксами» и change request’ами. Но так как разработчики столкнулись с непредвиденной проблемой и затянули выдачу релиза, а клиенту обещали обновления ещё вчера, билд отдаётся на тестирование и одновременно(!) ставится на production среду.

Предложение: не выкидывать тестирование из итерации разработки. Нужно планировать релизы.

«Замыливание  глаза»

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

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

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

2) За короткий промежуток времени выдаётся несколько версий, более менее стабильного продукта. При необходимости каждый раз начинать  smoke-тестирование заново, не успев закончить предыдущую итерацию, создаётся впечатление что весь функционал уже проверен, всё работает.

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

Причины проблем

Так или иначе, но все вышеперечисленные мной проблемы сводятся к тому, как менеджер проектов, да и вся фирма, относятся к контролю качества и планированию. Да, качество стоит времени и денег, а их всегда не хватает. Всегда хочется верить в лучшее, что “у нас и так пока все неплохо, зачем нам что то проверять?” или “один разочек можно и не проверять”.  Чтож, верьте во что хотите, но тогда уж сами себе признайтесь в своих верованиях – напишите план управления качеством, одна страница, не более. В нем напишите, во что вы верите, какого уровня качества будете добиваться, какими средствами, за что отвечают разработчики, за что – тестировщики, как будете выпускать релизы. Такой честный документ упростит отношения внутри команды и снимет  множество вопросов. Честность – первый шаг к успеху  командной работы.

  • http://www.clockstyle.ru Wayne

    А что такое QA ? Аббревиатура?

  • http://twitter.com/intr13 intr13

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

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

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

  • vzzvzz

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

  • vzzvzz

    quality assurance

  • Nameless

    Мне кажется немного дико вообще не тестировать продукт 3 месяца. За это время девелоперы таких багов насажают, что как бы полпроекта не переделать пришлось. Предложение: делать короткие итерации (1-2 недели) разработки и тестирования

  • Anna

    Итерации 1-2 недели можно делать если уже хоть что-то готово. Если разработка проекта начинается с нуля, то некоторое время невозможно выдать более менее удобоваримое существо для тестирования. Разрабатывают основную логику, взаимодействие между компонентами (например клиент-сервер), прикручивают UI, через который тестеры и будут тестировать основной функционал. Вот и получается, что к моменту прикрутки UI уже есть достаточно большой объём функционала, который программисты и стараются побыстрее сплавить тестерам без проверки.

  • Annie

    То есть, вы считаете, единственный выход, это слинять зарубеж?
    Сынишка тоже напишет, и скажет “Проверяй” своему папе :) . А папе то самому лень будет

  • Nameless

    Неправильно получается. Аргументы:
    1. Если проект технически сложный, то вся команда сразу в бой не бросается. Сначала 1-2 наиболее грамотных человека готовят инфраструктуру. Здесь ничего не протестируешь, но и вагон багов не посадишь
    2. Если инфраструктура готова, за 2 недели более чем реально реализовать проверяемую часть фунциональности. Фунциональность может быть не закончена, например черновой UI, но должна быть проверяема
    3. Если за длительный срок (3 месяца) ничего не проверялось, то и об управлении проектом говорить сложно. Будет закончен проект в срок? Что в данный момент сделано? Где мы на roadmap проекта? Какого качество? Чтобы ответить на эти вопросы необходимо регулярно тестировать проект

  • Annie

    Приведите, пожалуйста, примеры продуктов, где можно собрать более менее работающую сборку через 2 недели после начала реализации?
    (2)Если, например, функционал такой что для создания основной сущности с кучей атрибутов нужно создать ещё несколько подсущностей, словарей и т.д., в итоге набирается скринов 15 чуть ли не со всеми видами UI-компонентов на них. Это можно реализовать за пару недель?
    (3) Я не имею отношения к управлению проектом, возможно существует какой-то внутренний процесс оценки времени и контроля.