Курсовая с практикой на тему 4. Основные понятия и принципы тестирования
-
Оформление работы
-
Список литературы по ГОСТу
-
Соответствие методическим рекомендациям
-
И еще 16 требований ГОСТа,которые мы проверили
Введи почту и скачай архив со всеми файлами
Ссылку для скачивания пришлем
на указанный адрес электронной почты
Содержание:
ВВЕДЕНИЕ.. 3
1. КРАТКИЙ АНАЛИЗ ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ И СТАНДАРТОВ.. 6
2. ОПИСАНИЕ ОТДЕЛЬНЫХ ПОДХОДОВ.. 10
3. ПРИМЕР РЕАЛИЗАЦИИ ПРОЦЕССА ТЕСТИРОВАНИЯ НА КОНРЕТНОЙ
ЗАДАЧЕ 14
3.1 Структурное тестирование. 15
3.2 Функциональное тестирование. 19
ВЫВОДЫ… 30
СПИСОК ЛИТЕРАТУРЫ… 31
ПРИЛОЖЕНИЯ.. 33
Приложение А. Листинги кода тестируемого примера. 33
Введение:
Проектирование и разработка программного обеспечения, с
точки зрения научного, теоретического подхода, считаются достаточно молодыми
сферами деятельности. Однако, сегодня это одно из направлений, которое имеет
самую высокую динамику развития. Индустрия программного обеспечения в настоящее
время рассматривается как существенный фактор экономического роста во многих
странах. Софтверные компании, стремящиеся совершенных результатов в жесткой
конкурентной борьбе за пользователя, часто сталкиваются со сложными проблемами
производства высококачественных продуктов. Разработаны специальные стандарты и
требования, регламентирующие понятие качества ПО. Стандарт ISO-8402 [2],
посвященный описанию систем и обеспечения качества программного обеспечения,
под качеством понимает «совокупность характеристик программного продукта,
обеспечивают его способность удовлетворять установленные и предполагаемые
потребности клиента». С другой стороны существует ряд стандартов [4,5,6],
определяющие структуру ЖЦ и правила разработки ПО. Но проблема заключается в
том, что следование стандартам не гарантирует успеха программному продукту,
доказательством этому можно привести ряд программ, разработанных абсолютно без
следования стандартами, часто даже непрофессиональными разработчиками, которые,
при этом, имеют большую популярность и широкий круг пользователей (примером
могут служить приложения с AndroidПлейМаркет). Основным фактором популярности и
качества программного продукта является предвидение требований пользователей и
удачное сочетание функциональности и простоты использования.
Одним из сложных этапов в жизненном цикле программного
обеспечения, как и раньше, остается этап тестирования.
Возникновение новых идей и расширение сектора задач
программной инженерии требует развития сопутствующих технологий. Множество
подходов к реализации программных продуктов, вариативность типов ПО сегодня
несколько расширилась, что предложить формальный подход, универсальный для
любого продукта невозможно: ни с точки зрения эффективности процесса, ни с
точки зрения затрат времени и средств, а в некоторых случаях, даже с
технической точки зрения.
Основной проблемой тестирования является невозможность
процесса с абсолютным результатом. Хотя в теории тестирования рассматривается
метод полного «абсолютного» тестирование, но на практике данный метод применить
невозможно.
Еще в 1979 г.. Майерс (Myers) [8] описал определенный
несложный алгоритм, который содержал только один цикл и несколько операторов
ветвления, для кодирования данного алгоритма в большинстве популярных языков
программирования понадобилось бы не более 20 строк кода. Но данная программа по
исследованиям автора имеет более 100000000000000 путей выполнения.
Полное тестирование невозможно практически воплотить по
ряду причин:
1) Даже для простой задачи количество всех допустимых
входных параметров очень велико.
2) Тестирование с использованием только допустимых
параметров не является абсолютным, поскольку другой составляющей является
недопустимые параметры, множество которых бесконечно.
3) Проверка программы с использованием большого
количества однотипных наборов неуместна с точки зрения времени и затрат труда,
и при этом не гарантирует абсолютного результата.
Последний пункт говорит о том, что гораздо более
эффективным может оказаться проведение 2-3 коротких, но удачно выбранных серий
тестов, чем попытки покрыть все возможные варианты входных параметров.
Процесс тестирования все больше приобретает эвристический
характер и требует комплексных взвешенных творческих подходов. Недаром
публикации на эту тему часто рассматривают вопросы психологии, философии,
методов творческого поиска и другие направления, на первый взгляд кажутся
достаточно удаленными от программирования и программной инженерии. При
проектировании тестов программного продукта перед специалистом стоит задача
выбора из большого количества наработанных методов, в данной ситуации главная
задача тестировщика ‑ выбрать наиболее удачный набор тестов, который может быть
реализован за реальное временя, и, при этом, будет иметь максимальный эффект.
Но даже при наиболее удачном выборе и правильной реализации не существует
никаких гарантий, что все ошибки будут найдены [1]. Учитывая выше сказанное,
основная цель максимально повысить уровень эффективности процесса.
Объектом
исследования в данной работе выступает «тестирование», как неотъемлемый этап в
ходе реализации программного продукта.
Предметом
исследования являются классические подходы и методы, предложенные для
тестирования программных продуктов.
Цель работы ‑
проанализировать современное состояние и подходы в тестировании программ.
Выявить особенности подходов и методов, осуществить их частичную классификацию.
Выяснить зависимость выбора метода от задачи и условий тестирования.
Задачи
курсовой работы:
‑ краткий обзорный анализ литературных источников и
стандартов связанных с процессом разработки и тестирования программ;
‑ описание классических подходов в тестировании;
‑ иллюстрация рассмотренных подходов на примере простой
программы.
Заключение:
С ростом важности информационных технологий в жизни
общества возрастает цена ошибок в программах. В этих условиях на первый план
выходят технологии и методы тестирования ПО, которые позволяют своевременно
выявить и исправить эти ошибки. Качественные программные продукты формируют
репутацию и конкурентный уровень разработчика ПО, требования к качеству
обусловливают важность тестирования, это поможет не только отстоять свои
позиции на рынке, но и завоевать новые.
С помощью правильно выбранного подхода и набора тестов
можно существенно сократить время тестирования и получить положительный эффект.
В связи с большим разнообразием типов программ, платформ, внутренней
архитектуры, начальных требований, специфики использования и ряда других
критериев сегодня невозможно предложить универсального набора тестов, который
должен был эффект для любого случая. Реализация масштабных проектов требует
выработки, исследования и совершенствования подходов передпроектного
тестирования подходы проверки продукта на ранних этапах проектирования и
реализации.
Фрагмент текста работы:
1. КРАТКИЙ АНАЛИЗ ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ И
СТАНДАРТОВ Тестирование в широком смысле, фактически, представляет
собой процесс проверки качества продукта, его соответствия заранее заданным
требованиям или критериям. Но результат достигается обратным процессом —
проверка осуществляется через поиск несоответствия, выявления проблемных,
ошибочных элементов составляющих программы.
Карл Поупер, в своей известной работе по философии науки,
изданной в 1965, утверждает ‑ правильный подход к проверке научной теории
заключается в поиске не подтверждающих факторов, а наоборот — факторов,
опровергающих теорию … И чем более тщательное тестирование выдерживает
теория, тем больше уверенности в том, что теория верна.
Публикаций и исследований в области тестирования
наработано достаточно много. Исторически процесс тестирования рассматривался
как отдельная стадия жизненного цикла ПО (с конкретно определенным местом этого
процесса в общей цепи) и имел максимально формализованный подход. Со временем,
подходы развивались и даже менялись трактовки самого процесса.
Эволюцию, по пути описанном Поупером, прошла и теория
тестирования ПО, в 70-х годах фактически родились две фундаментальные идеи
тестирования: тестирование сначала рассматривался как процесс доказательства
работоспособности программы в некоторых заданных условиях (positive testing), а
затем строго наоборот: как процесс доказательства нетрудоспособности программы
в некоторых заданных условиях (negative testing).
В разное время под термином «тестирование» подразумевали
различные действия и процессы.
1980 — «Процесс выполнения программы с целью найти
ошибки.» [8]
1987 — «Процесс наблюдения за выполнением программы в
специальных условиях и вынесения на основе этого процесса оценки определенных
ее аспектов.»[4]
1990 — «Это не действие. Это интеллектуальная дисциплина,
имеющая целью получить надежное программное обеспечение без лишних усилий на
его проверку. » [11]
1999 — «Техническое исследование программы для получения
информации о качестве с точки зрения определенного круга заинтересованных лиц.»
[1]
2004 — «Проверка соответствия между реальным поведением
программы и ее ожидаемой поведением на конечном наборе тестов, выбранном
определенным образом.»[7]
Может показаться, что с 1980-го по 2004 теория
тестирования эволюционировала настолько, что суть теории в определенном смысле
даже изменилась. Ситуация объясняется не столько изменением сути теории и ее
основных задач, сколько изменением подходов и методов. Именно изменение методов
влияет на точку зрения авторов, а соответственно и на общее трактовка процесса.
До начала
80-х годов процесс тестирования ПО был разделен с процессом разработки: вначале
программисты реализовывали заданную функциональность, а затем тестировщики
приступали к проверке качества созданных программ. Однако такой подход создает
множество проблем. Например, разработка программ может оказаться достаточно
длительной (скажем, несколько месяцев) — чем в это время должны заниматься
тестировщики?
Другая, более
серьезная проблема заключается в плохой предсказуемости результатов такого
процесса разработки. Ключевой вопрос таков: сколько времени потребуется на
завершение продукта, в котором существует 500 известных ошибок? На самом деле,
предугадать это совершенно невозможно, так как разные ошибки будут требовать
разного времени на исправление, а исправление известных ошибок будет неизбежно
связано с внесением новых. Существует следующая мрачная статистика: даже
однострочное изменение в программе с вероятностью 55% либо не исправляет старую
ошибку, либо вносит новую. Если же учитывать изменения любого объема, то в
среднем менее 20% изменений корректны с первого раза!
В связи с
этим в 90-х годах появилась другая методика разработки, которую вслед за
Microsoft’ом будем называть zero-defect mindset. Основная идея этой
методики заключается в том, что качество программ проверяется не post factum, а постоянно в процессе
разработки. Например, программист не может перейти к разработке новой
функциональности, если существуют известные ошибки высокого приоритета в
частях, разработанных им ранее.
При
такой постановке вопроса тестирование становится центральной частью любого
процесса разработки программ. С другой стороны, zero-defect mindset предъявляет существенно более высокие
требования к квалификации инженера тестирования: теперь в сферу его
ответственности попадает не только функциональное тестирование, но и
организация процесса разработки (процесс ежедневной сборки, участие в
инспекциях, сквозных просмотрах и обычное чтение исходных текстов тестируемых
программ). Поэтому идеальной кандидатурой на позицию тестировщика становится
наиболее опытный программист в команде, закаленный в многочисленных боях
ветеран, которому, возможно уже надоело кропать обычный код в (n+1)-ом проекте.
За последние десятилетия предложен ряд новых идей и
выработаны новые методики. Необходимо заметить ‑ новые методики расширили
арсенал тестировщика, но не вытеснили полностью и классических методов,
предложенных еще в 50-60-х годах. В частности Майер в своей работе замечает —
«… другие технологии верификации, такие как статический анализ, проверка на
модели и испытания, обладают огромным потенциалом,