Как количество багов влияет на качество программного обеспечения?

Усі статті, обговорення, новини про тестування — в одному місці. Підписуйтеся на QA DOU!

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

1. Сколько багов (насекомых) может находиться в шоколадке?
Может показаться, что вопрос глупый, потому что шоколадка должна быть чиста от багов. Ошибочное мнение. FDA декларирует, что в 100 граммах шоколадки может находиться в среднем не более 59 частичек насекомых, когда шесть 100 граммовых шоколадок проверены. 59 — это нормально. 60 — это уже перебор. В принципе на вкус не должно сильно повлиять. Там ещё указывается, сколько волосинок шерсти грызунов может находиться в шоколадке. Среднее значение 1 или более волосинок при проверке шести проб по 100 грамм — это считается нарушением. Если в пяти пробах будет по одной волосинке, а в шестой не будет, то получаем 5/6 = 0.83 — норма.
Можно сравнить с разработкой программного обеспечения. Если вы найдёте лапку таракана в шоколадке, которую с удовольствием кушали, и пожалуетесь производителю, вам могут ответить, что это фича. Всё соответствует высочайшим стандартам написания качественного кода. Могут даже подтвердить, что в шоколадке ещё есть 58 низкоприоритетных багов и одна волосинка крысы, но не критичная. Ешьте на здоровье!
Food Defect Levels Handbook
www.fda.gov/...​od-defect-levels-handbook

2. Сколько багов (насекомых) живёт на планете Земля?
Учёные примерно подсчитали, что одномоментно на планете Земля живёт около 10 квинтиллионов (10,000,000,000,000,000,000) насекомых.
Сколько багов находится в программном обеспечении, никому не известно. Скорее всего их совокупное количество меньше, чем количество насекомых на планет Земля. Есть ещё к чему стремиться. Пока же баги подсчитываются, клиентов информируют только о самых важных. Мелкие по приоритету баги не замечают и стараются не исправлять, так как это экономически невыгодно.
www.si.edu/spotlight/buginfo/bugnos

3. Норма количества мух (багов) в супе?
Мокрая, но живая или мёртвая муха в супе не приветствуется ни одним нормативным актом. Тут можно быть спокойным, если конечно муха не является частью блюда. Нет блюд с мухами, я проверил в Интернете, но есть сыр casu marzu или «гнилой» сыр. В нём водятся личинки сырной мухи, которые этот сыр делают и одновременно являются показателем его свежести. Я не пробовал это изысканное блюдо, но говорят есть можно. Гурманов заранее предупреждают, что во время употребления сыра нужно беречь глаза, так как баги (личинки сырной мухи) способны прыгать на расстояние до 15 сантиметров. Сомнительное удовольствие, конечно, пробовать сыр и уклоняться от выпрыгивающих из него личинок, но всегда можно надеть защитные очки. Помимо этого, употребление сыра в пищу несёт несколько опасностей, одна из которых — это те же самые личинки сырной мухи. Как вы понимаете, они могут быть съедены вместе с сыром. Их устойчивость к желудочному соку и стремление вырваться наружу сквозь стенки желудка — это и есть одна из проблем. Личинки просто бурят себе дорогу к свету и расстраивают клиента отобедавшего сыром. Прямо как баги в новом софте, которые только и ждут хорошего момента, чтобы вырваться наружу и испортить клиенту приятное впечатление от использования программного продукта.
ru.wikipedia.org/wiki/Касу_марцу

4. Какое количество багов в программном обеспечении является нормой?
Конечно же, нет такого справочника, как таблицы Брадиса, в котором можно легко найти норму багов на основании размера фирмы, количества программистов и т.д. Норма багов — сугубо индивидуальное и субъективное понятие. Лучший показатель нормы — это нервная системы клиента. Если клиент уже кричит, брызжет слюной и выпучивает глаза, то это верный знак, что норма багов была превышена и нужно срочно что-то делать, а именно клинап. Это всегда помогает уменьшить накал и пофиксить старые баги, попутно сломав функциональность, которая до этого прекрасно работала. Такой себе задел на будущее. Заодно можно проверить клиента, как он пользуется софтом. Если нужная ему функциональность сломана, а клиент это заметил через пять лет после клинапа, то не так уж и сильно он ей пользуется. И поделом ему. Для успокоения клиента всегда можно выпустить обновление софта с быстрофиксом.

В борьбе с багами IT уникален. Баги в софте можно постараться посчитать, но избавиться от них получится только непрямым воздействием. Желательно обратить пристальное внимание на условия способствующие возникновению бага. Влиять на количество багов не прямым опрыскиванием ядохимикатами, а опосредованным воздействием на сопутствующие факторы. Вот только как определить, что качество софта улучшилось после исправления багов и устранения факторов, влияющих на их возникновение. Существует ли универсальная метрика, которая покажет качество софта до и после улучшения, чтобы можно было понять, в какую сторону идёт улучшение? Желательно иметь метрику, которая не основывается на ложных ощущениях качества, а только на объективных показателях. С шоколадками всё просто шесть волосков — плохо, а пять — норма. С программным обеспечением это не работает. В софте может быть миллион багов неизвестных клиенту, и он будет счастлив, а может быть один супербаг расстраивающий клиента, и клиент расторгнет договор.
Как же измерить объективное качество программного обеспечения?
Для меня это вопрос открытый.
Буду признателен, если кто-то сможет посоветовать что-то дельное.
Заранее спасибо.

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Как сказал классик: «Хватит измерять качество, создавайте его»

Как понять, что нужный уровень качества достигнут? Может получиться так, как боролись в перестроечные времена с пьянством. Всегосударственная борьба с пьянством путём разъяснительной работы на митингах. Сказано, сделано. Даже критерий качества борьбы был — количество митингов. Вот только была проблема: Как заманить любителей алкоголя на митинги? Нашли элегантное решение — стимулировать деньгами. Пять рублей в конверте каждому, кто посетит митинг, позволило достичь невиданных высот в борьбе с пьянством. Качество борьбы было на высоте, вот только результат получен диаметрально противоположный. Как могли, так и создали качество.

Я думаю всё же вопрос должен звучать не «как понять, что нужный уровень достигнут?», а «что такое нужный уровень качества в нашем случае?». Потому что как раз тестирование и призвано определить, насколько мы соответствуем ожиданиям. И с этим плюс-минус проблем нет, если требования ясны.
А вот выявить конкретные требования к качеству может оказаться сложнее. Пробовали в ISO? Там есть стандарт 25010:2011. Может наведёт на мысли

Согласен. Нужно понимать текущий уровень. Может даже оказаться, что его можно немного понизить. :) Спасибо за ISO. Почитаю.

Давайте подумаем: почему лапка таракана или ворсинка крысы в шоколаде — не критичный баг? Потому что они прошли термо-обработку и не представляют угрозы. Так же как муха в горячем супе: критичный с точки зрения внешнего вида дефект, но если ее выловить — то суп можно безопасно есть.
Проблемы, которые действительно несут угрозу обнаружить гораздо сложнее! Вместо волоса крысы может попасть крысиная отрава, вместо мухи — паразиты из недоваренного мяса. Их не найдешь поверхностным осмотром.
К сожалению с ИТ багами ситуация еще хуже! Если качество мяса, молока, сроки годности товаров контролируют соответствующие органы — то тотальной проверки качества софта, к сожалению, нет.
QA чаще всего проверяют именно внешний вид и сиюминутное поведение: если багов не видно и ошибок не вылезло — значит ок. При этом зараза внутри только разрастается: продукт начинает гнить изнутри и пропитываться плесенью. Когда это выйдет на поверхность и станет заметно — будет уже поздно... или нет! Ведь, в отличии от просроченных продуктов, устаревшие, небезопасные, неудобные и некрасивые программы не спешат выбрасывать! Тот же IE до сих пор жив в корпоративной среде.
Поэтому с ИТ все проще: вытянул муху, счистил плесень снаружи, подкрасил что бы было незаметно — и вот «баги пофикшены», QA довольны, клиент — лох очередной раз платит за гнилье.

Задача QA шире. Они должны гарантировать качество, а это не только тестирование. Ну и традиционно все забывают о программистах, когда говорят о качестве. Ведь муха в супе — это заслуга программиста, который её туда положил и никого не уведомил, что рецепт (требования) изменился.

Кажется, вы не читали классики. В мою бытность QA водились книжки, утверждающие, что:
* 40% багов можно найти через white box testing (код ревью и юнит-тесты)
* 40% багов можно найти в black box testing (мануалка и автотесты)
* Оставшиеся 40% не найти никак (white + black одновременно дают всего 60% потому что множества обнаруженных багов пересекаются)

Кроме того, в умных книжках разделяли баги по порядку:
* Баги первого порядка — это когда тыкнул мышкой или подложил неверный файл — и оно упало.
* Баги второго порядка — это когда подложил неверный файл, все вроде ок, а потом при каком-то действии через пол-часа оно упало.
* Баги третьего порядка — когда проблема вылазит при последовательности трех определенных действий.

Так вот, из 60% обнаруживаемых любым тестированием багов, большинство — первого порядка. Баги высоких порядков идут прямиком пользователям. И когда вы слышите, что у мейл.ру упали сервера и день не могут поднять — это или в кабеля строители сваю забили, или сработал баг третьего порядка.

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

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

Итого: QA вообще ничего не может гарантировать. Это из тех же умных книжек. Задача QA — довести качество продукта как можно ближе к применимому на практике, и поднимать красные флаги, когда продукт выглядит неудобным или нестабильным.

QA (от англ. ... quality assurance) — обеспечение качества. Возможно, что вы путаете с QC. Quality Assurance обеспечивает правильность и предсказуемость процесса, в то время как Quality Control предполагает контроль соблюдения требований.

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

Ничего он не путает.

Просто перестаньте верить в то, что тестирование приносит качество или что оно за него отвечает.

Quality Assurance — это гораздо больше, чем тестирование, потому что тестирование — это только часть QA. Неважно во что я верю или не верю. Только объективная оценка проблемы может подтвердить или опровергнуть верования. А так мы можем дойти до того, что пятница сама по себе действительно плохо влияет на деливери, а не люди, которые его делают и плохое планирование. Тот, кто верит, в ответах не нуждается. Мне же интересно найти ответ, но пока есть только чувства не подтверждённые ничем.

Ответ в том, что зарплата берется из заказчика. И обычно ему не нужны люди, пишущие многотомники с методологией, а затем — этим многотомникам постранично следующие. Слишком долго и неэффективно.

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

Так вот же вроде!
en.wikipedia.org/wiki/ISO/IEC_29119
Если сможете прочесть — расскажите, пожалуйста, о чем оно

Это о тестировании, а не о качестве и как его измерить.

То есть, международный стандарт о тестировании никак не волнует качество? К чему бы это?

К тому, что международный стандарт нужно применять осознанно. Он же необязательный. Что его волнует — это его проблема. Да и ничего нового в нём нет.

С удовольствием бы почитал многотомник с методологией, а не отвлечённые от жизни фантазии, которых много на просторах интернета. Если методология правильная, то заказчик и производитель могут сэкономить много денег.
К тому, что международный стандарт нужно применять осознанно. Он же необязательный. Что его волнует — это его проблема. Да и ничего нового в нём нет.

Чётное количество — хороший код, нечётное — плохой.

Очень сложная метрика. :) Будет много митингов о том, как считать код. Да и при хорошем коде программа может оказаться плохого качества. Клиент кода не видит и его мало волнует насколько он хорош.

Вот! Будет чем на митингах заняться. Какое бы решение не приняли, оно меня устроит, один хрен в процессе работы количество багов меняется. Лишь бы работать не мешали.

1. Сколько багов (насекомых) может находиться в шоколадке?

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

FDA не советует есть сырую рыбу, поэтому и стандарта такого нет. Заморозка уничтожает всех паразитов, но только термическая обработка поможет уничтожить опасных для человека микробов. Но тут уже кто во что верит. :)

Eating Raw Seafood — What You Need To Know

It’s always best to cook seafood thoroughly to minimize the risk of foodborne illness. However, if you choose to eat raw fish anyway, one rule of thumb is to eat fish that has been previously frozen.

Some species of fish can contain parasites, and freezing will kill any parasites that may be present.
However, be aware that freezing doesn’t kill all harmful germs. That’s why the safest route is to cook your seafood.

www.fda.gov/...​and-frozen-seafood-safely

Метрик сотни. Все они неоднозначны.

Неужели всё держится на чувствах и ощущениях менеджеров о качестве производимого софта?

Почти.

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

Метрикой может быть всё, что можно как-то измерить. То же количество багов как метрика не имеет никакого смысла в отрыве от других показателей. Но на что её можно замапить? На количество строк кода? Это, наверное, самое показательное, бо самое примитивное и очевидно. На количество пройденных тест-кейсов? Их количество само по себе ни о чём не говорит, бо тесты могут быть мелкими, и вот их тысяча, или бесконечно крупными, со спрятанными внутри сюрпризами вроде «повторить всё то же самое для всех остальных типов продуктов в базе», и вот их двадцать, но каждый такой кейс проходят минимум час, а то и два. А рабочий день 8 часов.

И что будет показательнее: пять миноров на тысячу тест-кейсов, или один страшный блокер на упомянутые двадцать?

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

В идеале — чтобы «отслеживать» процессы. Например, обычно группа тестировщиков к 12-ти часам дня отмечает как пройденные 150 тест-кейсов. Если вдруг к 12-ти отмечено только 30 — надо сбегать и спросить, всё ли ок. Может, они подрались, или война началась, или тестовое окружение крякнулось — сбегать и спросить, чтобы потом принимать решения.

В норме — чтобы наказывать тех, кто отстаёт. Значит, Виктор, да? Виктор... вот все кругом выполняют по 80 тестов за день, то есть, по десять тестов в час. А вы только 64 (по восемь в час). То есть, все у нас ликвидируют неграмотность в кратчайшие сроки, один вы ходите неликвидированный. Немедленно идите и ликвидируйтесь по отставанию, напрягитесь, родина в опасностне, не надо ляля, это не плюс 16 тестов в день, это всего лишь плюс два теста в час, вперрррёд и с песней!

Откуда такое зверство: обычно это отголоски общения менеджеров с заказчиками, а заказчик адекватным бывает только, когда спит. Сказывают, что в контрактах с банками может быть метрика допустимых мажоров в проде — например, не больше шести. Если будет седьмой мажор баг — штраф, который превышает сумму контракта. Метрика? Да. Однозначная? Да. Как будете достигать? Можно тест-дизайн улучшать, а можно тестировщиков щемить. Выбор есть всегда.

Метрики надо снимать постоянно, любые, и любыми способами, и при этом надо, чтобы про них не знали исполнители, бо начнут подстраиваться под показатели. Базовые всегда бинарны — нравится или нет. Но они неизмеримы математикой, поэтому их не используют как ориентиры.

Конечно, есть соблазн пойти наиболее очевидным путём. Наказывать за нарушение метрик или поощрять. Но это же не наш метод! Мы же не хотим поощрять или ругать программистов, например, за количество написанного кода. Это глупо. Можно же в порыве борьбы за качество наградить того, кто с первого раза реализовать фичу не может и постоянно перефикшивает. У него много коммитов не потому, что он хорошо и быстро кодит, а потому, что кодит быстро, плохо и поэтому много кода. Меня такие глупости не интересуют. Я не верю в универсальную метрику. Это утопия. Но возможны шаги, которые позволят улучшить качество программного продукта. Вот только опять проблема, как оценить, что что-то было улучшено. Менеджер с его чуйкой, не подходит. Менеджер чувствует, то что ему выгодно чувствовать и не в ущерб себе. Когда же чувства менеджера не подтверждаются реальными данными — это ещё хуже. Менеджер обижается, и начинаются внутренние войны! Меня же интересует борьба за качество мирным путём. Можно даже сказать эволюционным. Вот только клиентам этого не объяснишь. У них есть чёткое понимание качества, хотя и основанное на уже их чувствах к багам. Эти чувства не всегда подтверждается то же. Вечная борьба чувствительных ITшников и чувствительных клиентов за качество программного обеспечения.

Нет никакой борьбы за качество.

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

Just don’t.

ОК. Спасибо за комментарии. Есть над чем поразмыслить.

Как же измерить объективное качество программного обеспечения?

Качество — это то, насколько (хорошо) софт удовлетворяет покупателей. Поэтому варианты:
1) Фокус-группы с опросниками после попытки этим пользоваться
2) Изменение в количестве инсталляций и деинсталляций
3) A/B testing

Покупатель очень нежен и избалован. Его нельзя рассматривать как постоянный дополнительный ресурс для тестирования. Финальная валидация продукта на его плечах, но все баги, найденные в финале, очень дорого стоят для производителя программного обеспечения, как в денежном эквиваленте, так и в виде репутационных потерь. Желательно исправить всё до того, как клиент начнёт искать замену бажному софту и фирме. Не способность следить за качеством может дорого стоить. Вот для этого и нужны адекватные метрики, которые покажут, что всё усилия по тестированию и т.д. гарантируют качество.

Чем фокус-группы не подходят? Или у вас один большой клиент с NDA, и софт для внутреннего использования?

Софт большой, клиентов много. Фокус-группа работает только на добавление новых фич. Клиенты предоставляют отзывы. Но мы же знаем, что иногда клиент преувеличивает проблемы. Производитель же проблемы может преуменьшать. Нужен критерий, который подходит и производителю и клиенту. Уровень качества, который нужно поддерживать или к которому нужно стремиться.

Фокус-группа работает только на добавление новых фич.

Фокус-группа работает даже на стиральный порошок и сравнение сортов консервированной кукурузы.

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

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

Это проблема финансирования. Потратьте свои деньги вы, чтобы быть уверенными в качестве.

Підписатись на коментарі