Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Типичные ошибки в программных комплексах



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

¨ оценивать реальное состояние проекта и планировать трудо­емкость и длительность до его завершения;

¨ рассчитывать необходимую эффективность средств оператив­ной защиты от невыявленных первичных ошибок;

¨ оценивать требующиеся ресурсы ЭВМ по памяти и произво­дительности с учетом затрат на устранение ошибок;

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

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

Технологические ошибки документации и фикси­рования программ в памяти ЭВМ составляют 5 ... 10 % от общего числа ошибок, обнаруживаемых при отладке. Большинство технологических ошибок выявляется автоматически формализо­ванными методами. При ручной подготовке машинных носителей при однократном фиксировании исходные данные имеют вероятность искажения около 10-3 на символ или 10-4 на двоичный разряд. Дублированной подготов­кой и логическим контролем вероятность технологической ошиб­ки может быть снижена до 10-5 ... 10-7 на символ. Селектирую­щие свойства человека при работе с текстом из символов харак­теризуются вероятностью пропуска ошибки около 10-3 ... 10-4 на символ. Многократный перекрестный контроль соответствия дан­ных в ЭВМ исходным документам позволяет доводить в отдельных случаях вероятность технологической ошибки в программе до уровня 10-7 ... 10-8.

Программные ошибки по количеству в пер­вую очередь определяются степенью автоматизации программи­рования и глубиной формализованного контроля текстов про­грамм. Количество программных ошибок зависит от квалифика­ции разработчиков, от общего объема комплекса программ, от глубины логического и информационного взаимодействия моду­лей и от ряда других факторов. На начальных этапах раз­работки и автономной отладки модулей программные ошибки составляют около 1/3 всех ошибок. На этапах комплексной отладки и эксплуа­тации удельный вес программных ошибок падает и составляет около 15 и 3 % соответственно от общего количества ошибок, выявляемых в единицу времени.

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

К алгоритмическим ошибкам следует отнести также ошибки связей модулей и функциональных групп программ. Этот вид ошибок составляет 6 ... 8 % от общего количества, их можно квалифицировать как ошибки некорректной постановки задач. Алгоритмические ошибки проявляются в неполном учете диапа­зонов изменения переменных, в неправильной оценке точности используемых и получаемых величин, в неправильном учете связи между различными переменными, в неадекватном представлении формализованных условий решения задачи в спецификациях или схемах, подлежащих программированию, и т. д.

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

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

При автономной и в начале комплексной отладки доля си­стемных ошибок невелика (около 10%), но она существенно возрастает (до 35...40 %) на завершающих этапах комплексной отладки. В процессе эксплуатации системные ошибки являются преобладающими (около 80 % от всех ошибок).

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

Задачи отладки программ

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

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

статическую проверку текстов разработанных программ и данных на выполнение всех заданных правил построения без исполнения объектного кода;

тестирование программы с ее исполнением в объектном ко­де и с разными уровнями детализации: детерминированное, стохастическое и тестирование в реальном времени;

диагностику и локализацию причин отклонения результатов тестирования от заданных эталонных значений или правил; изменение программы с целью исключения причин отклонения результатов от эталонных.

Основным методом обнаружения ошибок при отладке прог­рамм является их тестирование.

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

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

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

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

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

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

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

Методы разработки тестов


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 263; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь