Реклама:

в виде текста на языке программирования (символьное представление), удобного для анализа человеком и недоступного для непосредственного исполнения на ЭВМ;

в машинном коде конкретной ЭВМ (объектное представление), пригодном для обработки определенных кодовых исходных данных и неудобном для анализа человеком.

Конечной целью тестирования является получение корректной и надежной программы, функционирующей в машинном коде на ЭВМ. Нельзя утверждать.-что абсолютно корректная программа в одной из форм представления будет столь же корректной в другой форме. Однако достижение корректности программы в символьном представлении способствует повышению корректности программы в объектном представлении, и наоборот. Кроме того, пропесс тестирования в символьном представлении во многих случаях экономичнее, чем в машинном коде. Поэтому созданы две группы методов тестирования:

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

динамические, при которых тестируемая программа исполняется на ЭВМ в соответствующем машинном коде, а тексты на языке программирования применяются как вспомогательные.

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

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

По признаку основных компонент программы, подлежащих тестированию, выделяется тестирование потоков управления и потоков данных. Эти методы применяются как при представлении программ на языках программирования, так и при исполнении их в машинном коде, после трансляции, а также при, ручном тестировании.

Тестирование потоков управления (структуры программы) при ручных, статических и Динамических методах является первым шагом, так как при некорректной структуре возможны наиболее грубые искажения выходных результатов и даже отсутствие некоторых из них. В большинстве программных модулей, особенно в системах управления и обработки информации, логические операторы анализа условий составляют существенную часть (10—1594)1341, что приводит к сравнительно небольшим участкам последовательных вычислений и обработки переменных (5—-10 машинных команд между условными переходами). Связи логических операторов определяют последовательность вычислений и обработки переменных и основную логику функционирования программы. Искажения логических условий и вследствие этого изменение последовательности обработки данных может приводить к наиболее грубым ошибкам в. функционировании программы. Кроме того, для тестирования структуры программных модулей в большинстве случаев требуются относительно меньшие затраты, чем для тестирования потоков данных. Так как тестирование структуры программ обеспечивает наилучшее соотношение эффективность-стоимость, то ему отдают предпочтение как при ручных, так и при автоматизированных методах тестирования. Анализ структуры программ может проводиться по различным критериям выделения компонент программы (см. §2.1). При этом постепенно увеличивается полнота проверки модулей, однако соответственно возрастают затраты на тестирование (см. рис. 2.10).


⇐ Предыдущая страница| |Следующая страница ⇒