Аксиомы тестирования

Аксиомы тестирования — в тестировании имеются свои непреложные истины, хотя оно и не является наукой в строгом смысле. 

Тестирование не доказывает отсутствия ошибок

Тестирование помогает выявить присутствие и характер дефектов, но успешное завершение всех тестов не доказывает, что дефектов нет. Дефекты есть всегда. 

Исчерпывающее тестирование невозможно

Сколько нужно тестов и как искать ответ на этот вопрос?

Экстремальными ответами, очевидно, является “не тестировать ничего” и “протестировать все”. Между этими “ничего” и “все” располагается бесконечное множество других вариантов. Необходимо выбирать золотую середину, так как мы всегда ограничены временными рамками или бюджетом, поэтому полное тестирование невозможно.  

Ранее тестирование

Чем раньше обнаружен дефект, тем быстрее, проще и дешевле его исправить. 

Скопление дефектов

Многие тестировщики наблюдали такой эффект — дефекты “кучкуются” (распределены по коду неравномерно). Это может происходить потому, что внесение изменений вызывает “эффект домино”. Это значение часто используется для оценки рисков при планировании тестов — тестировщики фокусируются на известных “проблемных зонах”. О том, где “кучкуются” дефекты, можно узнать еще на ранних этапах разработки, во время статического тестирования (например, code review и анализа когда при помощи специальных инструментов). Когда дело дойдет до динамического тестирования, можно сфокусироваться на тех областях, где статическими методами было обнаружено больше дефектов. 

Парадокс пестицидов 

Если повторять те же тесты снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты. Те скопления дефектов, о которых говорит аксиома “скопление дефектов”, имеют тенденцию перемещаться. 

Почему так происходит? 

Эту аналогию ввел Борис Бейзер в 1983 году. Он привел пример обработки полей пестицидами. После обрабатывается неким пестицидом в первый раз, и значительная часть вредителей погибает, но некоторые всё же выживают, потому что их организмы оказались устойчивы к действию яда. Если повторно обработать поле тем же пестицидом, то выжившие после первой обработки с большой вероятностью выживут после второй. 

Повторное применение тех же тестов и тех же методик приводит к тому, что в продукте остаются именно те дефекты, против которых эти тесты и эти методики неэффективны. Чтобы пересматривать существующие тест-кейсы и создавать новые разнообразные тесты, которые будут выполняться на различных частях системы. 

Тестирование зависит от контекста

Разные системы связаны с различными уровнями риска, влияние того или иного дефекта также сильно варьируется. Одни проблемы довольно тривиальны, другие могут дорого обойтись и привести к большим потерям денег, времени, деловой репутации, а в некоторых случаях даже привести к травмам и смерти. 

При этом проблема (риск), связанная со значительным ущербом, может иметь незначительную вероятность, и, наоборот, риск с небольшим ущербом может иметь достаточно большую вероятность (по этой причине в рискологии часто рассматривают и сравнивают не вероятности и влияния, произведения вероятностей на влияния или объем ущерба). Уровень риска влияет на выбор методологий, техник и типов тестирования. 

Заблуждения об отсутствии ошибок

Если постоянная система неудобна для использования пользователями и не соответствует их нуждам и ожиданиям, нахождение и исправление дефектов в ней бесполезно. 

Заказчики ПО, на самом деле, совершенно не интересуются дефектами и их количеством, кроме тех случаев, когда они сталкиваются со сбоями продукта, ведь они используют ПО для решения своих повседневных задач. Их не волнуют задокументированные формальные требования. Пользователям ПО необходимо, чтобы оно помогало им эффективно решать их задачи, они оценивают ПО с точки зрения степени его соответствия их потребностям. 

В настоящее время часто проводят UX (user experience) тестирования. Исследователи, дизайнеры, которые проектируют систему так, чтобы она удовлетворяла всем потребностям конечного заказчика и конечного пользователя. 

Ссылка на основную публикацию