Как мы давно мечтали, но так и не смогли…

Автор: | 17.07.2011

На собеседованиях я всегда спрашиваю, в чем смысел тестирования.

Определенного правильного ответа нет, он просто указывает на некий уровень развитости понимания обсуждаемой темы, не более. Однако ответ на этот вопрос говорит о многом.

Один из самых распространенных ответов таков:

«Тестирование повышает качество продукта».

Ну…

Вообще — нет, хотя… Да, с точки зрения рабоче-крестьянской логики, все именно так и происходит.

Я сам когда-то думал точно так же.

Я когда-то вообще думал только о том, как взять полууменьшенный минорный септаккорд от Ми, бо у Розенбаума оно получается, а у меня нет 🙂

Например, мое понимание смысела тестирования с годами ощутимо поменялось, и нынешнее свое понимание я совершенно не готов выбивать в мраморе на своем обелиске…

Однако попробуем уточнить, почему кандидат думает именно так (типичный диалог):

А каким образом тестирование повышает качество?

— А таким, что если мы узнаем о багах, и асфиксим их (асфиксия — удушие, подразумевается планомерное удушение багов, гыгы), то качество продукта повышается.

И в сравнении с чем оно повышается?

— Ну… В сравнении с тем, что было до тестирования, разумеется.

Но ведь ожидалось, что продукт будет качественным, без багов. А тестирование показало, что продукт получился некачественным. Так в сравнении с чем качество смогло повысится после багфиксинга? Мне вот кажется, что после исправления дефектов продукт из некачественного просто стал качественным, а качество не повысилось, оно просто появилось.

— Ыыыыы… Ну так вот же — продукт стал качественным после исправления дефектов! И помогло в этом тестирование! Вот в этом и есть смысел тестирования — помогать делать продукт качественным!!! ©

И знаете что? Этот вопрос я задаю не только на собеседованиях. Примерно так же отвечают и менеджеры различных уровней, которые ответственны за процессы разработки ПО или за бизнес вообще.

Много народу в должности ПМ или вообще «клиент» убеждены в том, что

  • если тестирование будет крутым,
  • и если тестировщики будут крутыми,
  • и если тестировщики будут «болеть за качество»,

то продукт будет отличным.

На самом деле, это вопрос и компетенция Product Manager.

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

После этого мы переходим к другим вопросам о тестировании. Например, к вопросам о том, как делают вино.

Есть в отрасли виноделия такие люди — виноградари. Они отвечают за условия, в которых виноград зреет.

Буквально — где когда и как сажать, как подвязывать, как чистить, как ухаживать…

Задача и вечное проклятие виноградарей — предоставить виноделам виноматериал, который соответствует определенным техническим характеристикам.

Характеристик этих множество, самыми понятными считаются соотношение влаги, сахара и кислотности в ягоде.

Характеристики виноматериала зависят не только от сорта винограда и и положения звезд в созвездии Свисток рака. Они даже поддаются какому-то тюнингу.

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

В Венгрии придумали насылать на виноград специальный грибок «Ботритис» (одна тетка произносила «Бодритес»), затем выдерживают на лозе до начала высыхания, и получается ботритизированное вино, мощное, дорогое и сладкое.

Обычно же поражение Ботритисом такая же беда, как и прочие болезни винограда.

В некоторых странах виноград держат на лозе до наступления заморозков, и затем делают из иссушенных, подмороженных ягод вино под названием «ice-wine» (ледяное вино); тоже прелесть в разделе десертных вин, сцуко, очень дорогое и немассовое.

В общем, винодел пытается получить от виноградаря заготовку с определенными параметрами, для того чтобы сделать вино с какими-то заранее предопределенными характеристиками (содержание сахара, спиртуозность, содержание тяжелых металлов и пестицидов, и много всякого).

Ближе к началу осени виноградарь начинает орать о том, что если виноград не снять вот прямо сейчас, то он снимает с себя всякую ответственность; а винодел орет о том, что если он сделает вино не такое-то, как того ожидают ритейлеры, им обоим будет нечего с себя снимать, поэтому снимать виноград ещё не надо…

На заднем плане в лаборатории среди реторт притаился лаборант — он будет проверять соответствие винограда, а затем и итогового вина техническим характеристикам. Лаборант вообще не волнуется. Разработка идёт как полагается — все орут.

Чувствуем совпадения с процессом разработки программного обеспечения, да? Насыпьте себе сухого кахетинского Форстериезуитенгартена (я легко могу это слово произнести без запинки), и продолжим.

Можно насыпать лед, бо жара в Киеве — нуеёнафиг…

На втором этаже сидит директор винзавода, и его тоже совершенно не волнует, получится ли вино качественным. Его волнует, получится ли вино вообще, бо вино такой зверёк, что или получается, или у вас будет простое «гаражное вино», стоимость которого вообще смешна, но является предметом личной гордости гаражного производителя.

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

Вот бы софтописателям заполучить такие законодательные стандарты 🙂

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

Также винодел придерживается непременно повторяемой технологии производства вина, хотя имеет всю власть для проведения экспериментов.

В сумме это дает возможность рассчитать технические характеристики будущего продукта, и помогает сдать проект с выполнением определенных ожиданий заказчика.

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

  1. заранее подготовить (или купить) виноматериал определенного качества,
  2. строго и правильно выдерживать правильную технологию производства.

Для протокола: виноделы Европы уверенны в том, что создание вина — искусство, которое невозможно формализовать, алгоритмизировать, сделать техничным, все держится на чутье, таланте, и созвездии Свисток рака.

Короче, для них виноделие — состояние души.

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

Итоговая оценка качества вина производится по нескольким фронтам, самый известный из которых — органолептика (как выглядит, как пахнет, каково на вкус — обычное юзабилити тестирование), но основными являются физико-химические показатели.

Одно без другого не должно рассматриваться, но если говорить очень строго, то главными критериями качества вина являются измеримые физико-химические показатели.

Примеры физико-химических показателей для оценки качества вина:

  • объемная доля этилового спирта, %;
  • массовая концентрация сахара в пересчете на инвертный, г/100 см3;
  • массовая концентрация титруемых кислот в пересчете на винную, г/дм3;
  • массовая концентрация приведенного экстракта, г/дм3;
  • давление в бутылках для вин, насыщенных СОг, кПа;
  • органолептические показатели, баллы: прозрачность, цвет, букет, вкус, типичность (или для вин, насыщенных С02,- игристые и пенистые свойства);
  • ассовая концентрация летучих кислот в пересчете на уксусную, г/дм3;
  • массовая концентрация диоксида серы (общей и свободной), мг/дм3;
  • массовая концентрация тяжелых металлов (железа, меди, свинца, олова), мг/дм3;
  • содержание цианистых соединений;
  • физико-химическая и микробиологическая стабильность, полнота налива и герметичность укупорки бутылок, гарантийный срок хранения готовой продукции;

Список скопирован с vinogradnik.org.ua, но вообще он предопределен в законодательствах и директивах отдельных стран.

Еще страшные цифры есть в реферате «Товароведная характеристика и оценка качества виноградного вина». Там рассказывается про то, как в производстве шампанского юзается рыбный клей и лимонная кислота 😉

Дык вот, примеры с циферками.

Если предоставленное нам для пробы вино не болеет (помутнение, окисление и прочие мерзости), и содержит спирта от 12 до 16%, а массовая концентрация Сахаров находится в диапазоне от 210 до 300 г/дм3 (и титруемых кислот там в пределах от 3 до 8 г/дм3), то согласно ГОСТ 7208-93, мы зрим ликерное вино, которое полностью соответствует российскому стандарту качества.

А если спирта около 12%, а содержание сахара стремится к нулю (полного нуля тут не бывает), то перед нами сухое столовое вино.

Если спирта будет менее 9%, то это, скорее всего, уже будет фляка, а не сухое вино.

Если спирта ноль, то перед нами компот обыкновенный, виноградный.

Итак,

  • если все диапазоны соблюдены,
  • если лабораторные пробы показывают правильность ожидаемых цифр,

Вопрос — это качественное вино?

Безусловно, да. Все то, что укладывается в заранее установленные параметры, является качественным.

Но вот…

Вкусное ли это вино?

«Вкусность» нельзя рассматривать с точки зрения циферок ТТХ.

«Вкусность» — уже дело третье, ведь заявленое качество полностью соблюдено, поэтому вино считается качественным.

Однако именно по «вкусности» качество вина и определяется конечным потребителем 🙂

Вино, которое всего лишь полностью соответствует параметрам ГОСТ, ничего необычного из себя не представляет. Его можно выпускать на рынок, тестирование оно проходит успешно, но страдать от счастья с этим вином не приходится.

Это простое, стандартное вино.

Проблематичность оценки заключается в факторе субъективности. Все мы «разбираемся в винах» (не забываем оттопыривать мизинец). И все мы когда-то попадаем в странную ситуацию: обычное, безусловно стандартное вино не воспринимается как качественное.

Под качественным вином нами почти всегда подразумевается ВЫСОКОкачественное вино.

Очевидна ли подмена понятий и ожиданий?

Это понятно, или это странно?

Трабла в том, что высококачественное вино в ГОСТ не описывается. Оно просто иногда «получается».

Иногда можно попытаться предсказать, что «вот это вино получится высококачественным, очень юзабельным, с приятным и долгим послевкусием«, патамушта оно было сделано из винограда с такими-то высокими показателями ТТХ. Но бывает, что ожидания не оправдываются.

Иногда марочное вино, заранее предназначенное для многолетнего выдерживания в бочках, может обещаться когда-нибудь быть ВЫСОКОкачественным, и зачастую оно таким становится.

А иногда — нет.

Не всякое вино можно выдерживать по 50 лет в бутылках.

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

Да и вообще, что такое «высококачественное вино»? Баланс между содержанием танинов, кислотностью и ароматикой? Долго послевкусие? Новое послевкусие?

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

Но есть вина, которые поражают неожиданным финтом:

  • понюхал — почуял что-то одно.
  • попробовал — почуял что-то другое.
  • подождал десяток секунд, и ВНЕЗАПНО чувствуешь во рту вообще третий вкус, совершенно неожиданный и невесть откуда взявшийся.

Это ОЧЕНЬ круто.

За такие ощущения стоит заплатить дорого.

Ординарные вина подобными эффектами не обладают в принципе.

Понятно, что под высококачественным подразумевается превышение ожиданий, и скорее всего, это будет не превышение физико-химических цифровых показателей. Это нечто априори субъективное.

У опытного винодела вино, вероятнее всего, получится качественным.

У опытного и талантливого винодела вино, вероятнее всего, получится качественным, а вероятно, и высококачественным.

Все это зависит от винодела, а не от его лаборанта.

Тестировщик — не винодел. Он не разрабатывает.

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

Тестировщик — не инстанция, которая делает что-то такое, что позволяет качество продукта повышать или понижать, сильно или слабо болея за разрабатываемый продукт.

Продукт — вот он, готов (пусть даже частично), пробуйте и оценивайте.

Тестировщик определяет готовность и качество продукта, и сообщает эту информацию тем, кому она важна, dixi.

То, что тестировщики «не болеют» за продукт, не является проблемой аутсорсинга тестирования.

Более того, это вообще свойственно не только тестировщикам, но и всем остальным участникам разработки.

Взваливать ответственность за качество продукта на тестировщиков правильно только с точки зрения принципов Quality School (знаете ведь про школы тестирования, да?). В остальном это неправильно и даже пагубно.

У винодела с оценкой качества дела обстоят бинарно — вино или получилось, или нет, это быстро определяет химлаборатория при заводе.

Фиксить баги винодел не может, продукт уже готов. Он может их только предвидеть и может принимать какие-то меры в процессе производства, не более.

Все то, что винодел мог сделать, он должен был сделать ДО того, как вино объявляется готовым.

В виноделии, в случае если «не получилось», вы просто идете домой и сосете себе палец до просветления. Невозможно что-нибудь исправить в вине, которое «не получилось» в принципе.

Выправлять в готовом продукте можно только какие-то частности, но это редкость, и требует шаманства.

Да шаманство и не поможет, если речь идет всего лишь об исправлении дефектов.

В софтостроении хорошо то, что если продукту присущи какие-то дефекты, то их почти всегда можно исправить.

Но исправление дефектов не повышает качество продукта.

Исправление дефектов только «лечит» продукт, там, где что-то прогибается в минус, и после починки просто поднимается до уровня «ноль», то есть — как и ожидалось.

Картинка для наглядности

На оси Х слева направо последовательно перечислены какие-то функции, для которых мы будем выяснять уровень качества воплощения. Уровень «0» это очень хорошо, это значит, что в частностях все получилось as expected.

На оси Y отображается в «минусе» важность дефектов, которые были найдены, а в «плюсе» — уровень сатисфакции той или иной фичей.

Для наглядности — функция №1 получилась отменной, и получила целый балл к карме.

Любо-дорого открывать сайт в принципе 🙂

Остальные функции отзываются как положено, ок.

Функция №17 выдала нам такой лажовый бэмц, что приоритет бага был объявлен критическим. Позже баг пофиксят, и функция придет в норму. В норму, в «ноль», а не в дальние высоты программерского искусства.

Идея понятна?

Теперь вот что получается.

Качественный продукт — это ноль по всем показателям. Простое соответствие ожиданиям.

Высококачественный продукт — это выше нуля по всем показателям.

Такое бывает?

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

[polldaddy poll=5240022]

Как мы давно мечтали, но так и не смогли…: 61 комментарий

  1. Albert Gareev

    «Quality is value to some person.» http://en.wikipedia.org/wiki/Gerald_Weinberg
    «.. who matters», добавляет Джеймс Бах.
    На русский я перевожу это как «качество — это польза для клиента».
    Но клиент, хотя и всегда прав, не всегда знает заранее что именно и как он хочет, пока не начнет пользоваться. Да и в процессе вкус будет меняться.
    И не всегда точное соответствие техническим параметрам гарантирует качественный (полезный) продукт. Слыхали анекдот про гибрид утюга с телефоном? «А че у тя с ухом-то? — Да я брюки гладил, а мне как раз позвонили..»
    А мораль простая: наперед на все на свете технические нормативы не придумаешь. Чтоб только польза и никакого вреда. Тем более в области развивающихся технологий.
    Пример: новые веб-фишки сначала выходят в частном порядке, используются сколько-то времени, и только потом консорциум W3C рассматривает утверждение конкретного решения в качестве стандарта.
    А задача тестирования формулируется просто: во-первых, изучить что из себя продукт представляет (что-где-с чем-куда-откуда-как-когда.., http://www.satisfice.com/articles/sfdpo.shtml), во-вторых, наиболее полно узнать, кем и в каких условиях продукт будет использоваться, в третьих, сопоставить первое со вторым, и в четвертых, доходчиво сообщить результаты исследования клиенту. Сам процесс непростой, и, конечно, не пошаговый, а параллельный и циклический. Показательно также, что он технический «внутри» и гуманитарный «снаружи».

  2. Vasil Kasimov (@VasilKasimov)

    Отличнейшая статья, но осилить удалось только с третьего раза. Дискуссия в комментариях позволяет лучше понять точку зрения автора.
    Спасибо, Алексей.

  3. Сергей

    Ну вот теперь можно и на конференцию с правленым вариантом. 😉

  4. Vladimir

    …рассуждения на тему цели тестирова…
    Качество ПО по моему мнению это соответствие требованиям и целостность продукта. А цель тестирования — ТЕСТИРОВАНИЕ, смысл заложен в само название — добывание сведений о состоянии проекта(продукта). Тестеры добывают эту информацию для предоставления разработчикам, менеджерам, заказчикам, ссылаясь на требования от заказчика(документацию), собственное мнение ( в том числе и по докам), юзабилити принципы, требования и нужды потребителей, . И несомненно — в этом процессе задействованы все участники проекта.
    Ведь и винодел, и виноградарь, и их начальник, и лаборант, и члены их семей, и конечный пользователь — любой может попробовать и высказать свое мнение. И чем больше будет таких мнений — тем легче будет сформировать направление по улучшению качества — это и вкуса, и цвета, содержания сахара, времени сбора и других аспектов, влияющих на качество. Но для таких выводов надо на протяжении всего процесса пробовать — тестировать…
    Ведь если мы запрем коньяк на 20 лет в дубовую бочку — это еще не означает что он будет стоящим коньяком, может быть наилучший вкус у коньяка будет, если бочку разлить и выпить через 3 года — по результатам тестирования 😉 , ведь если оставить — он просто скиснет.

  5. vicd

    «А борьба за качество? Кому объяснишь, что нельзя сначала производить продукт, а потом начать бороться за его качество? Что такое сыр низкого качества? Может, это уже не сыр? Или еще не сыр? Это сыворотка. А сыра низкого качества не бывает. И велосипед низкого качества – не велосипед. Это все дерь… сырье! Которое должно стать велосипедом.»
    © Непереводимая игра. М. Жванецкий 1986 г.

  6. SergeyS

    Давно уже, несколько раз пробегался по статье.
    Выводы.
    1. Смысл тестирования это как смысл жизни, айти индустрии, деятельности Стива Джобса или Билла Гейтса, программиста, дворника, танкиста. Он состоит в заработке и получении удовольствия. Коротко и ясно. Про гениальность уж и говорить не буду.
    АХХАХААХАХАХАХАХАХАХААХА 😉
    2. Статья не упоминаниет группы пьющих, у каждой из которых свои потребности, пристрастия, желания, представления о качестве продукта.
    Крайне редко пью вино. Недорогое. Тонкие оттенки вкуса-букета-аромата и т.д. различить не могу. Да мне и не надо.
    То же самое с коньяком. Водка противная, не пью из принципа. А мой друган водку предпочитает остальным напиткам. К чему эта писанина?
    Не просто не всякий человек, а большинство (как и я) не отличит дорогое вино от дешевого. Все эти бутылки такого-то года, из винограда с такого-то склона предназначены для узкой группы ценителей, а подавляющее большинство довольствуется меньшим, еще меньшим, совсем малым (по цене-качеству). Есть вообща банда алкашей, пьющих все, что горит.
    Блин, как-то все банально.

  7. Алексей Лупан

    Смысл жизни состоит в передаче генотипа по цепочке, чтобы наш вид/род продолжался. Зп и удовольствия не могут быть смыслом жизни.
    Про тонкости вина, очевидно, с вами говорить не будем. Будем о чем-нибудь другом говорить.

  8. SergeyS

    Более того, мне с вами бессмысленно это обсуждать.
    Нет же смысла рисовать коня в вакууме, в отрыве от реалий потребления продукта 😉

  9. SergeyS

    Вдогонку. Если уж про смысл жизни, то ваша формулировка, как минимум неточна. С данной точки зрения, смысл жизни состоит в выживании. То есть, передаваться по цепочке должен жизнеспособный, а лучше, более жизнеспособный генотип. Ну кому доставит счастье больной ребенок, инвалид детства, неспособный ни заработать себе на хлеб, ни порадоваться жизни? Родителям, себе, детям? Наша цивилизация в 19-ом веке встала на путь самоуничтожения и теперь все чаще встерчаются исключения из этого природой запрограммированного правила. Но я против! 😉
    Видел как-то семейную пару глухонемых, у которых девочка нормальная. Так она подражает их манере «говорить»! Ужас.
    Ну ладно. закругляюсь.

  10. Алексей Лупан

    Нет.
    Я сказал, что смысл жизни в том, чтобы передать свой генотип дальше, а не в том, чтобы передавать только более жизнеспособный генотип.

Добавить комментарий