на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Тестирование информационных систем
. Создание тестового набора (test suite) путем ручной разработки или автоматической генерации для конкретной среды тестирования (testing environment).

2. Прогон программы на тестах, управляемый тестовым монитором (test monitor, test driver) с получением протокола тестирования (test log).

3. Оценка результатов выполнения программы на наборе тестов с целью принятия решения о продолжении или остановке тестирования.

1.2. Критерии тестирования.

Можно выделить требования к идеальному критерию тестирования:

· Критерий должен быть достаточным, т.е. показывать, когда некоторое конечное множество тестов достаточно для тестирования данной программы.

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

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

· Критерий должен быть легко проверяемым, например, вычисляемым на тестах.

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

Классы критериев:

·
Структурные критерии используют информацию о структуре программы (критерии так называемого «белого ящика»).

· Функциональные критерии формулируются в описании требований к программному изделию (критерии так называемого «черного ящика»).

· Критерии стохастического тестирования формулируются в терминах проверки наличия заданных свойств у тестируемого приложения, средствами проверки некоторой статистической теории.

· Мутационные критерии ориентированы на проверку свойств программного изделия на основе подхода Монте-Карло.

Структурные критерии (класс I).

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

Структурные критерии базируются на основных элементах УГП, операторах, ветвях и путях.

· Условие критерия тестирования команд (критерий С0) - набор тестов в совокупности должен обеспечить прохождение каждой команды не менее одного раза. Это слабый критерий, используется в больших программных системах, где другие критерии применить невозможно.

· Условие критерия тестирования ветвей (критерий С1) - набор тестов в совокупности должен обеспечить прохождение каждой ветви не менее одного раза. Это достаточно сильный и при этом экономичный критерий. Данный критерий часто используется в системах автоматизации тестирования.

· Условие критерия тестирования путей (критерий С2) - набор тестов в совокупности должен обеспечить прохождение каждого пути не менее одного раза. Если программа содержит цикл (в особенности с неявно заданным числом итераций), то число итераций ограничивается константой (часто - 2, или числом классов выходных путей).

Структурные критерии не проверяют соответствие спецификации, если

оно не отражено в структуре программы.

Функциональные критерии (класс II).

Функциональный критерий - важнейший для программной индустрии критерий тестирования. Он обеспечивает, прежде всего, контроль степени выполнения требований заказчика в программном продукте. Поскольку требования формулируются к продукту в целом, они отражают взаимодействие тестируемого приложения с окружением. При функциональном тестировании преимущественно используется модель «черного ящика». Проблема функционального тестирования - это, прежде всего, трудоемкость; дело в том, что документы, фиксирующие требования к программному изделию (Software requirement specification, Functional specification и т.п.), как правило, достаточно объемны, тем не менее, соответствующая проверка должна быть всеобъемлющей.

Ниже приведены частные виды функциональных критериев.

· Тестирование пунктов спецификации - набор тестов в совокупности должен обеспечить проверку каждого тестируемого пункта не менее одного раза. Спецификация требований может содержать сотни и тысячи пунктов требований к программному продукту и каждое из этих требований при тестировании должно быть проверено в соответствии с критерием не менее чем одним тестом.

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

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

· Тестирование классов выходных данных - набор тестов в совокупности должен обеспечить проверку представителя каждого выходного класса, при условии, что выходные результаты заранее расклассифицированы, причем отдельные классы результатов указывают, в том числе ограничения на ресурсы или на время (time out).
При создании тестов классы выходных данных сопоставляются с режимами использования тестируемого компонента или подсистемы, что заметно сокращает варианты перебора, учитываемые при разработке тестовых наборов.

· Тестирование функций - набор тестов в совокупности должен обеспечить проверку каждого действия, реализуемого тестируемым модулем, не менее одного раза. Очень популярный на практике критерий, который, однако, не обеспечивает покрытия части функциональности тестируемого компонента, связанной со структурными и поведенческими свойствами, описание которых не сосредоточено в отдельных функциях (т.е. описание рассредоточено по компоненту).

Критерий тестирования функций объединяет отчасти особенности структурных и функциональных критериев. Он базируется на модели «полупрозрачного ящика», где явно указаны не только входы и выходы тестируемого компонента, но также состав и структура используемых методов (функций, процедур) и классов.

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

Стохастические критерии (класс III).

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

· Разработать программы-имитаторы случайных последовательных входных сигналов {x}.

· Вычислить независимым способом значения {y} для соответствующих входных сигналов {y} и получить тестовый набор {X,Y}.

· Протестировать приложение на тестовом наборе {X,Y}, используя два способа контроля результатов:

1. Детерминированный контроль - проверка соответствия вычисленного значения значению y, полученному в результате прогона теста на наборе {x} - случайной последовательности входных сигналов, сгенерированной имитатором.

2. Стохастический контроль - проверка соответствия множества {}, полученного в результате прогона тестов на наборе значений {x}, заранее известному распределению результатов F(Y). В этом случае множество y неизвестно (его вычисление невозможно), но известен закон распределения данного множества.

Критерии стохастического тестирования:

· Статистические методы окончания тестирования - стохастические методы принятия решений о совпадении гипотез о распределении случайных величин. К ним принадлежат широко известные: метод Стьюдента (St), метод Хи-квадрат (x2) и т.п.

· Метод оценки скорости выявления ошибок - основан на модели скорости выявления ошибок, согласно которой тестирование прекращается, если оцененный интервал времени между текущей ошибкой и следующей слишком велик для фазы тестирования приложения.

Мутационный критерий (класс IV).

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

Подход базируется на следующих понятиях:

Мутации - мелкие ошибки в программе.

Мутанты - программы, отличающиеся друг от друга мутациями.

Метод мутационного тестирования - в разрабатываемую программу P вносят мутации, т.е. искусственно создают программы-мутанты P1, P2…Затем программа P и ее мутанты тестируются на одном и том же наборе тестов {X,Y}.

Если на наборе {X,Y} подтверждается правильность программы P и, кроме того, выделяются все внесенные в программы-мутанты ошибки, то набор тестов (X,Y) соответствует мутационному критерию, а тестируемая программа объявляется правильной.

Если некоторые мутанты не выявили всех мутаций, то надо расширять набор тестов (X,Y) и продолжать тестирование.

1.3. Принципы тестирования

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

Для большинства проектов этот процесс включает тестирование кода приложения с ожидаемыми результатами. Затем разработчики «фиксируют» приложение до тех пор, пока оно не обеспечит нужный результат. Либо происходит корректировка ожидаемого результата, если возникла ошибка. Такой подход фокусируется на коде приложения и его поведении на множестве тестовых условий. Оказывается, что тщательное тестирование приложения требует большого числа тестовых условий. При таком подходе к тестированию предполагается, что качество приложения является функцией от количества тестов - чем больше тестов, тем лучше качество.

· Неэффективность существующих технологий тестирования.

Традиционный подход был тщательно разработан для пакетных и символьно-ориентированных диалоговых Кобол-приложений, но сегодня системы радикально изменились: произошел переход от монолитных программ к фрагментированным модулям на С, С++ и/или Java. Данный тип разработки увеличивает число компонентов приложения и сложность их взаимодействия, что снижает эффективность тестирования, основанного на коде.

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

Как уже отмечалось, традиционные технологии тестирования ориентированы на код законченного приложения (т.е. приложение может тестироваться только после того, как оно собрано). Этот подход оказывается неэффективным с точки зрения как качества выполняемой работы, так и бюджета. Годы исследований показали - устранение ошибок при завершении процесса разработки обходится дороже и требует больше времени, чем их исправление на более ранних стадиях (анализ, проектирование и т.д.) [1]. Риск сбоя программного обеспечения в результате этих изменений также увеличивается на завершающих стадиях разработки приложения. Одновременно с увеличением цены и риска уменьшаются возможности разработчика по внесению изменений. Очевидно, что ошибки следует находить и исправлять как можно раньше.

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

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.