Файл: Отладка и тестирование программ: основные подходы и ограничения (Виды тестирования).pdf
Добавлен: 28.03.2023
Просмотров: 157
Скачиваний: 1
Введение
Сегодня мно гие программисты и организации заним аются прикладным и системным программи рованием и созда нием программного обеспе чения для посто янно растущих потреб ностей пользователей. Пр и этом значит ельная часть време нных и финан совых ресурсов трат ится на отла дку и тестир ование создаваемых им и приложений. Н о тем н е менее, несм отря на колосс альные затраты, коне чный продукт оче нь часто вызы вает много прете нзий у пользо вателя, и проб лема качества прод укта говорит на м о несомн енной важности проце ссов отладки и тестирования прог рамм на сегодн яшний день. Эт им обусловлена актуал ьность затрагиваемых в работе проб лем. Причем мно гие «производители» д о сих по р внятно да же не смо гут дать точ ное определение то му, что ж е все-та ки называется тестиро ванием и отла дкой. Некомпетентность в этом вопр осе является одн ой из при чин наводнения рын ка некорректным и некачественным програ ммным обеспечением (дал ее ПО).
Тестиро ванием называется проц есс, гарантирующий правил ьность функционирования прогр аммы и показы вающий отсутствие оши бок в програ ммном продукте. Мож но заметить, чт о данное опреде ление не сов сем корректно и даже неправ ильно. Человек с некоторым опы том прикладного программ ирования знает, чт о полное отсут ствие ошибок в программе выяв ить и пока зать невозможно. Бол ее правильным буд ет определить проц есс тестирования и отладки ка к – завершающий эт ап создания програ ммного продукта, кото рый заключается в выполнении прогр аммы с цел ью выявления сбо ев и оши бок программного ко да. Вместо то го, чтобы гаранти ровать отсутствие оши бок в нов ой программе, разу мней будет хо тя бы продемонс трировать их нали чие. Если прило жение корректно рабо тает при выпол нении множества разли чных тестов, эт о придает некот орую уверенность, н о еще н е гарантирует отсут ствие в не й ошибок. Эт о лишь показ ывает, что на м пока неизв естно, в как их случаях прогр амма может да ть сбой. Получ ается «парадокс тестир ования». В ег о основе леж ат два противоп оложных утверждения: с одной стор оны, тестирование позво ляет убедиться, чт о продукт рабо тает хорошо; а с дру гой — выявляет оши бки в П О, показывая, чт о продукт н е работает. Вто рая цель тестир ования является бол ее продуктивной с точки зре ния улучшения каче ства, так ка к не позво ляет игнорировать недос татки ПО.
Нереа льно внести в программу надеж ность в резул ьтате тестирования, он а определяется правиль ностью этапов проекти рования. Наилучшее Коне чно лучшим реше нием здесь буд ет - с сам ого начала н е делать оши бок в создав аемой программе. Н о стопроцентный безоши бочный результат практи чески невозможен. Во т и ро ль тестирования и отладки состоит как раз в том, чтобы определить местонахождение немногих ошибок, присутствующих в хорошо спроектированном программном продукте.
Отладка и тестирование тема очень хорошая и важная, какой бы язык программирования или платформа ни использовались. Именно на этой стадии разработчики сталкиваются со многими трудностями.
Ошибки в программах — это отличная практика. Они помогают нам узнать, как все это работает. Поиск багов и выявление ошибок дает нам ни с чем несравнимый опыт. Этим подтверждается практическая значимость выбранной темы. Разработчику следует найти их до того, как заказчик увидит результат вашей работы. А вот если ошибки в ваших программах находят заказчики, это совсем плохо.
Данная курсовая работа состоит из двух глав и приложений. В первой главе необходимо будет определить, что такое тестирование и отладка программ, что представляет собой сам процесс, какие приемы и способы существуют. Будут даны общие рекомендации по отладке приложений. Кроме этого речь пойдет о различных видах ошибок и способах их выявления. Во второй главе необходимо будет коснуться многих практических моментов на этапах отладки, на примере среды разработки приложений Delphi.
1. Сущность тестирования и отладки. Методика выявления ошибок
1.1 Тестирование и его виды
В пер вую очередь необх одимо внести ясно сть – в че м же разн ица между тестиро ванием и отла дкой программы. Эт и термины н е всегда озна чают одно и то ж е, пусть да же большая час ть программистов воспри нимают их н е как отдел ьные этапы разра ботки приложений. Важ но разделять проц есс тестирования и процесс отла дки на дв а различных эта па работы на д программой. Тестир ование ставит зад ачу определения нали чия ошибок, в то вре мя как отла дка служит дл я определения местопо ложения найденных оши бок и и х устранения. Ес ли цели эт их двух эта пов разработки прог рамм различны, т о используются соответ ственно и разли чные методика и инструментарий. Важ нее всего пр и разработке и проектировании прогр аммы придерживаться некот орых правил и принципов защ иты от оши бок. Для это го существуют некот орые проверенные спос обы, но о них поз же, а по ка немного исто рии.
Самые пер вые программные прод укты начали разраба тывать в рам ках программ науч ных исследований минист ерств обороны. Тестир ование подобных сис тем проводилось стр ого формализовано с записью вс ех тестовых проц едур, тестовых дан ных, полученных резуль татов. Тестирование бы ло выделено в самостоятельный проц есс, который им ел место пос ле завершения кодиро вания, и произво дилось все, обы чно, тем ж е персоналом.
В 60-е начали уделять большое внимание «исчерпывающему» тестированию, которое проводилось с применением всех путей в коде или всех возможных входных данных. В этих условиях полное тестирование ПО невозможно из-за слишком большого количества возможных входных данных, существующего множество путей, а также сложности в нахождении проблемы в архитектуре и спецификациях. Именно по этим причинам «исчерпывающее» тестирование было признано невозможным и впоследствии отклонено.
В 70-е годы тестирование программное обеспечение обозначалось как «деятельность по подтверждению правильности работы ПО». В зарождавшейся программной инженерии верификация программное обеспечение обозначалась как «доказательство правильности». Данная концепция в целом была перспективна, но в работе она требовала много времени и не была комплексной. Комплексное тестирование – это контроль и испытание системы по отношению к исходным целям. Было принято решение, что доказывать правильность — неэффективно, разве что только - приемо-сдаточные испытания (поиск возможных ошибок, выполняя приложение в заданной реальной среде). Далее тестирование стало представляться, как выполнение программы с целью обнаружить ошибки, а не только продемонстрировать, что программа работает. Уже в 80-е годы тестирование было дополнено таким понятием, как предупреждение ошибок. Одним из наиболее эффективных методов предупреждения ошибок является – проектирование тестов. Тогда и осознали необходимость методологии тестирования, а именно, что тестирование программы необходимо осуществлять на всем протяжении цикла разработки, и процесс этот должен быть управляемым. При этом проверяется не только спроектированная сборка программ, но и их код, архитектура, спецификации, а также и сами тесты. Все это позволит выявить проблемы в требованиях и архитектуре и тем самым значительно снизить сроки и средства на разработку приложений. Позднее начали появляться первые инструменты для автоматизации процесса тестирования. Поскольку ЭВМ более надежна и способна выполнить больше тестов. Со временем простейшие методы усложнялись и стали использоваться скриптовые сценарии для автоматизированного тестирования.
В 90-е годы тестир ование программ дополн илось проектированием, планиро ванием, созданием и поддержкой тест овых систем. Эт о начался пере ход на качест венно новый уров ень на вс ем цикле разра ботки. Появляются разли чные программные инстру менты поддержки проц есса тестирования: усовершенс твованные автоматизированные сре ды с возмож ностью написания скрип товых сценариев и автоматического созд ания отчетов. Кро ме этого начи нают широко использ оваться системы управ ления тестами и приложения дл я проведения нагруз очного тестирования. Пос ле, с разви тием Интернет-техно логий, и созда нием множества ве б-приложений оче нь популярным ста ло «гибкое тестир ование».
В 2000-е годы появи лось еще бол ее широкое опреде ление тестирования, ког да в не го было добав лено понятие «оптими зация бизнес-техно логий» (BTO). BTO направляет разв итие информационных техно логий в соотве тствии с цел ями бизнеса. Осно вной подход заключ ается в оце нке и максим изации значимости вс ех этапов жизне нного цикла разра ботки для дости жения необходимого уро вня качества, производи тельности, доступности.[[1]]
1.2 Виды тестирования
В зависимости о т преследуемых цел ей, основные ви ды тестирования прог рамм, можно усло вно разделить н а три гру ппы:
Функциональные
Нефункци ональные
Связанные с изменениями
Функцио нальные виды тестир ования базируются н а функционале и особенностях сис тем, а так же взаимодействии с другими систе мами, и мог ут быть предст авлены на вс ех уровнях тестир ования: модульном, интегра ционном, системном, и приемочном.
Модул ьное тестирование – эт о контроль отдел ьного программного мод уля, обычно в изолированной сре де.
Интеграционное тестир ование – когда отдел ьные программные мод ули объединяются и тестируются в группе.
Систе мное тестирование - тестир ование программ, выполн яемое на пол ной, интегрированной сист еме с цел ью проверки соотве тствия системы исхо дным требованиям.
Прием очное тестирование - способ проверки и контроля за тем, чтобы работа приложения отвечала функциональным, нефункциональным и другим важным требованиям.[[2]]
Все эти виды тестирования рассматривают внешнее поведение системы и подразделяются на три подвида: 1) функциональное тестирование;
2) тестирование безопасности; 3) тестирование взаимодействия.[[3]]
Функциональное тестирование рассматривает заранее указанное поведение и основывается на анализе спецификаций функциональности компонента или системы в целом. Эти тесты описываются в спецификациях и основываются на функциях, выполняемых системой, и могут проводиться на всех уровнях тестирования.
Преимуществом функционального тестирования является имитация фактического использования программы, а к недостаткам можно отнести возможность упущения логических ошибок в продукте и возможную вероятность избыточного тестирования. Широко используется и автоматизация функционального тестирования.
Тестирование безопасности - это способ тестирования, используемый для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
Стратегия безопасности включает соответствие трем принципам: конфиденциальность, целостность и доступность.
Существует огро мное множество вид ов атак и уязвимостей. Пос ле проведения полн ого цикла тестир ования безопасности, ник то не мож ет быть н а 100% уверенным, чт о система п о-настоящему наде жна в пла не безопасности. Н о проводить тестир ование безопасности необх одимо, хотя б ы для то го, чтобы значит ельно сократить вероят ность несанкционированных проникн овений, хищений инфор мации и утр аты важных дан ных.
Тестирование взаимод ействия можно косв енно отнести к функциональному тестир ованию, проверяющему способ ность приложения взаимодей ствовать с одн им и бол ее компонентами. Сю да входит тестир ование совместимости и интеграционное тестир ование. Программа, хор ошо взаимодействующая с другими компон ентами и програ ммами, может лег ко интегрироваться в другие сист емы, без осо бой потребности в дальнейших модифи кациях. При эт ом количество измен ений и вре мя, затрачиваемое н а их выпол нение, реально исполь зовать для измер ения возможности взаимод ействия.