В чем заключается разница между тестированием и управлением качеством?
В последние несколько лет я часто задумывалась о том, что означает качество. У меня были и лекции на эту тему, и дискуссии с различными людьми. Недавнее обсуждение в LinkedIn направило мои мысли в новое русло: я начала рассматривать взаимосвязь тестирования и качества. Это моя первая (из двух) заметка с мыслями о тестировании. Впоследствии я опубликую как минимум одну статью, посвященную качеству.
Что такое тестирование?
Выкорчевывая сорняки в саду (очень неблагодарное дело, тем более что они отрастут завтра, если их не выдергивать с корнями), я начала проводить различные аналогии с этим процессом в контексте дискуссии о тестировании и управлении качеством. В той дискуссии был высказан следующий тезис:
«Тестирование помогает выявлять баги и недоработки — в идеях, требованиях, спецификациях, проектных решениях, модулях, компонентах и целых системах. Тестирование не предотвращает появление багов, поэтому целесообразнее заниматься именно поиском багов.
Тестирование показывает, в каком месте и каким образом сломана система или взаимосвязи в ней». — Майкл Болтон (Michael Bolton).
Я понимаю, что эти слова вырваны из контекста, но если провести аналогию с моим садом, то получится, что я могу лишь указывать на сорняки (баги), но не могу их вырывать. Я могу задавать вопросы об организации сада, но никак не могу на нее повлиять. То есть у меня нет возможности работать вместе с садовником и помочь ему каким-то образом предотвратить появление сорняков. Моя участь — задавать вопросы и выдергивать сорняки или даже просто показывать на них пальцем, а уже садовник будет решать, что с ними делать.
Лично я совсем иначе воспринимаю тестирование. Думаю, я могу спросить у садовника, как можно предотвратить появление сорняков, и предложить ему различные способы — органический подход или какие-то пестициды. Я могу обсудить с ним риски, после чего мы остановимся на каком-то варианте или отметем их все разом. Возможно, в итоге мы придем к тому, что лучший способ — заменить почву на новую, в которой уже нет семян сорняков. Станет ли меньше дефектов, если мы реализуем какое-то из предложений? Помогла ли я делу как тестировщик?
Как и наши продукты, сады постоянно растут и претерпевают изменения, и если мы не будем постоянно погашать наш «технический долг», борясь с сорняками и вырывая их с корнями, сад превратится в бесполезную непролазную чащу. Два года назад мы оставили наш сад без присмотра на две недели, когда мне нужно было отлучиться на конференцию. Когда мы вернулись, все вокруг заросло сорняками. В тот год растения плохо цвели, даже когда мы избавились от сорняков и зачистили свой «технический долг».
Но довольно аналогий. Продукты — это никакой не сад.
Что могут тестировщики?
Существует несколько взглядов на то, чем занимаются тестировщики. Кто-то считает, что тестировщики отвечают за «тестирование», то есть проверку программного обеспечения. В этом заключается суть их работы, они должны гордиться своим призванием и тщательно все тестировать, чтобы полностью раскрыть свой потенциал тестировщика.
Я не разделяю этот взгляд. Мое определение тестирования гораздо более всеобъемлющее. Я работаю в agile-командах уже 20 лет, и самые успешные из них именно те, где обязанности по тестированию ложатся на плечи всей команды. Тестировщики привносят неоценимый вклад в работу команды, но не потому, что они отвечают за все аспекты тестирования, а потому, что помогают понять, каким образом тестирование может улучшить качество продукта. Тестирование — лишь одна из составляющих понятия «качество», но к этому мы вернемся позднее.
В той же дискуссии на LinkedIn Ден Эшби (Dan Ashby) сказал следующее о тестировщиках:
«Они участвуют в дискуссиях типа „три амиго“ и обсуждают направления развития продукта, работают в тандеме с разработчиками по мере создания продукта, предлагают идеи, сотрудничают с дизайнерами, иногда выступают в роли коучей и менторов, задавая команде правильную установку в отношении качества, и борются за неугасающее внимание к качеству и тестированию продукта. Задачи тестировщиков выходят далеко за пределы тестирования».
Ден считает, что на деле тестировщики участвуют в создании продукта, даже не написав ни одной строчки кода. Мой опыт показывает, что так оно и есть.
Установка на развитие
Есть одна фраза, которая, на мой взгляд, очень удачно описывает мысленную установку, подходящую для тестировщика:
«Не стоит зацикливаться на том, где можно найти баги, как проследить за соблюдением требований или как сломать программу (или видимость ее корректной работы). Лучше сосредоточиться на том, что я могу сделать, чтобы продукт получился успешным?»
Такая мысленная установка дает тестировщикам возможность положительно повлиять на самые разные аспекты разработки. Вот несколько примеров ситуаций, когда тестировщики вносят свою лепту:
помогают делить пользовательские истории таким образом, чтобы было проще тестировать разрабатываемые функции;
участвуют в дискуссиях типа «три амиго»: запрашивают примеры, обращают внимание на неявные допущения, спрашивают о важных атрибутах качества и обсуждают планы действий при существующих ограничениях;
занимаются анализом моделей и прототипов;
участвуют в технических совещаниях и помогают найти самый простой способ реализации функций, подходя к вопросу со стороны тестирования: «Как мы будем это тестировать?»;
работают совместно с программистом или специалистом по автоматизации тестов над выбором подходящих методов тестирования и необходимых для этого данных, а также над определением уровня захвата операций для генерации автоматических тестов;
анализируют перечень тестов и их целесообразность.
Все эти мероприятия нужно проделать еще до того, как будет написана первая строчка кода, ведь это действительно помогает сделать продукт лучше. Разве нет?
Итоги
Мы все живые люди, и у каждого из нас может быть свое мнение о том, что такое тестирование, но, думаю, никто не возразит, что суть тестирования сводится к выявлению и устранению рисков. Задумайтесь, что означает тестирование именно для вас. Оно ограничивается лишь тестированием программной части или охватывает проверку идей, допущений, процесса и продукта в целом?
В следующей заметке о тестировании я рассмотрю различные виды тестирования и некоторые ситуации, влияющие на то, как мы организуем тестирование.
Перевод материала подготовлен в рамках курса "QA Lead". Если вам интересно узнать подробнее о формате обучения и программе курса, регистрируйтесь на день открытых дверей онлайн.