Антоним тестирования |
03.03.2009 16:17 |
Автор: Ben Simo Оригинальная публикация (на английском языке)
Я продолжаю слышать от разных людей, что тестирование это деятельность по валидации, что целью тестирования является проверка того, что программа соответствует спецификациям, не содержит ошибок, удовлетворяет требованиям к производительности, удовлетворяет ожиданиям пользователей, ну и тому подобные возвышенные цели. Я много читал о процессах тестирования, предназначенных для валидации программ. Я использовал инструменты тестирования, спроектированные для выполнения валидации. Я слышал заявления сервисных компаний, предлагающих услуги по валидации программ. Я читал о метриках, значимость которых основывается на предположении, что корректность программ может быть доказана. Я видел презентации, в которых рассказывалось о применении лучших практик валидации. Проблема со всем этим хозяйством заключается в том, что мы не в состоянии доказать корректность компьютерных программ. Мы не можем доказать отсутствия дефектов. Мы не можем протестировать программу во всех состояниях и на всех возможных входных данных. Мы не можем проверить все возможные получаемые результаты. Мы не можем полностью понять потребности всех заинтересованных лиц. Мы не может доказать, что пользователи будут довольны. Мы не можем доказать, что программный продукт сможет решать проблемы, для решения которых он был создан. Если бы это всё было возможно, я полагаю, страховые компании нашли бы способ, как продавать страхование качества программ.
Теперь, спустя тридцать два года после того, как Гленфорд Майерс назвал "тестирование как сопособ доказательства корректности" противоположностью тестированию, мы оказались окружены практиками и инструментами, которые предназначены для доказательства корректности. Миф о возможности доказательства корректности жив и прекрасно себя чувствует. Деятельность, нацеленная на попытки доказательства корректности программы -- это противоположность тестирования. Но если тестирование это не валидация, тогда что же это? Тестирование -- это исследование программы и донесение информации о тех или иных аспектах качества до лиц, принимающих решения.
Как только мы признаем, что мы не можем доказать корректность программы, мы сможем перенаправить наши усилия на поиск полезной информации о её качестве. Вместо попыток обеспечить качество или проверить корректность, мы сможем собрать и предоставить полезную информацию. Исследуйте программы. Собирайте информацию о возможных угрозах качеству исследуемых программ. Доносите эту информацию в понятных словах заинтересованным лицам. Помогайте менеджерам принимать обоснованные решения. Обсудить в форумеTags: |