Файл: Основы алгоритмизации и программирования.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.06.2023

Просмотров: 84

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

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

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

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

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

1.1. Принципы тестирование и отладка программного обеспечения

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


В различных источниках, тестированию давались разные определения, в том числе:

  • процесс выполнения программы с целью нахождения ошибок;
  • интеллектуальная дисциплина, имеющая целью получение надежного программного обеспечения без излишних усилий на его проверку;
  • техническое исследование программы для получения информации о её качестве с точки зрения определенного круга заинтересованных лиц;
  • проверка соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выполненных определенным образом;
  • процесс наблюдения за выполнением программы в специальных условиях и вынесения на этой основе оценки каких-либо аспектов её работы;
  • процесс, имеющий целью выявление ситуаций, в которых поведение программы является неправильным, нежелательным или не соответствующим спецификации;
  • процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и для определения дефектов;

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

Второй тип: динамический – предполагает непосредственный запуск программы, для проведения анализа поведения во время работы. Для выполнения динамического тестирования необходимо, чтобы код был записан, скомпилирован и запущен. Статическое и динамическое тестирование прекрасно дополняют друг друга при выявлении дефектов.

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


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

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

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

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

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

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


Часто руководителям групп тестирования приходится разрабатывать документы более высокого уровня, описывающие общие подходы и этапы развития реализуемого проекта. Стратегия тестирования – это план работы, учитывающий специфику функциональности, определяет типы тестов, описание необходимых подходов, разберем следующие подходы более подробно:

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

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

Определить критерии входа и выхода для каждой стадии тестирования, равно как и все точки контроля качества, для чего потребуется участие специалистов по тестированию.

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

Отдельные модули тестирования можно разделить на следующие пункты:

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

Исключить абсолютно все ошибки невозможно. Если переусердствовать в тестировании, то для отладки может потребоваться повышенное количество сил, что воспрепятствует указанной сдачи. Но также если внимание к тестам окажется недостаточным, то есть риск получить куда больше проблем, особенно после сдачи проекта в эксплуатацию.

Вот несколько предложений по разработке стратегии тестирования, которые помогут в поиске оптимального тестового покрытия:

Тестировать в первую очередь требования с наивысшим приоритетом.

Использовать разбиение на эквивалентные классы и анализ граничных значений для снижения трудозатрат на тестирование

Тестировать те участки, в которых наиболее вероятно присутствие проблем

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

1.3. Определение подхода к тестированию

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

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

  • Стадия формулирования требований
  • Стадия системного проектирования
  • Стадии тестирования проектов программ, программных кодов, модульного тестирования и комплексных испытаний
  • Системные испытания
  • Приемочные испытания
  • Регрессионное тестирование

Подход к тестированию должен отражаться в документах, содержащих планы проведения испытаний. Определение критериев тестирования и точек контроля качества. Существует несколько типов критериев, которые могут определяться перед началом системного тестирования:

  • Критерий входа. Описывает, что нужно сделать перед началом тестирования.
  • Критерий выхода. Описывает то, что вы считается необходимым для завершения испытаний.
  • Критерий приостановки/возобновления. Описывает, что произойдет, если по причине из-за дефектов продолжение тестирования окажется невозможным.
  • Критерий успешного/неудачного прохождения теста. Прогон каждого теста должен давать заранее известные результаты.
  • Другие критерии, определяемые процессом или стандартами.