Структурные методы тестирования программ
Автор: Masud1950 • Ноябрь 27, 2022 • Доклад • 1,748 Слов (7 Страниц) • 224 Просмотры
СТРУКТУРНЫЕ МЕТОДЫ ТЕСТИРОВАНИЯ ПРОГРАММ
Тестирование— проверка работы программы по результатам ее выполнения на специально подобранных наборах исходных данных — тестах. Программа может быть тестирована либо полностью (полное тестирование), либо выборочно (выборочное тестирование) в отдельных точках пространства исходных данных. При выборочном тестировании надежность программы не может быть полностью гарантирована. Если тесты предлагаются программистом, то они могут охватить только те части программы, с которыми программист наиболее знаком. Поэтому многие скрытые ошибки могут оставаться не обнаруженными. Полное тестирование на всех возможных входных наборах программы или даже тестирование всех путей в структуре программы нереально, так как число тестов будет недопустимо большим. Например, если число входов равно десяти и каждый вход программы может приобретать десять значений, число необходимых элементарных тестов для проведения полного тестирования будет равно 1010.
Поэтому предложено структурное выборочное тестирование, основанное на разделении пространства исходных данных на классы, причем каждый класс позволяет подтвердить определенные свойства или работоспособность определенных элементов структуры программы. Основной задачей при этом является построение генератора тестовых наборов для их автоматического генерирования. Общая схема генератора тестовых наборов представлена на рис. 6.7.
[pic 1]
Рис.1. Структура генератора тестов
Исходя из тестируемой программы Т выбирается набор путей П в структуре программы, удовлетворяющий некоторым критериям к тестирования. Наиболее часто эти критерии основаны на структуре программы. Достаточно простое требование может заключаться в том, что выбранные пути должны перекрывать все операторы (команды программы). Затем генерируются ограничения О, позволяющие реализовать тот или иной путь на графе программы. Ограничения преобразуются модулем ПВ в ограничения к исходным данным. Только тогда с помощью алгоритма А генерируются тестовые наборы ТН — наборы числовых значений исходных данных, удовлетворяющих отдельным ограничениям. Критерий выбора путей на структуре программы в простейшем случае состоит в том, что выбранные пути должны перекрывать (задействовать) все операторы (команды) хотя бы один раз. Поскольку при этом тестируются команды чаще всего в порядке их расположения в тексте программы, такое тестирование называется статическим тестированием. Однако при этом тестируются не все возможные пути на графе программы и ошибки в управлении программой могут оставаться необнаруженными.
Тестирование ветвей. Более строгое требование заключается в том, что выбранные пути должны перекрывать все ветви структуры программы или все разветвления по всем направлениям (динамическое тестирование или тестирование ветвей). Такой подход гарантирует однократное тестирование всех операторов и всех ветвей. Опыт показывает, что значительное число ошибок возникает из-за неточностей при формулировке условий выхода из циклов, поэтому предлагается вводить еще дополнительное требование, чтобы каждый цикл испытывался двумя тестами, один из которых привел бы к исполнению цикла с возвратом, а другой бы проходил цикл без возврата.
Верификация программ. Всякое тестирование с помощью числовых наборов исходных данных позволяет проверить программу только в ограниченном числе точек пространства исходных данных, поэтому наибольший интерес представляют более общие методы. Сюда относится прежде всего верификация программ — доказательство их правильности при помощи математических методов доказательства теорем. Для этого программа представляется в виде последовательности ряда более или менее простых утверждений, доказательство которых не представляет труда. Данный процесс может быть автоматизирован, но практические результаты в этом направлении пока незначительные. Д е л о в том, что доказательство даже относительно простых утвержде ний — процедура, требующая высокой квалификации и подлеж ащая автоматизации лишь в отдельных редких случаях. Ввиду большой слож ности доказательства здесь возможны ошибки, что с практической точки зрения, не взирая на кажущуюся строгость, приводят к тому, что метод верификации не может дать гарантию полной безотказности верифицированной программы.
...