Загрузка...

Методы и виды тестирования обработки данных


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

С этой позиции целесообразно выделить 2 вида обработки данных:
1. полностью изменяющий область определения и значение результатов;
2. изменяющий результаты в пределах некоторой ограниченной правильной области определения.
Первому виду обработки соответствуют исходные данные в критических точках и на границах областей изменения переменных. При таких критических значениях может изменяться маршрут исполнения программы, вследствие чего возможно наибольшее изменение результатов. Следовательно, обычно тестирование обработки данных, прежде всего, направлено на проверку исполнения программ при значениях переменных влияющих на выбор маршрута и логику функционирования программы.
Граничные условия – это ситуации, возникающие в непосредственной близости к границам областей изменения обрабатываемых переменных. Число таких критических значений каждой переменной может быть на несколько порядков меньше, чем число значений по всей внутренней части области изменения этой величины. Большинство критических значений может существенно влиять на результаты и подлежит наиболее тщательному тестированию. В этой части тестирование обрабатываемых данных по содержанию близко к тестированию структуры программ. При этом виде тестирования маршруты формируются в процессе анализа и обработки данных на последовательных операторах условного перехода в тексте программы. Т.о. все множество маршрутов является реализуемым и определяется составом реальных тестовых данных. Набор сочетаний исходных данных в тестах непосредственно влияет на степень охвата тестированием участка программы. Путем сопоставления проверенных маршрутов с маршрутами, выделенными по графу программы, при различных критериях можно оценивать достигнутую полноту тестирования модуля и приближенную степень его корректности.
Второму виду обработки соответствуют данные в ограниченной или неограниченной области определения, которая может делиться на некоторое множество сопрягающихся подобластей. Изменение данных внутри такой области не влияет на маршрут использования программы. Поэтому для проверки функциональности программы из всего множества значений достаточно использовать при тестировании только несколько значений внутри и вблизи границ области. Количество величин, используемых для тестирования при обработке этого вида м.б. на несколько порядков меньше полного числа значений каждой переменной области. В процессе тестирования проверяется точность выполняемых вычислений, правильность масштабирования и размерности обрабатываемых величин и т.д. При этом тестирование должно охватывать всю область изменения каждой обрабатываемой переменной и каждой результирующей величины.

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

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

Критические значения (предикаты), влияющие на маршруты во многих случаях не являются фиксированными, а формируются при обработке и сравнении нескольких переменных. При этом предикаты образуются во всей области изменения каждой из переменных. Предикаты, определяющие выбор маршрутов использования программы, формируются в результате вычислений на линейных участках программы. Эти участки не велики – приблизительно 10 команд. Вычисления в большинстве случаев представляют собой простейшие линейные преобразования входных данных. Кроме того, предикаты обычно простые с одной входной переменной (реже с двумя). Каждая ограниченная область исходных данных соответствует определенному маршруту в программе, граница области состоит из набора участков, каждый из которых определяется единственным простым предикатом, формирующим дугу маршрутов в графе программы. Общее число предикатов в маршруте – верхний предел числа граничных участков области входных переменных данного маршрута. Т.о. программа по отношению к потоку данных выполняет функцию разделения пространства исходных данных на области, каждая из которых соответствует одному исполняемому маршруту.
Ошибки в программе м.б. обусловлены модификацией границы области определения маршрута, приводящей к расширению или сужению пространства исходных данных соответствующего маршрута. Кроме того, деформация границ областей может приводить к ошибкам уничтожения некоторых областей и потере соответствующих им маршрутов. При наличии таких ошибок м.б. искажения операторов анализа условий или искажения в процессе вычисления значений предикатов при правильном содержании оператора условия. В последнем случае обычно сдвигается граница области, но она сохраняет общую структуру. Искажение операторов анализа условий может приводить как к деформации границы области, так и к появлению или уничтожению новых границ. Из-за этого могут разделяться (сливаться) области.
Данный метод упорядоченного регулирования тестирования на основе определения областей изменения данных является очень эффективным. Сложность тестирования увеличивается с увеличением пространства исходных данных (т.е. числа переменных) и с увеличением числа предикатов на маршрутах. Для многих типовых ПМ сложность тестов оказывается допустимой для полной проверки ПМ. Ограничения метода проверки областей могут проявляться при сложных организациях циклов, когда резко увеличивается число маршрутов и анализируемых условий.

3. Тестирование корректности определения использования данных на маршрутах исполнения программы.
Каждая величина на маршруте исполнения программы считывается из памяти, а после использования для вычислений записывается в память компьютера для хранения и последующей обработки. Чередование операции чтения и записи переменных может быть нарушено в результате ошибок в программе. Для выявления таких ошибок проводится тестирование корректности записи и считывания реальных значений данных или анализ этих операций по тексту программы. Ошибки при распределении памяти обычно возникают при отсутствии в соответствующем регистре величины подлежащей считыванию. Причины этого могут быть следующие. 1) Операция записи необходимой величины вообще отсутствует. 2) операция записи существует, но запись выполняется не в тот регистр. 3) Правильно произведенная запись необходимой величины в предусмотренный регистр уничтожается не предусмотренной записью другой величины до момента использования первичной записи.
Эти ошибки могут обнаружиться не на всех маршрутах исполнения программы. Задачи тестирования сводятся к обнаружению ошибочных сочетаний операции считывания записи для каждой величины и адресов регистров с которыми производится эти операции. Для этого в явном виде необходима информация об адресах регистров и наименьших записываемых и считываемых величин. Тестирование процесса использования переменных основана на анализе потока данных.
Выявляются все определения переменных, кот. Могут достигать каждой вершины графа программы по управлению. Для каждой точки программы нужно установить какие переменные действительны до прихода в эту точку использования посмотреть выходы из нее. Анализ потока данных позволяет обнаруживать ошибки обусловленные нарушением правильной последовательности операции записи/считывания данных. Этот анализ проводится по маршрутам исполнения программы.

4. Тестирование корректности обработки каждой переменной и точности результатов вычисления.
Этот вид тестирования производится преимущественно с вещественными и целыми величинами во внутренней части их областей определения. Роме того может выполнится контроль точности вычисления при граничных значениях использовавшихся ранее для тестирования маршрутов по областям определения. Тестовые значения для проверки вычислений при простых числовых переменных строятся упорядоченно с учетом следующих правил: 1) Входные тестовые данные должны принимать значения близкие к наибольшим и наименьшим, а также одно два промежуточных значений. 2) Тестирование данных проводится при всех особых значениях входных переменных. В точке резкого возрастания или разрыва производных, при нулевых, единичных и предельно малых численных значениях. 3) Входные тестовые значения должны обеспечивать проверку программы при выходных результатах, имеющих особые точки резкого изменения или разрыва производных. 4) Если значение некоторой переменной зависит от значения другой переменной, то необходимо тестировать при особых значениях сочетаний переменных. Равенство общих переменных малое и предельно большое их различие, нулевые и единичные значения.
Таким образом, для каждой простой числовой переменной кроме значимых точек вблизи и на границе области определения обычно необходимо тестирование программы в трех, промежуточных и 2,5 особых точек значений входных данных. Если переменные представляются в виде массивов, объем тестирования значительно увеличивается. В этом случае необходимо учитывать структуру и размер массива, наличие особых точек или подструктур, изменение области определения и особых точек значений каждой переменной при расположении данных в разных местах массива.

5. Средства автоматизации тестирования программных компонент.
Создано множество средств и интегрированных систем, которые обеспечивают эффективную и удобную среду тестирования для разработчиков программных компонент.
Автоматизированные системы тестирования адаптируются к особенностям создаваемых программных средств и аппаратурной среды проектирования.
Современные системы тестирования программных компонент должны обеспечивать следующие возможности:
1.Удобный диалог пользователя со средствами автоматизации тестирования; 2.Использование БД проектирования для накопления и хранения информации о разрабатываемых программах, их версиях, тестовых и эталонных данных; 3.Автоматическое обнаружение типовых ошибок в текстах исходных программ; 4.Автоматизированное планирование тестирования; 5.Реализация отладочных заданий для достижения максимальной корректности программ в условиях ограниченных ресурсов на тестирование; 6.Оценка достигнутой корректности программ по выбранным критериям тестирования и определение основных показателей качества созданных программных компонент; 7.Автоматизированная регистрация и документирование всех выполняемых изменений в программах.
Средства автоматизации тестирования делятся на статические и динамические.
Статические анализируют исходные тексты программ без их исполнения в объектном коде. Они автоматизируют анализ и проверку корректности текстов программ и выявление соответствующих типов ошибок.
В группу статических средств входят: Средства контроля структурной корректности программ; Средства контроля записи и чтения переменных; Средства поиска устойчивых семантических ошибок; Средства подготовки данных для планирования тестирования, которые обеспечивают выделение типовых структур в модуле (циклов, маршрутов). Разработчик должен указать критерий, по которому нужно формировать маршруты, и стратегию для составления упорядоченного списка маршрутов; Средства расчета продолжительности исполнения модулей.
При использовании динамических средств программы функционируют в объектном коде. Средства динамической отладки делятся на: — основные средства, обеспечивающие исполнение программ в соответствии с отладочными заданиями;
— вспомогательные средства, учитывающие выполненное тестирование, его результаты и проведенные корректировки.
Вспомогательные средства используются обычно в тех случаях, когда программные компоненты предназначены для использования в критических программных системах и к их надежности предъявляются особенно высокие требования.
Для каждой отлаженной программной компоненты должно обеспечиваться хранение основных тестов и отладочных заданий, которые применялись во время тестировании. Вместе с тестами хранятся результаты оценки полноты тестирования и достигнутой корректности программной компоненты. Эти данные вместе с оценкой сложности компоненты, структурными и информационными характеристиками объединяются в паспорт аттестации программы.

Загрузка...