КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Принципы тестирования. Классификация методов тестирования. Методы структурного тестирования. Методы функционального тестирования.Принципы тестирования. Цель тестирования - выявление как можно большего числа ошибок. Принципы тестирования:
Классификация методов тестирования. Правильное понимание цели и принципов тестирования привело к появлению ряда методов, позволяющих эффективно обнаруживать ошибки и несоответствия спецификациям ПО. Все существующие методы тестирования можно разделить на два основных класса - статическое и динамическое тестирование. Статическое тестирование базируется на правилах структурного построения программ. Проверка степени выполнения этих правил проводится без изменения объектного кода программы, путем анализа текста программы на языке программирования. Статическое тестирование проводится без фактического выполнения программы на компьютере. Исходными данными является текст программы или проектные решения, а также стандарты и соглашения, регламентирующие процесс разработки и стиль программирования. Результатом статистического тестирования является описание обнаруженных ошибок и несоответствий, выявленных в исходном тексте. В отличие от статического, динамическое тестирование всегда предполагает исполнение тестируемой программы на компьютере. Этот вид тестирования, в свою очередь, подразделяется на детерминированное, стохастическое и тестирование в реальном масштабе времени. Детерминированное тестирование – это наиболее трудоемкая и детализированная проверка, которая требует многократного выполнения программы на компьютере с использованием специальным образом подобранного тестового набора данных. Исходными данными для детерминированного тестирования являются описания требований к ПО, спецификации, результаты проектирования и программирования. В общем случае детерминированное тестирование включает в себя этапы разработки тестов, исполнение или моделирование исполнения программы и анализа результатов тестирования.
Классификация методов тестирования По способу разработки тестовых наборов данных детерминированное тестирование подразделяется на структурное и функциональное. Структурное тестирование предполагает детальное изучение текста программы и построение таких входных наборов данных, которые позволили бы при многократном выполнении программы на ЭВМ обеспечить выполнение максимально возможного количества маршрутов, логических ветвлений, циклов и т.д. Структурное тестирование иногда называют тестированием белого ящика, поскольку для него важно знание внутреннего устройства программы. Функционально тестирование заключается в выработке тестовых наборов данных только на основании анализа входных функциональных спецификаций. При функциональном тестировании внутренним устройством программы не интересуются, поэтому такое тестирование иногда называют тестированием черного ящика. Стохастическое тестирование применяется из-за невозможности перебрать все комбинации исходных данных и проанализировать результаты функционирования каждой из них так, как это делалось при детерминированном тестировании. Стохастическое тестирование предлагает использование в качестве исходных данных множества случайных величин с соответствующими распределениями, а для сравнения полученных результатов используются также распределения случайных величин. Тестирование в реальном масштабе времени применяется для ПО, работающего в реальном времени. В процессе такого тестирования проверяются результаты обработки исходных данных с учетом времени их поступления, длительности и приоритетности обработки, динамики использования памяти и взаимодействия с другими программами. При обнаружении отклонений результатов выполнения программы от ожидаемых, для локализации ошибок приходится фиксировать время и переходить к детерминированному тестированию. Методы структурного тестирования. Для получения эффективных тестовых наборов данных при структурном тестировании используются следующие критерии:
Методы функционального тестирования.Для разработки эффективных тестовых наборов данных при функциональном тестировании используются методы эквивалентного разбиения, анализа граничных значений и функциональных диаграмм. Метод эквивалентного разбиения осуществляется в 2 этапа, первый из которых заключается в выделении классов эквивалентности, а второй – в построении тестов. Классом эквивалентности называют множество входных значений, каждое из которых имеет одинаковую вероятность обнаружения конкретного типа ошибки. Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза в спецификации) и разбиением его на две или более групп. Для любого условия существуют правильный, то есть представляющий правильные входные данные программы, и неправильный, то есть представляющий ошибочные входные значения, классы эквивалентности. Все имеющиеся входные условия и соответствующие им правильные и неправильные классы эквивалентности объединяются в таблицу.
При выделении классов эквивалентности целесообразно придерживаться следующих правил:
На основе классов эквивалентности строят тестовые наборы. Этот процесс включает в себя следующее:
Метод анализа граничных значений предполагает исследование ситуаций, возникающих на границах и вблизи границ эквивалентных разбиений. Например, если правильная область значений есть интервал от -1.0 до +1.0, то нужно предусмотреть тесты -1.0, 1.0, -1.001 и 1.001. Необходимость таких проверок обусловлена установленным фактом, что очень большое число ошибок связано с получением неверных значений данных именно на границах классов эквивалентности. Анализ граничных значений отличается от метода эквивалентного разбиения в двух отношениях. Во-первых, выбор элемента в классе эквивалентности в качестве представительного при анализе граничных значений осуществляется таким образом, чтобы проверить тестом каждую границу этого класса. Во-вторых, при разработке тестов рассматриваются не только входные, но выходные классы эквивалентности. Одним из недостатков метода анализа граничных значений и метода эквивалентного разбиения является то, что они не исследуют комбинаций входных условий. Методом, лишенным этого недостатка, является метод функциональных диаграмм. Он заключается в преобразовании входной спецификации программы в функциональную диаграмму (диаграмму причинно-следственных связей) с помощью простейших логических отношений и в построении таблицы решений, которая является основой для написания эффективных тестовых наборов данных. Построение таблицы решений осуществляется методом обратной трассировки. В соответствии с методом функциональных диаграмм в спецификации программы выделяются причины и следствия. Причина – это отдельное входное условие, или класс эквивалентности входных условий. Следствие – выходные условия или результат преобразования системы. Каждой причине и следствию приписывается уникальный номер. После выделения причин и следствий анализируется семантическое содержание спецификации, которая преобразуется в булевский граф, связывающий причины и следствия. Каждая вершина этого графа может находиться в состоянии "истина" (1) и "ложь" (0). Для записи булевского графа применяются базовые отношения, изображения которых представлены на рисунке. Базовые логические отношения функциональных диаграмм. Диаграмма снабжается примечаниями, задающими ограничения и описывающими комбинации причин и (или) следствий, которые являются невозможными из-за синтаксических или внешних ограничений.
По полученной функциональной диаграмме строится таблица решений. Эта таблица состоит из двух частей. Ее верхняя часть используется для определения причин, а нижняя - для описания следствий. Левая часть таблицы решений содержит собственно описание причин и следствий, а в правой перечисляются все возможные комбинации причин и, соответственно, указывается, какие конкретно следствия и в какой последовательности выполняются, когда определенная комбинация причин имеет место. Для построения таблицы решений поочередно для каждого следствия, значение которого условно устанавливается в 1, по функциональной диаграмме прослеживается обратный путь ко всем причинам, связанным с этим следствием, и фиксируется их состояние. Каждый столбец таблицы решений соответствует тесту. Столбцы решений преобразуются в тесты. Существует еще один метод функционального тестирования, который называется "предположением об ошибке". Он основан на том, что человек, обладающий практическим опытом, при наличии определенной программы интуитивно предполагает вероятные типы ошибок, а затем разрабатывает тесты для их определения. Основная идея метода заключается в том, чтобы перечислить возможные ошибки или ситуации, в которых они могут проявиться, а затем на основе этого списка написать тесты. Очевидным недостатком этого метода является невозможность формализации и отсутствие систематичности в подходе к тестированию программы.
Символы ограничений.
|