Файл: Отладка и тестирование программ: основные подходы и ограничения (Определение основных понятий тестирования программных систем).pdf

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

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

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

Добавлен: 01.04.2023

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

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

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

Введение

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

Известно, что при создании типичного программного проекта около 50% общего времени и более 50% общей стоимости расходуется на тестирование разрабатываемой программы или системы. Любой программист может похвастать хорошо написанным кодом, модулем, классом, но, как правило, он практически ничего не может сказать, насколько полно протестирован этот код. Многие готовы ругать других разработчиков, указывая на их ошибки, сбои их программного обеспечения, забывая об своих. За последние годы технологии создания программного обеспечения (ПО) стали основой различных разделов компьютерных наук как средство преодоления сложности, присущей программным системам. Но ни одна из известных технологий не способна в корне изменить печального факта – ошибки в программе встречаются всегда. Мы находим их с помощью тестирования, а устраняем их с помощью отладки. Начинающие программисты не умеют этого делать, опытные программисты – умеют, но ошибки делают все без исключений. Как ни трудно с этим смириться, но хорошие программисты знают, что основное время при программировании будет потрачен на тестирование и отладка.

Объект исследования: отладка и тестирование программ.

Предмет исследования: основные методы, применяемые для тестирования и отладки программ.

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

Для осуществления поставленной цели необходимо решить задачи:

- рассмотреть определение основных понятий тестирования программных систем;


- описать отладку программ;

- проанализировать основные подходы и ограничения при тестировании программ;

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

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

1.1. Определение основных понятий тестирования программных систем

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

В этот процесс входит выполнение программы с целью нахождения ошибок [1].

Термин testing (тестирование) широко используется в научной литературе, но определяется по-разному.

Стандарт ANSI/IEEE Std. 610.12 определяет термин testing в самом его широком смысле – как любую деятельность с анализа программы (статическое и динамическое тестирование) [2].

В исследовании Гленфода Дж. Майерса этот термин толкуется в более узком смысле: "тестирование – это процесс выполнения программы (или ее части) с целью выявления ошибок. Отладка (debugging) – определение точной причины известных ошибок и их исправления" [3, с. 12].

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

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


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

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

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

Тестирование можем назвать процессом также и итерационным. После выявления и исправления каждой ошибки обязательно следует повторить тесты, чтобы убедиться в работоспособности программы. Более того, для идентификации причины выявленной проблемы может потребоваться проведение специального дополнительного тестирования. При этом нужно всегда помнить о фундаментальном выводе, сделанный пионером информатики, профессором Едсжером В. Дейкстри: "Тестирование программ может служить доказательством наличия ошибок, но никогда не докажет их отсутствия!"[4, с. 62].

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

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


Основной целью валидации является исследование совокупности рабочих продуктов, полученных на определенном этапе процесса разработки. Нужно убедиться в том, что они разработаны правильно, то есть соответствуют назначению и спецификации первоначальным требованиям к программному продукту. Процессы верификации и валидации взаимосвязаны и обычно определяются одним термином «верификация и валидация», которому соответствует термин «Verification and Validation» (V&V), используется в иностранной литературе.

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

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

В частности, стандарт ANSI/IEEE-729-83 [2] дает два определения понятия отказа (failure):

1) отказ – это невозможность вычислительной системы или ее компонента выполнять требуемые функции в пределах специфицированных ограничений;

2) отказ – это отклонение программы от функционирования, определенного требованиями к программе.

Объединяя вышеприведенные определения, термин "отказ в программной системе" в исследовании употребляется в следующем значении: Отказ программной системы (failure) – это событие, которое заключается в переходе программной системы из работоспособного состояния в неработоспособное или получении результатов за пределами допустимых значений. Отказы могут быть обусловлены как внешними факторами (отказами элементов среды эксплуатации, в том числе пользователя системы), так и внутренними факторами – дефектами в программной системе [5].

Дефект (fault) в программной системе – это запись элемента программы (кода) или текста документа (рабочего продукта), использование которых может привести к событию, которое заключается в неверной интерпретации этого элемента компьютером (ошибке (fault) в программе) или человеком (ошибке (error) исполнителя). Дефект всегда является следствием ошибок разработчика на любом из процессов разработки программного продукта. Дефекты могут иметь спецификации требований, первоначальные или проектные спецификации, тексты кода, эксплуатационную документацию и тому подобное. Ошибка также бывает следствием недостатков в одном из процессов разработки программной системы, что приводит к неправильной интерпретации исходной информации человеком и принятия неправильных решений [5].


Во время тестирования программной системы и при обнаружении отклонения результатов от ожидаемых – такое отклонение фиксируют как “проблему” до выяснения ее причин. Процесс тестирования проходит в динамической проверке поведения программы на конечном множестве тестовых данных, специальным образом выбранных из бесконечного входного пространства, на соответствие установленной ожидаемому поведению [5].

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

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

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

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

Состав и содержание документации, сопутствующей процессу тестирования, определяется стандартом IEEE 829-1998 Standard for Software Test Documentation.

1.2 Отладка программ

Исторически первым разновидностью тестирования было отладка программы – проверка программного объекта на наличие в нем ошибок для их устранения. При этом могут вноситься новые ошибки.

Отладка — это один из самых сложных этапов технологического процесса разработки программ. На отладку приходится около 50 % трудоемкости из общих затрат на создание комплексов программ.

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

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