Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Тестирование




ПРОГРАММНЫЕ ОШИБКИ

ТЕСТИРОВАНИЕ, ОТЛАДКА И ОПТИМИЗАЦИЯ ПРОГРАММ

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

Входные данные 1%

Ошибки пользователя 5%

Аппаратура 1%

Системное программное обеспечение 3%

Разработка системы 15%

Программирование 75%

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

Существуют два типа программных ошибок:

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

семантические (логические) ошибки - те, что приводят к некор­ректным вычислениям или ошибкам во время выполнения (run-time error). Семантические, ошибки устраняют обычно посредством выполнения программы с тщательно подобранными проверочными данными, для которых известен правильный ответ.

Тестирование (testing) - любой вид деятельности, в рам­ках которого путем реального выполнения каких-либо задач прове­ряется соответствующая работа либо системы в целом, либо состав­ной ее части.

Тестирование программы (program testing) - проверка, которая проводится в ходе прогона программы с целью убедиться, работает ли она так, как требуется. Это осуществляется при выполнении од­ного или нескольких тестовых прогонов, при которых в программ­ную систему подаются входные (тестовые данные), а реакция сис­темы фиксируется для последующего анализа. Может осуществ­ляться как с ЭВМ, так и без ЭВМ.

Один из главных законов тестирования гласит: «Тестирование программы или ее отдельных модулей не должен осуществлять программист (группа программистов), создавший эту программу или модуль».

Для обеспечения достаточной степени надежности тестирова­ния должен быть специальный отдел в фирме или привлечены про­граммисты из сторонних организаций. Первоначально разработчик сам устраняет мелкие ошибки. Когда компиляция модуля заверша­ется, и компилятор выдает соответствующее сообщение «Compile successful", программист обычно запускает откомпилированный фрагмент и производит несколько тестов.

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

Статистика свидетельствует, что стоимость тестирования со­ставляет не менее 50% всей стоимости начальной разработки.

Сколько бы сил, времени и денег не было потрачено на тести­рование, один из главных законов программирования действует с неотвратимостью рока: «Тесты могут доказать наличие ошибок в программе, но они не могут доказать их отсутствия» (Э. Дейкстра «Заметки по структурному программированию»).

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

1) Искать все ошибки или грубейшие?

2)Если не все, то как установить порог допустимости ошибки?

3)Когда завершать тестирование?

4)Что делать, если сроки поджимают или нет ресурсов на дальнейшее тестирование?

5) Где остановиться в документировании тестов?

Ответы на них во многом зависят от того, что считать качест­венной программой?

Качественная программа - это программа, выполняющая зара­нее объявленные действия известным способом и не выполняющая никаких необъявленных действий.

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




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 488; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.