Классификация выборочных методов
Для проверки корректности различных подходов к регрессионному тестированию используется модель оценки методов регрессионного тестирования. Основными объектами рассмотрения стали полнота, точность, эффективность и универсальность.
1 | 1 | -6 | 1 | 2 | -3 | 25 | Solution: X1 = 2, X2 = -3 |
2 | -3 | 5 | 1 | 0.75 | 5.567764 | -31 | Solution: X1 = 0.75+5.567764i, X2 = 0.75-5.567764I |
1 | 2 | 0 | 0 | 0 | -2 | 4 | |
1 | 2 | 1 | 0 | -1 | -1 | 0 | |
1 | 2 | 2 | 0 | -1 | 2 | -4 |
Полнота отражает меру отбора тестов из T, на которых результат выполнения измененной программы отличен от результата выполнения исходной программы, вследствие чего могут быть обнаружены ошибки в P'. Метод, полный на 100%, называется безопасным.
Точность - мера способности метода избегать выбора тестов из T, на которых результат выполнения измененной программы не будет отличаться от результата ее первоначальной версии, то есть тестов, неспособных обнаруживать ошибки в P'. Предположим, что набор T содержит r регрессионных тестов. Из них для n тестов (n
r) поведение и результаты выполнения старой программы P отличаются от поведения и результатов выполнения новой программы P'. Набор тестов T'T содержит m (m0) тестов, полученных с использованием метода отбора регрессионных тестов M. Из этих m тестов для l тестов поведение P' и P различается. Точность T' относительно P, P', T и M, выраженная в процентах, определяется выражением 100 * (l / m), тогда как соответствующий процент выбранных тестов определяется выражением 100 * (l / n), если n 0 или равен 100%, если n = 0.Исходя из приведенного определения, точность множества тестов - это отношение числа тестов данного множества, на которых результаты выполнения новой и старой программ различаются, к общему числу тестов множества. Точность является важным атрибутом метода регрессионного тестирования. Неточный метод имеет тенденцию отбирать тесты, которые не должны были быть выбраны. Чем менее точен метод, тем ближе объем выбранного набора тестов к объему исходного набора тестов.
Эффективность - оценка вычислительной стоимости стратегии выборочного регрессионного тестирования, то есть стоимости реализации ее требований по времени и памяти, а также возможности автоматизации. Относительной эффективностью называется эффективность метода тестирования при условии наличия не более одной ошибки в тестируемой программе. Абсолютной эффективностью называется эффективность метода в реальных условиях, когда оценка количества ошибок в программе не ограничена.
Универсальность отражает меру способности метода к применению в достаточно широком диапазоне ситуаций, встречающихся на практике.
Для программы P, ее измененной версии P' и набора тестов T для P требуется, чтобы методика выборочного повторного тестирования удовлетворяла следующим критериям оценки:
- Критерий 1 - Безопасность. Методика выборочного повторного тестирования должна быть безопасной, то есть должна выбирать все тесты из T, которые потенциально могут обнаруживать ошибки (все тесты, чье поведение на P' и P может быть различным). Безопасная методика должна рассматривать последствия добавления, удаления и изменения кода. При добавлении нового кода в P в T могут уже содержаться тесты, покрывающие этот новый код. Такие тесты необходимо обнаруживать и учитывать при отборе.
Критерий 2 - Точность. Стратегия повторного прогона всех тестов является безопасной, но неточной. В дополнение к выбору всех тестов, потенциально способных обнаруживать ошибки, она также выбирает тесты, которые ни в коем случае не могут демонстрировать измененное поведение. В идеале, методика выборочного повторного тестирования должна быть точной, то есть должна выбирать только тесты с изменившимся поведением. Однако для произвольно взятого теста, не запуская его, невозможно определить, изменится ли его поведение. Следовательно, в лучшем случае мы можем рассчитывать лишь на некоторое увеличение точности.
Всевозможные существующие выборочные методы регрессионного тестирования различаются не в последнюю очередь выбором объекта или объектов, для которых выполняется анализ покрытия и анализ изменений. Например, при анализе на уровне функции при изменении любого оператора функции вся функция считается измененной; при анализе на уровне отдельных операторов мы можем исключить часть тестов, содержащих вызов функции, но не активирующих измененный оператор. Выбор объектов для анализа покрытия отражается на уровне подробности анализа, а значит, и на его точности и эффективности. Абсолютные величины точности и количества выбранных тестов для заданных набора тестов и множества изменений должны рассматриваться только вместе с уменьшением размера набора тестов. Небольшой процент выбранных тестов может быть приемлемым, только если уровень точности остается достаточно высоким.
- Критерий 3 - Эффективность. Методика выборочного повторного тестирования должна быть эффективной, то есть должна допускать автоматизацию и выполняться достаточно быстро для практического применения в условиях ограниченного времени регрессионного тестирования. Методика должна также предусматривать хранение информации о ходе исполнения тестов в минимально возможном объеме.
Критерий 4 - Универсальность. Методика выборочного повторного тестирования должна быть универсальной, то есть применимой ко всем языкам и языковым конструкциям, эффективной для реальных программ и способной к обработке сколь угодно сложных изменений кода.
В общем случае существует некоторый компромисс между безопасностью, точностью и эффективностью. При отборе тестов анализ необходимо провести за время, меньшее, чем требуется для выполнения и проверки результатов тестов из T, не вошедших в T'. С учетом этого ограничения решением задачи регрессионного тестирования будет безопасный метод с хорошим балансом дешевизны и высокой точности.