Подборка по базе: Практическая работа № 2 (Часть 1) Раздел программы_ 2.1.4. Объек, Реферат Сканеры и программное обеспечение распознавания символов, Лабораторная №2. Моделирование систем.docx, Роль биофармации в создании, производстве и обеспечении качества, Реферат по физиологии,Общая характеристика функциональной систем, 1 Химико-технологическая система.pdf, Исследовательская работа по астрономии _Малые тела Солнечной сис, ШОМ насосно-рукав системы в зимнее время.docx, Каковы особенности информации в системах социального управления., Задание Анатомия центральной нервной системы.docx
Тесты производительности
Тесты производительности
§ Тесты на производительность проверяют поведение системы, когда она находится под существенной нагрузкой. Эти тесты нефункциональные и могут принимать разную форму, чтобы проверить надежность, стабильность и доступность платформы. Например, это может быть наблюдение за временем отклика при выполнении большого количества запросов или наблюдение за тем, как система ведет себя при взаимодействии с большими данными.
§ Тесты производительности по своей природе проводить достаточно затратно, но они могут помочь понять, какие внешние факторы могут уронить разработанную систему.
Дымовое тестирование (Smoke testing)
Дымовое тестирование (Smoke testing)
§ Дымовые тесты – это базовые тесты, которые проверяют базовый функционал приложения. Они отрабатывают достаточно быстро и их цель дать понять, что основные функции системы работают как надо и не более того. Такое тестирование направлено на выявление явных ошибок. Дымовые тесты могут оказаться полезными сразу после сборки нового билда для проверки на то, можете ли вы запустить более дорогостоящие тесты, или сразу после развёртывания, чтобы убедиться, что приложение работает нормально в новой среде.
Как автоматизировать тесты
Как автоматизировать тесты
§ Тестировщик может проводить все тесты вручную, но это затратно и непродуктивно. Поскольку люди имеют ограниченную возможность производить большое количество действий с повторениями с той же надежностью.
§ Машина может с легкостью воспроизводить эти же действия и повторять в сотый раз без каких-либо нареканий цикл проверки.
§ Для автоматизации тестирования для начала необходимо написать на каком-то из языков программирования код для тестирования, который подойдет для конкретного приложения.
§ PHPUnit , Mocha, RSpec – это примеры фреймворков для тестирования, которые можно использовать для PHP, Javascript и Ruby, соответственно. В них есть множество возможностей для каждого языка, поэтому решение принимает тестировщик.
§ Если ваши тесты могут запускаться с помощью скриптов из терминала, вы можете автоматизировать их, использовав сервер непрерывной интеграции по типу Bamboo или облачного сервера Bitbucket Pipelines. Эти инструменты будут мониторить ваши репозитории и исполнять наборы тестов, как только новые изменения будут запушены в основной репозиторий.
Исследовательское тестирование
Исследовательское тестирование
§ Чем больше функций и улучшений добавляется в код программы, тем больше возрастает потребность в тестировании, поскольку на каждом этапе вам необходимо убеждаться, что система работает корректно. Также это понадобится каждый раз, когда исправляете баг, поскольку было бы не лишним убедиться, что он не вернется снова после нескольких релизов.
§ Автоматизация – это ключ к тому, чтобы это стало возможным; написание тестов рано или поздно станет частью вашей практики разработчика.
Сессия исследовательского тестирования не должна превышать двух часов и должна иметь четко ограниченную область действия, чтобы помочь тестировщикам сосредоточиться на определенной области программного обеспечения. После информирования всех тестировщиков о границах проведения тестирования, на их усмотрения остаются действия, которые они будут предпринимать, чтобы проверить, как поведет себя система. Такое тестирование является дорогостоящим по своей природе, но очень полезно для выявления проблем с пользовательским интерфейсом или проверки работоспособности сложных рабочих процессов для пользователей. Такое тестирование важно проводить всякий раз, когда в приложение добавляется кардинально новая функция, чтобы понять, как она поведет себя в пограничных условиях.
§ Сессия исследовательского тестирования не должна превышать двух часов и должна иметь четко ограниченную область действия, чтобы помочь тестировщикам сосредоточиться на определенной области программного обеспечения. После информирования всех тестировщиков о границах проведения тестирования, на их усмотрения остаются действия, которые они будут предпринимать, чтобы проверить, как поведет себя система. Такое тестирование является дорогостоящим по своей природе, но очень полезно для выявления проблем с пользовательским интерфейсом или проверки работоспособности сложных рабочих процессов для пользователей. Такое тестирование важно проводить всякий раз, когда в приложение добавляется кардинально новая функция, чтобы понять, как она поведет себя в пограничных условиях.
Первичные ошибки, вторичные ошибки и их проявления
§ Рассмотрим классификацию ошибок по месту их возникновения.
§ Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок.
§ Недостатки программы зависят от субъективной оценки ее качества потенциальным пользователем.
§ Преодоление недостатков программы, особенно на заключительном этапе проектирования, может приводить к снижению надежности.
Проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы.
§ Проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы.
§ Для ПО все проблемы, связанные с субъективным оцениванием их качества и наличием ошибок, скорее всего неизбежны.
§ В краткой классификации выделяются следующие ошибки.
§ — Ошибки пользовательского интерфейса.
§ — Ошибки вычислений.
§ — Ошибки управления потоком.
§ — Ошибки передачи или интерпретации данных.
§ — Перегрузки.
§ — Контроль версий.
§ — Ошибка выявлена и забыта.
§ — Ошибки тестирования.
1. Ошибки пользовательского интерфейса.
1. Ошибки пользовательского интерфейса.
§ Многие из них субъективны, т.к. часто они являются скорее неудобствами, чем «чистыми» логическими ошибками. Однако они могут провоцировать ошибки пользователя программы или же замедлять время его работы до неприемлемой величины. В результате чего мы будем иметь ошибки информационной системы (ИС) в целом.
§ Основным источником таких ошибок является сложный компромисс между функциональностью программы и простотой обучения и работы пользователя с этой программой. Проблему надо начинать решать при проектировании системы на уровне ее декомпозиции на отдельные модули, исходя из того, что вряд ли удастся спроектировать простой и удобный пользовательский интерфейс для модуля, перегруженного различными функциями. Учитывать необходимо рекомендации по проектированию пользовательских интерфейсов. На этапе тестирования ПО полезно предусмотреть встроенные средства тестирования, которые бы запоминали последовательности действий пользователя, время совершения отдельных операций, расстояния перемещения курсора мыши.
2. Ошибки вычислений.
2. Ошибки вычислений.
§ Выделяют следующие причины возникновения таких ошибок:
§ — неверная логика (может быть следствием, как ошибок проектирования, так и кодирования);
§ — неправильно выполняются арифметические операции (как правило — это ошибки кодирования);
§ — неточные вычисления (могут быть следствием, как ошибок проектирования, так и кодирования). Очень сложная тема, надо выработать свое отношение к ней с точки зрения разработки безопасного ПО.
§ Выделяются подпункты: устаревшие константы; ошибки вычислений; неверно расставленные скобки; неправильный порядок операторов; неверно работает базовая функция; переполнение и потеря значащих разрядов; ошибки отсечения и округления; путаница с представлением данных; неправильное преобразование данных из одного формата в другой и др.
3. Ошибки управления потоком.
3. Ошибки управления потоком.
§ В этот раздел относится все то, что связано с последовательностью и обстоятельствами выполнения операторов программы.
§ Выделяются подпункты:
§ — очевидно неверное поведение программы;
§ — переход по GOTO;
§ — логика, основанная на определении вызывающей подпрограммы;
§ — использование таблиц переходов;
§ — выполнение данных (вместо команд). Ситуация возможна из-за ошибок работы с указателями, отсутствия проверок границ массивов, ошибок перехода, вызванных, например, ошибкой в таблице адресов перехода, ошибок сегментирования памяти.
4. Ошибки обработки или интерпретации данных.
4. Ошибки обработки или интерпретации данных.
§ Выделяются подпункты:
§ — проблемы при передаче данных между подпрограммами (сюда включены несколько видов ошибок: параметры указаны не в том порядке или пропущены, несоответствие типов данных, псевдонимы и различная интерпретация содержимого одной и той же области памяти, неправильная интерпретация данных, неадекватная информация об ошибке, перед аварийным выходом из подпрограммы не восстановлено правильное состояние данных, локальная установка глобальных данных (имеется в виду путаница локальных и глобальных переменных), глобальное использование локальных переменных, неверная маска битового поля, неверное значение из таблицы);
§ — границы расположения данных (сюда включены несколько видов ошибок: не обозначен конец нуль-терминированной строки, неожиданный конец строки, запись/чтение за границами структуры данных или ее элемента, чтение за пределами буфера сообщения, чтение за пределами буфера сообщения, дополнение переменных до полного слова, переполнение и выход за нижнюю границу стека данных, затирание кода или данных другого процесса);
§ — проблемы с обменом сообщений (сюда включены несколько видов ошибок: отправка сообщения не тому процессу или не в тот порт, ошибка распознавания полученного сообщения, недостающие или несинхронизированные сообщения, сообщение передано только N процессам из N+1, порча данных, хранящихся на внешнем устройстве, потеря изменений, не сохранены введенные данные, объем данных слишком велик для процесса-получателя, неудачная попытка отмены записи данных).
5. Повышенные нагрузки.
5. Повышенные нагрузки.
§ При повышенных нагрузках или нехватке ресурсов могут возникнуть дополнительные ошибки.
§ Выделяются подпункты: требуемый ресурс недоступен; не освобожден ресурс; нет сигнала об освобождении устройства; старый файл не удален с накопителя; системе не возвращена неиспользуемая память; лишние затраты компьютерного времени; нет свободного блока памяти достаточного размера; недостаточный размер буфера ввода или очереди; не очищен элемент очереди, буфера или стека; потерянные сообщения; снижение производительности; повышение вероятности ситуационных гонок; при повышенной нагрузке объем необязательных данных не сокращается; не распознается сокращенный вывод другого процесса при повышенной загрузке; не приостанавливаются задания с низким приоритетом.
§ В этом разделе хотелось бы обратить внимание на следующее:
§ 1) Часть ошибок из этого раздела могут проявляться и при не очень высоких нагрузках, но, возможно, они будут проявляться реже и через более длительные интервалы времени;
§ 2) Многие ошибки из 2-х предыдущих разделов уже в своей формулировке носят вероятностный характер, поэтому следует предположить возможность использования вероятностных моделей и методов для их выявления.
6. Контроль версий и идентификаторов.
6. Контроль версий и идентификаторов.
§ Выделяются подпункты:
§ таинственным образом появляются старые ошибки;
§ обновление не всех копий данных или программных файлов;
§ отсутствие заголовка;
§ отсутствие номера версии;
§ неверный номер версии в заголовке экрана;
§ отсутствующая или неверная информация об авторских правах;
§ программа, скомпилированная из архивной копии, не соответствует проданному варианту;
§ готовые диски содержат неверный код или данные.
7. Ошибки тестирования.
7. Ошибки тестирования.
§ Являются ошибками сотрудников группы тестирования, а не программы.
§ Выделяются подпункты:
§ — пропущенные ошибки в программе;
§ — не замечена проблема (отмечаются следующие причины этого: тестировщик не знает, каким должен быть правильный результат, ошибка затерялась в большом объеме выходных данных, тестировщик не ожидал такого результата теста, тестировщик устал и невнимателен, ему скучно, механизм выполнения теста настолько сложен, что тестировщик уделяет ему больше внимания, чем результатам);
§ — пропуск ошибок на экране;
§ — не документирована проблема (отмечаются следующие причины этого: тестировщик неаккуратно ведет записи, тестировщик не уверен в том, что данные действия программы являются ошибочными, ошибка показалась слишком незначительной, тестировщик считает, что ошибку не будет исправлена, тестировщика просили не документировать больше подобные ошибки).
8. Ошибка выявлена и забыта.
8. Ошибка выявлена и забыта.
§ Описываются ошибки использования результатов тестирования. Выделяются подпункты:
§ не составлен итоговый отчет;
§ серьезная проблема не документирована повторно;
§ не проверено исправление;
§ перед выпуском продукта не проанализирован список нерешенных проблем.
§ При разработке средств автоматизированного тестирования следует избегать ошибок, которые присущи любому ПО, поэтому нужно потребовать, чтобы такие средства обладали более высокими характеристиками надежности, чем проверяемое с их помощью ПО.
Основные пути борьбы с ошибками
Основные пути борьбы с ошибками
§ Учитывая рассмотренные особенности действий человека при переводе можно указать следующие пути борьбы с ошибками:
§ сужение пространства перебора (упрощение создаваемых систем),
§ обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков),
§ обеспечение однозначности интерпретации представления информации,
§ контроль правильности перевода (включая и контроль однозначности.
http://psihdocs.ru
Содержание:
Введение
Программное обеспечение, согласно ГОСТ 19781-90, – совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации.
Существует и другое, более простое определение, согласно которому программное обеспечение представляет собой совокупность компьютерных инструкций. Оно охватывает программы, подпрограммы (разделы программы) и данные. Таким образом, программное обеспечение указывает компьютеру, что делать, как, когда, в какой последовательности и как часто. Нередко программное обеспечение называют просто программой.
Проблема надежности программного обеспечения относится, похоже, к категории «вечных». В посвященной ей монографии Г.Майерса, выпущенной в 1980 году (американское издание — в 1976), отмечается, что, хотя этот вопрос рассматривался еще на заре применения вычислительных машин, в 1952 году, он не потерял актуальности до настоящего времени. Отношение к проблеме довольно выразительно сформулировано в книге Р.Гласса: «Надежность программного обеспечения — беспризорное дитя вычислительной техники». Следует далее отметить, что сама проблема надежности программного обеспечения имеет, по крайней мере, два аспекта: обеспечение и оценка (измерение) надежности. Практически вся имеющаяся литература на эту тему, включая упомянутые выше монографии, посвящена первому аспекту, а вопрос оценки надежности компьютерных программ оказывается еще более «беспризорным». Вместе с тем очевидно, что надежность программы гораздо важнее таких традиционных ее характеристик, как время исполнения или требуемый объем оперативной памяти, однако никакой общепринятой количественной меры надежности программ до сих пор не существует.
Для обеспечения надежности программ предложено множество подходов, включая организационные методы разработки, различные технологии и технологические программные средства, что требует, очевидно, привлечения значительных ресурсов. Однако отсутствие общепризнанных критериев надежности не позволяет ответить на вопрос, насколько надежнее становится программное обеспечение при соблюдении данных процедур и технологий и в какой степени оправданы расходы. Получается, что таким образом, приоритет задачи оценки надежности должен быть выше приоритета задачи ее обеспечения, чего на самом деле не наблюдается.
Цель данной работы – рассмотреть классификацию ошибок программного обеспечения для обеспечения его надежности.
Надежность программного обеспечения
Показатели качества программного обеспечения
Оценка качества программного обеспечения могут проводиться с двух позиций: с позиции положительной эффективности и непосредственной адекватности их характеристик назначению, целям создания и применения, а также с негативной позиции, возможного при этом ущерба – риска от пользования ПС или системы. Показатели качества преимущественно отражают положительный эффект от применения программного обеспечения и основная задача разработчиков проекта состоит в обеспечении высоких значений качества. Риски характеризуют возможные негативные последствия проявившихся в ходе эксплуатации ошибок или ущерб для пользователя при применении и функционировании программного обеспечения.
Согласно ГОСТ 9126[2], качество программного обеспечения – это весь объем признаков и характеристик программного обеспечения, который относится к ее способности удовлетворять установленным или предполагаемым потребностям.
Качество программного обеспечения оценивается следующими характеристиками:
- Функциональные возможности (Functionality). Набор атрибутов, относящихся к сути набора функций и их конкретным свойствам. Функциями являются те, которые реализуют установленные или предполагаемые потребности.
- Надежность (Reliability). Набор атрибутов относящихся к способности программного обеспечения сохранять свой уровень качества функционирования при установленных условиях за установленный период времени.
- Практичность (Usability). Набор атрибутов, относящихся к объему работ, требуемых для использования и индивидуальной оценки такого использования определенным и предполагаемым кругом пользователей.
- Эффективность (Efficiencies). Набор атрибутов, относящихся к соотношению между уровнем качества функционирования программного обеспечения и объемом используемых ресурсов при установленных условиях.
- Сопровождаемость (Maintainability). Набор атрибутов, относящихся к объему работ, требуемых для проведения конкретных изменений (модификаций).
- Мобильность (Portability). Набор атрибутов, относящихся к способности программного обеспечения быть перенесенным из одного окружения в другое.
В общем случае под ошибкой подразумевается неправильность, погрешность или неумышленное искажение объекта или процесса, что может быть причиной ущерба – риска при функционировании или применении программы. При этом предполагается, что известно правильное, эталонное состояние объекта или процесса по отношению к которому может быть определено наличие отклонения. Исходным эталоном для любого программного обеспечения являются спецификации требований заказчика или потенциального пользователя, предъявляемых к программам и ожидаемый пользователем или заказчиком эффект от использования программного обеспечения. Важной особенностью при этом является отсутствие полностью определенной программы – эталона, которой должны соответствовать текст и результаты функционирования разрабатываемой программы. Поэтому определить качество программного обеспечения и наличие ошибок в нем путем сравнения разрабатываемой программы с эталонной программой невозможно.
Риски проявляются как негативные последствия проявления ошибок в программном обеспечении в ходе его пользования и функционирования, которые могут нанести ущерб системе, в которой используется это программное обеспечение, внешней среде или пользователям этой системы в результате отклонения характеристик программного обеспечения заданных или ожидаемых пользователем или заказчиком.
Исходя из определения ошибки в программном обеспечении, приведенном выше, можно сделать вывод, что ошибки, возникающие в ходе использования программного обеспечения, могут изменять некоторые или все показатели качества. В работе рассматриваются ошибки, изменения которых влияют на надежность использования программного обеспечения.
По правилу, установленному в [2], надежность – свойство объекта осуществлять заданные функции, храня во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующим заданным режимам и условиям использования, ремонта, технического обслуживания, хранения, транспортирования.
Рис. 1. Надежность по ГОСТ 27.002 – 89
При этом надежность является комплексным свойством, которое в зависимости от функции объекта и условий его использования может включать безотказность, ремонтопригодность, долговечность, сохраняемость или некоторые сочетания данных свойств (рис. 1). Так как программное обеспечение в процессе эксплуатации не изнашивается, его поломка и ремонт в общепринятом смысле не делается, то надежность программного обеспечения имеет смысл характеризовать только с точки зрения безотказности его функционирования и возможности исправления функционирования после отказов по вызванных проявлениями ошибок.
В [3] надежность программного обеспечения предлагается характеризовать с помощью следующих характеристик (рис. 2): стабильность, устойчивость и восстанавливаемость.
Рис. 2. Надежность программного обеспечения
В этом случае стабильность и устойчивость характеризуют безотказность программного обеспечения, а восстанавливаемость – возможность восстановления функционирования программного обеспечения после его отказа. Для количественной оценки надежности программного обеспечения необходимо определить показатели надежности для каждого свойства и методику их определения (оценки).
Для оценки стабильности программного обеспечения возможно использование показателей характеризующих безотказность технических устройств [2] (рис. 3).
Рис. 3. Показатели безотказности
В большинстве случаев поток программных ошибок может быть описан негомогенным процессом Пуассона [4]. Это означает, что программные ошибки происходят в статистически независимые моменты времени, наработки подчиняются экспоненциальному распределению, а интенсивность проявления ошибок изменяется во времени. Обычно используют убывающую интенсивность проявления ошибок. Это означает, что ошибки, как только они выявлены, эффективно устраняются без введения новых ошибок. Главная цель анализа надежности программного обеспечения заключается в том, чтобы определить форму функции интенсивности проявления ошибок и оценить ее параметры по наблюдаемым данным. Как только функция интенсивности проявления ошибок определена, могут быть найдены такие показатели надежности как:
- общее количество ошибок;
- количество остающихся ошибок;
- время до проявления следующей ошибки;
- вероятность безошибочной работы;
- интенсивность проявления ошибок;
- остаточное время испытаний (до принятия решения);
- максимальное количество ошибок (относительно срока службы).
При этом следует различать понятия ошибка и отказ. Применительно к надежности программного обеспечения ошибка это погрешность или искажение кода программы, неумышленно внесенные в нее в процессе разработки, которые в ходе функционирования этой программы могут вызвать отказ или снижение эффективности функционирования. Под отказом в общем случае понимают событие, заключающееся в нарушении работоспособности объекта [2]. Состояние объекта, при котором значения всех параметров характеризующих способность выполнять заданные функции, соответствуют требованиям нормативно – технической и (или) конструкторской (проектной) документации – называется работоспособным. При этом критерии отказов, как признаки или совокупность признаков нарушения работоспособного состояния программного обеспечения, должны определяться исходя из его предназначения в нормативно – технической и (или) конструкторской (проектной) документации.
В общем случае отказ программного обеспечения можно определить как:
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) на время превышающее заданный порог;
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) на время не превышающее заданный порог, но с потерей всех или части обрабатываемых данных;
- прекращение функционирования программы (искажения нормального хода ее выполнения, зацикливание) потребовавшее перезагрузки ЭВМ, на которой функционирует программное обеспечение.
При этом исходя из [2], все отказы в программном обеспечении следует трактовать как сбои (самоустраняющиеся отказы или однократные отказы, устраняемые незначительным вмешательством оператора), поскольку восстановление работоспособного состояния программного обеспечения может произойти без вмешательства оператора (перезагрузка ЭВМ не требуется), либо при участии оператора или эксплуатирующего персонала (перезагрузка ЭВМ необходима).
Приведенные выше критерии отказов приводят к необходимости анализа временных характеристик функционирования программы и динамических характеристик потребителей данных, полученных в ходе функционирования программного обеспечения. Временная зона перерыва нормальной выдачи информации и потери работоспособности, которую следует рассматривать как зону сбоя (отказа), тем шире, чем более инертный объект находится под воздействием данных, полученным в ходе работы программы. Пороговое время восстановления работоспособного состояния системы, при превышении которого следует соответствующему потребителю (абоненту).
Для любого потребителя данных существует допустимое время отсутствия данных от программы, при котором его характеристики находятся в допустимых пределах. Исходя из этого времени, можно установить границы временной зоны, которая разделяет работоспособное и неработоспособное состояние программного обеспечения и позволяет использовать данные критерии отказов.
Из приведенного выше определения программной ошибки с точки зрения надежности, можно сделать вывод о том, что ошибки, при их проявлении, не всегда вызывают отказ программного обеспечения и каждую ошибку можно характеризовать условной вероятностью возникновения отказа при проявлении этой ошибки. Следует также отметить, что само по себе наличие ошибки в исходном коде не определяет надежность программы до тех пор, пока не произойдет проявления этой ошибки, поэтому пользоваться для оценки надежности программного обеспечения только показателями характеризующие общее количество ошибок в программе, количество оставшихся ошибок и максимального количества ошибок нельзя.
В [5] стабильность предлагается оценивать вероятностью безотказной работы, которая оценивается исходя из модели относительной частоты, при этом применение ее ограничено периодом эксплуатации программного обеспечения, что не всегда приемлемо, поскольку надежность объекта, как правило, необходимо оценивать не только в процессе его эксплуатации, но и до начала эксплуатации этого объекта. Ограничение модели относительной частоты вызвано тем, что в этой модели не учитываются процессы тестирования и отладки, а конкретно то, что при возникновении отказа программного обеспечения, ошибка, вызвавшая этот отказ, исправляется.
Наиболее приемлемыми показателями характеризующими стабильность (безотказность) программного обеспечения представляются показатели сходные с показателями безотказности технических систем: вероятность безотказной работы, интенсивность отказов, и среднее время наработки на отказ. Эти показатели взаимосвязаны и, зная один из них, можно определить другие [2]. При определении этих показателей в большинстве случаев можно исходить из модели надежности, предполагающей, что интенсивность проявления ошибок убывает по мере исправления этих ошибок, время между проявлениями ошибок распределено экспоненциально, а интенсивность проявления ошибок постоянна между двумя соседними проявлениями ошибок. Применение такой модели надежности программного обеспечения позволит оценить надежность программного обеспечения во время тестирования и отладки.
Устойчивость, как свойство или совокупность свойств программного обеспечения, характеризующие его возможность поддерживать приемлемый уровень функционирования при проявлениях ошибок в нем, можно оценивать условной вероятностью безотказной работы при проявлении ошибки. Согласно [5] устойчивость оценивается с помощью трех метрик, включающих двадцать оценочных элементов (рис. 4). Результаты оценки каждой метрики определяются результатами оценки определяющих ее оценочных элементов, а результат оценки устойчивости определяются результатами соответствующих ему метрик. Программное обеспечение по каждому из оценочных элементов оценивается группой экспертов – специалистов, компетентных в решении данной задачи, на базе их опыта и интуиции. Для оценочных элементов принимается единая шкала оценки от 0 до 1.
Недостатком такого подхода является одинаковая оценка устойчивости для всех возможных ошибок. Поскольку вероятность возникновения отказа при проявлении разных ошибок может быть разной, возникает необходимость разделения ошибок на несколько категорий. Признаком, по которому в этом случае можно относить ошибки к той или иной категории, можно считать тяжесть ошибки. Под тяжестью ошибки в этом случае следует понимать количественную или качественную оценку вероятного ущерба при проявлении этой ошибки [6], а если говорить о надежности, то оценку вероятности возникновения отказа при проявлении ошибки. При этом категорией тяжести последствий ошибки будет являться классификационная группа ошибок по тяжести их последствий, характеризуемая определенным сочетанием качественных и/или количественных учитываемых составляющих ожидаемого (вероятного) отказа или нанесенного отказом ущерба.
Рис. 4. Метрики и оценочные элементы устойчивости программного обеспечения по ГОСТ 28195 – 89
В качестве показателя степени тяжести ошибки, позволяющего дать количественную оценку тяжести проявления последствий ошибки целесообразно использовать условную вероятность отказа и его возможных последствий при проявлении ошибок разных категорий. Для программного обеспечения, создаваемого для систем управления, потеря работоспособности которых может повлечь за собой катастрофические последствия, возможные категории тяжести ошибок приведены в таблице 1.
Таблица 1. Категории тяжести ошибки в программном обеспечении, нарушение работоспособности которого могут привести к катастрофическим последствиям
Для программного обеспечения общего применения или программного обеспечения систем, нарушение работоспособности которых не представляет угрозы жизни людей и не приводит к разрушению самой системы, возможные категории тяжести приведены в таблице 2.
Таблица 2. Категории тяжести ошибки в программном обеспечении, нарушение работоспособности которого не приводят к катастрофическим последствиям
Оценку степени тяжести ошибки как условной вероятности возникновения отказа (последствий этого отказа), можно производить согласно [5], используя метрики и оценочные элементы, характеризующие устойчивость программного обеспечения. При этом оценка производится для каждой ошибки в отдельности, а не для всего программного обеспечения. Далее исходя из проведенных оценок возможно определение устойчивости программного обеспечения к проявлениям ошибок каждой из категорий.
Восстанавливаемость программного обеспечения, как свойство или совокупность свойств характеризующих способность программного обеспечения восстановления своего уровня пригодности и восстановления данных, непосредственно поврежденных вследствии проявлении ошибки (отказа), характеризуется полнотой и длительностью восстановления функционирования программ в процессе перезапуска или перезагрузки ЭВМ. В [5] восстанавливаемость предлагается оценивать по среднему времени восстановления. При этом следует учитывать, что время восстановления функционирования программного обеспечения складывается не только из времени потребного для перезагрузки ЭВМ и загрузки самого программного обеспечения, но и из времени необходимого для восстановления данных и это время в ряде случаев может значительно превышать время перезагрузки.
Показатели надежности программного обеспечения в значительной степени адекватны аналогичным характеристикам, принятых для других технических систем. Наиболее широко используется показатель наработки на отказ. Наработка на отказ – это отношение суммарной наработки объекта к математическому ожиданию числа его отказов в течении этой наработки. Для программного обеспечения использование данного показателя затруднено, в силу особенностей тестирования и отладки программного обеспечения (ошибка вызвавшая отказ, как правило, исправляется и больше не повторяется). Поэтому целесообразно использовать показатель средней наработки до отказа – математического ожидания времени функционирования программного обеспечения до отказа. При использовании модели надежности программного обеспечения предполагающей экспоненциальное распределение времени между отказами, среднее время наработки до отказа равно величине обратной интенсивности отказов. Интенсивность отказов можно оценить исходя из оценок стабильности и устойчивости программного обеспечения. Обобщение характеристик отказов и восстановлений производится в показателе коэффициент готовности [2]. Коэффициент готовности программного обеспечения это вероятность того, что программное обеспечение окажется в работоспособном состоянии в произвольный момент времени. Значение коэффициента готовности соответствует доле времени полезной работы программного обеспечения на достаточно большом интервале времени, содержащем отказы и восстановления.
Источники ошибок программного обеспечения
Источниками ошибок в программном обеспечении являются специалисты – конкретные люди с их индивидуальными особенностями, квалификацией, талантом и опытом. Вследствие этого плотность потоков ошибок и размеры необходимых корректировок в модулях и компонентах при разработке и сопровождении программного обеспечения могут различаться в десятки раз. Однако в крупных комплексах программ статистика и распределение ошибок и типов выполняемых изменений, необходимых для их исправления, для коллективов разных специалистов нивелируются и проявляются общие закономерности, которые могут использоваться как ориентиры при выявлении ошибок и их систематизации. Этому могут помогать оценки типовых ошибок, модификаций и корректировок путем их накопления и обобщения по опыту создания определенных классов программного обеспечения.
Основными причинами ошибок программного обеспечения являются:
- Большая сложность программного обеспечения, например, по сравнению с аппаратурой ЭВМ.
- Неправильный перевод информации из одного представления в другое на макро и микро уровнях. На макро уровне, уровне проекта, осуществляется передача и преобразование различных видов информации между организациями, подразделениями и конкретными исполнителями на всех этапах жизненного цикла ПО. На микро уровне, уровне исполнителя, производится преобразование информации по схеме: получить информацию, запомнить, выбрать из памяти, воспроизвести информацию.
Источниками ошибок программного обеспечения являются:
Внутренние: ошибки проектирования, ошибки алгоритмизации, ошибки программирования, недостаточное качество средств защиты, ошибки в документации.
Внешние: ошибки пользователей, сбои и отказы аппаратуры ЭВМ, искажение информации в каналах связи, изменения конфигурации системы.
- Признаками выявления ошибок являются:
- Преждевременное окончание программы.
- Увеличение времени выполнения программы.
- Нарушение последовательности вызова отдельных подпрограмм.
Ошибки выхода информации, поступающей от внешних источников, между входной информацией возникает не соответствие из-за: искажение данных на первичных носителях, сбои и отказы в аппаратуре, шумы и сбои в каналах связи, ошибки в документации.
Ошибки, скрытые в самой программе: ошибка вычислений, ошибка ввода-вывода, логические ошибки, ошибка манипулирования данными, ошибка совместимости, ошибка сопряжения.
Искажения входной информации, подлежащей обработке: искажения данных на первичных носителях информации; сбои и отказы в аппаратуре ввода данных с первичных носителей информации; шумы и сбои в каналах связи при передачи сообщений по линиям связи; сбои и отказы в аппаратуре передачи или приема информации; потери или искажения сообщений в буферных накопителях вычислительных систем; ошибки в документировании; используемой для подготовки ввода данных; ошибки пользователей при подготовки исходной информации.
Неверные действия пользователя:
- Неправильная интерпретация сообщений.
- Неправильные действия пользователя в процессе диалога с программным обеспечением.
- Неверные действия пользователя или по-другому, их можно назвать ошибками пользователя, которые возникают вследствие некачественной программной документации: неверные описания возможности программ; неверные описания режимов работы; неверные описания форматов входной и выходной информации; неверные описания диагностических сообщений.
Неисправности аппаратуры установки: приводят к нарушениям нормального хода вычислительного процесса; приводят к искажениям данных и текстов программ в основной и внешней памяти.
Итак, при рассмотрении основных причин возникновения отказа и сбоев программного обеспечения можно сказать, что эти знания позволяют своевременно принимать необходимые меры по недопущению отказов и сбоев программного обеспечения.
Виды ошибок программного обеспечения
Характеристика основных видов ошибок программного обеспечения
Рассмотрим классификацию ошибок по месту их возникновения, которая рассмотрена в книге С. Канера «Тестирование программного обеспечения». Фундаментальные концепции менеджмента бизнес-приложений. Главным критерием программы должно быть ее качество, которое трактуется как отсутствие в ней недостатков, а также сбоев и явных ошибок. Недостатки программы зависят от субъективной оценкой ее качества потенциальным пользователем. При этом авторы скептически относятся к спецификации и утверждают, что даже при ее наличии, выявленные на конечном этапе недостатки говорят о ее низком качестве. При таком подходе преодоление недостатков программы, особенно на заключительном этапе проектирования, может приводить к снижению надежности. Очевидно, что для разработки ответственного и безопасного программного обеспечения (ПО) такой подход не годится, однако проблемы наличия ошибок в спецификациях, субъективного оценивания пользователем качества программы существуют и не могут быть проигнорированы. Должна быть разработана система некоторых ограничений, которая бы учитывала эти факторы при разработке и сертификации такого рода ПО. Для обычных программ все проблемы, связанные с субъективным оцениванием их качества и наличием ошибок, скорее всего неизбежны.
В краткой классификации выделяются следующие ошибки.
- ошибки пользовательского интерфейса.
- ошибки вычислений.
- ошибки управления потоком.
- ошибки передачи или интерпретации данных.
- перегрузки.
- контроль версий.
- ошибка выявлена и забыта.
- ошибки тестирования.
1. Ошибки пользовательского интерфейса.
Многие из них субъективны, т.к. часто они являются скорее неудобствами, чем «чистыми» логическими ошибками. Однако они могут провоцировать ошибки пользователя программы или же замедлять время его работы до неприемлемой величины. В результате чего мы будем иметь ошибки информационной системы (ИС) в целом. Основным источником таких ошибок является сложный компромисс между функциональностью программы и простотой обучения и работы пользователя с этой программой. Проблему надо начинать решать при проектировании системы на уровне ее декомпозиции на отдельные модули, исходя из того, что вряд ли удастся спроектировать простой и удобный пользовательский интерфейс для модуля, перегруженного различными функциями. Кроме того, необходимо учитывать рекомендации по проектированию пользовательских интерфейсов. На этапе тестирования ПО полезно предусмотреть встроенные средства тестирования, которые бы запоминали последовательности действий пользователя, время совершения отдельных операций, расстояния перемещения курсора мыши. Кроме этого возможно применение гораздо более сложных средств психо-физического тестирования на этапе тестирования интерфейса пользователя, которые позволят оценить скорость реакции пользователя, частоту этих реакций, утомляемость и т.п. Необходимо отметить, что такие ошибки очень критичны с точки зрения коммерческого успеха разрабатываемого ПО, т.к. они будут в первую очередь оцениваться потенциальным заказчиком.
2.Ошибки вычислений.
Выделяют следующие причины возникновения таких ошибок:
- неверная логика (может быть следствием, как ошибок проектирования, так и кодирования);
- неправильно выполняются арифметические операции (как правило — это ошибки кодирования);
- неточные вычисления (могут быть следствием, как ошибок проектирования, так и кодирования). Очень сложная тема, надо выработать свое отношение к ней с точки зрения разработки безопасного ПО.
Выделяются подпункты: устаревшие константы; ошибки вычислений; неверно расставленные скобки; неправильный порядок операторов; неверно работает базовая функция; переполнение и потеря значащих разрядов; ошибки отсечения и округления; путаница с представлением данных; неправильное преобразование данных из одного формата в другой; неверная формула; неправильное приближение.
3.Ошибки управления потоком.
В этот раздел относится все то, что связано с последовательностью и обстоятельствами выполнения операторов программы.
Выделяются подпункты:
- очевидно неверное поведение программы;
- переход по GOTO;
- логика, основанная на определении вызывающей подпрограммы;
- использование таблиц переходов;
- выполнение данных (вместо команд). Ситуация возможна из-за ошибок работы с указателями, отсутствия проверок границ массивов, ошибок перехода, вызванных, например, ошибкой в таблице адресов перехода, ошибок сегментирования памяти.
4.Ошибки обработки или интерпретации данных.
Выделяются подпункты:
- проблемы при передаче данных между подпрограммами (сюда включены несколько видов ошибок: параметры указаны не в том порядке или пропущены, несоответствие типов данных, псевдонимы и различная интерпретация содержимого одной и той же области памяти, неправильная интерпретация данных, неадекватная информация об ошибке, перед аварийным выходом из подпрограммы не восстановлено правильное состояние данных, устаревшие копии данных, связанные переменные не синхронизированы, локальная установка глобальных данных (имеется в виду путаница локальных и глобальных переменных), глобальное использование локальных переменных, неверная маска битового поля, неверное значение из таблицы);
- границы расположения данных (сюда включены несколько видов ошибок: не обозначен конец нуль-терминированной строки, неожиданный конец строки, запись/чтение за границами структуры данных или ее элемента, чтение за пределами буфера сообщения, чтение за пределами буфера сообщения, дополнение переменных до полного слова, переполнение и выход за нижнюю границу стека данных, затирание кода или данных другого процесса);
- проблемы с обменом сообщений (сюда включены несколько видов ошибок: отправка сообщения не тому процессу или не в тот порт, ошибка распознавания полученного сообщения, недостающие или несинхронизированные сообщения, сообщение передано только N процессам из N+1, порча данных, хранящихся на внешнем устройстве, потеря изменений, не сохранены введенные данные, объем данных слишком велик для процесса-получателя, неудачная попытка отмены записи данных).
5.Повышенные нагрузки.
При повышенных нагрузках или нехватке ресурсов могут возникнуть дополнительные ошибки. Выделяются подпункты: требуемый ресурс недоступен; не освобожден ресурс; нет сигнала об освобождении устройства; старый файл не удален с накопителя; системе не возвращена неиспользуемая память; лишние затраты компьютерного времени; нет свободного блока памяти достаточного размера; недостаточный размер буфера ввода или очереди; не очищен элемент очереди, буфера или стека; потерянные сообщения; снижение производительности; повышение вероятности ситуационных гонок; при повышенной нагрузке объем необязательных данных не сокращается; не распознается сокращенный вывод другого процесса при повышенной загрузке; не приостанавливаются задания с низким приоритетом.
7.Ошибки тестирования.
Являются ошибками сотрудников группы тестирования, а не программы. Выделяются подпункты:
- пропущенные ошибки в программе;
- не замечена проблема (отмечаются следующие причины этого: тестировщик не знает, каким должен быть правильный результат, ошибка затерялась в большом объеме выходных данных, тестировщик не ожидал такого результата теста, тестировщик устал и невнимателен, ему скучно, механизм выполнения теста настолько сложен, что тестировщик уделяет ему больше внимания, чем результатам);
- пропуск ошибок на экране;
- не документирована проблема (отмечаются следующие причины этого: тестировщик неаккуратно ведет записи, тестировщик не уверен в том, что данные действия программы являются ошибочными, ошибка показалась слишком незначительной, тестировщик считает, что ошибку не будет исправлена, тестировщика просили не документировать больше подобные ошибки).
8.Ошибка выявлена и забыта.
Описываются ошибки использования результатов тестирования. По-моему, раздел следует объединить с предыдущим. Выделяются подпункты: не составлен итоговый отчет; серьезная проблема не документирована повторно; не проверено исправление; перед выпуском продукта не проанализирован список нерешенных проблем.
Необходимо заметить, что изложенные в 2-х последних разделах ошибки тестирования требуют для устранения средств автоматизации тестирования и составления отчетов. В идеальном случае, эти средства должны быть проинтегрированы со средствами и технологиями проектирования ПО. Они должны стать важными инструментальными средствами создания высококачественного ПО. При разработке средств автоматизированного тестирования следует избегать ошибок, которые присущи любому ПО, поэтому нужно потребовать, чтобы такие средства обладали более высокими характеристиками надежности, чем проверяемое с их помощью ПО.
Меры по повышению надежности программного обеспечения
Лучшим и самым оптимальным способом (если не брать во внимание научно-технический прогресс и постоянное развитие IT-технологий, которые способствуют повышению качества характеристик программ) повышения надёжности программного обеспечения является строжайший контроль продукции на выходе с предприятия.
В последние годы сформировалась комплексная система управления качеством продукции TQM (Totaly Quality Management), которая концептуально близка к предшествующей более общей системе на основе стандартов ИСО серии 9000. Система ориентирована на удовлетворение требований потребителя, на постоянное улучшение процессов производства или проектирования, на управление процессами со стороны руководства предприятия на основе фактического состояния проекта. Основные достижения TQM состоят в углублении и дифференциации требований потребителей по реализации процессов, их взаимодействию и обеспечению качества продукции. Системный подход поддержан рядом специализированных инструментальных средств, ориентированных на управление производством продукции. Поэтому эта система пока не находит применения в области обеспечения качества жизненного цикла программных средств.
Применение этого комплекса может служить основой для систем обеспечения качества программных средств, однако требуется корректировка, адаптация или исключение некоторых положений стандартов применительно к принципиальным особенностям технологий и характеристик этого вида продукции. Кроме того, при реализации систем качества необходимо привлечение ряда стандартов, формально не относящихся к этой серии и регламентирующих показатели качества, жизненный цикл, верификацию и тестирование, испытания, документирование и другие особенности комплексов программ.
Активные методы повышения надежности ПС совершенствуются за счет развития средств автоматизации тестирования программ. Сложность ПС и высокие требования по их надежности требуют выработки принципов структурного построения сложных программных средств, обеспечивающих гибкость модификации ПС и эффективность их отладки. К таким принципам в работе относят:
- модульность и строгую иерархию в структурном построении программ;
- унификацию правил проектирования, структурного построения и взаимодействия компонент ПС;
- унификацию правил организации межмодульного интерфейса;
- поэтапный контроль полноты и качества решения функциональных задач.
Заключение
Несмотря на очевидную актуальность, вопрос надежности программного обеспечения не привлекает должного внимания. Вместе с тем, даже поверхностный анализ проблемы с теоретико-вероятностной точки зрения позволяет выявить некоторые закономерности.
В заключение можно подвести итог:
- В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать;
- Отказ программного обеспечения — это появление в нем ошибки;
- Надежность программного обеспечения — есть вероятность его работы без отказов в течении определенного периода времени, рассчитанного с учетом стоимости для пользователя каждого отказа.
Из данных определений можно сделать важные выводы:
- Надежность программного обеспечения является не только внутренним свойством программы;
- Надежность программного обеспечения — это функция как самого ПО, так и ожиданий (действий) его пользователей.
Основными причинами ошибок программного обеспечения являются:
- большая сложность ПО, например, по сравнению с аппаратурой ЭВМ;
- неправильный перевод информации из одного представления в другое.
Список использованной литературы
- ГОСТ 27.002 – 89. Надежность в технике. Основные понятия. Термины и определения. // М.: Издательство стандартов, 1990.
- ГОСТ Р ИСО/МЭК 9126 – 93. Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению. // М.: Издательство стандартов, 1994.
- ГОСТ 51901.5 – 2005. Менеджмент риска. Руководство по применению методов анализа надежности. // М.: Издательство стандартов, 2007.
- ГОСТ 28195 – 89. Оценка качества программных средств. Общие положения. // М.: Издательство стандартов, 1989.
- ГОСТ 27.310 – 95. Надежность в технике. Анализ видов, последствий и критичности отказов. // М.: Издательство стандартов, 1995.
- ГОСТ 51901.12 – 2007. Менеджмент риска. Метод анализа видов и последствий отказов. // М.: Издательство стандартов, 2007.
- Братчиков И.Л. «Синтаксис языков программирования» Наука, М.:Инси, 2005. — 344 с.
- Дейкстра Э. Заметки по структурному программированию.- М.:Дрофа, 2006, — 455 с.
- Ершов А.П. Введение в теоретическое программирование.- М.:РОСТО, 2008, — 288 с.
- Кнут Д. Искусство программирования для ЭВМ, т.1. М.: 2006, 735 с.
- Коган Д.И., Бабкина Т.С. «Основы теории конечных автоматов и регулярных языков. Учебное пособие» Издательство ННГУ, 2002. — 97 с.
- Липаев В. В. / Программная инженерия. Методологические основы. // М.: ТЕИС, 2006.
- Майерс Г. Надежность программного обеспечения.- М.:Дрофа, 2008, — 360 с.
- Рудаков А. В. Технология разработки программных продуктов. М.:Издательский центр «Академия», 2006. — 306 с.
- Тыугу, Э.Х. Концептуальное программирование. — М.: Наука, 2001, — 256 с.
- Хьюз Дж., Мичтом Дж. Структурный подход к программированию.-М.:Мир, 2000, — 278 с.
- Разработка клиент-серверного приложения по работе с базой данных «Локомотивное депо «
- Анализ особенности управления мотивацией сотрудников на предприятиях гостиничного и ресторанного бизнеса на примере АО ТГК «Вега»
- СУЩНОСТЬ И СОДЕРЖАНИЕ БАНКОВСКОГО МАРКЕТИНГА
- Оформление и ведение учета операций с сомнительными, неплатежеспособными и имеющими признаки подделки денежными знаками
- Виды, понятия, задачи оплаты труда на предприятии
- ценообразование на услуги фитнес-клубов (Российский рынок фитнес-услуг)
- Место и роль спортивной индустрии в экономике России (Теоретические аспекты индустрии спорта)
- Влияние кадровой стратегии на работу службы персонала. (СОДЕРЖАНИЕ И СУЩНОСТЬ КАДРОВОЙ СТРАТЕГИИ)
- Эффективный лидер и его команда (Виды лидерства)
- Межфирменная научно-техническая кооперация
- Прогнозирование эффективности реальных инвестиций коммерческого банка. Анализ инвестиционной деятельности ПАО «Сбербанк»
- Страхование и его государственное регулирование в РФ
Функционирование любой программы можно рассматривать как обработку потока данных, передаваемых от входа в программу к ее выходу (см. п. 13.1). Входные данные последовательно используются для определения ряда промежуточных результатов вплоть до получения необходимого набора выходных данных. Задача тестирования и анализа потока данных состоит в установлении корректности их обработки и в выявлении ошибок в тестируемой программе. Эта задача может решаться статически — без исполнения программы (анализом по ее тексту) и динамически — путем реального исполнения программы на ЭВМ в машинных кодах при различных исходных данных.
Наборы действий по преобразованию исходных данных в выходные могут быть формализованы диаграммами потоков данных (DFD — Data Flow Diagrams). Для этого применяется система графических элементов, содержащих квадратики с описаниями сущностей и номерами, а также соединяющие их стрелки процессов:
— внешние сущности — объекты, являющиеся источниками или потребителями информации, идентифицируемые их содержанием и номерами;
— процессы, перемещающие объекты от одного действия к другому, преобразующие исходные данные в результирующие;
13.6. Тестирование обработки потоков данных программными компонентами
— накопители объектов или данных, где временно они размещаются на хранение;
— потоки данных — информация, передаваемая от источника к потребителю.
Для построения DFD-диаграмм формализованы синтаксис и семантика графических элементов: отражающих движение объектов — процедуры программ; описаний внешних сущностей — источников и потребителей данных; их хранения. Рекомендуется вначале определять набор действий, описывающих, что должны выполнять процедуры программы. Затем строить модель окружения — внешние сущности, порождающие процессы и специфическое поведение при обработке данных. Наборы простейших DFD-диаграмм — операторов программы, объединяются в иерархические структуры, отражающие потоки данных в программных модулях или функциональных компонентах из ряда модулей.
Данные, участвующие в вычислениях, на языках программирования высокого уровня определены явно по имени, типу, способам доступа и использования. Это позволяет рассматривать программу в виде мульти-графа, заданного структурой передач управления (потоком управления) и графом преобразования данных, участвующих в вычислениях (поток данных). Пересечение потока управления и потока данных осуществляется в операторах ветвления: проверки условий и циклах. Совместный анализ потоков управления и данных позволяет проверять корректность реализации областей определения переменных на маршрутах исполнения программы.
Последствия ошибок в программе могут проявляться как малые изменения некоторых переменных в процессе вычислений и как полное искажение или отсутствие на выходе требующихся величин. Тестирование программного модуля целесообразно проводить на упорядоченных наборах данных с учетом степени их влияния на выходные результаты. С этой позиции для последующего анализа целесообразно выделить два вида обработки данных:
— полностью изменяющей область определения и значения результатов обработки;
— изменяющей результаты в пределах некоторой ограниченной, правильной области определения.
Лекция 13. Верификация, тестирование и оценивание корректности компонентов
Первому виду обработки соответствуют исходные данные в критических точках и на границах областей изменения переменных. При таких критических значениях может изменяться маршрут исполнения программы, вследствие чего возможно наибольшее изменение результатов. Поэтому обычно тестирование обработки данных, прежде всего, направлено на проверку исполнения программ при значениях переменных, влияющих на выбор маршрута и логику функционирования программ (стратегия выделения областей переменных). Граничные условия — это ситуации, возникающие в непосредственной близости к границам областей коренного изменения обрабатываемых переменных. Число таких критических значений каждой переменной может быть на несколько порядков меньше, чем число значений по всей внутренней части области изменений этой величины.
Большинство критических значений (предикатов) может существенно влиять на результаты и подлежит наиболее тщательному тестированию. В этой части тестирование обработки данных по содержанию близко к тестированию структуры программы (см. п. 13.4). При этом виде тестирования маршруты формируются в процессе анализа и обработки данных на последовательных операторах условий в тексте программы. Набор сочетаний исходных данных в тестах непосредственно влияет на степень охвата тестированием из полного набора участков программы. Путем сопоставления проверенных маршрутов с маршрутами, выделенными по графу программы при различных критериях, можно оценивать достигнутую полноту тестирования модуля и приблизительно степень его корректности.
Второму виду обработки соответствуют данные в ограниченной (или неограниченной) области определения, которая может делиться на некоторое множество сопрягающихся областей (подобластей). Изменение данных внутри такой области не влияет на маршрут исполнения программы. Поэтому для проверки функционирования программы из всего множества значений достаточно использовать при тестировании только несколько значений внутри и вблизи границ области. Количество величин, используемых для тестирования при обработке этого вида, может быть на несколько порядков меньше полного числа значений каждой переменной в области. В процессе тестирования проверяется точность осуществляемых вычислений, правильность масштабирования и размерности обрабатываемых величин, корректность формирования логических величин. При этом
13.6. Тестирование обработки потоков данных программными компонентами
тестирование должно охватывать всю область изменения каждой обрабатываемой переменной и каждой результирующей величины.
При анализе обработки данных в пределах областей их определения методы тестирования целесообразно применять упорядоченно в следующей последовательности:
— тестирование при значениях данных, определяющих маршруты исполнения программы (стратегия областей);
— тестирование корректности записи и считывания переменных при вычислениях и полноты состава выходных данных на всех маршрутах исполнения программы;
— тестирование точности результатов вычислений и корректности обработки каждой переменной;
— тестирование на полное соответствие спецификации требований состава, значений и точности выходных данных.
В приведенной последовательности частные методы тестирования позволяют, прежде всего, выявлять первичные ошибки, которые способны искажать результаты в наибольшей степени. При ограниченных ресурсах и такой последовательности тестирования в программе могут оставаться ошибки, наименее влияющие на корректность выходных данных. На основе таких проверок может оцениваться степень охвата тестированием всех условий, определенных в спецификации, и дополнительное тестирование следует проводить только при отдельных недостаточно проверенных входных данных.
Тестирование при значениях данных, определяющих маршруты исполнения программы (стратегия областей). Маршруты последовательности обработки данных могут зависеть от любых типов анализируемых величин. Одной из задач тестирования является проверка сопоставимости сравниваемых типов величин и идентичности условий их кодирования (разрядности, масштабов). Критические значения — предикаты, влияющие на выбор маршрутов, во многих случаях не являются фиксированными, а формируются при обработке данных и/или сравнении нескольких переменных. При этом предикаты могут образовываться во всей области изменения каждой из переменных, например, когда они оказываются равными или отличаются на некоторую постоянную величину.
Предикаты, определяющие выбор маршрутов исполнения программы, могут формироваться в результате вычислений на линейных участках
Лекция 13. Верификация, тестирование и оценивание корректности компонентов
программы. Эти участки в среднем невелики и содержат около 5—10 строк текста программы. Каждая ограниченная область исходных данных соответствует определенному маршруту в программе. Граница области определяется интерпретациями предикатов по маршруту и состоит из набора участков границы, каждый из которых определяется единственным, простым предикатом, выбирающим дугу маршрута в графе программы. Каждый участок границы области может быть открытым или закрытым в зависимости от оператора условий в предикате. Закрытый участок границы принадлежит ограничиваемой области и формируется предикатами с операторами <, > или = . Открытый участок границы не входит в состав области и формируется операторами < , > и Ф. Общее число предикатов в маршруте — это верхний предел числа граничных участков области входных переменных данного маршрута, так как некоторые предикаты маршрута могут в действительности не создавать граничных участков. Такие случаи возникают, когда предикат требуется для нескольких путей, и в некоторых из них повторно анализируется на маршруте.
Таким образом, программа по отношению к потоку данных может рассматриваться, прежде всего, как выполняющая разделение пространства исходных данных на области, каждая из которых соответствует одному исполняемому маршруту. Ошибки в программе могут быть обусловлены модификацией границы области определенного маршрута, приводящей к расширению или сужению пространства исходных данных соответствующего маршрута. Кроме того, деформация границ областей может приводить к ошибкам уничтожения некоторых областей и потери соответствующих им маршрутов. Причинами таких ошибок могут быть искажения операторов анализа условий или искажения в процессе вычисления значений предикатов при правильном содержании оператора условия. Искажения операторов анализа условий может приводить как к деформации границы области, так и к появлению новых границ или их уничтожению, вследствие чего могут разделяться или сливаться области.
Сложность тестов линейно растет с увеличением размерности пространства исходных данных (числа требований или переменных) и с ростом числа предикатов на маршрутах. Для многих типовых модулей сложность тестов оказывается допустимой для практически полной проверки модуля. Ограничения метода проверки областей могут проявляться при
13.6. Тестирование обработки потоков данных программными компонентами
сложных организациях циклов, когда резко возрастает число маршрутов и анализируемых условий.
Тестирование корректности определения и использования данных на маршрутах исполнения программы. Если маршруты исполнения программы соответствуют допустимым областям изменения входных данных, то целесообразно проверять корректность основных операций обработки данных на выделенных маршрутах. Каждая величина на маршруте исполнения программы считывается из памяти, и после использования для вычислений записывается в память ЭВМ для хранения и последующей обработки. Чередование операций чтения и записи переменных может быть нарушено в результате ошибок в программе. Для выявления таких ошибок проводится тестирование корректности записи и считывания реальных данных или статический анализ этих операций по исходному тексту программы.
Тестирование корректности обработки каждой переменной и точности результатов вычислений. Когда показано, что сочетания данных и их области определения соответствуют корректному формированию маршрутов в программе, а также нет явных ошибок в последовательностях определения и использования каждой переменной, целесообразно провести тестирование корректности обработки каждой переменной и точности вычислительной части программы. Этот вид тестирования производится преимущественно с вещественными и целыми величинами во внутренней части их областей определения при операциях с фиксированной точкой. Кроме того, может выполняться дополнительный контроль точности вычислений при граничных значениях, ранее использовавшихся для тестирования маршрутов по областям определения.
Множество тестовых значений для проверки вычислений при простых числовых переменных целесообразно строить упорядоченно с учетом следующих правил:
— входные тестовые данные в области гладкого изменения, зависящих от них результатов, должны принимать, по крайней мере, значения, близкие к наибольшим и наименьшим, а также одно-два промежуточных значения;
— тестирование должно проводиться при всех особых значениях входных переменных — в точках резкого возрастания или разрыва производных, при нулевых, единичных и предельно малых численных значениях;
Лекция 13. Верификация, тестирование и оценивание корректности компонентов
— входные тестовые значения должны обеспечивать проверку программы при выходных результатах, имеющих особые точки резкого изменения или разрыва производных;
— если значения некоторой переменной зависят от значений другой переменной, то их необходимо тестировать при особых значениях сочетаний переменных (равенство обеих переменных, малое и предельно большое их различие, нулевые и единичные значения).
Таким образом, для каждой простой числовой переменной, кроме трех точек вблизи и на границе области определения, обычно необходимо тестирование программы в 3—4 промежуточных и в 2—5 особых точках значений входных данных. При 10 входных переменных и сложных вычислениях в программном модуле для тестирования вычислений может потребоваться до 50 тестовых значений. Группируя и упорядочивая тестовые значения разных переменных, их общее количество можно сократить до 5—10 тестовых наборов.
Тестирование —
процесс выполнения программ с целью
обнаружения факта на-личия ошибок.
К наиболее
распространенным ошибкам общего
(несинтаксического) характера, остающимся
в программах после выполнения
синтаксического контроля, можно отне-сти
следующие:
• логические
ошибки (например, неполный учет возможных
условий или не-верное указание ветви
алгоритма после проверки условия);
• ошибки при
программировании циклов (например,
неверные границы начала и конца);
• ошибки при работе
со структурами данных (например,
отсутствие исходной инициализации или
обнуления элементов структуры);
• ошибки в описании
переменной (например, отсутствие
инициализации пере-менной);
• ошибки ввода-вывода.
На входе процесса
тестирования три потока:
• текст программы;
• исходные данные
для запуска программы;
• ожидаемые
результаты.
8. Основные стратегии тестирования, их характеристики, достоинства и недостатки. Основные типы ошибок, выявляемых каждой из стратегий.
Существуют две
основные стратегии тестирования:
• тестирование
программы как «черного ящика»
(функциональное тестирова-ние), при
котором программа рассматривается как
объект, внутренняя струк-тура которого
неизвестна;
• тестирование
программы как «белого ящика» (структурное
тестирование) подразумевает знание
исходного кода программы и полный доступ
к нему.
При тестировании
программы как «черного ящика» исследуется
работа каждой функции программы в
соответствии со спецификацией. Основное
место приложения тестов «черного ящика»
— интерфейс ПС.
Тесты функционального
тестирования демонстрируют:
• выполнение
функций программы;
• корректность
ввода исходных данных;
• процесс получения
результатов.
При тестировании
«черного ящика» принимаются во внимание
специфициро-ванные системные характеристики
программ, а их внутренняя логическая
структура игнорируется. Исчерпывающее
тестирование, как правило, невозможно.
Например, ес-ли в программе 10 входных
величин и каждая принимает по 10 значений,
то потребует-ся 1010 тестовых вариантов.
Тестирование «черного ящика» не реагирует
на многие программные ошибки.
Тестирование
«белого ящика» исследует корректность
работы внутренних эле-ментов программы
и связей между ними. Объектом тестирования
здесь является не внешнее, а внутреннее
поведение программы. Проверяется
корректность построения всех элементов
программы и правильность их взаимодействия
друг с другом. Обычно анализируются
управляющие связи элементов, реже —
информационные связи. Тести-рование по
принципу «белого ящика» характеризуется
степенью, в какой тесты выпол-няют или
покрывают логику (исходный текст)
программы. Исчерпывающее тестирова-ние
также затруднительно.
Существуют также
разновидности тестирования.
Детерминированное
тестирование, при котором контролируется
каждая комби-нация исходных эталонных
данных и соответствующая ей комби¬нация
результатов функционирования программ.
На практике полное де¬терминированное
тестирование обычно нереализуемо.
Стохастическое
тестирование, при котором исходные
тестовые данные берутся случайным
образом, как правило, с использованием
статистиче¬ского распределения.
Ручное тестирование,
которое проводится без исполнения
тестируемой про-граммы на компьютере.
Тестирование
программ в процессе разработки
Поскольку в процессе
разработки приходится тестировать еще
не завершенную программу, все подходы
к тестированию делятся на две группы.
Тестирование
сверху вниз. Применяется, если программа
разрабатывается сверху вниз. В данном
случае используются «заглушки» —
фрагменты кода, имитирующие еще не
написанные части программы.
Тестирование снизу
вверх. При этом, как правило, дополнительно
должна быть создана небольшая программа—
«драйвер», организующая взаимодействие
уже напи-санных модулей.
Отладка программы
Когда фиксируется
ошибка — начинается отладка. Отладка
— процесс локали-зации и устранения
ошибок. Такой процесс носит творческий
характер, плохо форма-лизуем и непредсказуем
по времени. Заранее неизвестно, сколько
потребуется времени на поиск места
дефекта и исправление ошибки. Такая
неопределенность приводит к большим
трудностям в планировании действий.
Тем не менее, основной идее отладки
(базирующейся на анализе данных) можно
придать вид следующего алгоритма:
1.Изучить исходные
и полученные результирующие данные.
2.Сформулировать
некоторую гипотезу, которая объясняет
получение таких ре-зультирующих данных.
3.Подготовить новые
исходные данные и провести эксперимент,
который по-зволит доказать или опровергнуть
гипотезу.
Тестовые данные
Для тестирования
программ методом черного ящика готовятся
определенные группы тестов.
Для тестирования
классов эквивалентностей. Классы
эквивалентностей позво-ляют вместо
большого количества тестов использовать
лишь их не¬большое подмноже-ство. Каждый
тест представляет набор тестов, на
ко¬торых программа ведет себя одина-ково.
Существует два основных типа классов
эквивалентностей:
• Класс корректных
тестовых случаев, отражающих типичную
«нормальную» ситуацию.
• Класс тестов,
содержащих ненормальную ситуацию, т.
е. описывающих си-туацию, которой быть
не должно.
Для тестирования
граничных значений.
Для анализа
причинно-следственных связей. Эти тесты
применяются для про-грамм, в которых
взаимодействуют объекты.
Для тестирования
тех утверждений, которые приводятся в
документации.
Для оценки
результатов тестирования используются
эталонные («золотые») фай-лы, которые
содержат ожидаемые результаты работы
программы (эта¬лонные результа-ты).
Основные варианты получения эталонных
результатов таковы:
— использование
справочников;
— вычисление
вручную;
— использование
результатов, полученных при помощи
другой программы, ко-торой мы доверяем.
Тестовое покрытие
— это набор тестов, покрывающих программу
(каждый ли-нейный участок). Тестовое
покрытие важно знать, чтобы определить
участки кода, пропущенные при тестировании.
Особый важный
класс составляют тесты, измеряющие
производительность. Существуют
специальные группы и компании, которые
разрабатывают такие тесты.
Структурное
тестирование программного обеспечения
Объектом тестирования
является внутреннее поведение программы.
Проверяет-ся корректность построения
всех элементов программы и правильность
их взаимодей-ствия друг с другом. Обычно
анализируются управляющие связи
элементов, реже — информационные связи.
Тестирование по принципу «белого ящика»
характеризуется степенью, в какой тесты
выполняют или покры¬вают логику (исходный
текст) програм-мы.
Особенности
тестирования «белого ящика»
Обычно тестирование
«белого ящика» основано на анализе
управляющей струк-туры программы.
Программа считается полностью проверенной,
если проведено ис-черпывающее тестирование
маршрутов (путей) ее графа управления.
В этом случае
формируются тестовые варианты, в которых:
— гарантируется
проверка всех независимых маршрутов
программы;
— проходятся ветви
True, False для всех логических решений;
— выполняются все
циклы (в пределах их границ и диапазонов);
— анализируется
правильность внутренних структур
данных.
Недостатки
тестирования «белого ящика»:
1. Количество
независимых маршрутов может быть очень
велико. Например, ес-ли цикл в программе
выполняется k раз, а внутри цикла имеется
п ветвлений, то коли-чество маршрутов
вычисляется по формуле
При n
= 5 и k = 20 количество маршрутов т = 1014.
Примем, что на разработку, выполнение
и оценку теста по одному маршруту
расходуется 1 мс. Тогда при работе 24 часа
в сутки 365 дней в году на тестирование
уйдет 3170 лет.
2.Исчерпывающее
тестирование маршрутов не гарантирует
соответствия про-граммы исходным
требованиям к ней.
3.В программе могут
быть пропущены некоторые маршруты.
Достоинства
тестирования «белого ящика» связаны с
тем, что принцип «белого ящика» позволяет
учесть особенности программных ошибок:
1.Количество ошибок
минимально в «центре» и максимально на
«периферии» программы.
2.Предварительные
предположения о вероятности потока
управления или дан-ных в программе часто
бывают некорректны. В результате типовым
может стать мар-шрут, модель вычислений
по которому проработана слабо.
3.При записи
алгоритма ПО в виде текста на языке
программирования возмож-но внесение
типовых ошибок трансляции (синтаксических
и семантических).
4.Некоторые
результаты в программе зависят не от
исходных данных, а от внутренних состояний
программы.
Каждая из этих
причин является аргументом для проведения
тестирования по принципу «белого ящика».
Тесты «черного ящика» не смогут
реагировать на ошиб¬ки таких типов.
Поможем в ✍️ написании учебной работы
При проведении структурного тестирования на основе управляющего графа программы используются следующие критерии:
· покрытие операторов (вершин графа) – заключается в выполнении каждого оператора программы хотя бы один раз. Этот критерий является весьма слабым (пропускает много ошибок), так как выполнение каждого оператора программы хотя бы один раз есть необходимое, но не достаточное условие для приемлемого тестирования по методу “белого ящика”;
· покрытие ветвей (решений) – при использовании этого критерия каждая дуга должна быть пройдена хотя бы один раз. Критерий покрытия решений обычно удовлетворяет критерию покрытия операторов, поскольку каждый оператор лежит на некотором пути.
· покрытие условий – каждое логическое условие в программе должно выполняться хотя бы один раз.
· покрытие условий/решений – поскольку критерии покрытия решений и условий не заменяют друг друга, поэтому их можно объединить, получив критерий покрытия условий/решений. Он требует такого набора тестов, чтобы все возможные результаты каждого условия в решении выполнялись по крайней мере один раз и все результаты каждого решения выполнялись по крайней мере один раз. Недостатком критерия покрытия решений/условий является невозможность его применения для выполнения всех результатов всех условий (некоторые условия могут быть скрыты другими условиями). Например, результаты условий при выполнении операций И и ИЛИ могут блокировать действия других условий. Так, если условие Иесть ложь, то никакое из последующих условий в выражении не будет выполнено. Аналогично, если условие ИЛИестьистина, то никакое из последующих условий в выражении не будет выполнено.
· комбинаторное покрытие условий – требует такого набора тестов, чтобы все возможные комбинации результатов условия в каждом решении выполнялись по крайней мере один раз. Слово возможные употреблено потому, что не все комбинации условий могут быть реализуемыми; например, в выражении (A>2) & (A<10) могут быть реализованы только три комбинации условий. Набор тестов, удовлетворяющий критерию комбинаторного покрытия условий, удовлетворяет также и критериям покрытия решений, покрытия условий и покрытия решений/условий;
· покрытие путей – каждый путь хотя бы один раз (это наиболее полный, но нереализуемый критерий);
· покрытие функций — каждая функция должна быть выполнена хотя бы один раз;
· покрытие вызовов – каждый вызов каждой функции хотя бы один раз.
Пример
if ( (A > 1) & ( B=0 ) ) then X:=X/A;
if ( (A = 2) Or ( X>1 ) ) then X:=X+1;
1) Покрытие операторов
a) Можно выполнить каждый оператор с помощью теста, который бы реализовал путь ace (A=2; B=0; X=3):
· Если в программе записано (A>1) OR (B=0) – Ошибка не обнаруживается!
· Если в программе (A=2) ! (X>0) – Ошибка не обнаруживается!
b) На пути abd все ошибки не обнаруживаются!
Покрытие ветвей
Покрытие решений может быть реализовано двумя тестами, покрывающими либо пути ace и abd, либо пути acdи abe. Если выбрать второе покрытие, то входами двух тестов являются: A=3; B=0; X=3(путь acd) и A=2; B=1; X=1(путь
abe). Эти тесты также недостаточны. Например, если выбрано первое покрытие (путь acd),путь, где Xне изменяется, будет проверен с вероятностью 50%. Если во втором условии имеется ошибка (например, X<1вместо X>1), то эта ошибка тестами не будет обнаружена!
Покрытие условий
В программе имеются 4 условия: A > 1, B = 0, A = 2 и X > 1. Следовательно, требуется достаточное число тестов, чтобы реализовать ситуации, где A>1, A£1, B=0 и B¹0 (первое условие) и A=2, A¹2, X>1, X£1(второе условие). Тесты, удовлетворяющие критерию покрытия условий, и соответствующие им пути:
· A=2; B=0; X=4(путь ace);
· A=1; B=1; X=1(путь abd)
Критерий покрытия условий обычно лучше критерия покрытия решений, поскольку оно может вызвать выполнение решений в условиях, не реализуемых при покрытии решений.
С другой стороны, критерий покрытия условий может не удовлетворять критерию покрытия решений. Для рассмотренного примера предложенные тесты покрытия условий покрывают результаты всех решений, но это случайное совпадение. Например, два альтернативных теста: A=1, B= 0, X=3 и
A=2, B=1, X=1покрывают результаты всех условий, но только два из четырех результатов решений (оба они покрывают путь abeи, следовательно, не выполняют результат истина первого решения и результат ложь второго решения).
При запуске конфигуратора или непосредственно при загрузке и обновлении базы данных в программе, пользователи могут столкнуться с появлением сообщения: «Ошибка формата потока» в 1С 8.3. Подобная проблема не редкость, встречается она уже на протяжении долгого времени, однако причин ее возникновения может быть несколько, поэтому нет единого метода по устранению неисправности.
В этой статье подробно рассмотрим, почему выдает ошибку формата потока в 1с 8.3 и как ее исправить.
Ошибка формата потока в 1С: Предприятие — причины возникновения
Прежде чем приступать к устранению проблемы, необходимо диагностировать причину возникновения ошибки формата потока в 1С: Предприятие. Всего есть 2 основные:
- Ошибка кэша. Для оптимизации и ускорения работы программы, а именно для снижения количество запросов к серверу, в 1С используется кэширование данных, которые хранятся на компьютере пользователя. Однако данные могут быть повреждены в результате нестабильного соединения с сервером. Например, если ПК был перезагружен во время создания файлов кэша, если пропало интернет-соединение, или был скачек напряжения.
- Битая информационная база. Проблема может также заключаться непосредственно в базе данных, которая открывается или обновляется. Она может содержать критические ошибки.
Если ошибка возникает при запуске программы, то с большой вероятность проблема именно в файлах кэша.
Если окно ошибки появляется при загрузке или во время обновления базы, то проблема скорее всего в ней.
Важно! Прежде чем пытаться устранить проблему необходимо создать резервную копию базы, чтобы в случае чего можно было вернуть все в исходное состояние.
Пишет «Ошибка формата потока» в 1С 8.3 при запуске – что делать
Если пишет «Ошибка формата потока» в 1С 8.3 при запуске программы, то необходимо очистить кэш. Сделать это можно следующим образом:
- Выйти из программы и убедиться, что все ее процессы завершены. Сделать это можно из диспетчера задач;
- Зайти в папки хранения кэша, расположенные в Windows 7 и выше по следующим путям:
C:UsersИмя ПользователяAppDataRoaming1C1cv8
C:Users Имя ПользователяAppDataLocal1C1cv8
Если папки не отображаются, то необходимо в настройках операционной системы включить отображение скрытых файлов и папок. - Удалить папки формата, как на скриншоте ниже.
Важно! Сделать это нужно из 2 разделов: Roaming и Local.
При запуске программы, произойдет соединение с сервером и повторная загрузка удаленных файлов.
Альтернативный способ: удалить базу из списка баз в окне запуска программы и добавить снова.
Ошибка формата потока 1С при загрузке базы или обновлении – что делать
Далее рассмотрим, что делать, если конфигуратор выдает: «Ошибка формата потока» в 1С при открытии базы, ее загрузке, во время или после обновления. Причина — в битой базе. Есть несколько действенных инструментов и способов по ее восстановлению.
Проверка физической целостности БД
Для исправления ошибок в базе данных можно воспользоваться утилитой для проверки физической целостности БД. Для этого необходимо:
- Перейти по следующему пути:
C:Program Files1cv88.3… (версия программы)bin
Путь может отличаться, если программа установлена на другой диск, в другой раздел. Для того, чтобы узнать папку установки можно посмотреть информацию о ее расположении в свойствах ярлыка; - Запустить файл chdbfl (сокращенно от: Check Data Base Files);
- Выбрать путь к базе данных, активировать галочку напротив пункта «Исправлять обнаруженные ошибки» и нажать кнопку «Выполнить».
Тестирование и исправление информационной базы
Также можно воспользоваться средством тестирования и исправления информационной базы из настроек программы:
- Запустить конфигуратор;
- Нажать на вкладку «Администрирование» в навигационном меню;
- Выбрать пункт «Тестирование и исправление»;
- Активировать необходимые проверки и режимы, поставить галочку напротив пункта «Тестирование и исправление» и нажать кнопку «Выполнить».
На проверку и исправление может уйди продолжительное время. После ее завершения, будет сформирован отчет о проделанных операциях.
Выгрузка из неработающей ИБ в новую
Весьма действенный способ исправления ошибки формата потока в 1С 8.3 – выгрузка информации из текущей ИБ в новую. Для этого нужно выполнить следующие действия:
- Запустить конфигуратор;
- Открыть вкладку «Администрирование»;
- Выбрать пункт «Выгрузить информационную базу»;
- Указать имя dt-файла, в который будет производиться выгрузка и нажать «Сохранить»;
- Снова открыть вкладку «Администрирование» и выбрать пункт «Загрузить информационную базу»;
- Указать путь к новой базе.
Выгрузка и загрузка данных XML
Для исправления ошибки формата потока в 1С 8.3 также можно произвести выгрузку и загрузку данных через XML-файл.
Рекомендации
Если описанные выше методы не дали результат, то дополнительно необходимо:
-
- Если используется сетевая версия, то нужно проверить, одинаковая ли версия платформы на устройствах пользователей, подключенных к информационной базе. Если нет, то следует всем установить актуальные версии;
- Выполнить деактивацию антивирусных программ на ПК, в том числе защиту от вирусов и угроз Windows, а также брандмауэр. Если будет результат, то вновь запустить их, при этом добавив путь к файлам программы в список исключений;
- Если проблема с SQL, то нужно удалить журнал базы 1С из папки:
C:Program Files1cv82srvinfo - Удалить платформу 1С и установить заново.
Не нашли ответ? Тогда воспользуйтесь формой поиска:
Одной из самых неприятнейших встречающихся ошибок при работе с 1С 8.3 или 8.2 является «Ошибка формата потока». Причин ее появления может быть множество и их не всегда легко установить. При этом окно уведомления об ошибке далеко не эталон информативности.
Первым делом попробуйте подумать над тем, что же всё-таки могло привести к данной неполадке.
Наиболее распространенные причины
Самой распространенной причиной ошибки формата потока является неправильная обработка кэша программой 1С 8. Вспомните, не было ли перебоев электропитания до ее возникновения, обновления конфигурации? Корректно ли был завершен сеанс работы пользователя? Зачастую в таком случае ошибка формата потока будет возникать не на всех компьютерах. Проблемы лучше предупреждать, чем потом исправлять, поэтому рекомендуется использовать источники бесперебойного питания на компьютерах.
Ошибка может появляться на всех компьютерах, но при этом только при чтении каких-либо данных, например: при формировании определенного отчета, при загрузке базы, при запуске конфигуратора. В таком случае вероятнее всего, что эти данные были повреждены и программа не может обработать «битую» информацию.
Как исправить ошибку формата потока
- Первым делом попробуйте . Если на одном компьютере программа работает нормально, а на другом появляется ошибка формата потока, то, скорее всего этот способ именно для вас.
- В том случае, если очистка кэша не помогла, попробуйте открыть информационную базу в режиме конфигуратора и запустите .
- Если вам не удалось зайти в конфигуратор, но база файловая – воспользуйтесь ChDBFl.exe. Данная утилита является аналогом тестирования и исправления ошибок в конфигураторе, но более простым.
- Убедитесь, что все текущие пользователи данной информационной базы используют одинаковую версию платформы. Если версии различаются, то установите всем актуальные.
- Если 1С запускается в режиме «Предприятие», то выгрузите все данные при помощи универсальной выгрузки/загрузки в новую базу.
- Отключите, а при необходимости удалите все фаерволы и антивирусы.
- Если данная информационная база клиент – серверная, то проверьте, хватает ли дискового пространства на сервере в папке для хранения временных данных.
- Удалите платформу 1С (через панель управления) и установите заново.
- Если информационная база открывается в конфигураторе, попробуйте выгрузить ее в файл *.dt и загрузить в пустую.
- Воспользоваться HEX-редактором, заменив содержимое чистой базы содержимым той, в которой произошла ошибка.
Если все эти способы вам не помогли, что маловероятно, то тут только бубен в помощь или квалифицированный специалист.
При написании программ нередко возникает необходимость выполнить какие-либо действия при запуске или завершении работы программы. С «обычными» программами в этом случае всё просто. Необходимо обработать соответствующие события или поместить необходимый код перед загрузкой главного окна или отображением консольного «интерфейса».
Но, что делать в случае с 1С? Если в 1С Предприятие подобный функционал?
В 1С есть возможность выполнения кода при запуске и остановке приложения. Она реализована в виде специальных событий обработка которых доступна в модуле управляемого приложения.
- ПередНачаломРаботыСистемы
1С Предприятие запускается, но рабочее окно конфигурации, ещё не появилось на экране; - ПриНачалеРаботыСистемы
Приложение уже запущено; - ПередЗавершениемРаботыСистемы
Событие возникает перед началом процесса завершения работы приложения. Рабочее окно ещё отображается на экране; - ПриЗавершенииРаботыСистемы
Рабочее окно уже закрылось и выполняются заключительные действия перед полным завершением работы.
Если в режиме конфигуратора щёлкнуть правой кнопкой мыши на корне конфигурации и выбрать в открывшемся меню пункт «Открыть модуль управляемого приложения», откроется стандартное окно для редактирования кода, в котором содержится код вышеназванного модуля.
Для обработки требуемых событий в модуле управляемого приложения нужно описать соответствующие процедуры, как это показано в примере ниже:
1С (Код)
Процедура ПередНачаломРаботыСистемы(Отказ)
// Делаем что-то
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
// Делаем что-то
КонецПроцедуры
Процедура ПередЗавершениемРаботыСистемы(Отказ)
// Делаем что-то
КонецПроцедуры
Процедура ПриЗавершенииРаботыСистемы()
// Делаем что-то
КонецПроцедуры
Обратите внимание!
Имена процедур должны строго соответствовать названиям тех событий, которые они обрабатывают.
Процедура ПередЗавершениемРаботыСистемы принимает единственный параметр – «Отказ» (булево, значение по умолчанию «ложь»). Этот параметр определяет отмену завершения работы конфигурации. То есть, если перед завершением работы выполняются некоторые проверки и их результаты неудовлетворительны, можно отменить завершение работы просто присвоив параметру «Отказ» значение «истина».
Параметр «Отказ» в процедуре ПередНачаломРаботыСистемы, имеет аналогичное назначение. Если ему присвоить значение «истина», приложение просто не запустится.
Таким образом можно не только выполнять нужные действия, но и управлять самим процессом запуска и завершения работы.
Ограничения
- Весь код размещённый в модуле управляемого приложения работает только на стороне клиента. Поэтому, если при обработке вышеперечисленных событий необходимо обратиться к серверу, то для этих целей следует создать отдельный общий модуль и установить в его настройках работу на стороне сервера и доступность для вызова сервера на стороне клиента (то есть в свойствах установить флажки «Сервер» и «Вызов сервера»).
- Также не рекомендуется при запуске и завершении приложения выполнять громоздкие операции. И дело здесь не только в увеличении времени обработки событий вследствие больших объёмов данных или сложности алгоритмов. Модуль управляемого приложения компилируется при запуске программы. Поэтому, чем больше он загружен функционалом, тем дольше приложение будет запускаться.
Подобные операции лучше выполнять по запросу во время работы или в регламентных заданиях.
Ошибка формата потока 1С Предприятие — одна из самых распространенных ошибок, возникающих при работе с 1С программами. Из публикации вы узнаете, как исправляется ошибка формата потока 1С Предприятие 8.3 без обращения к администраторам или партнерам 1С, проверенными на практике способами.
Работаешь в программе 1С, все замечательно, а тут неизвестно из-за чего появилась небольшая форма с уведомлением «Ошибка формата потока» и с вариантами «Завершить работу» в программе или «Перезапустить» программу. Перезапуск, естественно, ни к чему не приводит, ошибка появляется снова…
…из публикации вы узнаете:
Ошибка формата потока
1С Предприятие 8.3 — одна из самых распространенных в работе 1С:Предприятие и при этом одна из самых не информативных. Вылетает окошко с сообщением об ошибке и никакой дополнительной информации, что и где сломалось и как починить. Поэтому, исправление ошибки формата потока 1С начнем с вычисления причин появления этой ошибки, что бы лучше знать «врага» в лицо.
Почему возникает ошибка формата потока 1С Предприятие 8.3
Что бы выяснить причины появления ошибки формата потока 1С 8.3 необходимо рассмотреть область данных 1С платформы. Тут хотелось бы отметить, что платформа 1С во время работы использует:
- жесткий диск
, на который во время работы платформы 1С сохраняются временные файлы настроек, логи, сервисная и пользовательская информация; - сеть
(в случае сетевой работы), по средствам которой происходит обмен пакетами данных с другими компьютерами или серверами сети (в случае клиент-серверного варианта работы 1С Предприятие).
Причем, платформа 1С Предприятие использует указанные ресурсы постоянно.
А теперь представьте, что произошел скачек электричества, поэтому часть сетевого пакета исказилась и была записана в некорректной форме или отключили электричество и данные, которые писались в кеш 1С записались частично, что в этом случае произойдет?
Первым делом необходимо сделать копию информационной базы 1С на случай порчи рабочей базы при её исправлении.
Эффективный способ исправить ошибку формата потока 1С Предприятие 8.3 для файловых баз данных 1С
Если вы работая в файловой версии 1С Предприятие
, стали жертвой этой напасти, то хочу предложить способ от её избавления, работающий в 78% случаев.
- Для этого необходимо зайти и удалить все файлы и папки, КРОМЕ ФАЙЛА ДАННЫХ 1Cv8.CD
. Операция требует сноровки, поэтому будьте осторожны, не переборщите с удалением! 🙂
Путь до каталога базы данных 1С Предприятие 8.3 вы можете посмотреть при запуске программы — он будет расположен внизу окна запуска 1С Предприятие 8.3.
По поводу удаленных файлов не переживайте — это все служебные файлы, которые будут созданы заново в правильном формате при следующем запуске 1С Предприятие 8.3.
- Если предложенный способ не помог, то для исправления файловых баз в 1С Предприятие 8.3 предусмотрена утилита chdbfl.exe. Проверьте структуру вашей базы, воспользовавшись этой утилитой.
Ошибка формата потока 1С 8.3 не исчезла? Плохо! Читаем дальше.
Стандартные шаги по исправлению ошибки формата потока 1С Предприятие 8.3
На эти темы были написаны подробные публикации, поэтому тут мне добавить нечего. Читайте статьи и делайте всё в точности по написанному.
Если после проделанных с базой манипуляций «ошибка формата потока» все равно появляется, в этом случае пробуйте ещё один проверенный способ:
- выгрузите вашу базу с файл *.dt, создайте пустую базу 1С и загрузите в неё выгруженный до этого файл *.dt. В выполнении этой операции вам поможет статья про .
На этом шаге исправить ошибку формата потока 1С Предприятие 8.3 получается в 94% случаев. Но что делать есть не спало???
Нестандартные способы исправить ошибку формата потока 1С Предприятие 8.3
До этого были проделаны все стандартные операции по исправлению данной ошибки, и если до этого момента ошибка не устранена, значит придется заняться «творчеством». Ещё этот процесс называют «танцами с бубнами» или «шаманством»… Поэтому, если до этого вы не «танцевали», то ошибка формата потока 1С Предприятие 8.3 может вам составить отличную пару. Итак, продолжим:
- Пробуйте загрузить файл *.dt в новой базе данных, созданной на другом компьютере
. Этим вы исключите вероятность некорректно работающего железа или программ компьютера, где находится база. - Удалите (именно УДАЛИТЕ через Установку и удаление программ) платформу 1С и установите заново, желательно новейшую версию. Исключаем некорректно работающие исполняемые файлы платформы, которые могли быть подпорчены вирусами или «посыпавшимися» секторами жесткого диска или другими способами.
- Обновите конфигурацию на следующий релиз или загрузите текущую конфигурацию из файла *.cf с полным замещением объектов.
- Отключите брандмауэр и антивирусы. Существует вероятность, что исполняемый файл был замечен в подозрительной активности антивирусом и помещен в карантин или остался под жестким контролем с блокировкой «опасных» действий. В любом случае — исключаем вариант карантина антивирусов.
- Удалите временные файлы на компьютере. Они находятся в нескольких местах:
- В профиле пользователя, для поиска введите %Temp%
в адресной строке проводника. - В папке C:WindowsTemp
- Иногда на диске C:Temp
- Ещё один способ был однажды применен, когда ничто не помогало — создали полный начальный образ базы данных и потом отвязали его от РИБ, сделав независимым. Получили ту же базу, пропустив начальную через механизмы РИБ (как через мясорубку 🙂) .
Ещё пара способов исправить ошибку формата потока 1С Предприятие 8.3
Есть ещё пара способов с хакерским подходом:
- загрузить файл *.dt в клиент-серверную базу данных (если база с ошибкой формата потока клиент-серверная, то делаем на ней, предварительно сделав копию) и очистить файл от всех записей в таблице «configsave
» через программную консоль. - в утилите Tool_1CD есть проверка формата потока. Скачайте эту утилиту и проверяйте поток.
Описанные в публикации способы исправления ошибки формата потока были проверены на практике — работают!
Надеюсь, что ничего не забыл. Если вдруг всплывет в памяти что-то ещё, то обязательно дополню публикацию.
Всем читателям отличного настроения! Пусть ошибка формата потока вас обходит стороной!!! 😉
Если вам что-то не понятно в вопросе как исправляется ошибка формата потока 1С:Предприятие 8.3, то вы можете задать вопрос в комментариях к статье или на .
Что бы не потерять статью в просторах интернета — сохраните её к себе в социальные сети или в закладки.
Ошибка формата потока 1С — методика исправления
В информационных базах на платформе 1С могут возникнуть множество различных ошибок:
нарушение логической/физической целостности базы, ошибки пользователей, «кривой» код разработчика и многое другое.
Причин может быть множество: отключили свет, и не было источника бесперебойного питания, или вечер пятницы удался, и пользователь уже и не может вспомнить в понедельник, что он натворил такого.
Во-первых, стоит задать несколько уточняющих вопросов пользователю:
1) Релизы платформы/конфигурации.
2) Полный текст сообщения об ошибке. Пользователи имеют досадное свойство не читать целиком такие сообщения, а возможно в нем содержится рекомендация к устранению неисправности.
3) Как давно возникла и при каких обстоятельствах появляется. Не воспроизводимые ошибки, которых мы ранее не встречали, мы наврядли сможем исправить.
4) Возникает ли если запустить 1с с другого компьютера/от другого пользователя? Это даст нам пищу для размышлений — сможет ли помочь очистка кэша, настройка прав, или очистка настроек пользователя.
Теперь немного о самих ошибках и том как их решать.
Общее:
Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.).
Распространенный пример — ломаная платформа. Один из патчей взламывает конкретную версию платформы, поэтому после установки новой версии платформы и попытке зайти в базу можно увидеть окно «Не обнаружено свободной лицензии».
Если Вы встретили ошибку в первый раз — возможно, кто-то уже ее встречал —
поищите в google, возможно кто-то уже с этим сталкивался и решил проблему, и Вы не потратите лишних пару часов своего времени.
Релиз конфигураций должен быть актуальным (в первую очередь для конфигураций из которых сдается регламентированная отчетность), неспроста на линии консультаций практически всегда предлагают вначале обновиться, а потом уже смотреть дальше.
Актуальный релиз платформы — у каждой конфигурации написано, какой релиз платформы рекомендован для работы с этой конфигурацией.
Технологический журнал позволяет протоколировать все события 1С:Предприятия (или часть, используя фильтр).
Про него можно прочитать и .
!!!ВАЖНО
Перед любыми действиями с базой — сделать архивную копию!
Если база не открывается в конфигураторе — скопировать папку с базой и выполнять все операции на копии!
1) База вообще не открывается ни в пользовательском режиме, ни в конфигураторе.
- Самое быстрое, что можно сделать — очистить временные файлы (удалить базу из списка баз и подключить заново)
Это действие не удалит временные файлы (кэш), а создаст новую папку для временных файлов базы, удалить файлы можно:
В Windows 7 в C:UsersИмя_ПользователяAppDataRoaming1C1Cv8x
В Windows XP C:Documents and SettingsИмя_ПользователяApplication Data1C1Cv8х
- Также можно попытаться зайти в базу от другого пользователя.
- Если база файловая, то стоит запустить утилиту для тестирования физической целостности базы chdbfl. Она находится в папке:
C:Program Files (x86)1cv88.x.x.xxxbinchdbfl.exe
- Если база sql-ная то тестирование средствами sql.
- Если ни то ни другое не помогло, то можно обновить платформу (см. под какой платформой работает релиз)
- Если не получилось ничего из перечисленного, можно воспользоваться программкой Tool_1CD.
2) Если база при запуске уходит в дамп.
- Отключить аппаратное ускорение видеокарты:
- Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».
- В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».
- В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».
- Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
- Откройте Панель управления (Пуск — Панель управления).
- Найдите и откройте элемент «Экран».
- В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».
- В открывшемся окне нажмите на ссылку «Дополнительные параметры».
- Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».
- В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.
В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.
- Если антивирус Касперский, то можно попробовать отключить самозащиту и переименовать файлы kloehk.dll и mzvkbd3.dll в папке Касперского. (Ошибка возникала на старых версиях 2011 года, но еще иногда встречается)
- Проверить соответствие релиза платформы/конфигурации.
- Попробовать зайти в базу с другой платформы.
3) База открывается в конфигураторе, но не хочет заходить в пользовательский режим.
- Очистка временных файлов
- Попытка зайти за другого пользователя
- chdbfl / тестирование средствами sql
- Тестирование и исправление ИБ:
В конфигураторе Администрирование-Тестирование и исправление — галочки в зависимости от ситуации. - Попробовать создать др. пользователя с полными правами и зайти от него.
- Попробовать перенести на другой ПК и открыть там, может что-то с ПК.
4) При каком-то действии выкидывает на код в конфигуратор.
- Для проверки стоит очистить кэш.
- Если не помогло то скорей всего ошибка в коде — особенно актуально для нетиповых и самописных конфигураций, но встречается иногда и в типовых.
Если конфигурация нетиповая, то тут либо обновление прошло некорректно или разработчик дорабатывавший конфигурацию не предусмотрел все возможности пользовательских ошибок — защита от дурака (если это возможно!).
Если типовая, то возможно ошибка в релизе.
В любом случае стоит пробежать в отладчике и посмотреть что не так.
5) Под одним пользователем дает что-то сделать, под другим нет.
- Настройки прав пользователей.
- Настройки пользователя.
- Очистка кэша.
6) С одного ПК заходит, с другого нет.
- Проверить в проводнике видит ли базу — может к папке с базой не предоставлен общий доступ.
- Очистка кэша.
- Зайти под другим пользователем.
7) Я ничего не делал/делала но у меня все сломалось
- Если смогут подсказать что именно «не делали» и когда, то можно воспользоваться
- журналом регистрации с отборами и возможно узнать, в чем проблема.
- Журнал регистрации можно найти в конфигураторе:
- Администрирование — журнал регистрации.
Либо в пользовательском режиме — расположение зависит от конфигурации.
Недостаточно памяти.
Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка «Недостаточно памяти». Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки — ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял — ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.
Решение
На клиентском компе запустить командную строку от имени администратора, прописать там следующее:
BCDEdit /set increaseuserva xxxx
— вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 — на приложения и 2 на нужды самой ОС. Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000
).
Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.
Для Windows XP Windows 2003 пишем
/3GB
/userva=xxxx
(xxxx
в МБ в диапазоне 2048 — 3072) в файле boot.ini, рекомендуемый максимум значений userva
2900-3030.
9) Элементы форм налезают друг на друга и имеют неправильное расположение.
- Очистка кэша.
10) Ошибка СУБД Внутренняя ошибка компоненты dbeng8
- Ошибка связана с различием кода разных версий платформы, когда пользователи пытаются использовать файловый вариант. Для клиент-серверного варианта при запуске происходит контроль и работа с разными версиями платформы в принципе невозможна.
Решение: обновиться до актуального релиза на всех
рабочих местах.
Если не помогло, тогда делаем следующее:
- Тестирование и исправление
11) Ошибка в платформе 8.3.4.428
- В версии 8.3.4.428 платформы «1С:Предприятие» обнаружена критичная ошибка, возникающая при реструктуризации данных. Данная ошибка локализована и будет исправлена в следующей версии платформы.
12) Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1
«Как проверить (восстановить) базу на MS SQL Server средствами сервера
Проверку логической целостности нужно выполнять штатными средствами 1С:Предприятия (Тестирование и исправление ИБ). В случае, если такую проверку не удается выполнить, следует проверить физическую целостность БД средствами MS SQL. Для проверки целостности средствами MS SQL нужно выполнить следующую команду:
Код:
DBCC CHECKDB («»,REPAIR_REBUILD)
Перед выполнением этой команды нужно базу данных перевести в режим «single user»:
Код:
sp_dboption «»,»single user»,true
В процессе работы DBCC CHECKDB могут быть обнаружены ошибки и часть может быть сразу же исправлена. Если ошибки остались, то по всей видимости их нельзя восстановить без потери некоторых данных. В этом случае нужно запустить DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS (перед запуском желательно сделать копию файлов базы данных).
Код:
DBCC CHECKDB («»,REPAIR_ALLOW_DATA_LOSS)
После выполнения DBCC CHECKDB нужно не забыть вернуться в нормальный режим (выйти из режима «single user»):
Код:
sp_dboption «»,»single user»,false» (Взято с сайта )
Конечно список далеко не полный, так что буду рад, если его дополнят в комментариях.
Недочеты или
некорректное выполнение какой-либо
операции выявляются в процессе
тестирования программы. Чаще всего они
выявляются в процессе реализации
программного продукта. Сам процесс
поиска и устранение ошибок называется
отладкой.
Интегрированная
среда разработки Builder 6.0 предоставляет
программисту мощное средство поиска и
устранения ошибок в программе — отладчик.
Отладчик позволяет выполнять трассировку
программы, наблюдать значения переменных,
контролировать выводимые программой
данные.
Виды тестирования:
Модульное –
процесс проверки отдельных программных
процедур и подпрограмм, входящих состав
программного продукта.
Его элементы:
—
проверка соответствия стандарта
копированием- проверка кода на соответствие
стандартам кодирования компании;
—
технический обзор программного кода.
Интеграционное
тестирование проводится для совместной
работы отдельных модулей и предшествует
тестированию всей системы, как единого
целого.
Его элементы:
—
проверка функциональности-
проверка
соответствия отдельных функций,
выполняемых совокупностями модулей,
функциям, заданным в спецификациях
требований;
—
проверка промежуточных результатов-
проверка всех промежуточных результатов
и файлов на наличие и корректность.
Системное
тестирование предназначено для проверки
программной системы в целом, ее организации
и функционирования.
Его элементами
является:
—
граничное тестирование-
тестирование
в граничных условиях;
—
прогоночное тестирование- тестирование
всех функциональных характеристик
реальной работы системы;
—
целевое тестирование-
тестирование
на целевой платформе;
— проверка
документации- проверка пользовательской
документации на корректность.
Выходное
тестирование — завершающий этап
тестирования, на котором проверяется
готовность программного продукта.
Приемочное
тестирование проводится организацией,
отвечающей за сопровождения программного
продукта и обучения конечного пользователя.
Программная ошибка
– ситуация, когда программа не дает
того, что пользователь от нее ожидает.
Функциональные
недостатки присущи программе, если она
выполняет
одну из своих
функций неверно или не полностью.
Некорректная
обработка ошибок – правильное определение
ошибок, программа должна выдать о ней
сообщения. Отсутствие такого сообщения
является ошибкой в работе программы.
Некорректная
обработка граничных условий. Внутри
границы диапазона программа работает,
а на их границах могут происходить
действия, которые в свою очередь приводят
к ошибкам в работе программного продукта.
Ошибки вычисления.
К ним относятся ошибки, вызванные
неправильным выбором алгоритма
вычислений, неправильными формулами.
Самые частые ошибки
– это ошибки управления потоком. По
логике за первым действием идет второе.
Если после первого идет третье, то это
ошибка.
Недостатки
пользовательского интерфейса. Во время
проверки работоспособности программы,
необходимо оценить правильность работы
программы. После подтверждения
спецификации требований, любое отклонения
от них или невыполнения является ошибкой.
4 Компьютерная
и информационная безопасность
4.1 Эргономика
Эргоно́мика в
традиционном понимании наука о
приспособлении должностных обязанностей,
рабочих мест, предметов и объектов
труда, а также компьютерных программ
для наиболее безопасного и эффективного
труда работника, исходя из физических
и психических особенностей человеческого
организма.
Освещение при
работе с компьютером должно быть не
слишком ярким, но и не отсутствовать
совсем, идеальный вариант — приглушенный
рассеянный свет.
Экран монитора
должен быть абсолютно чистым; если вы
работаете в очках, они тоже должны быть
абсолютно чистыми. Протирайте экран
монитора (лучше специальными салфетками
и/или жидкостью для протирки мониторов)
минимум раз в неделю, следите за
кристальной прозрачностью очков каждый
день.
Располагайте
монитор и клавиатуру на рабочем столе
прямо, ни в коем случае не наискосок.
Центр экрана должен
быть примерно на уровне ваших глаз или
чуть ниже. Держите голову прямо, без
наклона вперед. Периодически на несколько
секунд закрывайте веки, дайте мышцам
глаз отдохнуть и расслабиться.
Иногда встречаются
рекомендации использовать специальные
очки, фильтры. Они действительно способны
поднять какой-то из показателей
видеосистемы, но только в ущерб другому
показателю.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
5.2.Управление потоком
Использование потоков для мультиплексирования приводит к состязаниям по поводу использования TCP-соединения, что приводит к блокировке потоков. Схема управления потоком гарантирует, что потоки в одном и том же соединении не будут деструктивно мешать друг другу. Управление потоком используется как для отдельных потоков, так и для соединения в целом. HTTP/2 обеспечивает управление потоком с помощью кадра WINDOW_UPDATE ( раздел 6.9 ).
5.2.1.Принципы управления потоком
Управление потоком HTTP/2 позволяет использовать различные алгоритмы управления потоком без необходимости изменения протокола. Управление потоком в HTTP/2 имеет следующие характеристики: 1. Управление потоком специфично для соединения. Управление потоком HTTP/2 работает между конечными точками одного прыжка, а не по всему сквозному пути. 2. Управление потоком основано на кадрах WINDOW_UPDATE. Получатели объявляют, сколько октетов они готовы получить в потоке и для всего соединения. Это кредитная схема. 3. Управление потоком является направленным, а общее управление обеспечивается приемником. Получатель МОЖЕТ установить любой желаемый размер окна для каждого потока и для всего соединения. Отправитель ДОЛЖЕН соблюдать ограничения на управление потоком, установленные получателем. Клиенты, серверы, и все посредники независимо объявляют свое окно управления потоком в качестве получателя и соблюдают ограничения управления потоком, установленные их партнером при отправке. 4. Начальное значение окна управления потоком составляет 65 535 октетов как для новых потоков, так и для всего соединения. 5. Тип кадра определяет, применяется ли к кадру управление потоком. Из кадров, указанных в этом документе, только кадры ДАННЫЕ подлежат управлению потоком; все остальные типы фреймов не занимают места в рекламируемом окне управления потоком. Это гарантирует, что важные кадры управления не блокируются управлением потоком. 6. Конечная точка может отключить собственное управление потоком, но конечная точка не может игнорировать сигналы управления потоком от своего партнера. 7. HTTP/2 определяет только формат и семантику кадра WINDOW_UPDATE ( Начальное значение окна управления потоком составляет 65 535 октетов как для новых потоков, так и для всего соединения. 5. Тип кадра определяет, применяется ли к кадру управление потоком. Из кадров, указанных в этом документе, только кадры ДАННЫЕ подлежат управлению потоком; все остальные типы фреймов не занимают места в рекламируемом окне управления потоком. Это гарантирует, что важные кадры управления не блокируются управлением потоком. 6. Конечная точка может отключить собственное управление потоком, но конечная точка не может игнорировать сигналы управления потоком от своего партнера. 7. HTTP/2 определяет только формат и семантику кадра WINDOW_UPDATE ( Начальное значение окна управления потоком составляет 65 535 октетов как для новых потоков, так и для всего соединения. 5. Тип кадра определяет, применяется ли к кадру управление потоком. Из кадров, указанных в этом документе, только кадры ДАННЫЕ подлежат управлению потоком; все остальные типы фреймов не занимают места в рекламируемом окне управления потоком. Это гарантирует, что важные кадры управления не блокируются управлением потоком. 6. Конечная точка может отключить собственное управление потоком, но конечная точка не может игнорировать сигналы управления потоком от своего партнера. 7. HTTP/2 определяет только формат и семантику кадра WINDOW_UPDATE ( все остальные типы фреймов не занимают места в рекламируемом окне управления потоком. Это гарантирует, что важные кадры управления не блокируются управлением потоком. 6. Конечная точка может отключить собственное управление потоком, но конечная точка не может игнорировать сигналы управления потоком от своего партнера. 7. HTTP/2 определяет только формат и семантику кадра WINDOW_UPDATE ( все остальные типы фреймов не занимают места в рекламируемом окне управления потоком. Это гарантирует, что важные кадры управления не блокируются управлением потоком. 6. Конечная точка может отключить собственное управление потоком, но конечная точка не может игнорировать сигналы управления потоком от своего партнера. 7. HTTP/2 определяет только формат и семантику кадра WINDOW_UPDATE (Раздел 6.9 ). Этот документ не определяет, как получатель решает, когда отправлять этот кадр или значение, которое он отправляет, а также не определяет, как отправитель решает отправлять пакеты. Реализации могут выбирать любой алгоритм, который соответствует их потребностям. Реализации также несут ответственность за определение приоритетов отправки запросов и ответов, выбор того, как избежать блокировки очереди для запросов и управление созданием новых потоков. Выбор алгоритма для них может взаимодействовать с любым алгоритмом управления потоком.
5.2.2.Надлежащее использование контроля расхода
Управление потоком определено для защиты конечных точек, которые работают в условиях ограниченных ресурсов. Например, прокси должен разделять память между многими соединениями, а также может иметь медленное восходящее соединение и быстрое нисходящее. Управление потоком предназначено для случаев, когда получатель не может обрабатывать данные в одном потоке, но хочет продолжить обработку других потоков в том же соединении. Развертывания, не требующие этой возможности, могут объявить окно управления потоком максимального размера (2^31-1) и могут поддерживать это окно, отправляя кадр WINDOW_UPDATE при получении любых данных. Это эффективно отключает управление потоком для этого приемника. И наоборот, отправитель всегда подчиняется окну управления потоком, объявленному получателем. Развертывания с ограниченными ресурсами (например, memory) может использовать управление потоком, чтобы ограничить объем памяти, который может потреблять одноранговый узел. Обратите внимание, однако, что это может привести к неоптимальному использованию доступных сетевых ресурсов, если управление потоком включено без знания произведения пропускной способности на задержку (см.RFC7323 ]). Даже при полной осведомленности о текущей пропускной способности * задержке реализация управления потоком может быть затруднена. Конечные точки ДОЛЖНЫ считывать и обрабатывать кадры HTTP/2 из приемного буфера TCP, как только данные становятся доступными. Неспособность прочитать быстро может привести к взаимоблокировке, когда критические кадры, такие как WINDOW_UPDATE, не читаются и не выполняются действия. Быстрое чтение кадров не подвергает конечные точки атакам исчерпания ресурсов, поскольку управление потоком HTTP/2 ограничивает выделение ресурсов.
5.2.3.Характеристики управления потоком
Если конечная точка не может гарантировать, что ее одноранговый узел всегда имеет доступное пространство окна управления потоком, превышающее произведение пропускной способности однорангового узла на задержку в этом соединении, его пропускная способность приема будет ограничена управлением потоком HTTP/2. Это приведет к снижению производительности. Своевременная отправка кадров WINDOW_UPDATE может повысить производительность. Конечные точки захотят сбалансировать потребность в улучшении пропускной способности приема с необходимостью управления рисками исчерпания ресурсов и должны внимательно учитывать Раздел 10.5 при определении своей стратегии управления размерами окна.
5.3.Расстановка приоритетов
В мультиплексированном протоколе,таком как HTTP/2,приоритетное распределение пропускной способности и вычислительных ресурсов между потоками может иметь решающее значение для достижения хорошей производительности.Плохая схема распределения приоритетов может привести к низкой производительности HTTP/2.При отсутствии параллелизма на уровне TCP производительность может быть значительно хуже,чем у HTTP/1.1.Хорошая схема расстановки приоритетов выигрывает от применения контекстуальных знаний,таких как содержание ресурсов,взаимосвязь ресурсов и то,как эти ресурсы будут использоваться аналогом.В частности,клиенты могут обладать знаниями о приоритете запросов,которые имеют отношение к определению приоритетов сервером.В таких случаях предоставление клиентами информации о приоритете может повысить производительность.
5.3.1. Справочная информация о приоритете в RFC 7540
RFC 7540 определил богатую систему для сигнализации приоритета запросов. Однако эта система оказалась сложной и не применялась повсеместно. Гибкая схема означала, что клиенты могли выражать приоритеты очень по-разному, с небольшой согласованностью в принятых подходах. Для серверов реализация универсальной поддержки схемы была сложной. Реализация приоритетов была неравномерной как на клиентах, так и на серверах. Многие развертывания серверов игнорировали сигналы клиентов при определении приоритетов обработки запросов. Короче говоря, сигнализация приоритизации в RFC 7540 [ RFC7540 ] не удалась.
5.3.2.Сигнализация приоритета в данном документе
Это обновление для HTTP/2 отменяет сигнализацию приоритета, определенную в RFC 7540 [ RFC7540 ]. Основная часть текста, относящегося к сигналам приоритета, не включена в этот документ. Описание полей фрейма и часть обязательной обработки сохранены, чтобы гарантировать совместимость реализаций этого документа с реализациями, использующими сигнализацию приоритета, описанную в RFC 7540 . Подробное описание схемы приоритетов RFC 7540 остается в разделе 5.3 [RFC7540].. Информация о приоритете сигнализации необходима для достижения хорошей производительности во многих случаях. Там, где важна информация о приоритете сигнализации, конечным точкам рекомендуется использовать альтернативную схему, такую как схема, описанная в [ HTTP-PRIORITY ]. Хотя сигнализация приоритета из RFC 7540не получил широкого распространения, информация, которую он предоставляет, все еще может быть полезной в отсутствие более качественной информации. Конечные точки, которые получают сигналы приоритета в кадрах HEADERS или PRIORITY, могут извлечь выгоду из применения этой информации. В частности, реализации, использующие эти сигналы, не выиграют от отказа от этих сигналов приоритета при отсутствии альтернатив. Серверы ДОЛЖНЫ использовать другую контекстуальную информацию при определении приоритета запросов при отсутствии каких-либо сигналов приоритета. Серверы МОГУТ интерпретировать полное отсутствие сигналов как указание на то, что клиент не реализовал эту функцию. Известно, что значения по умолчанию, описанные в разделе 5.3.5 [RFC7540] , в большинстве случаев имеют низкую производительность, и вряд ли их использование будет преднамеренным.
5.4.Обработка ошибок
Кадрирование HTTP/2 допускает два класса ошибок: * Состояние ошибки, которое делает все соединение непригодным для использования, является ошибкой соединения. * Ошибка в отдельном потоке является ошибкой потока. Список кодов ошибок включен в Раздел 7.. Возможно, конечная точка обнаружит кадры, которые вызовут множественные ошибки. Реализации МОГУТ обнаруживать множественные ошибки во время обработки, но в результате они ДОЛЖНЫ сообщать не более чем об одной ошибке потока и одной ошибке соединения. Первая ошибка потока, сообщаемая для данного потока, предотвращает сообщение о любых других ошибках в этом потоке. Для сравнения, протокол допускает несколько кадров GOAWAY, хотя конечной точке СЛЕДУЕТ сообщать только об одном типе ошибки соединения, если ошибка не возникает во время корректного завершения работы. В этом случае конечная точка МОЖЕТ отправить дополнительный кадр GOAWAY с новым кодом ошибки в дополнение к любому предыдущему кадру GOAWAY, который содержал NO_ERROR. Если конечная точка обнаруживает несколько разных ошибок, она МОЖЕТ сообщить о любой из этих ошибок. Если кадр вызывает ошибку соединения, об этой ошибке ДОЛЖНО быть сообщено. Кроме того, конечная точка МОЖЕТ использовать любой применимый код ошибки, когда обнаруживает состояние ошибки; общий код ошибки (например, PROTOCOL_ERROR или INTERNAL_ERROR) всегда можно использовать вместо более конкретных кодов ошибок.
5.4.1.Обработка ошибок подключения
Ошибка соединения — это любая ошибка, препятствующая дальнейшей обработке уровня кадра или искажающая любое состояние соединения. Конечная точка, обнаружившая ошибку соединения, ДОЛЖНА сначала отправить кадр GOAWAY ( раздел 6.8 ) с идентификатором последнего потока, который она успешно получила от своего партнера. Кадр GOAWAY включает в себя код ошибки ( Раздел 7), который указывает, почему соединение разрывается. После отправки кадра GOAWAY в случае возникновения ошибки конечная точка ДОЛЖНА закрыть TCP-соединение. Возможно, что GOAWAY не будет надежно получен принимающей конечной точкой. В случае ошибки соединения GOAWAY только делает все возможное, чтобы сообщить партнеру, почему соединение разрывается. Конечная точка может разорвать соединение в любое время. В частности, конечная точка МОЖЕТ рассматривать ошибку потока как ошибку соединения. Конечные точки ДОЛЖНЫ отправлять кадр GOAWAY при завершении соединения, если это позволяют обстоятельства.
5.4.2.Обработка ошибок потока
Ошибка потока — это ошибка, связанная с конкретным потоком, которая не влияет на обработку других потоков. Конечная точка, обнаружившая ошибку потока, отправляет кадр RST_STREAM ( раздел 6.4 ), который содержит идентификатор потока, в котором произошла ошибка. Кадр RST_STREAM включает код ошибки, указывающий тип ошибки. RST_STREAM — это последний кадр, который конечная точка может отправить в потоке. Партнер, отправляющий кадр RST_STREAM, ДОЛЖЕН быть готов к приему любых кадров, которые были отправлены или поставлены в очередь для отправки удаленным партнером. Эти кадры можно игнорировать, за исключением случаев, когда они изменяют состояние соединения (например, состояние, поддерживаемое для сжатия раздела поля ( Раздел 4.3).) или управление потоком). Обычно конечной точке НЕ СЛЕДУЕТ отправлять более одного кадра RST_STREAM для любого потока. Однако конечная точка МОЖЕТ отправлять дополнительные кадры RST_STREAM, если она получает кадры в закрытом потоке по истечении времени, превышающего время приема-передачи. Это поведение разрешено для работы с некорректно работающими реализациями. Во избежание зацикливания конечная точка НЕ ДОЛЖНА отправлять RST_STREAM в ответ на кадр RST_STREAM.
5.4.3.Окончание подключения
Если TCP-соединение закрывается или сбрасывается, а потоки остаются в «открытом» или «полузакрытом» состоянии, то затронутые потоки не могут быть автоматически повторены (подробности см. в Разделе 8.7 ).
© document authors. All rights reserved.
https://datatracker.ietf.org/doc/html/rfc9113
HTTP
-
2.2.Условные обозначения и терминология
2.2.
-
4.3.Сжатие и декомпрессия секций поля
4.3.
-
5.5.Расширение HTTP/2
5.5.
-
6.3. PRIORITY
6.3.