Основы тестирования программного обеспечения

         

Целесообразность отбора тестов


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

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

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

Модель затрат и выгод при использовании выборочных стратегий регрессионного тестирования должна учитывать прямые и косвенные затраты. Прямые затраты включают отбор и выполнение тестов и анализ результатов. Косвенные затраты включают затраты на управление, сопровождение баз данных и разработку программных средств.


Выгоды – это затраты, которых удалось избежать, не выполняя часть тестов. Чтобы метод выборочного регрессионного тестирования был эффективнее метода повторного прогона всех тестов, стоимость анализа при отборе подмножества тестов вкупе со стоимостью их выполнения и проверки результатов должна быть меньше, чем стоимость выполнения и проверки результатов исходного набора тестов.

Пусть T' – подмножество T, отобранное некоторой стратегией выборочного регрессионного тестирования М для программы P, |T'| - обозначает мощность T', s – средняя стоимость отбора одного теста в результате применения М к P для создания T', а r – средняя стоимость выполнения одного теста из T на P и проверки его результата. Тогда для того, чтобы выборочное регрессионное тестирование было целесообразным, требуется выполнение неравенства:

s|T'| < r(|T| - |T'|)Применяя вышеупомянутую модель стоимости с целью анализа затрат, полезно условно разделять регрессионное тестирование на две фазы – предварительную и критическую. Предварительная фаза регрессионного тестирования начинается после выпуска очередной версии программного продукта; во время этой фазы разработчики расширяют функциональность программы и исправляют ошибки, готовясь к выпуску следующей версии. Одновременно тестировщики могут планировать будущее тестирование или выполнять задачи, требующие наличия только предыдущей версии программы, такие как сбор тестовых траекторий и анализ покрытия. Как только в программу внесены исправления, начинается критическая фаза регрессионного тестирования. В течение этой фазы регрессионное тестирование новой версии программы является доминирующим процессом, время которого обычно ограничено моментом поставки заказчику. Именно на критической фазе регрессионного тестирования наиболее важна минимизация затрат. При использовании выборочного метода регрессионного тестирования важно использовать факт наличия этих двух фаз, уделяя как можно больше внимания выполнению задач, связанных с анализом, в течение предварительной фазы, чтобы на критической фазе заниматься только прогоном тестов и уменьшить вероятность срыва сроков поставки.


Тем не менее, важно понимать, что до внесения последнего изменения в код анализ может быть выполнен только частично.

Если не учитывать не очень больших затрат на анализ при использовании детерминированных методов, решение о применении конкретного метода отбора тестов будет зависеть от отношения стоимости выполнения большего количества тестов к цене пропуска ошибки, что зависит от множества факторов, специфических для каждого конкретного случая. При отсутствии ошибок сбережения пропорциональны уменьшению размера набора тестов и могут быть измерены в терминах процента выбранных тестов, |T'| / |T|.

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

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

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



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

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

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

Стоит заметить, что целесообразность применения выборочного метода регрессионного тестирования нельзя воспринимать как нечто само собой разумеющееся. Следует очень осторожно подходить к оценке целесообразности отбора повторно прогоняемых тестов. В ряде случаев, когда или получаемое число остаточных тестов близко к первоначальному их количеству, или накладные расходы на повторное тестирование незначительны, выгоднее прогонять заново все тесты, особенно если прогон тестов полностью автоматизирован.


Содержание раздела