Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Метод тестирования программ






 

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

 

При отладке комплексов программ различают методы статистического и детерминированного тестирования.

 

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

 

При использовании методов детерминированного тестирования важнейшим вопросом на этапе отладки является выбор модели исследуемого комплекса программ и степени её детализации. В качестве модели программы используют её блок-схему, причём наибольшей степени детализации моделирования соответствует использование в качестве блока оператора программы, наименьшей – всей программы. В последнем случае структура программы представляет собой " чёрный ящик", а модель программы – отображение пространства входов X в пространство выходов Y: Отладка программ и программных комплексов Степень детализации модели комплекса программ следует выбирать в зависимости от цели тестирования (тестирование основных функций, тестирование связей по информации и управлению и т л.). При этом возникает проблема оценки полноты тестирования.

 

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

 

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

 

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

 

Существуют вероятностные методы генерации тестовых данных, основанные на разделении входной области программы на подобласти Sj, для которых известна вероятность их появления p(Sj). Множество Отладка программ и программных комплексов называют операционным профилем программы. Из каждого множества Sj случайным образом выбираются данные для nj тестов. Количество тестов nj определяется в соответствии с вероятностями pi(Sj).

 

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

 

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

 

На практике обычно используется множество М*(Р), содержащее мутанты Р, полученные многократным применением мутационных операторов к Р. Считается, что программа прошла мутационный тест с входным набором Отладка программ и программных комплексов, если: 1) программа Р функционирует верно на данных Т; 2) для каждого m мутанта из М*(Р) либо m не проходит на данных Р, либо m эквивалентен Р. Здесь D – входная область программы Р. Таким образом, если программа Р проходит мутационный тест, то она свободна от простых ошибок. Относительно комплексных ошибок делается предположение, что вероятность того, что композиция нескольких простых ошибок приведёт к успешному выполнению на данных Т соответствующего мутанта, равна нулю.

 

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

 

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.