Поиск минимального безусловного диагностического теста как метод редукции регрессионного тестового набора
Журнал: Научный журнал «Студенческий форум» выпуск №21(21)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №21(21)
Поиск минимального безусловного диагностического теста как метод редукции регрессионного тестового набора
Рассматривается проблема отбора тестовых сценариев для оптимизации регрессионного тестирования. Используется метод, определяющий минимальное число тестовых наборов, необходимых для повторной проверки корректности работы модифицированной версии программы на фазе сопровождения.
Как бы хорошо не был разработан программный продукт первоначально, он неизбежно будет подвержен изменениям. При выполнении программ выявляются дефекты, которые должны быть непременно исправлены. Решающим фактором для сохранения полезности и целесообразности программ является контроль над изменениями. Для вторичной проверки тождественности функциональных возможностей программного продукта, вследствие внесения корректив в процессе разработки или сопровождении продукта, следует использовать регрессионное тестирование.
Регрессионное тестирование – это повторное тестирование, которое помогает удостовериться, что внесенные коррективы не вызвали нетребуемых побочных эффектов, или что система, подверженная изменениям, как и прежде не противоречит требованиям [2].
Цель регрессионного тестирования заключается в том, чтобы убедиться что система ведет себя согласно своей спецификации, и что изменения не внесли новых ошибок в ранее протестированный код. Эта цель достигается путем выполнения повторного запуска всех тестов из исходного тестового пакета.
Однако, когда накапливается огромное количество тестов, ежедневный запуск всех тестовых наборов для подтверждения функциональной способности приложения, требует довольно много затрат на время и ресурсы.
Альтернативный метод – выборочное повторное тестирование: выбирает из исходного тестового набора сценарии, которые считает более подходящими для проверки основной функциональности программы. Выбирает наиболее приоритетные тесты с целью сократить объем тестового пакета для ежедневного запуска.
Таблица 1.
Сравнение методов повторного тестирования
Повторный прогон всех тестов |
Выборочное регрессионное |
Несложен в выполнении |
Нуждается в дополнительных |
Дорогостоящий и малоэффективный |
Способно сократить расходы за счет выполнения только приоритет |
Находит все ошибки, которые были бы обнаружены при начальном тестировании |
Имеет вероятность к пропуску дефектов в системе |
Методы отбора регрессионных тестов базируются на субъективном выборе подмножества из имеющегося тестового пакета. Существует два подхода к отбору регрессионных тестов: активный и консервативный. Целью первого подхода является сокращение объема регрессионных тестов и пренебрежение риском пропустить неисправности. Этот подход используется для тестирования программных продуктов с высокой первоначальной надежностью, а также в случаях, когда эффект изменений не столь велик. Второй подход нуждается в отборе всех тестов, которые с ненулевой вероятностью способны отыскать ошибки. Такой подход помогает отыскивать значительную долю ошибок, но приводит к формированию более емких комплектов регрессионных тестов [3].
Для исследования, при выборе подмножества тестов, используется информация о наиболее часто используемых этапах прохождения тестов, опираясь на изменение траектории и выходных данных тестов. Существует множество методов отбора тестов, основанных на покрытии кода. В данной работе будет сделан уклон на отбор тестов по покрытию функциональности программного продукта методом редукции тестового набора. Исходя из этого будет отобрано подмножество тестовых наборов для вторичного тестирования.
Практический интерес представляет задача нахождения минимального диагностического теста, которую можно свести к задаче о кратчайшем покрытии. Для этого сначала следует получить матрицу различий, строки которой соответствуют парам строк диагностической матрицы и показывают, какими компонентами отличаются строки в этих парах. При этом используется покомпонентная операция сложения по модулю два, выполняемая над всеми парами строк матрицы. Затем надо найти для полученной матрицы различий кратчайшее покрытие, только не строчное, а столбцовое, т.е. состоящее из некоторых столбцов, покрывающих в совокупности все строки данной матрицы. Множество признаков, соответствующих столбцам из найденного покрытия, будет искомым [1, c.157].
Алгоритм по шагам метода редукции тестового набора.
Шаг 1. Составить диагностическую матрицу строки которой соответствуют модулям программы, а столбцы тестам.
Шаг 2. Составить матрицу различий для исходной диагностической матрицы. Используется покомпонентная операция сложения по модулю два, выполняемая над всеми парами строк диагностической матрицы.
Шаг 3. Применить минимаксный алгоритм к матрице различий. С помощью него находим кратчайшее столбцовое покрытие матрицы различий.
Множество признаков, соответствующих столбцам из найденного покрытия и будет результативным тестовым набором.
Рисунок 1. Алгоритм по шагам метода редукции тестового набора
Данный метод был апробирован для двух реальных проектов: сайта-платформы сравнения цен на услуги по страхованию автомобиля и сайта страхования недвижимости. По результатам анализа без потери процента покрытия с помощью предложенного метода минимизации удалось достигнуть уменьшения тестового набора на 14,3% в первом случае и на 21,4% сократить тестовый набор во втором случае.
Рисунок 2. Графическое представление результатов применения метода
Рисунок 3. Табличное представление результатов применения метода
На основании вышеизложенных практических примеров применения рассматриваемого метода минимального безусловного диагностического теста в отношении минимизации тестового набора регрессионного тестирования можно сделать вывод, что применение данного метода целесообразно и имеет место быть, так как уменьшение тестового набора, в зависимости от первоначального объёма, достигает до 24%. Это достигается тем, что тестовые проверки, содержащиеся в редуцированных тестах уже включены в существующие тесты. Это позволяет удалить их из результативного набора не уменьшая процент покрытия тестами и гарантируя тот же процент надёжности, что и изначальный тестовый набор. Эффективность предложенного метода редукции тестового набора отражена на рисунке 4.
Рисунок 4. Эффективность метода редукции тестового набора