вторник, 23 мая 2017 г.

Когда вы прекращаете тестирование?

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


Все это прекрасно объясняет Гленфорд Майерс в своей замечательной книге «Искусство тестирования программного обеспечения». Я еще раз подытожу это здесь.
Во-первых, «тестирование - это процесс выполнения программы с целью обнаружения ошибок» (стр. 6). Обратите внимание, что цель состоит в том, чтобы найти ошибки. Не доказывать, что продукт работает нормально, но чтобы доказать, что он не работает должным образом. Цель любого тестера заключается в том, чтобы показать, как продукт можно сломать, как он терпит неудачу на разных входах, как он падает при стрессе, как он неправильно понимает пользователя, как он не удовлетворяет требованиям. Вот почему доктор Майерс вызывает тестирование «деструктивного, даже садистского процесса» (стр. 6). Большинство тестировщиков этого не понимают.
Во-вторых, любое программное обеспечение имеет неограниченное количество ошибок. Д-р Майерс говорит, что «вы не можете протестировать программу, чтобы гарантировать ее безошибочность» (стр. 10), и что «практически невозможно или невозможно найти все ошибки в программе» (стр. 8). Большинство тестировщиков также не понимают этого. Они считают, что существует ограниченное количество ошибок, которые они должны найти и назвать днем. Там буквально нет предела! Количество ошибок неограниченно, в любом программном продукте. Независимо от того, насколько мал или большой, сложный или простой, новый или старый продукт.

Они не могут найти все ошибки, независимо от того, сколько времени мы им даем
Имея в виду эти аксиомы, давайте попробуем решить, когда тестеры должны остановиться. По словам д-ра Майерса, «один из самых сложных вопросов, на который нужно ответить при тестировании программы, - это определить, когда остановиться, поскольку нет способа узнать, является ли обнаруженная ошибка последней оставшейся ошибкой» (стр. 135).
Они не могут найти все ошибки, независимо от того, сколько времени мы им даем. И они мотивированы, чтобы найти все больше и больше из них. Но в какой-то момент мы должны принять решение и выпустить продукт. Похоже, мы выпустим его с ошибками внутри? Да, в самом деле! Мы выпустим продукт, полный ошибок. Вопрос только в том, сколько из них уже найдено и насколько они критичны.
Давайте все вместе. Слишком много ошибок, чтобы найти их в разумные сроки. Тем не менее, мы должны выпустить новую версию, рано или поздно. В то же время, тестеры всегда говорят нам, что в них больше ошибок, и они могут найти больше, просто нужно больше времени. Что делать?
Д-р Майерс говорит, что «поскольку цель тестирования - найти ошибки, почему бы не сделать критерий завершения обнаружением некоторого предопределенного числа ошибок?» (Стр. 136). Действительно, мы должны предсказать, сколько ошибок достаточно, чтобы найти, чтобы иметь желаемый уровень уверенности в том, что продукт готов к отправке. Затем отправьте его, сознательно понимая, что у него все еще есть неограниченное количество еще не обнаруженных ошибок.
Дэвид Уэст в Object Thinking говорит, что «программное обеспечение выпущено для использования, а не тогда, когда оно известно как правильное, но когда скорость обнаружения ошибок замедляется до уровня, который руководство считает приемлемым» (стр. 13).
Таким образом, единственным допустимым критерием выхода из процесса тестирования является обнаружение прогнозируемого количества ошибок.

Комментариев нет:

Отправить комментарий