В двух последних постах Что такое тестирование? и Организация тестирования я поделилась своими соображениями об испытаниях. Хотя между понятиями «тестирование» и «качество» есть тесная связь, одно из них не обязательно подразумевает второе. Тестирование лишь дает нам какое-то представление о качестве.
Я хотела завершить эту серию публикаций постом, полностью посвященным качеству и управлению качеством, но у меня оказалось так много мыслей на эту тему, что его пришлось разделить на две части. В первой из них я расскажу о своем взгляде на качество.
Я предпочитаю использовать в отношении него термин «управление», а не «обеспечение» (QA), потому что информация, полученная в ходе тестирования, может помочь улучшить качество продукта, но не может «обеспечить» его. Проходя сертификацию на менеджера по качеству в Американском обществе качества (ASQ), я узнала, что QA подразумевает прежде всего правильную организацию процессов. Сейчас значение термина QA искажено, и зачастую он употребляется неверно, поэтому я не думаю, что он по-прежнему применим, — по крайней мере, в сфере разработки ПО.
Существует множество разных контекстов, каждый из которых требует отдельного взгляда на качество. Но в любом случае оно, как характеристика, должно быть «встроено» в продукт с самого начала, и мне нравится, когда клиенты становятся участниками этого процесса.
Самое популярное определение, которое я слышала, принадлежит Джеральду Вайнбергу: «Качество — это ценность для определенного человека». Оно мне нравится, но кажется слишком упрощенным и оставляющим за скобками некоторые параметры, которые следует иметь в виду.
Вот уже несколько лет Алан Пейдж (Alan Page) и Брент Дженсен (Brent Jensen) обсуждают современные принципы проведения тестирования. Пятый из этих принципов звучит так: «Клиент — единственный, кто может судить о качестве нашего продукта и оценивать его». На мой взгляд, как и в случае с определением Джеральда, это чересчур простая концепция. Мне хотелось чего-то более содержательного, поэтому я решила сосредоточиться на том, какой должна быть стратегия качества для продукта, над которым я работаю.
Вернемся в прошлое. Уильям Эдвардс Деминг определял хорошее качество как «предсказуемый уровень единообразия, надежности и соответствия стандартам клиента». И здесь мы также видим ориентацию на клиента. Многие из 14 принципов Деминга, описанных в его книге Выход из кризиса (Out of Crisis), по-прежнему применимы и, вероятно, останутся актуальными в будущем. Например, он говорил о «встраивании» качества и уменьшении зависимости от проверок.
Дэн Эшби (Dan Ashby) в своем посте о четырех абсолютах качества Кросби показывает, что эти абсолюты, с поправкой на контекст, все еще можно применять к программному обеспечению.
Несколько лет назад, когда я готовилась к беседе о процессах качества, Изабель Эванз (Isabel Evans) показала мне статью Дэвида Гарвина (David A. Garvin), которая снова заставила меня задуматься, что же в действительности представляет собой качество. Ниже я приведу несколько мыслей оттуда, но лучше прочитайте ее целиком. А в этой статье автор дополнительно раскрывает значение восьми параметров качества.
Люди обычно говорят о качестве, как об одной общей категории. Большая часть того, что мы можем измерить, касается выполнения процессов — я называю это «качество процесса». В свою очередь, «качество продукта» связано с конечным продуктом и опытом наших клиентов.
Подходы к качеству
Качество продукта можно рассматривать с разных сторон. Точка зрения клиента — лишь одна из них. Она показывает, насколько продукт пригоден к использованию или удовлетворяет потребностям, которые у разных клиентов могут отличаться. Мы также должны учитывать мнение других ключевых лиц, заинтересованных в качестве продукта.
Дэвид Гарвин говорит о пяти подходах к качеству. Ниже вы можете увидеть их в форме диаграммы.
Все мы смотрим на качество под разными углами, которые могут меняться в зависимости от обстоятельств. Я начну с внутреннего круга, как с самого простого, и буду постепенно двигаться наружу.
Ориентация на производство
Рассматривая цикл разработки как производственный процесс, мы должны сосредоточиться на методах, которые используем, и соблюдении требований. Наивысший уровень качества в данном случае достигается путем выполнения спецификаций, а основное внимание уделяется предотвращению неполадок и переделок. Вот почему многие разработчики тратят время на выстраивание правильного производственного процесса и оценку его качества, а также проводят тестирование, направленное на эти цели.
Однако нужно понимать, что разработка ПО отличается от производства одного и того же продукта раз за разом. Мы постоянно развиваем то, что у нас есть, меняем и адаптируем.
Вот несколько мероприятий, которые позволяют поддерживать качество разработки (производства): разработка через тестирование (TDD), написание кода с учетом удобства отладки, рецензирование кода, непрерывная интеграция, исследовательское тестирование и даже обеспечение соответствия критериям готовности. Мы оцениваем качество процесса и отвечаем на вопрос: «Правильно ли он организован?».
Ориентация на продукт
Гарвин определяет этот подход как обеспечение качества отдельных компонентов, составляющих целое. Из лучших ингредиентов получается лучший продукт.
При таком подходе производство компонентов стоит недешево, поэтому товары, сделанные из них, тоже имеют более высокую цену. Повышение качества продукта, который является качественным по умолчанию, подразумевает улучшение производительности и дополнительные возможности — что также увеличивает стоимость.
Обсуждая этот вопрос, мы с Полом Симаном (Paul Seaman) придумали интересную метафору: обычный повар не обязательно приготовит из хороших ингредиентов вкусное блюдо, но умелый шеф даже из обычных продуктов может сделать нечто волшебное. Мы должны понимать, из чего состоит наш продукт и как эти части соединяются друг с другом.
Вот несколько мероприятий, которые помогают поддерживать качество продукта: разработка на основе приемочных испытаний (ATDD) или разработка на основе поведения (BDD), а также тестирование параметров качества, таких как безопасность, производительность и эксплуатационная надежность. В этом случае мы отвечаем на вопрос: «Работает ли продукт так, как должен (или как нам хотелось)?».
Ориентация на потребителя
Взгляд на качество с точки зрения пользователя — один из самых часто используемых, но при этом очень субъективных и индивидуальных критериев.
Он подразумевает, что потребители имеют достаточно информации для оценки качества продукта. А если это не так, они могут ориентироваться на некие признаки, чтобы произвести такую оценку. Возьмем, например, чашку кофе. Я предпочитаю простой черный кофе из зерен средней обжарки, а моя сестра всегда заказывает капучино. Что это значит для вас? Кто ваш потребитель? Кто сможет оценить качество вашего продукта? Должны ли вы удовлетворить потребности большинства потребителей или ориентироваться на конкретную целевую группу?
Вот процессы, которые, по моему мнению, могут помочь поддерживать потребительское качество: разработка дизайна взаимодействия с клиентом для понимания его потребностей, ATDD, испытания с использованием тест-персон, A/B-тестирование, тестирование доступности и наблюдаемости, проведение аналитики использования продукта. Здесь мы пытаемся ответить на вопрос: «Этого ли хочет потребитель?».
Ценностный подход
Ценность продукта определяется его стоимостью и затратами на производство. Может ли он обеспечить нужную производительность по приемлемой цене? Возьмем все ту же чашку кофе: одни люди хотели бы купить ее за 50 центов, а другие могут заплатить 5 долларов. Разница в цене составляет 1000 %. Неужели бобы, из которых готовится этот кофе, так сильно отличаются друг от друга? А может, дело в обжарке? Или в чем-то другом?
Специалисты по маркетингу часто задаются этими вопросами. Чтобы найти ответы, они исследуют ценовые точки, проводят опросы среди покупателей, анализируют количество продаж и определяют, какую прибыль может принести та или иная специфическая характеристика продукта. Такие исследования позволяют подтвердить предположения и помогают организациям понять, как именно потребители используют их товары и какую ценность в них находят.
Менеджеры по продукту также заинтересованы в поддержании этой ценности. Они должны найти такие ценовые точки, которые помогут сделать предложение привлекательным для клиента и в то же время позволят им получить прибыль, чтобы не выпасть из бизнеса. Вопрос, на который нам нужно ответить, звучит так: «Представляет ли наш продукт достаточную ценность для клиента?».
Абсолютный подход
Я намеренно оставила абсолютное качество напоследок. Гарвин описывает его как «изначальное совершенство», которое способен распознать кто угодно, признак высочайших стандартов и отличных показателей. Оно с трудом поддается количественному определению, но вы узнаете его, когда увидите. Ваши чувства подскажут вам. Возможно, это вкус и аромат того великолепного капучино, который вы заказываете снова и снова.
Когда организация собирает команду специалистов для создания чего-то особенного, выходящего за рамки обыденности, получается продукт абсолютного качества. Это может быть, например, неожиданно прекрасная графика для новой игры. Однажды я работала над системой, которая должна была заменить другую — ту, что больше не поддерживалась. Когда я спросила, нравится ли новая система пользователям, мне ответили: «Да, очень!» — все потому, что она подстраивалась под их рабочие процессы, а не наоборот. Небольшой пример абсолютного качества.
Заключение
Я бы хотела, чтобы сейчас вы еще раз подумали о том, что значит качество лично для вас. Это непростая тема, поэтому ее редко обсуждают. На одном из своих семинаров я попросила участников дать собственное определение качеству конкретного продукта. Задайте этот же вопрос своим специалистам и посмотрите, о чем говорят их ответы — о качестве разработки (процесса) или все же самого продукта.
Мой следующий пост будет посвящен управлению качеством: я расскажу о тех, кто его осуществляет, о проведении измерений и о том, как создать стратегию качества.
Вы также можете прочитать пост о качестве и его стоимости, опубликованный в моем старом блоге в 2010 году. P.S. Я все еще езжу на «Мини Купере» — правда, на новой модели, которая еще шикарнее, чем я описывала в том посте. Если вы это читаете, я надеюсь, вы прочтете и комментарии тоже.
В преддверии старта курса QA Lead приглашаем всех желающих на бесплатный двухдневный интенсив в рамках которого изучим теоретические основы методов тестирования требований. Рассмотрим использование User Story и критериев приемки для тестирования бизнес-требований. Изучим Example Mapping как способ протестировать технические требования. А также попрактикуемся в построении Example Mapping.