Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
124563.rtf
Скачиваний:
32
Добавлен:
26.08.2019
Размер:
1.32 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Витебский государственный университет им. П.М. Машерова

Кафедра прикладной математики и механики

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

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

Студент гр. П41

А.М. Бомко

Содержание

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

1.1 1.1 История развития тестирования программного обеспечения 6

2.2 Основные определения в области тестирования программного обеспечения. Цели и задачи тестирования 8

2.3 Классификация тестирования 9

2.4 Классификация ошибок 12

2.5 Список вопросов для выявления ошибок в начале процесса тестирования 15

3.1 C чего начать? 23

3.2 Тестирование приложения «Определение типа треугольника» 25

3.3 Тестирование приложения «Библиотека» 29

1.4 Пример требований к приложению «Библиотека» 29

3.1 Модульное тестирование 47

3.2 Цели создания тестов 47

1.1 История развития тестирования программного обеспечения

1.2 Основные определения в области тестирования программного обеспечения. Цели и задачи тестирования

1.3 Классификация тестирования

1.4 Классификация ошибок

1.5 Список вопросов для выявления ошибок в начале процесса тестирования

2. Практическое применение

2.1 C чего начать?

2.2 Тестирование приложения «Определение типа треугольника»

2.3 Тестирование приложения «Библиотека»

3. Тестирование при разработке программного обеспечения

3.1 Модульное тестирование

3.2 Цели создания тестов

3.3 JUNIT

Заключение

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

Приложение

Введение

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

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

«Тестирование – процесс, подтверждающий правильность программы и демонстрирующий, что ошибок в программе нет». Это определение описывает нечто противоположное тому, что следует понимать под тестированием, поэтому оно неверно. Программа тестируется не для того, чтобы показать, что она работает, а скорее наоборот – тестирование начинается с предположения, что в ней есть ошибки (это предположение справедливо практически для любой программы), а затем уже обнаруживается их максимально возможное число. Таким образом, сформулируем наиболее приемлемое и простое определение: тестирование – процесс выполнения программы с целью обнаружения ошибок.

Психологические эксперименты показывают, что большинство людей, поставив цель (например, показать, что ошибок нет), ориентируется в своей деятельности на достижение этой цели. Если поставить целью демонстрацию отсутствия ошибок, то мы подсознательно будем стремиться к этой цели, выбирая тестовые данные, на которых вероятность появления ошибки мала. В то же время, если нашей задачей станет обнаружение ошибок, то создаваемый нами тест будет обладать большей вероятностью обнаружения ошибки. Сформулируем основополагающий вывод: если ваша цель – показать отсутствие ошибок, вы их найдете не слишком много. Если же ваша цель – показать наличие ошибок, вы найдете значительную их часть.[2]

Тестирование – процесс деструктивный (т. е. обратный созидательному, конструктивному). Именно этим и объясняется, почему многие программисты и тестировщики считают его трудным. Большинство людей склонны к конструктивному процессу созидания объектов и в меньшей степени – к деструктивному процессу разделения на части. Ведь цель тестировщика – заставить программу сбиться. Поэтому тест удачный, если в процессе его выполнения обнаружена ошибка, и неудачный, если получен корректный результат.

Еще одна причина, по которой трудно говорить о тестировании – это тот факт, что о нем известно очень немногое. Если сегодня общество располагает около 5% тех знании о проектировании и собственно программировании (кодировании), то о тестировании известно менее 1%.

Существует множество подходов к решению задачи тестирования, но эффективное тестирование сложных программных продуктов – это процесс в высшей степени творческий, не сводящийся к следованию строгим и чётким процедурам или созданию таковых. [2].

Целью курсовой работы является изучение основ тестирования программного обеспечения. Задачи: изучить предложенную литературу по тестированию программного обеспечения, выделить основные этапы тестирования, составить методические материалы по теме «Тестированию программного обеспечения», провести тестирование двух приложений, используя полученные знания, изучить оcновы модульного тестирования на основе оболочки JUnit.

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

    1. 1.1 История развития тестирования программного обеспечения

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

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

В начале 1970-х тестирование программного обеспечения обозначалось как «процесс, направленный на демонстрацию корректности продукта» или как «деятельность по подтверждению правильности работы программного обеспечения». В зарождавшейся программной инженерии верификация программного обеспечения значилась как «доказательство правильности». Хотя концепция была теоретически перспективной, на практике она требовала много времени и была недостаточно всеобъемлющей. Было решено, что доказательство правильности – неэффективный метод тестирования программного обеспечения. Однако, в некоторых случаях демонстрация правильной работы используется и в наши дни, например, приемо-сдаточные испытания. Во второй половине 1970-х тестирование представлялось как выполнение программы с намерением найти ошибки, а не доказать, что она работает. Успешный тест – это тест, который обнаруживает ранее неизвестные проблемы. Данный подход прямо противоположен предыдущему. Указанные два определения представляют собой «парадокс тестирования», в основе которого лежат два противоположных утверждения: с одной стороны, тестирование позволяет убедиться, что продукт работает хорошо, а с другой – выявляет ошибки в программном обеспечении, показывая, что продукт не работает. Вторая цель тестирования является более продуктивной с точки зрения улучшения качества, так как не позволяет игнорировать недостатки программного обеспечения.

В 1980-х тестирование расширилось таким понятием, как предупреждение дефектов. Проектирование тестов – наиболее эффективный из известных методов предупреждения ошибок. В это же время стали высказываться мысли, что необходима методология тестирования, в частности, что тестирование должно включать проверки на всем протяжении цикла разработки, и это должен быть управляемый процесс. В ходе тестирования надо проверить не только собранную программу, но и требования, код, архитектуру, сами тесты. «Традиционное» тестирование, существовавшее до начала 1980-х, относилось только к скомпилированной, готовой системе (сейчас это обычно называется системное тестирование), но в дальнейшем тестировщики стали вовлекаться во все аспекты жизненного цикла разработки. Это позволяло раньше находить проблемы в требованиях и архитектуре и тем самым сокращать сроки и бюджет разработки. В середине 1980-х появились первые инструменты для автоматизированного тестирования. Предполагалось, что компьютер сможет выполнить больше тестов, чем человек, и сделает это более надежно. Поначалу эти инструменты были крайне простыми и не имели возможности написания сценариев на скриптовых языках.

В начале 1990-х в понятие «тестирование» стали включать планирование, проектирование, создание, поддержку и выполнение тестов и тестовых окружений, и это означало переход от тестирования к обеспечению качества, охватывающего весь цикл разработки программного обеспечения. В это время начинают появляться различные программные инструменты для поддержки процесса тестирования: более продвинутые среды для автоматизации с возможностью создания скриптов и генерации отчетов, системы управления тестами, программного обеспечения для проведения нагрузочного тестирования. В середине 1990-х с развитием Интернета и разработкой большого количества веб-приложений особую популярность стало получать «гибкое тестирование» (по аналогии с гибкими методологиями программирования).

В 2000-х появилось еще более широкое определение тестирования, когда в него было добавлено понятие «оптимизация бизнес-технологий» (BTO). BTO направляет развитие информационных технологий в соответствии с целями бизнеса. Основной подход заключается в оценке и максимизации значимости всех этапов жизненного цикла разработки программного обеспечения для достижения необходимого уровня качества, производительности, доступности. [Error: Reference source not found]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]