Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
10
PAGE 10
Корректность является статическим свойством ПО, поскольку она:
Два свойства корректности ПО ( с учётом специфики проявления ошибок в ПО в процессе их выполнения на ПК ) :
Если есть циклические и рекурсивные вычисления или наличия частично-определенных операций, то свойство завершенности не тривиально. Случаи, когда свойство завершенности не удовлетворяется, довольно обычны для ПО, которое содержит ошибки, не описанные спецификацией.
Каждое из двух выделенных свойств корректности программы может удовлетворяться или не удовлетворяться. Таким образом, можно выделить шесть основных задач анализа корректности приложения:
ВЫВОД. Эти шесть задач направлены на уменьшение сложности верификации ПО..
12.2 Объекты тестирования
Тест это набор входных значений, условий выполнения и ожидаемых значений на выходе, разработанных для проверки конкретного пути выполнения программы.
С точки зрения тестирования наиболее значимыми являются следующие объекты программного проекта:
цикла.
Эти объекты различаются сложностью тестирования, уровнем теоретической разработки методов и существующей степенью автоматизации процесса тестирования.
Состояние теории и практики тестирования на рис.12.1 (нумерация объектов на рисунке соответствует списку объектов тестирования).
1 2 3 4 5 6
Спецификации Модули Группы Комплексы Прогр. Программный
программ программ ср-ва продукт
Рис.12.1.
Приведенные графики имеют только иллюстративное значение и имеют целью показать общее состояние теории и практики тестирования.
Программный продукт, как объект тестирования, имеет ряд особенностей, которые отличают процесс его тестирования.
Комплексы программ, используемые для управления и обработки информации, являются одними из самых сложных изделий, создаваемых человеком. Поэтому тестирование проводится в объемах, минимально необходимых для проверки ПО в некоторых ограниченных пределах изменения параметров и условий функционирования. Ограниченность ресурсов тестирования привела к необходимости тщательного упорядочивания применяемых методов и конкретных значений параметров с целью получения при тестировании наибольшей глубины проверок программ.
Показатели качества сложных комплексов программ трудно формализуются и еще более трудно измеряются. Поэтому оценка полноты тестирования и достигаемого при этом качества ПО обычно получаются в процессе испытаний и сопровождения.
Наиболее формализованным является тестирование спецификаций, которые содержат “наименьшее количество информации” о программах среди всех рассматриваемых объектов. По мере перехода от модуля к группе и комплексу программ сложность тестирования каждого отдельного объекта быстро возрастает. Тестирование ПО при комплексной отладке, испытаниях и сопровождении по степени сложности примерно одинаково. Интегральная сложность и трудоемкость тестирования всей совокупности программных модулей, входящих в комплекс, может быть выше, чем сложность тестирования при испытаниях и сопровождении
Уровень теоретической разработки методов тестирования значительно зависит от объектов. Наиболее полно в настоящее время исследованы методы тестирования программных модулей и небольших групп программ, написанных с использованием процедурных языков программирования. Менее исследованными остаются методы и теория тестирования групп программ, написанных с использованием объектно-ориентированных языков программирования. Мало исследованными являются методы и теория тестирования в процессе отладки, испытаний и сопровождения крупных комплексов программ.
Степень автоматизации тестирования или, точнее, относительные затраты на его обеспечение значительно возрастают по мере увеличения сложности объектов тестирования. Автоматизация тестирования отстает от потребностей практики.
Наиболее автоматизировано тестирование модулей и групп программ, написанных с использованием процедурных языков программирования.
12.3 Категории тестов для различных объектов тестирования
На разных этапах ЖЦ программного обеспечения для каждой категории объектов тестирования ставятся свои задачи тестирования и, соответственно, применяются свои виды тестирования и категории тестов.
Каждая категория имеет специфическое, частное назначение для выявления ошибок определенного класса.
Для описанных выше объектов тестирования выделяются следующие категории тестов:
Применение перечисленных выше категорий тестов зависит от класса разрабатываемых программ. Организация и эффективное проведение обширного систематического тестирования требуют больших затрат и высокой квалификации специалистов, которые в области тестируемых программ должны иметь квалификацию не ниже, чем их разработчики.
Одним из общих принципов тестирования ПО является проведение работ по тестированию в течение всего ЖЦ.
Функциональное тестирование это тестирование, проводимое для проверки соответствия программной системы или программного модуля специфицированным функциональным требованиям.
Рассмотрим наиболее широко применяемые методы функционального тестирования, или тестирования по принципу "черного ящика".
1. Метод эквивалентного разбиения
Цель выбрать минимальное подмножество тестов, обеспечивающих наибольшую вероятность обнаружения ошибок.
Правильно выбранный тест этого подмножества должен обладать двумя свойствами:
Разработка тестов методом эквивалентного разбиения осуществляется в два этапа:
1.1. Выделение классов эквивалентности
Классы эквивалентности выделяются путем выбора каждого входного условия (предложение спецификации) и разбиения его на две или более групп.
Различают два типа классов эквивалентности:
Выделение классов эквивалентности представляет собой взначительной степени эвристический процесс. Однако существует ряд правил, которые следует выполнять:
1.2. Построение теста
2. Анализ граничных значений
Граничные условия это ситуации, возникающие непосредственно на, выше или ниже границ входных и выходных классов эквивалентности.
Анализ граничных значений отличается от эквивалентного разбиения в двух отношениях:
Правила использования данного метода:
1) Построить тесты для границ области и тесты с неправильными входными данными для ситуаций незначительного выхода за границы области, если входное условие описывает область значений. Например, если правильное значение -1.0 X +1.0, то составить тесты для ситуаций: -1.0, 1.0, -1.001, 1.001.
Одним из недостатков анализа граничных значений и эквивалентного разбиения является то, что они не исследуют комбинации входных условий. Например, если тестируется некоторая программа социологического опроса, то она может не обнаружить ошибку, связанную с превышением произведения числа вопросов и числа респондентов, хотя такая ошибка не обязательно будет обнаружена тестированием граничных значений.
Тестирование комбинаций входных условий сложная задача, поскольку даже при эквивалентном разбиении входных условий число комбинаций классов эквивалентности может быть очень большим. Если нет систематического способа выбора подмножества входных условий, то, как правило, выбирается произвольное подмножество, приводящее к неэффективному тесту.
3. Метод функциональных диаграмм
Метод функциональных диаграмм или диаграмм причинно-следственных связей помогает систематически выбирать высокорезультативные тесты. Кроме этого, метод функциональных диаграмм дает полезный побочный эффект, так как позволяет обнаруживать неполноту и неоднозначность исходных спецификаций.
Функциональная диаграмма это формальный язык, на который транслируется спецификация, написанная на естественном языке.
Методика использования функциональных диаграмм:
Причины и следствия определяются путем последовательного чтения спецификации. Каждым причине и следствию приписывается уникальный номер.
Процедура генерации таблицы решений заключается в следующем:
При выполнении этого шага необходимо руководствоваться следующими положениями:
Каждый узел диаграммы может находиться в двух состояниях 0 или 1; 0 обозначает состояние “отсутствует”, а 1 “присутствует”.
Для представления функциональных диаграмм используются следующие базовые символы:
Если значение a есть 1 , то и значение b есть 1; в противном случае значение b есть 0.
Если значение a есть 0 , то значение b есть 1; в противном случае значение b есть 0.
Функция ИЛИ устанавливает, что если a, или b,
или с есть 1, то d есть 1; в противном случае d есть 0.
Функция И устанавливает, что если и a, и b есть 1, то и с есть 1; в противном случае с есть 0.
Пример
Рассмотрим диаграмму, отображающую спецификацию: Файл обновляется, если символ в колонке 1 является буквой “A” или “B”, а символ в колонке 2 цифра. Если первый символ ошибочный, то выдается сообщение X1, а если второй символ не является цифрой сообщение X2.
Причины:
1 символ “A” в колонке 1
2 символ “B” в колонке 1
3 цифра в колонке 2
Следствия:
7 файл обновляется
6 выдается сообщение X1
8 выдается сообщение X2
Приведенная функциональная диаграмма содержит невозможную комбинацию причин: причины 1 и 2 не могут быть установлены в 1 одновременно.
Для изображения невозможных комбинаций причин используются следующие логические ограничения:
Ограничение Е устанавливает, что Е должно быть истинным, если хотя бы одна из причин а или b принимает значение 1 (a и b не могут принимать значение 1 одновременно).
Ограничение I устанавливает, что по крайней мере одна из величин a, b или c всегда должна быть равной 1 (a, b и с не могут принимать значение 0 одновременно).
Ограничение О устанавливает, что одна и только одна из величин а или b должна быть равна 1.
Ограничение R устанавливает, что если a принимает значение 1, то и b должна принимать значение 1, т.е. невозможно, чтобы a было равно 1, а b 0.
Ограничение М устанавливает, что если следствие a имеет значение 1, то следствие b должно принять значение 0.
Для рассмотренного выше примера физически невозможно, чтобы причины 1 и 2 присутствовали одновременно, но возможно, чтобы присутствовала одна из них. Следовательно, они связаны ограничением Е.
Преобразуем полученную функциональную диаграмму в таблицу решений.
Выберем следствие 7 (файл обновляется). Следствие 7 имеет место, если узлы 3 и 11есть 1. В свою очередь узел 11 есть 1, если одна из причин 1 или 2 имеет значений 1. Таким образом, возможны следующие состояния узлов 1 3:
1 0 1 и 0 1 0.
Следствие 6 имеет место, если значение узла 11 есть 0 (узлы 1 и 2 оба равны 0).
Следствие 8 имеет место, если значение узла 3 есть 0.
Таблица решений будет иметь следующий вид:
Столбец 1 представляет условие, где следствие 6 есть 1, столбцы 2,3 следствие 7 есть 1, а столбец 4 соответствует условию, для которого следствие 8 есть 1.
Пробелы в таблице решений представляют “безразличные” ситуации (состояние причины несущественно).
Преобразуем таблицу решений в набор тестов:
Кол.1 Кол.2
4. Метод, основанный на предположении об ошибке
Человек, обладающий богатым практическим опытом, часто подсознательно применяет метод проектирования тестов, называемый предположением об ошибке. Процедуру для метода предположения об ошибке невозможно описать формально, так как он во многом является интуитивным. Основная идея метода заключается в том, чтобы перечислить в некотором списке возможные ошибки или ситуации, в которых они могут появиться, а затем на основе этого списка написать тесты.
В качестве примера рассмотрим тестирование подпрограммы сортировки. Необходимо предусмотреть следующие специальные случаи, которые могут быть не учтены при проектировании программы:
Общая стратегия разработки тестов
Поскольку каждый из рассмотренных методов проектирования тестов обеспечивает создание некоторого набора тестов, но ни один из них сам по себе не может дать полный набор тестов, рассмотренные методы могут быть объединены в общую стратегию.
Предлагается следующая стратегия разработки тестов, которая хотя и не гарантирует, что все ошибки будут найдены, но обеспечивает приемлемый компромисс между методами.
Критерии завершения тестирования
Одним из наиболее трудных в процессе тестирования является вопрос о том, когда следует закончить тестирование программы, поскольку не представляется возможным определить, сколько еще ошибок осталось в программе. В практике тестирования используются три группы критериев для завершения тестирования.
Основная
1. Липаев В.В. Качество программного обеспечения. - М.: Финансы и статистика, 1983. -263с.
2. Назаров С.В., Барсуков А.Г. Измерительные средства и оптимизация вычислительных систем. - М.: Радио и связь, 1990. -248с.
3. Боэм Б.У. Инженерное проектирование программного обеспечения: Пер. с англ. - М.: Радио и связь, 1985. -512с.
4. Авен О.И. и др. Оценка качества и оптимизация вычислительных систем. - М.: Наука, 1982. -485с.
5. Кузовлев В.И., Шкатов П.Н. Математические методы анализа производительности и надежности САПР, М.: Высшая школа, 1990.
6. Липаев В.В. Надежность программного обеспечения. - М.: Энергоиздат, 1981. -241с.
7. Липаев В.В. Проектирование программных средств. - М: Высшая школа, 1990. -301с.
8. Липаев В.В. Тестирование программ. - М.: Радио и связь, 1986. -294с.
9. Р.Калбертсон и др. Быстрое тестирование. Пер. с англ.. - М.: Изд.дом «Вильямс», 2002-384с.
Дополнительная:
10.Коган Б.И. Экспериментальные исследования программ. - М.: Наука, 1988. -184с.
11.Боэм Б. и др. Характеристики качества программного обеспечения. Пер. с англ. Е.К.Масловского. - М.: Мир, 1981. -208с.
12.Кожевникова Г.П. Структуры данных и проектирование эффективной вычислительной среды. - Львов: Вища школа, Изд. ЛГУ, 1986. -278с.
13.Холстед М.Х. Начала науки о программах. - М.: Финансы и статистика,1981.-128с.
14.Бровин Н.Н. и др. Оценка эффективности алгоритмов и программ. Ленинград.: ЛИАП 1983.-31с.
EMBED Word.Document.8 \s
EMBED Word.Picture.8
EMBED Word.Picture.8
EMBED Word.Picture.8
EMBED Word.Picture.8
EMBED Word.Picture.8
b
a
b
a
Объекты тестирования
Степень автоматизации
Уровень теоретической разработки
Сложность
Характеристики тестирования