Как измерить успешность тестирования |
26.10.2015 11:49 |
Автор: тестировщик и блогер Sean Оригинал статьи: http://chippietester.blogspot.ru/2015/10/measuring-success-in-testing.html Перевод: Ольга Алифанова Я абсолютно убежден,что подходы и методы тестирования нужно постоянно совершенствовать. В последнее время моя команда стремится к тому, чтобы наши тестировщики тоже разделяли эту позицию. Мы пытаемся этого добиться, разъясняя, что:
Беседуя с тест-аналитиками о совершенствовании наших подходов и внедрении новых техник, я начал задумываться о целях улучшения тестирования. Как мы узнаем, что эта эволюция положительно повлияет на него? Как мы определим, что новая идея действительно улучшила наши процессы? Я спросил тест-аналитиков, бизнес-аналитиков и владельцев продукта, как измеряется успешность тестирования. Ниже приведено краткое содержание моих записей, сделанных в процессе общения, и перечислены проблемные места каждой метрики, которые (как я считаю) нужно учитывать при попытке эти метрики применить. Я также постарался изложить свое видение оценки успешности тестирования. Расшифровка моих записей: 1. Метрики, связанные с количеством дефектов. a. Количество дефектов, найденных в процессе тестирования. i. Смысл метрики: если мы нашли множество дефектов в фазе тестирования, то эти дефекты не дойдут до пользователя. Следовательно, качество нашего продукта повысилось. b. Количество дефектов в релизе i. Смысл метрики: если в релизе багов не обнаружено, то наше тестирование покрывает все возможные области продукта. c. Количество критических дефектов в релизе. i. Смысл метрики: убедиться, что критические дефекты не доживают до релиза. d. Проблемные места: i. Насколько значимы найденные баги? Баги есть в любом продукте, но имеют ли они значение для бизнеса? ii. Критичность дефекта – штука субъективная. Если в релиз не вышел ни один критичный дефект, но продукт провалился и никому не нужен, возможно, вы неверно оценили уровень критичности. Успешно ли в этом случае ваше тестирование? iii. Если мы не находим баги - это не значит, что их не осталось. И наоборот - возможно, в коде просто было очень мало багов изначально. И чьей заслугой в результате будет качественный продукт - тестировщиков или программистов? 2. Метрики, измеряющие время. a. Время, потраченное на тестирование. i. Смысл метрики: чем быстрее будет выпущен продукт, тем лучше. Следовательно, чем меньше времени мы тратим на тестирование, тем оно успешнее. b. Время, прошедшее с момента обнаружения последнего бага. i. Смысл метрики: если мы давно не находили багов, возможно, их не осталось. c. Проблемные места: i. Быстро - не значит качественно. ii. Если вы не можете найти баги, это не значит, что их нет. Возможно, найдены все очевидные баги, но продукт не избавлен от них окончательно, и его качество может пострадать.. 3. Покрытие a. Степень покрытия кода тестами i. Смысл метрики: если весь код запускался хотя бы раз, выше шансы, что мы найдем баги продукта. Эту задачу решают, к примеру, юнит-тесты. b. Количество приемочных критериев, которым удовлетворяет продукт. i. Смысл метрики: мы знаем, как продукт должен работать. Если он работает как надо, значит, мы создали именно то, что собирались создать. c. Вопросы для размышления: i. Такой подход может привести к тому, что вы будете слепо верифицировать требования, не пытаясь "уронить" программу или проверить, как она себя поведет при необычном варианте использования. ii. Продукт постоянно развивается, в нем множество сложных взаимосвязей. Нельзя фокусироваться только на изменениях и дополнениях в нем - новый функционал может сломать то, что не менялось. Тестируя новые фичи, не забывайте про регрессию. 4. Объем тестирования a. Объемы проведенного тестирования i. Смысл метрики: если мы много тестировали, продукт наверняка получится качественным. b. Объем тестирования, которое не было проведено i. Смысл метрики: мы сознательно решили не тестировать эти области. c. Вопросы для размышления: i. Большие объемы тестирования могут быть пустой тратой времени. Отказ от тестирования требует взвешенного решения, что именно нужно тестировать, а что можно пропустить. Это решение всегда связано с определенными рисками, самый серьезный из которых - ваша предвзятость. В прошлый раз вы не тестировали эту область, продукт от этого не пострадал - будете ли вы проверять ее в следующий раз? Повлиять на решение может и предвзятость бизнеса - "В прошлый раз мы много тестировали, а продукт провалился - значит, тестируйте еще больше!" Мой взгляд на то, как измерить успешность тестирования Я считаю, что перечисленные точки зрения имеют право на жизнь, но концентрироваться надо на вкладе тестирования в успешный запуск продукта. Если наш продукт успешен - значит, успешным было и наше тестирование. Но чтобы вынести такой вердикт, нужно четко понимать факторы, которые влияют на успешность продукта. И даже зная их, дать однозначный ответ на вопрос, успешным ли было тестирование, не всегда возможно. К примеру, если критерии успешности продукта – это его выход в срок и в рамках бюджета, сможете ли вы оценить, какую роль в этом сыграло тестирование? Поэтому, оценивая, насколько тестирование помогло успеху продукта, я ищу ответы на следующие вопросы: 1. Достаточно ли я тестировал?
2. Добавило ли тестирование ценности продукту?
3. Нашел ли я баги в продукте?
4. Что такое "успешный продукт" в глазах заинтересованных лиц?
Я не пишу в явном виде, что успешность тестирования измеряется качеством продукта. Я считаю, что это входит в третий вопрос - "Нашел ли я баги в продукте", - так как оценка качества продукта неразрывно связана с уровнем критичности найденных дефектов. Мне очень нравится статья Майкла Болтона «Три вида метрик и два способа их использовать». Она заставила меня задуматься о различных подходах к использованию метрик и том, какого уровня детализации требует оценка тестирования. Думаю, главное, что я узнал в процессе общения с людьми и размышлений на эту тему - это то, что к оценке успешности тестирования нужно подходить со всей серьезностью. С моей точки зрения, это не столько шаблонная, сколько творческая деятельность, и в любом случае, это стоит обдумать. |