Тестирование программных средств

23
Тестирование программных средств Тема 11

description

Тестирование программных средств. Тема 11. Тестирование – процесс выполнения программы с намерением найти ошибки Цель проверяющего (тестовика) — заставить программу сбиться. - PowerPoint PPT Presentation

Transcript of Тестирование программных средств

Page 1: Тестирование программных средств

Тестирование программных средств

Тема 11

Page 2: Тестирование программных средств

Тестирование – процесс выполнения программы с намерением найти ошибки

Цель проверяющего (тестовика) — заставить программу сбиться.

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

Page 3: Тестирование программных средств

Основные определения Тестирование (testing) — процесс выполнения программы

(или части программы) с целью найти ошибки.

Доказательство (proof) — попытка найти ошибки в программе безотносительно к внешней для программы среде. Большинство методов доказательства предполагает формулировку утверждений о поведении программы и затем вывод и доказательство математических теорем о правильности программы. Доказательства могут рассматриваться как форма тестирования, хотя они и не предполагают прямого выполнения программы.

Контроль (verification) — попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.

Page 4: Тестирование программных средств

Испытание (validation) — попытка найти ошибки, выполняя программу в заданной реальной среде.

Аттестация (certification) — авторитетное подтверждение правильности программы. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом.

Отладка (debugging) - не является разновидностью тестирования. Хотя слова «отладка» и «тестирование» часто используются как синонимы, под ними подразумеваются разные виды деятельности. Тестирование — деятельность, направленная на обнаружение ошибок; отладка направлена на установление точной природы известной ошибки, а затем — на исправление этой ошибки. Эти два вида деятельности связаны — результаты тестирования являются исходными данными для отладки.

Page 5: Тестирование программных средств

Тестирование модуля, или автономное тестирование (module testing, unit testing) — контроль отдельного программного модуля, обычно в изолированной среде (т. е. изолированно от всех остальных модулей). Тестирование модуля иногда включает так же математическое доказательство.

Тестирование сопряжений (integration testing) — контроль сопряжений между частями системы (модулями, компонентами, подсистемами).

Тестирование внешних функций (external function testing) — контроль внешнего поведения системы, определенного внешними спецификациями.

Основные определения

Page 6: Тестирование программных средств

Комплексное тестирование (system testing) — контроль и/или испытание системы по отношению к исходным целям. Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в среде реальной, жизненной.

Тестирование приемлемости (acceptance testing) — проверка соответствия программы требованиям пользователя.

Тестирование настройки (installation testing) — проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы.

Основные определения

Page 7: Тестирование программных средств

Экономика тестированияТестирование программы как «черного ящика»

ВХОД ВЫХОД

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

Тестируется входная информация

Тестируется выходная информация

Page 8: Тестирование программных средств

Тестирование программы как «белого ящика»

Сложности проведения исчерпывающего тестирования маршрутов:

1) Число не повторяющих друг друга маршрутов в программе - астрономическое.

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

ВХОД ВЫХОДТестируется внутреннее

содержание программы

Page 9: Тестирование программных средств

Тестирование программы как «белого ящика»

Причины ошибок:

1) Исчерпывающее тестирование маршрутов не может дать гарантии того, что программа соответствует описанию.

2) Программа может быть неверной в силу того, что пропущены некоторые маршруты.

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

Page 10: Тестирование программных средств

Аксиомы (принципы) тестирования

1) Хорош тот тест, для которого высока вероятность обнаружить ошибку.

2) Одна из самых сложных проблем при тестировании - решить, когда нужно его закончить.

3) Не нужно тестировать свою собственную программу.

4) Необходимая часть всякого теста - описание ожидаемых выходных данных (результатов).

5) Избегайте невоспроизводимых тестов, не тестируйте «с лету».

Page 11: Тестирование программных средств

6) Готовьте тесты как для правильных, так и для неправильных входных данных.

7) Детально изучите результаты каждого теста. 8) Если число ошибок растет, то растет вероятность

обнаружения ошибок.

Аксиомы тестирования

Page 12: Тестирование программных средств

9) Поручайте тестирование самым способным программистам.

10) Проект системы должен быть таким, чтобы каждый модуль подключался к системе только один раз.

11) Никогда не изменяйте программу, чтобы облегчить ее тестирование.

12) Тестирование, как и всякая другая деятельность, должна начинаться с постановки целей.

Аксиомы тестирования

Page 13: Тестирование программных средств

Философия тестирования Чтобы ориентироваться в стратегиях проектирования

тестов, рассматривают два крайних подхода, находящихся на границах спектра.

Page 14: Тестирование программных средств

Тестирование модулей Причины тестирования модулей:

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

2) Облегчается задача отладки программы, т.е. обнаружение места ошибки и исправление текста программы.

3) Допускается параллелизм, что позволяет одновременно тестировать несколько модулей.

Цель тестирования модулей — сравнение функций, реализуемых модулем, со спецификациями его функций или интерфейса.

Page 15: Тестирование программных средств

Пошаговое тестирование

Подходы к комбинированию модулей

1) Пошаговый метод тестирования или сборки.

2) Монолитный метод («большого удара») при

тестировании и сборке программы.

1 2 3

Page 16: Тестирование программных средств

Восходящее тестирование

1

2

34

Процесс повторяется до тех пор, пока не будет достигнута вершина.

Page 17: Тестирование программных средств

Нисходящее тестирование

1

2

3

4

Процесс повторяется до тех пор, пока не будут собраны и проверены все модули.

Page 18: Тестирование программных средств

Нисходящее тестирование

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

Page 19: Тестирование программных средств

Недостатки: 1)модуль редко тестируется досконально сразу

после его подключения. 2) он может породить веру в возможность начать

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

Нисходящее тестирование

Page 20: Тестирование программных средств

Метод «большого скачка»

В соответствии с этим методом каждый модуль тестируется автономно. По окончании тестирования модулей они интегрируются в систему все сразу.

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

Page 21: Тестирование программных средств

Метод сандвича

Тестирование методом сандвича представляет собой компромисс между восходящим и нисходящим подходами.

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

Page 22: Тестирование программных средств

Метод сандвича

1

1

3

2

2

Метод сандвича сохраняет такое достоинство нисходящего и восходящего подходов, как начало интеграции системы на самом раннем этапе.

Page 23: Тестирование программных средств

Модифицированный метод сандвича

В модифицированном методе сандвича нижние уровни также тестируются строго снизу вверх.

Модули верхних уровней сначала тестируются изолированно, а затем собираются нисходящим методом.

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