Много — не всегда хорошо. В чем суть достаточного тестирования и как его использовать правильно

Много — это не всегда хорошо. В этой статье постараюсь убедить вас в том, что объедаться вредно и хорошо знать меру :) Каждый уважающий себя тестировщик в душе перфекционист и стремится сделать все как можно лучше. Благое стремление, которое может привести в самый настоящий ад. Чтобы этого не допустить, предлагаю подход достаточного тестирования. Статья поможет вам с выбором приоритетов и критериев для составления плана тестирования.

Иллюстрации Уляны Патоки

Читая материалы по тестированию, часто можно наткнуться на примеры со списками проверок для того или иного функционала. В большинстве из них авторы осознанно или просто стараясь показать побольше видов и подходов к тестированию добавляют огромное число проверок. Как-то я увидел чек-лист на 50 проверок для одного поля ввода. Человек, составивший его, считается уважаемым специалистом, на чей авторитет ссылаются авторы других статей. Но все это увеличение количества проверок стремится ровно к одному — к исчерпывающему тестированию, которое на практике почти невозможно достичь.

Поэтому частым советом, особенно для начинающих тестировщиков (хотя и заканчивающих тестировщиков я не встречал), становится: тестируйте всё и всеми известными способами. Что с точки зрения тестирования, возможно, и не такой плохой подход. Особенно если тестируете программы для атомной станции. Но в условиях коммерческого программирования на заказ, с ограниченным бюджетом это может оказаться разрушительным. Расширяя поле тестирования, увеличивая проверки до бесконечности, мы также в бесконечность увеличиваем время, необходимое на проверку. И вот перед нами чек-лист на несколько тысяч пунктов, и вроде бы все из них нужные. А времени на тестирование как было 8 часов, так и осталось, потому как задачи обычные. И это еще не учитывая ситуации, когда менеджмент требует постепенно уменьшать время, затрачиваемое на тестирование, поскольку бюджеты в условиях кризиса уменьшаются.

Количество проверок

Также к избыточности тестирования ведут рассуждения вроде: «Могу ли я провести тот или иной вид тестирования на моем проекте?» Практически всегда ответ будет: «Да, такая возможность существует». Но, прежде чем начинать расширять поле тестирования, добавлять новые инструменты и подходы, было бы разумно задуматься вот над чем.

Каждая, даже самая маленькая и простая проверка — это способ получить какую-то информацию о проекте или тестируемом объекте. Добавляя новые проверки, сможем ли мы узнать что-то новое о проекте или же это будет пустая информация? Приведу пример из своей практики.

На собеседовании я предложил кандидату совместно разработать подходы к тестированию простого проекта — сайта под управлением CMS WordPress. Это тот тип вопросов, у которого нет правильного ответа. Он хорошо показывает подходы к работе и образ мышления человека.

Кандидат, как и многие из нас на собеседованиях, постарался показать, что знает о существовании большого ряда проверок, техник и подходов, и начал добавлять к нашему плану избыточные проверки. Например, нагрузочное тестирование сайта. Как излишнее, спросите вы? Ведь это важная информация о проекте: какое количество пользователей он одновременно выдержит, от этого зависит и безопасность, и бизнес. И я с вами согласен! Безусловно, это важно, но не в случае, если проект развернут на тестовом сервере. Технически провести такую проверку возможно. Но вот информация, которую мы получим, будет бесполезна, поскольку мы узнаем предел посещаемости тестового сервера и это нам ничего не сообщит о поведении сайта уже на лайве. Это не говоря о том, что, положив тестовый сервер, где хостится не только наш текущий проект, а и проекты всего отдела, добрых слов от коллег мы не услышим. Что же будет, если после такой проверки сервер не поднимется, лучше и не думать.

Неизвестность и вероятность

Также частые причины, из-за которых раздувается время тестирования, — неизвестность и вероятность. Что я подразумеваю под этими терминами? Неизвестность — это то, с чем сталкивается любой тестировщик хоть на новом проекте, хоть уже на существующем. Все ли я посмотрел? Не осталось ли мест, ситуаций, окружения, при которых появляются баги? Если ничего не делать с этой неизвестностью, то время тестирования будет постоянно расти. Потому что, положа руку на сердце, всегда можно еще немножко проверить или глянуть на проект чуть иначе: в другом окружении, разрешении и при других вводных данных. Вероятность — это вероятность возникновения бага. Баги есть всегда, но вот появляются они в момент обнаружения. Поэтому, пока баг не обнаружен и не исправлен, нельзя с уверенностью утверждать, что его там не существует.

Поэтому, добавляя ту или иную проверку, мы увеличиваем вероятность обнаружения бага. Грубо говоря, в тестировании как в рыбалке: чем больше сетей расставим, тем выше вероятность что-то поймать. Но и по аналогии с рыбалкой нужно сказать, что ставить сети на берегу, где рыбы нет по определению, так же неразумно, как добавлять бездумно проверки. Ведь так нарушается один из принципов тестирования, а именно скопление дефектов. То самое знаменитое правило 80/20 только в применении к тестированию: 80 процентов багов сосредоточены в 20 процентах модулей. И это значит, что проверять нужно там.

Время тестирования

Допускаю, что описанное выше определение далеко от ортодоксального толкования тестирования. Но тестирование — это среди прочего деятельность, направленная на уменьшение потерь времени и, как следствие, денег. Из-за багов клиент теряет время, а значит, и деньги, ведь разработчики тратят время (читай деньги) на исправление багов. Потратив немного времени на тестирование сейчас, мы стараемся застраховаться от больших потерь в будущем. Вместе с тем, увеличивая время тестирования (а оно будет увеличиваться, потому что растет количество проверок), мы повышаем его стоимость. И в крайних случаях стоимость проверки станет больше, чем стоимость времени разработчика, потраченного на исправление багов, если их найдет клиент.

И тогда тестирование становится бессмысленным. Мы приходим к явному противоречию: с точки зрения тестирования нужно увеличивать количество проверок, с точки зрения бизнеса нужно их уменьшать, при этом нельзя допускать потери качества. Выходом из этого противоречия становится достаточное тестирование, которое опирается на один из основных принципов процесса: тестирование зависит от контекста. Большой бюджет, много времени — проверяем все; малый бюджет, мало времени — проверяем только основной функционал.

Что делать

Как в этих условиях выбрать, что тестировать обязательно, а что по остаточному принципу? Хорошо, когда есть возможность согласовать ваши подходы с менеджером проекта. Но на практике часто и менеджер проекта, и технический директор компании скажет, что проверять нужно все и чтобы багов там не было. Поэтому разработка критериев, по которым тестировщик будет составлять список тестовых активностей, будет полностью на менеджере. При выработке таких критериев опереться можно на требования к проекту, на логику (для чего он работает) и частоту обращений пользователей к определенному функционалу. Рассмотрим каждый пункт отдельно.

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

Логика проекта. Каждый проект делается для чего-то конкретного. У него есть цель, функция, которую он выполняет. Если понять ее, можно без труда выделить основные функциональности, которые требуют особого внимания, и вспомогательные и проверить их по остаточному принципу. Если позволяет время и бюджет. В качестве примера приведу сайт-визитку с формой обратной связи. Если не работает форма обратной связи — основной функционал проекта, то не так важно, сохраняется ли pixel perfect в IE11. Тут сразу видно, где основная функциональность и что тестировать в первую очередь.

Частота обращений пользователей к функциональности. Как часто люди пользуются справкой на проекте? Вот так же часто нужно эту справку тестировать. Если пользователи сосредоточены на определенной конфигурации операционной системы, браузере или платформе, то на ней и нужно тестировать в первую очередь. Если проект долгий, то у вас, скорее всего, будет определенная статистика. А если новый, следует исходить из общих представлений о популярности устройств, браузеров и так далее. Но также подумать над тем, какие части проекта будут использоваться чаще, и на основе этой гипотезы расставить приоритеты.

Подведем итог

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

Похожие статьи:
Новые версии ReactOS 0.4.0 Kotlin 1.0 Vulkan 1.0 Docker 1.10 Go 1.6 TypeScript 1.8 htop 2.0 ESLint v2.0.0 FFmpeg 3.0 GitLab 8.5 Аналитика Ukraine has an army of nearly 100,000 IT professionals working for 100+ global...
Оценивая свои компании для рейтинга работодателей, украинские айтишники имели возможность не только поставить своей фирме оценки...
«Якими є ваші основні побоювання щодо повоєнних процесів наймання та пошуку роботи в IT?» Це запитання ми поставили українським...
Цього року ми запропонували IT-спеціалістам трішки покреативити на День вишиванки та отримали 500+ яскравих фото. Було шкода...
Українська компанія Netpeak Software закрила доступ до своїх програм в росії та білорусі. Кошти користувачам звідти повертати...
Яндекс.Метрика