Недавно услышал
фразу «гарантия тестирования». Стало интересно, что же гарантирует
тестирование?
Так уж
получилось, что люди связанные с тестированием и люде не связанные имеют разное
понимание самого тестирования и того, зачем оно вообще необходимо.
Просто человек со
стороны скажет, что тестирование гарантирует, что в приложении не будет багов.
Для человека знакомого с отраслью – это гарантия того, что кто-то знающий как
тестировать провел какие-то испытания тестируемого приложения. Прошел по
каким-то заранее спроектированным шагам, ввел заранее известные данные,
проверил, что система ответила как ей и положено, либо просто провел
исследовательское тестирование, полагаясь на свои навыки и опыт. А может и то и
другое вместе. Однако, гарантирует ли это, что ваше приложение не упадет и
будет работать правильно, когда его начнут эксплуатировать настоящие живые,
непредсказуемые пользователи? Это вряд ли, согласно законам всем известного
Мерфи...
Так что же мы тогда
гарантируем проводя тестирование?
Давайте
рассмотрим наиболее распространенные цели тестирования и исходя из них, определим,
какие гарантии может дать нам тестирование.
- Цель №1: Поиск багов/дефектов
- Цель №2: Убедиться, что приложение работает как заявлено в требованиях
Таким образом,
принимая во внимание цель №1, мы получаем, что тестирование, должно
гарантировать нам, что количество дефектов будет минимальным, а цель №2, что
все будет работать как заказчик этого хотел.
Давайте
представим себе процесс просеивания песка через сито. От размера и формы отверстий
в сетке будет зависеть количество песчинок оставшихся внутри. Если мы уменьшим
размер и форму, то мы сможет отсеять еще немного песка, но все равно что-то да
останется внутри сита. Если мы будем продолжать уменьшать размер и форму
сетки, то мы получим на выходе мельчайший песок.
А теперь давайте
сопоставим тестирование с описанным выше просеиванием песка. Каждый этап просеивания
– это итерация тестирования, песчинки оставшиеся в сите – это найденные
дефекты, просеянные песчинки – это то, что еще предстоит найти. От итерации к
итерации дефектов остается все меньше, а усилий на их поиск требуется все
больше. Так как бесконечно тестировать мы не можем в силу ограниченности
бюджета, нам на помощь приходят так называемые критерии окончания тестирования,
в которых четко будет прописано какой минимальный размер сита следует
использовать.
Таким образом,
сколько бы вы не тестировали и не искали баги, они все равно останутся, а
принимая во внимание человеческий фактор, их останется больше чем вы думаете.
Тогда получается, что тестирование гарантирует лишь то, что количество багов в
продакшине будет меньше, в случае если
его провести, нежели чем не тестировать вообще. А величина этого меньше, будет пропорциональна бюджету, выделенному на тестирование, квалификации
и настроению тестировщиков, а также фазе луны и магнитных колебаний...
Мораль для заказчика:
не жалейте денег на тестирование, если вы уверены, в квалификации команды
тестирования.
Мораль для
тестировщиков: все баги не найти, поэтому просто делайте свою работу, чтобы
после вас их оставалось как можно меньше.
Мораль для тест
менеджеров: подбирайте правильное сито, так как от него зависит размер просеянных
песчинок.
Комментариев нет:
Отправить комментарий