Процесс выполнения программы с намерением найти ошибки
11.1 Проблематика тестирования программного обеспечения.
11.2 Основные определения.
11.3 Экономика тестирования.
11.4 Аксиомы (принципы) тестирования.
11.1 Проблематика тестирования программного обеспечения
Многие организации, занимающиеся созданием программного обеспечения, до 50% средств, выделенных на разработку программ, тратят на тестирование, что составляет миллиарды долларов по всему миру в целом. И все же, несмотря на громадные капиталовложения, знаний о сути тестирования явно не хватает, и большинство программных продуктов неприемлемо, ненадежно даже после «основательного тестирования».
О состоянии дел лучше всего свидетельствует тот факт, что большинство людей, работающих в области обработки данных, даже не могут правильно определить понятие «тестирование», и это на самом деле главная причина неудач. Если попросить любого профессионала определить понятие «тестирование» либо открыть (как правило, слишком краткую) главу о тестировании любого учебника программирования, то скорее всего можно встретить такое определение: «Тестирование – процесс, подтверждающий правильность программы и демонстрирующий, что ошибок в программе нет». Основной недостаток подобного определения заключается в том, что оно совершенно неправильно; фактически это почти определение антонима слова «тестирование». Поэтому определение описывает невыполнимую задачу, а так как тестирование зачастую все же выполняется с успехом, по крайней мере, с некоторым успехом, то такое определение логически некорректно.
Правильное определение тестирования таково: Тестирование – процесс выполнения программы с намерением найти ошибки.
Тестирование оказывается довольно необычным процессом (вот почему оно и считается трудным), так как это процесс разрушительный. Ведь цель проверяющего (тестовика) – заставить программу сбиться. Он доволен, если это ему удается; если же программа на его тесте не сбивается, он не удовлетворен.
Невозможно гарантировать отсутствие ошибок в программе; в лучшем случае можно попытаться показать наличие ошибок. Если программа правильно ведет себя для значительного набора тестов, нет оснований утверждать, что в ней нет ошибок; со всей определенностью можно лишь утверждать, что неизвестно, когда эта программа не работает. Конечно, если есть причины считать данный набор тестов способным с большой вероятностью обнаружить все возможные ошибки, то можно говорить о некотором уровне уверенности в правильности программы, устанавливаемой этими тестами.
О тестировании говорить довольно трудно, поскольку, хотя оно и способствует повышению надежности программного обеспечения, его значение ограничено. Надежность невозможно внести в программу в результате тестирования, она определяется правильностью этапов проектирования. Наилучшее решение проблемы надежности – с самого начала не допускать ошибок в программе. Однако вероятность того, что удастся безупречно спроектировать большую программу, бесконечно мала. Роль тестирования состоит как раз в том, чтобы определить местонахождение немногочисленных ошибок, оставшихся в хорошо спроектированной программе. Попытки с помощью тестирования достичь надежности плохо спроектированной программы совершенно бесплодны.
Презентация на тему: " Тестирование программных средств Тема 11. Тестирование – процесс выполнения программы с намерением найти ошибки Цель проверяющего (тестовика) заставить." — Транскрипт:
1 Тестирование программных средств Тема 11
2 Тестирование – процесс выполнения программы с намерением найти ошибки Цель проверяющего (тесто вика) заставить программу сбиться. Роль тестирования состоит в том, чтобы определить местонахождение немногочисленных ошибок, оставшихся в хорошо спроектированной программе.
3 Основные определения Тестирование (testing) процесс выполнения программы (или части программы) с целью найти ошибки. Доказательство (proof) попытка найти ошибки в программе безотносительно к внешней для программы среде. Большинство методов доказательства предполагает формулировку утверждений о поведении программы и затем вывод и доказательство математических теорем о правильности программы. Доказательства могут рассматриваться как форма тестирования, хотя они и не предполагают прямого выполнения программы. Контроль (verification) попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.
4 Испытание (validation) попытка найти ошибки, выполняя программу в заданной реальной среде. Аттестация (certification) авторитетное подтверждение правильности программы. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом. Отладка (debugging) - не является разновидностью тестирования. Хотя слова «отладка» и «тестирование» часто используются как синонимы, под ними подразумеваются разные виды деятельности. Тестирование деятельность, направленная на обнаружение ошибок; отладка направлена на установление точной природы известной ошибки, а затем на исправление этой ошибки. Эти два вида деятельности связаны результаты тестирования являются исходными данными для отладки.
5 Тестирование модуля, или автономное тестирование (module testing, unit testing) контроль отдельного программного модуля, обычно в изолированной среде (т. е. изолированно от всех остальных модулей). Тестирование модуля иногда включает так же математическое доказательство. Тестирование сопряжений (integration testing) контроль сопряжений между частями системы (модулями, компонентами, подсистемами). Тестирование внешних функций (external function testing) контроль внешнего поведения системы, определенного внешними спецификациями. Основные определения
6 Комплексное тестирование (system testing) контроль и/или испытание системы по отношению к исходным целям. Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в среде реальной, жизненной. Тестирование приемлемости (acceptance testing) проверка соответствия программы требованиям пользователя. Тестирование настройки (installation testing) проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы. Основные определения
7 Экономика тестирования Тестирование программы как «черного ящика» ВХОД ВЫХОД Сложности создания исчерпывающего теста: 1) нельзя создать тест, гарантирующий отсутствие ошибок; 2) разработка таких тестов противоречит экономическим требованиям. Тестируется входная информация Тестируется выходная информация
8 Тестирование программы как «белого ящика» Сложности проведения исчерпывающего тестирования маршрутов: 1) Число не повторяющих друг друга маршрутов в программе - астрономическое. 2) Хотя исчерпывающее тестирование маршрутов является полным тестом, и хотя каждый маршрут программы может быть проверен, сама программа будет содержать ошибки. ВХОД ВЫХОД Тестируется внутреннее содержание программы
9 Тестирование программы как «белого ящика» П ричины ошибок: 1) Исчерпывающее тестирование маршрутов не может дать гарантии того, что программа соответствует описанию. 2) Программа может быть неверной в силу того, что пропущены некоторые маршруты. 3) Исчерпывающее тестирование маршрутов не может обнаружить ошибок, появление которых зависит от обрабатываемых данных.
10 Аксиомы (принципы) тестирования 1) Хорош тот тест, для которого высока вероятность обнаружить ошибку. 2) Одна из самых сложных проблем при тестировании - решить, когда нужно его закончить. 3) Не нужно тестировать свою собственную программу. 4) Необходимая часть всякого теста - описание ожидаемых выходных данных (результатов). 5) Избегайте невоспроизводимых тестов, не тестируйте «с лету».
11 6) Готовьте тесты как для правильных, так и для неправильных входных данных. 7) Детально изучите результаты каждого теста. 8) Если число ошибок растет, то растет вероятность обнаружения ошибок. Аксиомы тестирования
12 9) Поручайте тестирование самым способным программистам. 10) Проект системы должен быть таким, чтобы каждый модуль подключался к системе только один раз. 11) Никогда не изменяйте программу, чтобы облегчить ее тестирование. 12) Тестирование, как и всякая другая деятельность, должна начинаться с постановки целей. Аксиомы тестирования
13 Философия тестирования Чтобы ориентироваться в стратегиях проектирования тестов, рассматривают два крайних подхода, находящихся на границах спектра.
14 Тестирование модулей Причины тестирования модулей: 1) Появляется возможность управлять комбинаторикой тестирования, поскольку первоначально внимание концентрируется на небольших модулях программы. 2) Облегчается задача отладки программы, т.е. обнаружение места ошибки и исправление текста программы. 3) Допускается параллелизм, что позволяет одновременно тестировать несколько модулей. Цель тестирования модулей сравнение функций, реализуемых модулем, со спецификациями его функций или интерфейса.
15 Пошаговое тестирование Подходы к комбинированию модулей 1) Пошаговый метод тестирования или сборки. 2) Монолитный метод («большого удара») при тестировании и сборке программы. 12 3
16 Восходящее тестирование Процесс повторяется до тех пор, пока не будет достигнута вершина.
17 Нисходящее тестирование Процесс повторяется до тех пор, пока не будут собраны и проверены все модули.
18 Нисходящее тестирование Достоинства: 1) метод совмещает тестирование модуля, тестирование сопряжений и частично тестирование внешних функций. 2) когда модули ввода-вывода уже подключены, тесты можно готовить в удобном виде 3) выгоден, когда есть сомнения относительно осуществимости программы в целом или когда в проекте программы могут оказаться серьезные дефекты. 4) отсутствие необходимости в драйверах; вместо драйверов вам просто следует написать «заглушки».
19 Недостатки: 1)модуль редко тестируется досконально сразу после его подключения. 2) он может породить веру в возможность начать программирование и тестирование верхнего уровня программы до того, как вся программа будет полностью спроектирована. Нисходящее тестирование
20 Метод «большого скачка» В соответствии с этим методом каждый модуль тестируется автономно. По окончании тестирования модулей они интегрируются в систему все сразу. Заглушки и драйверы необходимы для каждого модуля. Модули не интегрируются до самого последнего момента, а это означает, что в течение долгого времени серьезные ошибки в сопряжениях могут остаться необнаруженными.
21 Метод сандвича Тестирование методом сандвича представляет собой компромисс между восходящим и нисходящим подходами. При использовании этого метода одновременно начинают восходящее и нисходящее тестирование, собирая программу как снизу, так и сверху и встречаясь в конце концов где-то в середине.
22 Метод сандвича Метод сандвича сохраняет такое достоинство нисходящего и восходящего подходов, как начало интеграции системы на самом раннем этапе.
23 Модифицированный метод сандвича В модифицированном методе сандвича нижние уровни также тестируются строго снизу вверх. Модули верхних уровней сначала тестируются изолированно, а затем собираются нисходящим методом. Таким образом, модифицированный метод сандвича также представляет собой компромисс между восходящим и нисходящим подходами.
Тестирование как процесс выполнения программы с намерением найти ошибки, метод оценки качества программного продукта. Восходящие и нисходящие подходы для интеграции модулей в более крупные единицы и их влияние на надежность программного обеспечения.
Рубрика | Программирование, компьютеры и кибернетика |
Предмет | Программирование |
Вид | реферат |
Язык | русский |
Прислал(а) | dead |
Дата добавления | 27.12.2009 |
Размер файла | 26,8 K |
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Подобные документы
Тестирование как процесс выполнения программы с намерением найти ошибки. Шаги программы при тестировании, его оценка и значение. Роль информационных потоков тестирования, оценивания и отладки. Особенности структурного и функционального тестирования.
презентация [574,8 K], добавлен 22.03.2014
Стадии разработки программного средства. Средства, методологии и методы его разработки. Оценка надежности и качества проекта. Обоснование необходимости разработки программы. Тестирование как процесс выполнения тестовой программы с намерением найти ошибки.
презентация [57,0 K], добавлен 27.12.2013
Тестирование как составляющая часть процесса отладки программного обеспечения, его роль для обеспечения качества продукта. Обнаружение ошибок в программах, выявление причин их возникновения. Подходы к формулированию критериев полноты тестирования.
курсовая работа [1,6 M], добавлен 20.12.2012
Этапы тестирования при испытаниях надежности программных средств. Комплексирование модулей и отладка автономных групп программ в статике без взаимодействия с другими компонентами. Испытания главного конструктора. Жизненный цикл программного средства.
презентация [339,6 K], добавлен 22.03.2014
Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.
курсовая работа [1,3 M], добавлен 29.12.2014
Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015
Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
Тестирование как процесс выполнения программы с намерением найти ошибки. Шаги программы при тестировании, его оценка и значение. Роль информационных потоков тестирования, оценивания и отладки. Особенности структурного и функционального тестирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | презентация |
Язык | русский |
Дата добавления | 22.03.2014 |
Размер файла | 574,8 K |
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
HTML-версии работы пока нет.
Cкачать архив работы можно перейдя по ссылке, которая находятся ниже.
Подобные документы
Стадии разработки программного средства. Средства, методологии и методы его разработки. Оценка надежности и качества проекта. Обоснование необходимости разработки программы. Тестирование как процесс выполнения тестовой программы с намерением найти ошибки.
презентация [57,0 K], добавлен 27.12.2013
Экономика тестирования. Режим проверки программы на ошибки в режиме "черного" и "белого ящика". Принципы ее проведения. Философия тестирования. Пошаговая, восходящяя, нисходящяя проверка модулей. Метод "большого скачка". Модифицированный метод сандвича.
презентация [585,4 K], добавлен 19.09.2016
Этапы тестирования при испытаниях надежности программных средств. Комплексирование модулей и отладка автономных групп программ в статике без взаимодействия с другими компонентами. Испытания главного конструктора. Жизненный цикл программного средства.
презентация [339,6 K], добавлен 22.03.2014
Разработка программы для тестирования студентов в интегрированной среде разработки Lazarus. Создание формы, отображение графического изображения, выхода, ответа, завершения теста. Процесс выбора ответа студентом. Исходный вид программы тестирования.
курсовая работа [388,4 K], добавлен 23.12.2014
Комплексное функциональное и структурное тестирование программного продукта - граф-программа решения квадратного уравнения. Постановка задачи структурного тестирования маршрутов. Заключение о типе и причине ошибки, предложение по ее исправлению.
курсовая работа [2,8 M], добавлен 05.01.2013
Неразрешимость проблемы тестирования программного обеспечения. Виды и уровни тестирования. Стратегии восходящего и нисходящего тестирования. Методы "белого" и "черного" ящика. Автоматизированное и ручное тестирование. Разработка через тестирование.
курсовая работа [112,2 K], добавлен 22.03.2015
Изучение составляющих этапов разработки программ, процесса их тестирования, отладки и документирования в контексте курса обучения начинающих программистов. Теоретический анализ постановки задачи и модели программы, создания текста, семантической отладки.
Тестирование – процесс выполнения программы с намерением найти ошибки.
Тестирование программного обеспечения охватывает ряд видов деятельности, аналогичный последовательности процессов разравботки программного обеспечения. Сюда входят постановка задачи теста, составление тестовых заданий, выполнение тестов и изучение результатов тестирования. Решающую роль играет проектирование теста. Возможен целый спектр подходов к выработке стратегии проектирования тестов.
На левой границе спектра расположена стратегия “Чёрного ящика”. Основная цель этой стратегии – проверить все возможные комбинации значений входных величин. На правой границе спектра находится стратегия “Белого ящика”. Основная её цель – проверить каждый путь, каждую ветвь алгоритма. Стратегия ”белого ящика” позволяет исследовать внутреннюю структуру программы. Подразумевается, что программа проверена полностью, если с помощью тестов удаётся осуществить выполнение программы по всем возможным маршрутам её потока передач управления.
Ни одна из этих крайностей не является хорошей стратегией. Тестирование – проблема в значительной степени экономическая. Тестирование программы для всех комбинаций значений входных данных по стратегии “Чёрного ящика” (исчерпывающее тестирование) неосуществимо, так как количество тестов исчислялось бы миллиардами. Каждый тест должен давать максимальную отдачу по сравнению с затратами. Затраты измеряются временем и стоимостью подготовки, выполнения и проверки результатов теста. По существу, искусство тестирования представляет собой искусство отбора тестов с максимальной отдачей. Каждый тест должен быть представителем некоторого класса входных значений, так, чтобы его правильное выполнение создавало некоторую убеждённость в том, что для определённого класса входных данных программа будет выполняться правильно. Это требует некоторого знания алгоритма и структуры программы, что смещает тестировщика к правому краю спектра стратегий.
Программы должны быть протестированы с использованием контрольных примеров, разработанных на основе описания продукта и документации пользователя. Контрольные примеры должны быть методологически и систематически проработаны. Если в документации пользователя приведены примеры, то они должны быть использованы в качестве контрольных, но тестирование не должно быть ограничено только этими примерами.
Читайте также: