Тестирование и отладка программного обеспечения

Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 14:24, курсовая работа

Описание работы

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

Содержание работы

Введение………………………………………………………………………..........
Основные понятия тестирования и отладки программного обеспечения…...
Тестирование и отладка программного обеспечения…………………….
Стратегия тестирования программного обеспечения ……………………
Цели испытания программного обеспечения……………………………..
Уровни тестирования программного обеспечения……………………….
Методы тестирования программного обеспечения……………………………
Восходящее и нисходящее тестирование…………………………………
Метод сандвича……………………………………………………………..
Метод белого и черного ящика…………………………………………….
Регрессионное тестирование……………………………………………….
Верификационные тесты…………………...…………………………
Тесты регрессии ……………………….………………………………
Тесты регрессии на "закрытых" багах………………………………..
Каскадное тестирование…………………………………………………….
Заключение…………………………………………………………………………...
Глоссарий……………………………………………………………………………
Список использованных источников………………………………………………
Приложение…………………………………………………………………

Файлы: 1 файл

Алейников В.К., КР, Информационные технологии.doc

— 884.00 Кб (Скачать файл)

Основные данные о работе

 

Версия шаблона

1.1

Филиал

Волжский

Вид работы

Курсовая работа

Название дисциплины

Информационные технологии

Тема

Тестирование и отладка  программного обеспечения

Фамилия студента

Алейников

Имя студента

Виктор

Отчество студента

Константинович

№ контракта

14000060602010

Файл титульного листа


 

Содержание

Введение………………………………………………………………………..........

  1. Основные понятия тестирования и отладки программного обеспечения…...
    1. Тестирование и отладка программного обеспечения…………………….
    2. Стратегия тестирования программного обеспечения ……………………
    3. Цели испытания программного обеспечения……………………………..
    4. Уровни тестирования программного обеспечения……………………….
  2. Методы тестирования программного обеспечения……………………………
    1. Восходящее и нисходящее тестирование…………………………………
    2. Метод сандвича……………………………………………………………..
    3. Метод белого и черного ящика…………………………………………….
    4. Регрессионное тестирование……………………………………………….
      1. Верификационные тесты…………………...…………………………
      2. Тесты регрессии ……………………….………………………………
      3. Тесты регрессии на "закрытых" багах………………………………..
    5. Каскадное тестирование…………………………………………………….

Заключение…………………………………………………………………………...

Глоссарий……………………………………………………………………………

Список использованных источников………………………………………………

Приложение………………………………………………………………………….

3

5

5

5

7

8

10

10

13

13

15

15

16

17

17

20

21

23

24


 

 

Введение

Многие организации, занимающиеся созданием программного обеспечения, до 50% средств, выделенных на разработку программ, тратят на тестирование, что  составляет миллиарды долларов по всему миру в целом. Эти цифры могут вызвать целую дискуссию, но, оставив вопрос точности оценки в стороне и основываясь на том, что тестирование является важным этапом в создании программного продукта. И всё же, несмотря на громадные капиталовложения, знаний о сути тестирования явно не хватает и большинство программных продуктов неприемлемо ненадежно даже после «основательного тестирования». На самом деле тестирование программ освещено, пожалуй, меньше, чем любой другой аспект разработки программного обеспечения. К тому же тестирование является до сих пор «немодным» предметом, если иметь в виду спорность публикаций по этому вопросу.

 «Тестирование — процесс, подтверждающий правильность программы и демонстрирующий, что ошибок в программе нет».

Основной недостаток подобного определения заключается в том, что оно совершенно неправильно; фактически это почти определение антонима слова «тестирование». Читатель с некоторым опытом программирования уже, вероятно, понимает, что невозможно продемонстрировать отсутствие ошибок в программе. Поэтому определение описывает невыполнимую задачу, а так как тестирование зачастую все же выполняется с успехом, по крайней мере, с некоторым успехом, то такое определение логически некорректно. [3, c. 2-5]

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

Тестирование оказывается  довольно необычным процессом (вот  почему оно и считается трудным), так как этот процесс разрушительный. Ведь цель проверяющего (тестовика) — заставить программу сбиться. Он доволен, если это ему удается; если же программа на его тесте не сбивается, он не удовлетворен. [5, c. 2-4]

 

Основная часть

1 Основные понятия тестирования и отладки программного обеспечения

1.1 Тестирование и отладка  программного обеспечения

«Тестирование - это любая деятельность, направленная на обнаружение ошибок в программном продукте».

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

Невозможно гарантировать  отсутствие ошибок в нетривиальной  программе; в лучшем случае можно попытаться показать наличие ошибок. Если программа правильно ведет себя для солидного набора тестов, нет основания, утверждать, что в ней нет ошибок; со всей определенностью можно лишь утверждать, что не известно, когда эта программа не работает. Конечно, если есть причины считать данный набор тестов способным с большой вероятностью обнаружить все возможные ошибки, то можно говорить о некотором уровне уверенности в правильности программы, устанавливаемом этими тестами. [10]

1.2 Стратегия тестирования программного обеспечения

Стратегия тестирования, или методы тестирования — это  систематические методы, используемые для отбора и/или создания тестов, которые должны быть включены в тестовый комплект. Это могут быть случайные  вводы, тест, направленный на проверку подозрений; тест, направленный на проверку соответствия требованиям; тест, направленный на проверку искаженности; тесты, который мы выполняли последний раз, тесты, которые отличаются от тестов, которые мы выполняли последний раз. Тестировщик выбирает стратегию, по которой он можем определить, удовлетворяет данный тест стратегии или не удовлетворяет. Сама стратегия должна быть программируемой.

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

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

Стратегия структурного теста определяется структурой тестируемого объекта Например: выполнение каждого  оператора по меньшей мере один раз, выполнение каждой ветви по меньшей мере один раз, тестирование использования всех объектов данных, выполнение каждой команды объектной программы, полученной при компиляции. Тестирование, выполненное с помощью стратегии структурного теста, называется также тестированием прозрачного ящика или тестированием белого ящика. Стратегия структурного теста требует полного доступа к структуре объекта — то есть к исходному коду.

Стратегия гибридного теста  является комбинацией поведенческой  и структурной стратегий. Поведенческая, структурная и гибридная стратегии не противоречат друг другу, и ни про одну из них нельзя сказать, что она лучше других. Модули и низкоуровневые компоненты часто тестируются с помощью структурной стратегии. Большие компоненты и системы в основном тестируются с помощью поведенческой стратегии. Гибридная стратегия полезна на всех уровнях. Не существует лучшей стратегии, так как полезность стратегии зависит от природы тестируемого объекта, природы ошибок объекта и уровня ваших знаний. [7, c. 15-23]

1.3 Цели испытания программного  обеспечения

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

  1. Обеспечение программистов информацией, которую они смогут использовать для предотвращения ошибок.
  2. Обеспечение пользователей информацией, которая необходима им для разумной оценки риска при использовании объекта.
  3. Создание объекта, максимально свободного от ошибок.
  4. Создание проекта, поддающегося тестированию, то есть проекта, который можно легко проверить на соответствие, на искаженность и который будет легко сопровождать.
  5. Проверка искаженности объекта с помощью как сформулированных, так и не сформулированных требований. Это еще называют «взломом программного обеспечения».
  6. Проверить соответствие объекта (убедиться в его действенности), то есть показать, что он работает правильно.

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

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

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

Наивысшая цель тестирования — обеспечение качества: накопление информации, которая, вернувшись к программисту, поможет избежать ему прошлых ошибок и улучшить качество программного обеспечения в будущем. [4, c. 8-13]

1.4 Уровни тестирования программного обеспечения

  • Модульное тестирование (юнит-тестирование) — тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция. Часто модульное тестирование осуществляется разработчиками.

  • Интеграционное тестирование — тестируются интерфейсы между компонентами, подсистемами. При наличии резерва времени на данной стадии тестирование ведётся итерационно, с постепенным подключением последующих подсистем.

  • Системное тестирование — тестируется интегрированная система на её соответствие требованиям.

    • Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком. Чаще всего альфа-тестирование проводится на ранней стадии разработки продукта, но в некоторых случаях может применяться для законченного продукта в качестве внутреннего приёмочного тестирования. Иногда альфа-тестирование выполняется под отладчиком или с использованием окружения, которое помогает быстро выявлять найденные ошибки. Обнаруженные ошибки могут быть переданы тестировщикам для дополнительного исследования в окружении, подобном тому, в котором будет использоваться программное обеспечение.

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

Информация о работе Тестирование и отладка программного обеспечения