Файл: ОТЛАДКА И ТЕСТИРОВАНИЕ ПРОГРАММ:ОСНОВНЫЕ ПОДХОДЫ И ОГРАНИЧЕНИЯ.pdf
Добавлен: 30.06.2023
Просмотров: 139
Скачиваний: 3
СОДЕРЖАНИЕ
1. Сущность тестирования и отладки.
1.1 Описание процесса тестирования и его истории.
1.2 Тестирование программного обеспечения и его цели .
1.3 Виды и направления тестирования.
1.4 Сущность и методика отладки программ. Виды ошибок
2. Практика отладки python приложений.
2.1 Два важных инструмента в процессе тестирования.
2.2 Применение точек остановки и модификация локальных переменных
Введение
В современной жизни большое программирование уже стало уделом не только опытных програмистов, но и людей может быть только начаниющих осваивать этот тернистый путь, благодаря современным высокоуровневым языкам программирования порог вхождения в область программирования стал заметно снижатся.Но даже легкость освоения и строгость синтаксиса вместе с большим количеством документации не спасают ни одну программу от наличия ошибок, и стоит подметить ошибки возникают в каждой программе – вне зависимости от квалификации программиста.В связи с этим на отладку и тестирование программного обеспечения чаще всего тратится времени даже больше чем на непосредственно саму разработку приложений.Но даже в таком случае часто остаются ошибки которые вызывают большое негативных эмоций пользователей программного обеспечения, из этого можно сделать вывод что качество отладки и тестирования имеют прямое влияние на качество разрабатываемого продукта. Именно поэтому вопросы которые будут рассматриваться в данной работе актуальны и по сей день.Нужно отметить что недостаток знаний в области отладки и тестирования программоного обеспечения является причиной из за которой рынок наполнен программным обеспечением весьма сомнительного качества и имеющего большое количество ошибок.
Процесс тестированием программного обеспечения подразумевает под собой проверку правильности работы программы и отсутвие в ней ошибок,но стоит подметить что этот путь не совсем верен.Любой программист который имеет опыт в области написания программного обеспечения знает что невозможно обеспечить полное отсутвие ошибок в написанном продукте, и более верно обозначить этап отладки и тестирования приложения завершающим шагом в процессе создания программного продукта. Получается что более логичным и правильным шагом является это отладка и тестирование с целью выявления ошибок а не с тем чтобы показать их отсутвие.Но даже факт прохождения приложением различных тестов не гарантирует 100% отсутвия ошибок ,а дает всего лишь небольшое количество уверенности и знание того что неизвестно в какой момент приложение может выдать ошибку. Но даже такие результаты очень важны ведь проведение разносторонних тестов позволяет выявлять недостатки программного обеспечения и оперативно решать проблемы которые связанны с работой этих приложений.
Но стоит заметить что надежность программного продукта определяется на этапе проектирования а не на этапе тестирования.Было бы лучше всего просто не совершать ошибки в создаваемой программе, но гарантировать полное отсутсвие ошибок в написанном программном обеспечении практически невозможно.Но именно для этого и нужен процесс отладки и тестирования приложений – для определения ошибок, которые могут возникнуть даже в отлично спроектированной программе.
Стоит сделать вывод что отладка и тестирование очень важный и нужный процесс который,вне зависимости от платформы или языка программирования, помимо очевидных плюсов дает отличную практику в момент выявления ошибок .Процесс отладки и тестирования позволяет более глубоко понять принципы работы программного обеспечения и предоставить разработчику очень важный опыт в тестировании .
Эта курсовая работа стостоит из введения, трех глав, заключения и приложений.Содержимое и второй первой главы будет состоять из описания процесса тестирования приложений и методов их отладки.Так же в этой главе будут присутствовать общие рекомендации по процессу отладки.Так же будут описаны различные виды ошибок и методы их выявления. Третья глава будет содержать практическую часть по проведению тестирования и отладки на примере использования интегрированной среды разработки приложений языка Python – Pycharm .
1. Сущность тестирования и отладки.
1.1 Описание процесса тестирования и его истории.
Для того чтобы лучше понимать суть вопроса нужно сначала разобратся что же такое тестирование ПО и какая у данного процесса история.
На протяжении десятилетий развития разработки ПО к вопросам тестирования и обеспечения качества подходили очень и очень по-разному. Можно выделить несколько основных «эпох тестирования».
В 50–60-х годах прошлого века процесс тестирования был предельно формализован, отделён от процесса непосредственной разработки ПО и «математизирован». Фактически тестирование представляло собой скорее отладку программ. Существовала концепция т.н. «исчерпывающего тестирования — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпываю-щее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации.
В 70х годах фактически родились две фундаментальные идеи тестирования: тестирование сначала рассматривалось как процесс доказательства работоспособности программы в некоторых заданных условиях, а затем — строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях. Это внутреннее противоречие не только не исчезло со временем, но и в наши дни многими авторами совершенно справедливо отмечается как две взаимодополняющие цели тестирования.
Отметим, что «процесс доказательства неработоспособности про-граммы» ценится чуть больше, т.к. не позволяет закрывать глаза на обнаруженные проблемы.
Итак, ещё раз самое важное, что тестирование «приобрело» в 70-е годы:
тестирование позволяет удостовериться, что программа соответствует требованиям;
тестирование позволяет определить условия, при которых программа ведёт себя некорректно.
В 80-х годах произошло ключевое изменение места тестирования в разработке ПО: вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки, что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвращать их появление.
В этот же период времени отмечено бурное развитие и формализация мето-дологий тестирования и появление первых элементарных попыток автоматизиро-вать тестирование.
В 90-х годах произошёл переход от тестирования как такового к более все-объемлющему процессу, который называется «обеспечение качества», охватывает весь цикл разработки ПО и затрагивает процессы планирования, проектирования, создания и выполнения тест-кейсов, поддержку имеющихся тест-кейсов и тестовых окружений. Тестирование вышло на качественно новый уровень, который естественным образом привёл к дальнейшему развитию методологий, появлению достаточно мощных инструментов управления процессом тестирования и инструментальных средств автоматизации тестирования, уже вполне похожих на своих нынешних потомков.
В нулевые годы нынешнего века развитие тестирования продолжалось в контексте поиска всё новых и новых путей, методологий, техник и подходов к обес-печению качества. Серьёзное влияние на понимание тестирования оказало появ-ление гибких методологий разработки и таких подходов, как «разработка под управ-лением тестированием9 (test-driven development10, TDD)». Автоматизация тестирования уже воспринималась как обычная неотъемлемая часть большинства проек-тов, а также стали популярны идеи о том, что во главу процесса тестирования сле-дует ставить не соответствие программы требованиям, а её способность предоста-вить конечному пользователю возможность эффективно решать свои задачи.[1]
1.2 Тестирование программного обеспечения и его цели .
Прежде чем приступить к обсуждению процесса разработки программного обеспечения, дадим определения ряда основных терминов и понятий. По логике вещей лучше всего начать с определения, что собой представляет тестирование программного обеспечения. Тестирование программного обеспечения (software testing)— это процесс анализа или эксплуатации программного обеспечения с целью выявления дефектов. Несмотря на всю простоту этого определения, в нем содержатся пункты, которые требуют дальнейших пояснений. Слово процесс (process) используется для того, чтобы подчеркнуть, что тестирование суть плановая, упорядоченная деятельность. Этот момент очень важен, если мы заинтересованы в быстрой разработке, ибо хорошо продуманный, систематический подход быстрее приводит к обнаружению программных ошибок, чем плохо спланированное тестирование, к тому же проводимое в спешке. Согласно этому определению, тестирование предусматривает "анализ" или "эксплуатацию" программного продукта. Тестовая деятельность, связанная с анализом результатов разработки программного обеспечения, называется статическим тестированием (static testing). Статическое тестирование предусматривает проверку программных кодов, сквозной контроль и проверку программы без запуска па машине, т.е. проверку за столом (desk checks). В отличие от этого, тестовая деятельность, предусматривающая эксплуатацию программного продукта, носит название динамического тестирования (dynamic testing). Статическое и динамическое тестирование дополняют друг друга, и каждый из этих типов тестирования реализует собственный подход к выявлению ошибок. Последний пункт определения, требующий дополнительных пояснений — это понятие дефекта (bug). Говоря простыми словами, программная ошибка— ни что иное, как изъян в разработке программного продукта, который вызывает несоответствие ожидаемых результатов выполнения программного продукта и фактически полученных результатов. Дефект может возникнуть на стадии кодирования, на стадии формулирования требований или на стадии проектирования, либо же его причина может крыться в некорректной конфигурации или данных. Дефектом может быть также что-то другое, что не соответствует ожиданиям заказчика и что может быть, а может и не быть определено в спецификации программного продукта.
Тестирование программного обеспечения — проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. В более широком смысле, тестирование — это одна из техник контроля качества, включающая в себя активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).
Цели тестирования:
- Повысить вероятность того, что приложение, предназначенное для тестирования, будет работать правильно при любых обстоятельствах.
- Повысить вероятность того, что приложение, предназначенное для тестирования, будет соответствовать всем описанным требованиям.
- Предоставление актуальной информации о состоянии продукта на данный момент.
1.3 Виды и направления тестирования.
Классификацию процесса тестирования, возможно, производить по обширному количеству признаков, и в большинстве серьёзных книг о тестировании программного обеспечения автор пытается освятить свой взгляд на данный вопрос. Но проблема в том, что материал, который связан с классификацией, достаточно сложен и велик, а для достижения истинного понимания каждого из пунктов в классификации требует от читателя наличие определённого опыта. Именно поэтому стоит описать упрощённую классификацию тестирования.
Итак, тестирование можно классифицировать:
- По запуску кода на исполнение:
-
- Статическое тестирование — без запуска.
- Динамическое тестирование — с запуском.
-
- По доступу к коду и архитектуре приложения:
-
- Метод белого ящика — доступ к коду есть
- Метод чёрного ящика — доступа к коду нет
- Метод серого ящика — к части кода доступ есть, к части — нет
-
- По степени автоматизации:
-
- Ручное тестирование — тест кейсы выполняет человек.
- Автоматизированное тестирование — тест кейсы частично или полностью выполняет специальное инструментальное средство.
-
- По уровню детализации приложения (по уровню тестирования):
-
- Модульное (компонентное) тестирование — проверяются отдельные небольшие части приложения
- Интеграционное тестирование — проверяется взаимодействие между несколькими частями приложения.
- Системное тестирование — приложение проверяется как единое целое.
-
- По (убыванию) степени важности тестируемых функций (по уровню функционального тестирования):
-
- Дымовое тестирование — проверка самой важной, самой ключевой функциональности, неработоспособность которой делает бессмысленной саму идею использования приложения.
- Тестирование критического пути — проверка функциональности, используемой типичными пользователями в типичной повседневной деятельности.
- Расширенное тестирование — проверка всей (остальной) функциональности, заявленной в требованиях.
- По принципам работы с приложением:
- Позитивное тестирование — все действия с приложением выполняются строго по инструкции без недопустимых действий, некорректных данных и т.д. Можно образно сказать, что приложение исследуется в «тепличных условиях».
- Негативное тестирование — в работе с приложением выполняются (некорректные) операции и используются данные, потенциально приводящие к ошибкам (классика жанра — деление на ноль).[2]
-