
Дефекты. Ошибки, сбои, отказы

Дефект — расхождение ожидаемого и фактического результата. Или дефект — отклонение фактического результата от ожиданий наблюдателя, сформированных на основе требований, спецификаций, иной документации или опыта и здравого смысла.
Ожидаемый результат — поведение системы, описанное в требованиях.
Фактический результат — поведение системы, наблюдаемое в процессе тестирования.
Ошибки совершает человек , которые приводят к возникновению дефектов в коде, которые, в свою очередь, приводят к сбоям и отказам приложения (однако сбои и отказы могут возникать и из-за внешних условий, таких как электромагнитное воздействие на оборудование и т.д.). Таким образом, упрощённо можно изобразить следующую схему

Ошибка (error , mistake) — действие человека, приводящее к некорректным результатам.
Дефект (defect, bug, problem, fault) — недостаток в компоненте или системе, способный привести к ситуации сбоя или отказа.
Дефекты могут быть в документации, настройках, входных данных и т.д.
Сбой или отказ — отклонение поведения системы от ожидаемого.
В ГОСТ 27.002-89 даны краткие определения сбоя и отказа :
Сбой — самоустраняющийся отказ или однократный отказ, устраняемый незначительным вмешательством оператора.
Отказ — событие, заключающееся в нарушении работоспособного состояния объекта.
Сбои и отказы являются тем, что тестировщик замечает в процессе тестирования и отталкиваясь от чего, проводит исследование с целью выявить дефект и его причины.
Отчёт о дефекте и его жизненный цикл
При обнаружении дефекта тестировщик создаёт отчёт о дефекте .
Отчёт о дефекте — документ, описывающий обнаруженный дефект, а также содействующий его устранению

Отчёт о дефекте пишется со следующими основными целями:
- предоставить информацию о проблеме — уведомить проектную команду и иных заинтересованных лиц о наличии проблемы, описать суть проблемы; приоритизировать проблему — определить степень опасности проблемы для проекта и желаемые сроки её устранения;
- содействовать устранению проблемы — качественный отчёт о дефекте не только предоставляет все необходимые подробности для понимания сути случившегося, но также может содержать анализ причин возникновения проблемы и рекомендации по исправлению ситуации.
Хорошо написанный отчёт о дефекте — половина решения проблемы для программиста. От полноты, корректности, аккуратности, подробности и логичности отчёта о дефекте зависит очень многое — одна и та же проблема может быть описана так, что программисту останется исправить пару строк кода, а может быть описана и так, что сам автор отчёта на следующий день не сможет понять, что же он имел в виду.
Отчёт о дефекте (и сам дефект вместе с ним) проходит определённые стадии жизненного цикла, которые схематично можно показать так (рисунок 2на следующем слайде):
- Обнаружен (submitted) — начальное состояние отчёта (иногда называется «Новый» (new)), в котором он находится сразу после создания. Некоторые средства также позволяют сначала создавать черновик (draft) и лишь потом публиковать отчёт.
- Назначен (assigned) — в это состояние отчёт переходит с момента, когда кто — то из проектной команды назначается ответственным за исправление дефекта. Назначение ответственного производится или решением лидера команды разработки, или коллегиально, или по добровольному принципу, или иным принятым в команде способом или выполняется автоматически на основе определённых правил.
- Исправлен (fixed) — в это состояние отчёт переводит ответственный за исправление дефекта член команды после выполнения соответствующих действий по исправлению.
- Проверен (verified) — в это состояние отчёт переводит тестировщик, удостоверившийся, что дефект на самом деле был устранён. Как правило, такую проверку выполняет тестировщик, изначально написавший отчёт о дефекте.

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

Набор стадий жизненного цикла, их наименование и принцип перехода от стадии к стадии может различаться в разных инструментальных средствах управления жизненным циклом отчётов о дефектах. Более того — многие такие средства позволяют гибко настраивать эти параметры.
- Закрыт (closed) — состояние отчёта, означающее, что по данному дефекту не планируется никаких дальнейших действий.
Здесь есть некоторые расхождения в жизненном цикле, принятом в разных инструментальных средствах управления отчётами о дефектах:
В некоторых средствах существуют оба состояния — « Проверен » и « Закрыт », чтобы подчеркнуть, что в состоянии « Проверен » ещё могут потребоваться какие-то дополнительные действия (обсуждения, дополнительные проверки) в то время как состояние « Закрыт » означает «с дефектом покончено, больше к этому вопросу не возвращаемся».
- В некоторых средствах одного из состояний нет (оно поглощается другим)

В некоторых средствах в состояние «Закрыт» или «Отклонён» отчёт о дефекте может быть переведён из множества предшествующих состояний с резолюциями наподобие:
- «Не является дефектом» — приложение так и должно работать, описанное поведение не является аномальным.
- «Дубликат» — данный дефект уже описан в другом отчёте.
- «Не удалось воспроизвести» — разработчикам не удалось воспроизвести проблему на своём оборудовании.
- «Не будет исправлено» — дефект есть, но по каким-то серьёзным причинам его решено не исправлять.
- «Невозможно исправить» — непреодолимая причина дефекта находится вне области полномочий команды разработчиков, например существует проблема в операционной системе или аппаратном обеспечении, влияние которой устранить разумными способами невозможно. В подобных случаях будет переведён в состояние «Закрыт», в некоторых — в состояние «Отклонён», в некоторых — часть случаев закреплена за состоянием «Закрыт», часть — за «Отклонён».
- Открыт заново (reopened) — в это состояние (как правило, из состояния «Исправлен») отчёт переводит тестировщик, удостоверившийся, что дефект попрежнему воспроизводится на билде, в котором он уже должен быть исправлен.
- Рекомендован к отклонению (to be declined) — в это состояние отчёт о дефекте может быть переведён из множества других состояний с целью вынести на рассмотрение вопрос об отклонении отчёта по той или иной причине. Если рекомендация является обоснованной, отчёт переводится в состояние «Отклонён» (см. следующий пункт).
- Отклонён (declined) — в это состояние отчёт переводится в случаях, подробно описанных в пункте «Закрыт», если средство управления отчётами о дефектах предполагает использование этого состояния вместо состояния «Закрыт» для тех или иных резолюций по отчёту.
- Отложен (deferred) — в это состояние отчёт переводится в случае, если исправление дефекта в ближайшее время является нерациональным или не представляется возможным, однако есть основания полагать, что скоро ситуация исправится (выйдет новая версия библиотеки, вернётся из отпуска специалист по данной технологии, изменятся требования заказчика и т.д.).

Атрибуты (поля) отчёта о дефекте
Общий вид всей структуры отчёта о дефекте представлен на рисунке

- Идентификатор представляет собой уникальное значение, позволяющее однозначно отличить один отчёт о дефекте от другого и используемое во всевозможных ссылках. В общем случае идентификатор отчёта о дефекте может представлять собой просто уникальный номер, но может быть : включать префиксы, суффиксы и иные осмысленные компоненты, позволяющие быстро определить суть дефекта и часть приложения (или требований), к которой он относится.
- Краткое описание должно в предельно лаконичной форме давать исчерпывающий ответ на вопросы «Что произошло?» «Где это произошло»? «При каких условиях это произошло?».
Например: «Отсутствует логотип на странице приветствия, если пользователь
является администратором»:
— Что произошло? Отсутствует логотип.
— Где это произошло? На странице приветствия.
— При каких условиях это произошло? Если пользователь является
администратором.
Заполнение поля « краткое описание », которое одновременно должно:
— содержать предельно краткую, но в то же время достаточную для
понимания сути проблемы информацию о дефекте;
— быть достаточно коротким, чтобы полностью помещаться на экране;

— при необходимости содержать информацию об окружении, под
которым был обнаружен дефект;
— по возможности не дублировать краткие описания других
дефектов (и даже не быть похожими на них), чтобы дефекты
было сложно перепутать или посчитать дубликатами друг друга;
— быть законченным предложением русского или английского (или
иного) языка, построенным по соответствующим правилам
грамматики.
Для создания хороших кратких описаний дефектов рекомендуется пользоваться следующим алгоритмом:
- Полноценно понять суть проблемы. До тех пор, пока у тестировщика нет чёткого понимания того, «что не работает», писать отчёт о дефекте не стоит.
- Сформулировать подробное описание
- 3. Убрать из получившегося подробного описания всё лишнее, уточнить важные детали.

4. Выделить в подробном описании слова (словосочетания, фрагменты фраз), отвечающие на вопросы, «что, где и при каких условиях случилось».
5. Оформить получившееся в пункте 4 в виде законченного грамматически правильного предложения.
6. Если предложение получилось слишком длинным, переформулировать
его, сократив длину (за счёт подбора синонимов, использования
общепринятых аббревиатур и сокращений). К слову, в английском языке
предложение почти всегда будет короче русского аналога.
Пример применения этого алгоритма.
Тестированию подвергается некое веб-приложение, поле описания товара должно допускать ввод максимум 250 символов; в процессе тестирования оказалось, что этого ограничения нет.
- Суть проблемы: исследование показало, что ни на клиентской, ни на серверной части нет никаких механизмов, проверяющих и/или ограничивающих длину введённых в поле «О товаре» данных.
- Исходный вариант подробного описания: в клиентской и серверной части приложения отсутствуют проверка и ограничение длины данных, вводимых в поле «О товаре» на странице http://testapplication/admin/goods/edit.

- Конечный вариант подробного описания:
— Фактический результат: в описании товара (поле «О товаре»,
http://testapplication/admin/goods/edit/) отсутствуют проверка и
ограничение длины вводимого текста (MAX=250 символов).
— Ожидаемый результат: в случае попытки ввода 251+ символов
выводится сообщение об ошибке.
- Определение «что, где и при каких условиях случилось»:
— Что: отсутствуют проверка и ограничение длины вводимого текста.
— Где: описание товара, поле «О товаре»,
http://testapplication/admin/goods/edit/.
— При каких условиях: – (в данном случае дефект присутствует всегда, вне
зависимости от каких бы то ни было особых условий).
- Первичная формулировка: отсутствуют проверка и ограничение максимальной длины текста, вводимого в поле «О товаре» описания товара.
- Сокращение (итоговое краткое описание): нет ограничения максимальной длины поля «О товаре». Английский вариант: no check for «О товаре» max length.

- Подробное описание представляет в развёрнутом виде необходимую информацию о дефекте, а также (обязательно!) описание фактического результата, ожидаемого результата и ссылку на требование (если это возможно).
Пример подробного описания :
Если в систему входит администратор, на странице приветствия отсутствует логотип. Фактический результат: логотип отсутствует в левом верхнем углу страницы. Ожидаемый результат: логотип отображается в левом верхнем углу страницы. Требование: R245.3.23b.
В отличие от краткого описания, которое является одним предложением, здесь нужно давать подробную информацию. Если одна и та же проблема (вызванная одним источником) проявляется в нескольких местах приложения, можно в подробном описании перечислить эти места.
- Шаги по воспроизведению описывают действия, которые необходимо выполнить для воспроизведения дефекта.
Это поле похоже на шаги тест-кейса, за исключением одного отличия: здесь действия прописываются максимально подробно, с указанием конкретных вводимых значений и самых мелких деталей, т.к. отсутствие этой информации в сложных случаях может привести к невозможности воспроизведения дефекта.
Пример шагов воспроизведения :
- Открыть http://testapplication/admin/login/.
- Авторизоваться с именем «defaultadmin» и паролем «dapassword». Дефект : в левом верхнем углу страницы отсутствует логотип (вместо него отображается пустое пространство с надписью «logo»).
Воспроизводимость показывает, при каждом ли прохождении по шагам воспроизведения дефекта удаётся вызвать его проявление. Это поле принимает всего два значения: всегда или иногда. Можно сказать, что воспроизводимость «иногда» означает, что тестировщик не нашёл настоящую причину возникновения дефекта. Это приводит к серьёзным дополнительным сложностям в работе с дефектом:
- Тестировщику нужно потратить много времени на то, чтобы удостовериться в наличии дефекта (т.к. однократный сбой в работе приложения мог быть вызван большим количеством посторонних причин).

- Разработчику тоже нужно потратить время, чтобы добиться проявления дефекта и убедиться в его наличии. После внесения исправлений в приложение разработчик фактически должен полагаться только на свой профессионализм, т.к. даже многократное прохождение по шагам воспроизведения в таком случае не гарантирует, что дефект был исправлен (возможно, через ещё 10–20 повторений он бы проявился).
- Важность показывает степень ущерба, который наносится проекту существованием дефекта. В общем случае выделяют следующие виды важности:
— Критическая — существование дефекта приводит к масштабным последствиям катастрофического характера, например: потеря данных, раскрытие конфиденциальной информации, нарушение ключевой функциональности приложения и т.д.
— Высокая — существование дефекта приносит ощутимые неудобства многим пользователям в рамках их типичной деятельности, например: недоступность вставки из буфера обмена, неработоспособность общепринятых клавиатурных комбинаций, необходимость перезапуска приложения при выполнении типичных сценариев работы.

— Средняя — существование дефекта слабо влияет на типичные
сценарии работы пользователей, и/или существует обходной путь
достижения цели, например: диалоговое окно не закрывается
автоматически после нажатия кнопок «OK»/«Cancel», при распечатке
нескольких документов подряд не сохраняется значение поля
«Двусторонняя печать», перепутаны направления сортировок по
некоему полю таблицы.
— Низкая — существование дефекта редко обнаруживается
незначительным процентом пользователей и (почти) не влияет на их
работу, например: опечатка в глубоко вложенном пункте меню
настроек, некоторое окно при отображении расположено неудобно
(нужно перетянуть его в удобное место), неточно отображается время
до завершения операции копирования файлов.

- Срочность показывает, как быстро дефект должен быть устранён. В общем случае выделяют следующие виды срочности:
- Наивысшая срочность указывает на необходимость устранить дефект настолько быстро, насколько это возможно.
- Высокая срочность означает, что дефект следует исправить вне очереди, т.к. его существование или уже объективно мешает работе, или начнёт создавать такие помехи в самом ближайшем будущем.
- Обычная срочность означает, что дефект следует исправить в порядке общей очерёдности. Такое значение срочности получает большинство дефектов.
- Низкая срочность означает, что в обозримом будущем исправление данного дефекта не окажет существенного влияния на повышение качества продукта.
- С имптом — позволяет классифицировать дефекты по их типичному проявлению. Не существует никакого общепринятого списка симптомов.
В качестве примера рассмотрим следующие значения симптомов дефекта.
- Косметический дефект — визуально заметный недостаток интерфейса, не влияющий на функциональность приложения (например, надпись на кнопке выполнена шрифтом не той гарнитуры).
- Повреждение/потеря данных — в результате возникновения дефекта искажаются, уничтожаются (или не сохраняются) некоторые данные (например, при копировании файлов копии оказываются повреждёнными).
- Проблема в документации (— дефект относится не к приложению, а к документации (например, отсутствует раздел руководства по эксплуатации).
- Некорректная операция — некоторая операция выполняется некорректно
- Проблема инсталляции — дефект проявляется на стадии установки и/или конфигурирования приложения.
- Ошибка локализации — что-то в приложении не переведено или переведено неверно на выбранный язык интерфейса.
- Нереализованная функциональность — некая функция приложения не выполняется или не может быть вызвана (например, в списке форматов для экспорта документа отсутствует несколько пунктов, которые там должны быть
- Проблема масштабируемости — при увеличении количества доступных приложению ресурсов не происходит ожидаемого прироста производительности приложения
- Низкая производительность — выполнение неких операций занимает недопустимо большое время
- Крах системы — приложение прекращает работу или теряет способность выполнять свои ключевые функции
- Неожиданное поведение — в процессе выполнения некоторой типичной операции приложение ведёт себя необычным (отличным от общепринятого) образом (например, после добавления в список новой записи активной становится не новая запись, а первая в списке).
- Недружественное поведение — поведение приложения создаёт пользователю неудобства в работе (например, на разных диалоговых окнах в разном порядке расположены кнопки «OK» и «Cancel»).
- Расхождение с требованиями — этот симптом указывают, если дефект сложно соотнести с другими симптомами, но тем не менее приложение ведёт себя не так, как описано в требованиях.
- Предложение по улучшению — во многих инструментальных средствах управления отчётами о дефектах для этого случая есть отдельный вид отчёта

Часто у одного дефекта может быть сразу несколько симптомов.
- Возможность обойти — показывает, существует ли альтернативная последовательность действий, выполнение которой позволило бы пользователю достичь поставленной цели (например, клавиатурная комбинация Ctrl+P не работает, но распечатать документ можно, выбрав соответствующие пункты в меню). В некоторых инструментальных средствах управления отчётами о дефектах это поле может просто принимать значения «Да» и «Нет», в некоторых при выборе «Да» появляется возможность описать обходной путь. Традиционно считается, что дефектам без возможности обхода стоит повысить срочность исправления.
- Комментарий— может содержать любые полезные для понимания и исправления дефекта данные.
- Вложения — представляет собой не столько поле, сколько список прикреплённых к отчёту о дефекте приложений (копий экрана, вызывающих сбой файлов и т.д.).

В работе [Тайер,
Липов, Нельсон] отмечается, что для
разработки надежного программного
обеспечения необходимо знать не только
тип ошибок, но и распределение ошибок
в системах программного обеспечения
по категориям. Желательно иметь
максимально возможный перечень ошибок,
которые могут возникать при разработке
и выполнении программ, это даст возможность
разработчикам избежать многих из них.
Категория ошибок
определяется как видовое описание
ошибок конкретных типов, авторами
выявлено около 20 основных классов
ошибок. Приведем кратко описание основных
классов ошибок (полный перечень ошибок
приведен в таблице ?.?)
Ошибки вычислений.
Подобного
рода ошибки содержатся в закодированных
математических выражениях и получаемых
с их помощью результатах. Они указывают
на неточность математической модели и
проявляются при моделировании той или
иной ситуации.
Логические
ошибки. При определении этой
категории ошибок они увязывались с
ошибками алгоритмов или с необходимостью
реализации их новых блоков. Наиболее
интересные ошибки связаны с недостатками
алгоритмов и логическими ошибками
моделирования, которые обнаруживаются
в результате анализа не проектной
документации, а на основе реализованной
программы.
Ошибки
ввода-вывода. Ошибки, связанные с
операциями ввода-вывода, очень часто
являются результатами других ошибок,
их очень тяжело отделить от ошибок в
интерфейсах, от логических ошибок или
ошибок вычислений. Поэтому отдельно
выделены ошибки, связанные с ошибками
форматирования выдаваемых результатов,
размещения информации, с неполнотой
данных и т.п.
-
Когда следует прекращать тестирование программ
Развитие технологий
разработки сложных программных систем
(комплексов) и средств автоматизации
проектирования и программирования
приводят к изменению начального уровня
и интенсивности устранения ошибок в
программах, однако опыт и результаты
проведенных разработок могут служить
первым приближением при последующих
оценках.
Длительность
отладки, а тем самым и всей разработки
ПС, непосредственно зависит от допустимого
значения показателя отлаженности или
от количества невыявленных ошибок, при
котором разработку можно считать
завершенной. Когда частость обнаружения
ошибок при отладке становится ниже
некоторого уровня, у разработчиков
создается впечатление полной отлаженности
системы и проектирование считается
законченным. Для оценки этого уровня
ошибок и показателей надежности
необходимы объективные данные динами
выявления ошибок в ПС, а также усилий,
затрачиваемых для их обнаружения и
устранения с учетом объема разрабатываемой
системы.
Для снижения
трудоемкости и сокращения сроков
достижения заданной надежности ПС
необходимо тщательно осуществлять
системное проектирование программ и
отработку спецификаций до начала
программирования с целью предотвращения
ошибок. Структурное проектирование на
ранних этапах разработки позволяет
значительно быстрее получать программы
высокой надежности.
Как уже говорилось,
создание программ – исключительно
трудоемкая работа, сопряженная с высокой
квалификацией разработчиков и
значительными затратами времени.
Программирование можно считать новым
типом интеллектуального сплава науки
и искусства.
Примечание:
Действительно, мастерство отдельных
программистов восхищает, но даже самая
совершенная сложная программа, по
известному программистами афоризму,
содержит хотя бы одну ошибку. Конечно,
ошибок можно было бы избежать, если
программирование опиралось бы только
на науку, однако и в науке необходимо
искусство, т.е. мастерство, умение,
талант. Поэтому роль искусства в
программировании весьма значительна.
Создание сложных
программных систем должно быть основано
на подходящих и весьма эффективных
технологиях программирования,
поддерживающих процесс программирования
на всех этапах конструирования программ.
Прежде чем говорить
о технологии программирования, необходимо
хорошо разобраться в глубинной сущности
понятий информации,
данных, алгоритма,
программы,
программирования,
ибо сама технология не может быть
оторвана от этих сущностей.
Понятия алгоритма
и программы – одни их фундаментальных
понятий современной информатики и
кибернетики, однако точных и строгих
математических определений для них не
существует. Они рассматриваются как
основополагающие первичные понятия
(такие как точка, прямая, формула и т.д.),
которые не определяются, а лишь
интерпретируются, уточняются, разъясняются.
Алгоритм
(algorithm)
– заранее заданная последовательность
четко определенных правил или команд
для получения решения задачи за конечное
число шагов (это набор предписаний,
однозначно определяющий содержание и
последовательность выполнения операций
для достижения заданной цели или решения
поставленной задачи).
Примечание:
Принято считать, что сам термин алгоритм
происходит от имени персидского
математика Абу-Ждафара Мохаммеда
Ибн-Мусы Аль-Хорезми, который в 825 г.
описал правила выполнения арифметических
действий в десятичной системе счисления.
Понятие алгоритма стало предметом
соответствующей теории –
теории алгоритмов, которая занимается
изучением общих свойств алгоритмов,
какой-то период времени языки
программирования назывались
алгоритмическими.
Разработав алгоритм,
можно перейти к программированию на
выбранном языке. Программирование
принято считать первичным, а программу
– вторичной, так как программа появляется
только после завершения процесса
программирования. Но и здесь не все так
просто, как кажется, поскольку легко
усмотреть относительность и диалектичность
связи процесса программирования с
его результатами – программами.
Программа
(program) – это набор
операторов, который может быть представлен
как единое целое в некоторой вычислительной
системе и который используется для
управления поведением этой системы.
Программирование
(programming)
(в широком смысле) – все технические
операции, необходимые для создания
программы, включая анализ требований
и все стадии разработки и реализации.
Программирование
(в узком смысле) – процесс кодирования
и отладки программы в рамках реального
проекта.
Целью программирования
является описание процессов обработки
данных (в дальнейшем
просто процессов). Согласно IFIP
(Международная федерация по обработке
информации) и ICC (Международный
вычислительный центр) данные
(data)
это представление фактов и идей в
формализованном виде, пригодном для
передачи и переработки в некоем процессе,
а информация (information)
это смысл, который
придается данным при их представлении.
На термине
«информация» стоит остановиться более
подробно, т. к. он является основополагающим
понятием информатики и имеет большое
значение для наук, с ней связанных.
Существует несколько определений
данного понятия.
Основоположник
кибернетики Н. Винер
считал, что «Информация – это информация,
а не энергия и не материя», и поставил
информацию в один ряд с другими наиболее
общими философскими категориями.
В словаре русского
языка С.И. Ожегов [20] определил
информацию как: 1) сведения об окружающем
мире и протекающих в нем процессах;
2) сообщения, осведомляющие о положении
дел, о состоянии чего-либо.
В законе «Об
информации, информационных технологиях
и защите информации» [11] дается следующее
определение информации: «Информация –
сведения о лицах, предметах, фактах,
событиях, явлениях и процессах независимо
от формы их представления».
Итак, данные
участвуют в некотором информационном
процессе (information
process)
или в обработке данных. Обработка
данных (data
processing)
– это выполнение систематической
последовательности действий с данными.
Данные представляются и хранятся на
так называемых носителях данных.
Совокупность носителей данных,
используемых при какой-либо обработке
данных, называется информационной
средой (data
medium).
Набор данных, содержащихся в какой-либо
момент в информационной среде, называется
состоянием этой информационной
среды. Поэтому процесс можно
определить как последовательность
сменяющих друг друга состояний некоторой
информационной среды [10].
Описать процесс
это значит определить
последовательность состояний заданной
информационной среды. Формализованное
описание процесса называется программой,
с ее помощью информационный процесс
на компьютере порождается автоматически.
С другой стороны, программа должна быть
понятной и человеку, так как и при
разработке программ, и при их использовании
часто приходится выяснять, какой именно
процесс она порождает. Поэтому программа
составляется на удобном для человека
формализованном языке программирования,
с которого она автоматически переводится
на язык соответствующего компьютера с
помощью транслятора.
Человеку
(программисту), прежде чем составить
программу на удобном для него языке
программирования, приходится проделывать
большую подготовительную работу по
уточнению постановки задачи, выбору
метода ее решения, выяснению специфики
применения требуемой программы,
прояснению общей организации
разрабатываемой программы и многое
другое. Использование этой информации
может существенно упростить задачу
понимания программы человеком, поэтому
весьма полезно ее как-то фиксировать в
виде отдельных документов (часто не
формализованных, рассчитанных только
для восприятия человеком). Таким образом,
мы подходим к определению технологии
программирования, которая позволяет
овладеть процессами разработки программ,
уточнить и упорядочить все действия,
регламентировать и систематизировать
их описание.
Примечание:
Хотя программирование – весьма
специфический вид деятельности, вместе
с тем технология программирования не
может не иметь хотя бы несколько общих
черт с технологиями другого рода,
например, в машиностроении, легкой
промышленности и т.д. Поэтому дадим
сначала определение технологии вообще.
Технология
(technology)
–
совокупность производственных процессов
в определенной отрасли производства,
а также научное описание способов
производства, это совокупность
технологических элементов (средств,
устройств, методов, приемов, документов),
используемых для обработки исходных
материалов с целью получения конечной
продукции.
Технология
программирования (programming
technology)
– это совокупность методов и средств,
используемых в процессе разработки
программных продуктов, представляет
собой набор технологических инструкций,
включающих в себя:
-
указание
последовательности технологических
операций; -
перечисление
условий, при которых выполняется та
или иная операция; -
описание самих
операций, где для каждой операции
выделены исходные данные, результаты,
а также инструкции, нормативы, стандарты,
критерии и методы оценки и т.п. (рисунок
1) [6].

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

Любая технология
имеет две стороны:
-
принципиальную
(внутреннюю); -
организационно-производственную
(внешнюю).
Такое же положение
и в области программирования: внутренняя
технология первична, а внешняя –
вторична (это в чем-то напоминает
философскую связь между содержанием и
формой). Без внутренних новинок, присущих
только данной технологии, не может быть
технологии вообще. Новая идея о том,
как конструировать программы, образует
тот генетический материал, который в
дальнейшем при благоприятных условиях
может привести к новой технологии. Такая
идея не появляется из ничего, она, как
правило, – сложный результат изучения
действительного положения вещей,
проникновения в такие сущности, которые
раньше «не просматривались».
Примечание:
Часть идей ведет к созданию действительно
новых способов мышления и программирования,
даже не связанных с конкретным языком.
В этом случае говорят о моделях (model)
или парадигмах (paradigm)
программирования, которые могут
послужить основой самостоятельных
языков программирования.
Технология
программирования определяет способ
описания проектируемого ПП, точнее
модели, используемой на конкретном
этапе разработки. Поэтому различают
технологии, используемые на конкретном
этапе разработки или для решения
отдельных задач этих этапов, и технологии,
охватывающие несколько этапов или весь
процесс разработки. В основе первых,
как правило, лежит ограниченно применимый
метод для решения конкретной задачи. В
основе вторых – базовый подход,
определяющий совокупность методов, или
методологию.
Не следует путать
технологию программирования с
методологией. В технологии программирования
методы рассматриваются «сверху»
с точки зрения организации технологических
процессов, а в методологии программирования
методы рассматриваются «снизу»
с точки зрения основ их построения.
Методология
программирования
– совокупность механизмов, применяемых
в процессе разработки программного
обеспечения и объединенных одним общим
философским подходом [4]1.
В литературе широко
используется близкое к технологии
программирования понятие программной
инженерии
(software
engineering),
определяемой как систематический подход
к разработке, эксплуатации, сопровождению
и изъятию из обращения программных
средств [9]2.
Главное различие между технологией
программирования и программной инженерией
как дисциплинами для изучения заключается
в способе рассмотрения и систематизации
материала. В технологии программирования
акцент делается на изучении процессов
разработки ПП (технологических
процессов) и порядке их прохождения
методы и
инструментальные средства разработки
ПП используются в этих процессах
(их применение и образует технологические
процессы). Тогда как в программной
инженерии изучаются различные методы
и инструментальные средства разработки
ПС с точки зрения достижения определенных
целей – эти методы и средства могут
использоваться в разных технологических
процессах (и в разных технологиях
программирования) [36].
Подводя итог всему
вышесказанному, рассматривая ту или
иную технологию программирования, мы
будем:
-
рассматривать
все процессы разработки ПС, начиная с
момента возникновения замысла ее
создания до написания необходимой
документации (программной, системной,
для пользователя); -
рассматривать не
только вопросы построения программных
конструкций и выбора структур данных,
но и вопросы описания функций и
принимаемых решений с точки зрения их
человеческого (неформального) восприятия; -
использовать ряд
базовых принципов (о них будет идти
речь позже) для достижения поставленной
цели – выпуска надежной ПС.
Такой взгляд на
технологию программирования будет
существенно влиять на организацию
технологических процессов, на выбор в
них методов и инструментальных средств.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
07.06.20152.23 Mб14Учебник Кутафина.doc
- #
- #
- #
- #
- #
- #
- #
- #
- #
2.3. Виды нарушений информационной системы
Организационно-правовые виды нарушений – это нарушения, связанные отсутствием единой согласованной политики компании в сфере защиты информации, невыполнением требований нормативных документов, нарушением режима доступа, хранением и уничтожения информации.
Информационные виды нарушений включают несанкционированное получение полномочий доступа к базам и массивам данных, несанкционированный доступ к активному сетевому оборудованию, серверам доступа, некорректное применение средств защиты и ошибки в управлении ими, нарушения в адресности рассылки информации при ведении информационного обмена.
Физические виды нарушений включают физическое повреждение аппаратных средств автоматизированных систем, линий связи и коммуникационного оборудования, кражи или несанкционированное ознакомление с содержимым носителей информации, хранящихся в неположенных местах, хищение носителей информации, отказы аппаратных средств и др.
К радиоэлектронным видам нарушений относятся такие нарушения, как внедрение электронных устройств перехвата информации, получение информации путем перехвата и дешифрования информационных потоков, дистанционная видеозапись (фотографирование) мониторов, компьютерных распечаток, клавиатуры, навязывание ложной информации в локальных вычислительных сетях, сетях передачи данных и линиях связи.
Самые распространенные электронные атаки. Во-первых, это вирусы. Далее следуют программы типа «троянский конь», которые могут быть незаметно для владельца установлены на его компьютер и также незаметно функционировать на нем. Самые распространенные варианты «троянского коня» выполняют всего лишь одну функцию – кража паролей, но есть и более «продвинутые» экземпляры, которые реализуют весь спектр функций для удаленного управления компьютером, включая просмотр содержимого экрана, перехват всех вводимых с клавиатуры клавиш, кража и изменение файлов.
Другим распространенным типом атак являются действия, направленные на выведение из строя того или иного узла сети. Эти атаки получили название «отказ в обслуживании». Например, неисправность сервера платежной системы банка приведет к невозможности осуществления платежей и, как следствие, к большим прямым и косвенным финансовым потерям.
Одной из наиболее распространенных из существующих классификаций преступлений в сфере компьютерной информации является кодификатор рабочей группы Интерпола, который был положен в основу автоматизированной информационно-поисковой системы, созданной в начале 90-х годов XX в. В соответствии с названным кодификатором все компьютерные преступления классифицированы следующим образом:
QА – несанкционированный доступ и перехват:
QAH – компьютерный абордаж (несанкционированный доступ);
QAI – перехват с помощью специальных технических средств;
QAT – кража времени (уклонение от платы за пользование АИС);
QAZ – прочие виды несанкционированного доступа и перехвата.
QD – Изменение компьютерных данных:
QDL – логическая бомба;
QDT – троянский конь;
QDV – компьютерный вирус;
QDW – компьютерный червь;
QDZ – прочие виды изменения данных.
QF – Компьютерное мошенничество:
QFC – мошенничество с банкоматами;
QFF – компьютерная подделка;
QFG – мошенничество с игровыми автоматами;
QFM – манипуляции с программами ввода-вывода;
QFP – мошенничества с платежными средствами;
QFT – телефонное мошенничество;
QFZ – прочие компьютерные мошенничества.
QR – незаконное копирование:
QRG – компьютерные игры;
QRS – прочее программное обеспечение;
QRT – топология полупроводниковых устройств;
QRZ – прочее незаконное копирование.
QS – Компьютерный саботаж:
QSH – с аппаратным обеспечением (нарушение работы компьютера);
QSS – с программным обеспечением (уничтожение, блокирование информации);
QSZ – прочие виды саботажа.
QZ – Прочие компьютерные преступления:
QZB – с использованием компьютерных досок объявлений;
QZE – хищение информации, составляющей коммерческую тайну;
QZS – передача информации, подлежащая судебному рассмотрению.
QZZ – Иные компьютерные преступления.
Данная классификация применяется при отправлении запросов или сообщений о компьютерных преступлениях по телекоммуникационной сети Интерпола. Одним из ее достоинств является введение литеры «Z», отражающей прочие виды преступлений и позволяющей совершенствовать и дополнять используемую классификацию.
Определенный интерес представляет классификация, предложенная В.А. Мещеряковым:
1. Неправомерное завладение информацией или нарушение исключительного права ее использования.
1.1. Неправомерное завладение информацией как совокупностью сведений, документов (нарушение исключительного права владения).
1.2. Неправомерное завладение информацией как товаром.
1.3. Неправомерное завладение информацией как идеей (алгоритмом, методом решения задачи).
2. Неправомерная модификация информации.
2.1. Неправомерная модификация информации как товара с целью воспользоваться ее полезными свойствами (снятие защиты).
2.2. Неправомерная модификация информации как идеи, алгоритма и выдача за свою (подправка алгоритма).
2.3. Неправомерная модификация информации как совокупности фактов, сведений.
3. Разрушение информации.
3.1. Разрушение информации как товара.
3.2. Уничтожение информации.
4. Действие или бездействие по созданию (генерации) информации с заданными свойствами.
4.1. Распространение по телекоммуникационным каналам информационно-вычислительных сетей информации, наносящей ущерб государству, обществу и личности.
4.2. Разработка и распространение компьютерных вирусов и прочих вредоносных программ для ЭВМ.
4.3. Преступная халатность при разработке (эксплуатации) программного обеспечения, алгоритма в нарушение установленных технических норм и правил.
5. Действия, направленные на создание препятствий пользования информацией законным пользователям.
5.1. Неправомерное использование ресурсов автоматизированных систем (памяти, машинного времени и т. п.).
5.2. Информационное «подавление» узлов телекоммуникационных систем (создание потока ложных вызовов).
Опишем кратко основные особенности выделенных выше типов нарушений информационной безопасности.
Неправомерное завладение информацией как совокупностью сведений, фактов (нарушение исключительного права владения), т. е. ознакомление, а в некоторых случаях и распоряжение информацией субъектом, не имеющим на это законного права. Это наиболее часто встречающийся класс простейших преступных деяний, к которым относятся, как правило, без должного внимания. Примером данного вида деяний является ознакомление служащего банка с записью в базе данных о размере вклада того или иного клиента, его адресе, видах сделок и т. п. Результаты данного действия могут быть записаны на машинный носитель информации (магнитный или лазерный диск, магнитную ленту и т. п.), бумагу или просто остаться в памяти человека.
Неправомерное завладение информацией как товаром (незаконное копирование информации как товара). Это наиболее распространенный вид преступных деяний, который заключается в копировании программ или целой информационной системы (банка данных, электронного архива и т. п.) без согласия (разрешения) владельца или собственника. Еще более усложнилась задача защиты авторских прав в условиях развития глобальных сетей. Если на физических носителях правонарушители создают и распространяют хотя и большое, но все же конечное количество контрафактных экземпляров, то с публикацией в Интернет информация сразу становится доступной миллионам потребителей. Затруднено и установление фактических обстоятельств дела – субъектов, места совершения преступления, – информация может быть размещена нарушителем на сервере, находящемся на территории другого государства.
Неправомерное завладение информацией как идеей, алгоритмом (методом преобразования информации). Данный вид преступления заключается в ознакомлении с использующимся методом расчета каких-либо оценок, алгоритмом принятия решений в экспертной системе или другой автоматизированной системе принятия решений. Примером такого деяния может быть ознакомление с методом расчета вероятности преодоления противоракетной обороны средствами воздушно-космического нападения вероятного противника, ознакомление с использующимся типом (механизмом) системы защиты информации в электронной системе платежей банка.
Неправомерная модификация информации как товара. Данный вид деятельности, так же как и неправомерное завладение информацией как товаром, получил большое распространение в России, однако ни в уголовном, ни в административно-правовом порядке ненаказуем. Многие фирмы-производители программного обеспечения, стараясь защитить себя от компьютерного пиратства, разрабатывают и используют различные методы защиты от копирования и анализа своих разработок. Однако экономические условия, а также принципиальная невозможность создания абсолютных средств защиты информации приводят к тому, что в программное обеспечение или базу данных, полученную однажды законным (или «полузаконным» путем), вносится модификация, позволяющая делать неограниченное количество копий и использовать полезные свойства информации как товара без каких-либо ограничений (временных или по числу раз запуска), наложенных разработчиком.
Неправомерная модификация информации как идеи. Данный вид преступного деяния встречается гораздо реже и заключается не только в получении какого-либо программного обеспечения, но и его обязательный предварительный анализ. Примером такого рода действий могут служить широко известные случаи преступления в банковской сфере, когда в алгоритмы выполнения действий с записями на счетах, взимания процентов вносились незапланированные модификации, при которых с каждой операции на заранее подготовленный счет делались отчисления. Практически все известные на сегодняшний день преступления такого рода совершены разработчиками программного обеспечения и чаще всего теми же, которые его эксплуатируют.
Неправомерная модификация информации как совокупности фактов. Данный вид преступлений широкое распространение получил в автоматизированных банковских системах, так как именно в них записи в полях баз данных отражают определенные денежные суммы или другие сведения, которые имеют конкретное денежное или иное экономическое выражение.
Разработка и распространение компьютерных вирусов. Этот вид деяний является очень распространенным в настоящее время и может соперничать по количеству зарегистрированных фактов только с неправомерным завладением информацией как товаром.
Преступная халатность при разработке программного обеспечения, алгоритма в нарушение установленных технических норм и правил. Развитие вычислительной техники и информатики привело к тому, что автоматизированные системы управления находят свое применение практически во всех отраслях техники и экономики. Не являются исключением и вооружение, объекты атомной энергетики, непрерывные химические производства, системы управления воздушным движением, а также другие объекты, аварии и неисправности которых могут причинить огромный ущерб и непоправимые последствия. В связи с этим разработаны стандарты, инструкции и рекомендации, определяющие порядок разработки, испытания, эксплуатации и сопровождения программных средств критического приложения. Таким образом, здесь под составом преступления следует понимать нарушение этих установленных правил, которые повлекли за собой тяжкие последствия.
Неправомерное использование ресурсов автоматизированных систем. Развитие вычислительной техники, появление сетей привело к возможности их коллективного использования различными субъектами. При этом потребители запрашивают и оплачивают определенный вычислительный или временной ресурс. Под составом преступного деяния здесь следует понимать скрытый неправомерный захват вычислительного ресурса коллективного пользования каким-либо субъектом с намерениями минимизации либо полного исключения своих затрат за время его использования.
Информационное подавление узлов телекоммуникационных систем. Появление доступных информационных систем коллективного пользования, построенных на основе стандартных телефонных каналов взаимосвязанной системы связи России, позволило решать задачи информационного обеспечения самых широких кругов потребителей. В частности, с использованием этой информационной технологии разрабатывались системы электронных торгов на биржах, передачи ценовой информации, проведения электронных платежей. Большую роль в этом играет оперативность получения информации с использованием систем такого рода. Преднамеренная чрезмерная загрузка коммутирующих узлов делает оперативное получение информации невозможным.
Данный текст является ознакомительным фрагментом.
Читайте также
4.3. Таксономия нарушений информационной безопасности вычислительной системы и причины, обусловливающие их существование
4.3. Таксономия нарушений информационной безопасности вычислительной системы и причины, обусловливающие их существование
Таксономия – абстрактная структура категорированных экземпляров, включает комплексное исследование предметной области и создание теоретической
4.4. Анализ способов нарушений информационной безопасности удаленная атака
4.4. Анализ способов нарушений информационной безопасности удаленная атака
Основой любого анализа безопасности компьютерных систем является знание присущих им основных угроз.Атаки, направленные на компьютерные сети, называются удаленными атаками.Основной
5.3. Концепция информационной безопасности
5.3. Концепция информационной безопасности
Концепцией защиты информации называется инструментально-методологическая база, обеспечивающая практическую реализацию стратегий защиты (оборонительной, наступательной, упреждающей), при ее оптимизации и минимальности
Приложение 1 ОЦЕНКА СОСТОЯНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ В США
Приложение 1 ОЦЕНКА СОСТОЯНИЯ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ В США
В начале 2005 года Институт компьютерной безопасности (Computer Security Institute, CSI) и Группа по компьютерным вторжениям отделения Федерального бюро расследований в Сан-Франциско (San Francisco Federal Bureau of Investigations Computer Intrusion
Приложение 6 ПРИМЕРЫ МЕТОДИЧЕСКИХ МАТЕРИАЛОВ ПО ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Приложение 6 ПРИМЕРЫ МЕТОДИЧЕСКИХ МАТЕРИАЛОВ ПО ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Инструкция для администратора безопасности сетиАдминистратор безопасности сети компании X назначается из числа наиболее подготовленных системных администраторов, владеющих сетевыми
Сервис сохранения текстов как оружие в информационной войне
Сервис сохранения текстов как оружие в информационной войне
В Интернете существует сервис «Ontext» (www.ontext.info). «Мирное» предназначение этого ресурса – сохранение текстов. Его можно использовать в ситуации, когда вам пришлось напечатать какой-то текст и надо его просто
От информационной архитектуры к архитектуре убеждения
От информационной архитектуры к архитектуре убеждения
Но ведь вы не только стремитесь помочь людям найти нужные сведения и обеспечить удобство взаимодействия с сайтом, – вы еще хотите, чтобы они предприняли действия. Вы ждете, что они купят товар, подпишутся на услугу
Пять элементов интересной информационной статьи
Пять элементов интересной информационной статьи
В отличие от рекламной статьи, цель которой продать товары или услуги, в информационной статье на первое место выходит ее содержание.Для того чтобы вашу статью прочитали, лучше всего использовать в ее начале блок Pain, как и
1.1. Понятия информации, информационного процесса и информационной системы
1.1. Понятия информации, информационного процесса и информационной системы
Понятия «информация», «информационный процесс» и «информационная система» являются основополагающими в курсе информатики, поэтому их формирование было и остается сложной проблемой, связанной в
1.2. Основы информационной безопасности
1.2. Основы информационной безопасности
Прежде чем перейти к знакомству с основами информационной безопасности, резонно заметить, что объем приведенных материалов можно считать лишь ознакомительным, но никак не исчерпывающим руководством, в силу того что полное
Глава 15: Знание об информационной безопасности и тренировки
Глава 15: Знание об информационной безопасности и тренировки
Перевод: sly (http://slyworks.net.ru ) icq:239940067Cоциальный инженер задумал заполучить проект (исходники) Вашего нового продукта за 2 месяца до релиза.Что остановит его?Ваш файервол? Нет.Мощная система идентификации?
Парадокс информационной ответственности Сергей Голубицкий
Парадокс информационной ответственности
Сергей Голубицкий
Опубликовано 02 сентября 2013
Судя по всему, тема непрекращающихся информационных сливов становится ключевой в современном медийном потоке. Каждый день я читаю о борьбе государственных и
Автоматизированным информационным системам могут угрожать случайные или умышленные сбои. Случайные сбои непреднамеренны, они могут быть вызваны либо ошибками, либо естественными причинами. Умышленные сбои являются результатом атаки, фальсификации, злоумышленного кодирования или взлома.
Ошибки
Проблемы с информационными системами чаще всего возникают из-за ошибок. Иногда небольшая ошибка в программе может привести к серьезным последствиям, например, система пошлет чек на миллион в ответ на обычный счет. Обычно ошибки делают люди, а не машины. В число таких ошибок входят:
1. Ошибки в процессе изготовления или при сборке технического оборудования: компоненты (в частности, механические составляющие, диски или принтеры) не соответствуют друг другу или неправильно собраны в процессе производства или в процессе текущего или профилактического обслуживания.
2. Ошибки при проектировании системы, обычно связанные с упущениями при анализе задачи.
3. Ошибки ввода данных: опечатки, западание курсора или некорректный выбор, сделанный оператором.
4. Ошибки программирования при разработке программного обеспечения на соответствующем языке программирования.
5. Небрежность или обычная невнимательность со стороны людей, работающих с данной технологией.
Ошибки всегда были и будут. Ошибки ввода данных преобладали до 1980-х гг., затем их количество удалось существенно снизить благодаря технологиям фиксации данных, например благодаря использованию штрих-кодов и автоматического распознавания текста. Позднее на первое место вышли ошибки проектирования и программирования. Небрежность тоже бывает весьма разнообразна: клерк может пролить кофе на компьютер, а фермер может случайно перерезать оптико-волоконный кабель.

Природные явления
Природные явления — это неожиданное насильственное нарушение работоспособности системы без вмешательства человека. Природные явления включают повреждения механических или электрических компонент и последствия стихийных бедствий: наводнений, гроз, землетрясений или торнадо. К отказам компонент системы относят не только компьютерные сбои, но и перебои электропитания или электрические помехи.
Атаки
Атаки — это самый простой и частый вид умышленных угроз со стороны «чужих». Эти угрозы включают материальные повреждения компьютерного или телекоммуникационного оборудования, носителей, мебели, рабочих комнат, строений и вспомогательных устройств. Это также и физические атаки на компьютерные установки, такие как злоупотребления, подслушивание, взлом, заимствование прав.
Если система безопасности слаба, то незапертая дверь даст нарушителям доступ к незащищенной компьютерной системе. Такие физические атаки примитивны, просты и очень эффективны. Это и просмотр мусора в поисках конфиденциальной информации, идентификаторов пользователей и паролей или документации на программное обеспечение. Физические атаки включают и телефонные мистификации или «социальную инженерию», когда злоумышленники путем обмана «выуживают» у пользователей или системных администраторов конфиденциальную информацию о системе.
Фальсификация
Фальсификация — это наиболее распространенная умышленная угроза со стороны «своих». Эта угроза включает ввод ложной информации в систему, использование компьютерных технологий для создания неверных данных или замену исходной информации. Информационная система продолжает нормально работать, но цели ее работы изменены. Сама природа автоматизированных информационных систем часто допускает возможность проведения необычных транзакций, которые долгое время могут оставаться незамеченными. Хорошо спроектированная информационная система менее уязвима в отношении ввода ложных данных — она отмечает расхождения с шаблоном входных данных. Фальсификации составляют большую часть мошенничества в области компьютерных технологий.
Злоумышленное кодирование
Злоумышленное кодирование — это нелегальные программы и фрагменты программ, выполняемые на системных компьютерах. Эти программы могут перенаправлять компьютерные ресурсы, изменять данные или делать доступной секретную информацию. Поскольку такие программы невидимы для пользователей компьютера, то злоумышленное кодирование — это самый зловещий способ привлечь компьютер к собственному уничтожению. Очень трудно защитить информационную систему от ее собственных программ. Вот различные типы злоумышленного кодирования:
• «логические бомбы» — выполняют деструктивные процедуры (например, уничтожение файлов, сбой в системе и т. д.) при определенных условиях (например, в пятницу 13-го);
• «Троянский конь» — программа, замаскированная под другую программу, например компьютерную игру; такая программа может незаметно копировать личные файлы игрока, пока он занят игрой;
• «вирус» — фрагмент кода, способный при активизации нелегально присоединяться к другим программам, найденным в компьютере; обычно вирусы содержат и «логическую бомбу»;
• «червяк» — это еще один вид самовоспроизводящейся программы, но она не присоединяется к другим программам, а сама распространяется по сетям или системным устройствам (например, используя электронную почту);
• «черный ход» — неавторизованные фрагменты кода, которые обходят систему защиты и другие стандартные процедуры (часто используются программистами при разработке программы и иногда случайно остаются в системе);
• «салями-коды» — программы, которые срезают «по кусочку» с каждой из транзакций и аккумулируют эти кусочки на счете похитителя;
• «мистификаторы» — программы, которые притворяются другими программами; например фальсификатор входа в систему притворяется системной утилитой, а на самом деле копирует идентификаторы и пароли пользователей и записывает их в скрытый файл.
Взлом
Взлом, или хакерство, — это проникновение в компьютерную систему или программу путем разгадывания или расшифровки кодов доступа, номеров счетов, паролей и файлов. Взломщики (или менее точно хакеры) — это компьютерные вандалы, которые проникают в защищенные системы и загружают нелегальные программы, разрушают файлы пользователя или закрывают доступ к ресурсам компьютера. При взломе систем хакеры часто прибегают к сканированию коммуникационных сетей и массивов данных. Взлом требует хорошего понимания атакуемых технологий. Кроме актов вандализма по отношению к системе взломщики совершают также следующие действия:
1. Просмотр файлов и электронной почты или просмотр неиспользованной памяти и диска (часто система физически не удаляет информацию из областей памяти, уже освобожденных программами, а это значит, что фрагменты программ и данных могут быть восстановлены талантливыми хакерами).
2. Компрометация баз данных, включая использование механизма запросов для получения или отслеживания ранее неизвестной информации об индивидууме.
3. Получение неавторизованных или неоплачиваемых телефонных или информационных услуг (часто со взломом телекоммуникационного оборудования). Умышленные угрозы имеют дополнительный параметр — мотив. Мотивы умышленных нарушений ~ это мошенничество, шпионаж и вандализм.
Мошенничество
Мошенничество — это использование информационных ресурсов путем умышленного обмана в целях получения незаконной прибыли. Поскольку большинство ценных товаров (деньги, ценные металлы, сырье) запрашиваются через компьютеры, то простое коммерческое мошенничество все чаще осуществляется путем компьютерных атак. Кроме незаконного использования информационных систем для перевода денежных средств распространены и другие виды мошенничества:
1. Взлом банкоматов, заключающийся в использовании краденых или фальшивых банковских и кредитных карточек.
2. Использование пиратского программного обеспечения, что включает подделку коммерческих пакетов программ и незаконное копирование программного обеспечения внутри или вне предприятия.
3. Хищение ресурсов, т. е. использование информационных ресурсов организации в своих целях, что может включать использование компьютеров фирмы, копировальных автоматов, телефонов и незаконный обмен данными.
Шпионаж
Шпионаж имеет целью получение информации, не подлежащей огласке. Шпионаж обычно включает три ступени: получение доступа к секретным данным, сбор данных и анализ данных. Конечным результатом шпионажа является неизбежное снижение информационной ценности данных. Ведь данные, которые пытаются украсть, обычно и считаются секретными именно из-за того, что они представляют ценность. Если данные публикуются или становятся известны конкурентам, то их ценность падает. Шпионажем может заниматься злоумышленник, получивший несанкционированный доступ к компьютерной системе путем мошенничества или взлома; предприятие, которое получает права авторизованного пользования компьютером, что позволяет получить доступ и к секретным данным в том числе; или другие лица, имеющие доступ к компьютерам.
Для многих фирм одним из главных мотивов предотвращения шпионажа является защргта частной жизни. Целый ряд международных соглашений, национальных и региональных законов, условия контрактов требуют от организаций принятия мер по защите персональной информации о людях от случайного или преднамеренного раскрытия. Коммерческие организации должны особо тщательно заботиться о потоках данных через границу государства, так как передача частных данных о гражданах может привести к нарушению законов.
Вандализм
Вандализм — это преднамеренное или злоумышленное повреждение компьютерных ресурсов, включая оборудование, данные и программное обеспечение. Мотивы вандализма:
• Озорство юных программистов-взломщиков, пробующих свои силы в освоении компьютерных систем.
• Личная месть со стороны уволенных служащих или потребителей, желающих навредить фирме, разрушив ее информационную систему.
• Общественные беспорядки, бессмысленный вандализм как часть общественных волнений.
• Терроризм, экстремальное разрушение информационных систем социального масштаба организованными группами, преследующими политические или идеологические цели.
• Военные атаки; обычно они направлены на военные или имеющие к ним отношение промышленные компьютеры, могут включать чрезвычайно интенсивные нападения (например, диверсионные отряды), хакерство (например, суперкомпьютерный криптоанализ) и злоумышленное кодирование (например, «логические бомбы» в компьютере наведения ракет на цель).
Дефекты программного обеспечения можно обнаружить на каждом этапе разработки и тестирования продукта. Чтобы гарантировать исправление наиболее серьезных дефектов программного обеспечения, тестировщикам важно иметь хорошее представление о различных типах дефектов, которые могут возникнуть.

В этой статье мы обсудим самые распространенные типы ПО дефекты и способы их выявления.
Что такое дефект?
Дефект программного обеспечения — это ошибка, изъян, сбой или неисправность в компьютерной программе, из-за которой она выдает неправильный или неожиданный результат или ведет себя непреднамеренным образом. Программная ошибка возникает, когда фактические результаты не совпадают с ожидаемыми. Разработчики и программисты иногда допускают ошибки, которые создают ошибки, называемые дефектами. Большинство ошибок возникает из-за ошибок, которые допускают разработчики или программисты.
Обязательно прочтите: Разница между дефектом, ошибкой, ошибкой и сбоем
Типы программных ошибок при тестировании программного обеспечения
Существует множество различных типов дефектов программного обеспечения, и тестировщикам важно знать наиболее распространенные из них, чтобы они могут эффективно тестировать их.
Ошибки программного обеспечения подразделяются на три типа:
- Дефекты программного обеспечения по своей природе
- Дефекты программного обеспечения по их приоритету
- Дефекты программного обеспечения по их серьезности
Обычно мы можем видеть приоритет и серьезность классификаторов в большинстве инструментов отслеживания ошибок. Если мы настроим классификатор в соответствии с характером ошибки, а также приоритетом и серьезностью, это поможет легко управлять распределением обязанностей по исправлению ошибок соответствующим командам.
#1. Дефекты программного обеспечения по своей природе
Ошибки в программном обеспечении имеют широкий спектр природы, каждая из которых имеет свой собственный набор симптомов. Несмотря на то, что таких багов много, сталкиваться с ними можно не часто. Вот наиболее распространенные ошибки программного обеспечения, классифицированные по характеру, с которыми вы, скорее всего, столкнетесь при тестировании программного обеспечения.
#1. Функциональные ошибки
Как следует из названия, функциональные ошибки — это те, которые вызывают сбои в работе программного обеспечения. Хорошим примером этого может служить кнопка, при нажатии на которую должно открываться новое окно, но вместо этого ничего не происходит.
Функциональные ошибки можно исправить, выполнив функциональное тестирование.
#2. Ошибки на уровне модуля
Ошибки на уровне модуля — это дефекты, связанные с функциональностью отдельного программного модуля. Программный модуль — это наименьшая тестируемая часть приложения. Примеры программных модулей включают классы, методы и процедуры. Ошибки на уровне подразделения могут существенно повлиять на общее качество программного обеспечения.
Ошибки на уровне модуля можно исправить, выполнив модульное тестирование.
#3. Ошибки уровня интеграции
Ошибки уровня интеграции — это дефекты, возникающие при объединении двух или более программных модулей. Эти дефекты может быть трудно найти и исправить, потому что они часто требуют координации между несколькими командами. Однако они могут оказать существенное влияние на общее качество программного обеспечения.
Ошибки интеграции можно исправить, выполнив интеграционное тестирование.
#4. Дефекты юзабилити
Ошибки юзабилити — это дефекты, влияющие на работу пользователя с программным обеспечением и затрудняющие его использование. Дефект юзабилити — это дефект пользовательского опыта программного обеспечения, который затрудняет его использование. Ошибки юзабилити — это такие ошибки, как если веб-сайт сложен для доступа или обойти, или процесс регистрации сложен для прохождения.
Во время тестирования удобства использования тестировщики программного обеспечения проверяют приложения на соответствие требованиям пользователей и Руководству по доступности веб-контента (WCAG) для выявления таких проблем. Однако они могут оказать существенное влияние на общее качество программного обеспечения.
Ошибки, связанные с удобством использования, можно исправить, выполнив тестирование удобства использования.
#5. Дефекты производительности
Ошибки производительности — это дефекты, влияющие на производительность программного обеспечения. Это может включать в себя такие вещи, как скорость программного обеспечения, объем используемой памяти или количество потребляемых ресурсов. Ошибки уровня производительности сложно отследить и исправить, поскольку они могут быть вызваны рядом различных факторов.
Ошибки юзабилити можно исправить, выполнив тестирование производительности.
#6. Дефекты безопасности
Ошибки безопасности — это тип дефекта программного обеспечения, который может иметь серьезные последствия, если его не устранить. Эти дефекты могут позволить злоумышленникам получить доступ к конфиденциальным данным или системам или даже позволить им получить контроль над уязвимым программным обеспечением. Таким образом, очень важно, чтобы ошибкам уровня безопасности уделялось первоочередное внимание и устранялись как можно скорее.
Ошибки безопасности можно исправить, выполнив тестирование безопасности.
#7. Дефекты совместимости
Дефекты совместимости — это те ошибки, которые возникают, когда приложение несовместимо с оборудованием, на котором оно работает, или с другим программным обеспечением, с которым оно должно взаимодействовать. Несовместимость программного и аппаратного обеспечения может привести к сбоям, потере данных и другому непредсказуемому поведению. Тестировщики должны знать о проблемах совместимости и проводить соответствующие тесты. Программное приложение, имеющее проблемы с совместимостью, не работает последовательно на различных видах оборудования, операционных системах, веб-браузерах и устройствах при подключении к определенным программам или работе в определенных сетевых условиях.
Ошибки совместимости можно исправить, выполнение тестирования совместимости.
#8. Синтаксические ошибки
Синтаксические ошибки являются самым основным типом дефекта. Они возникают, когда код нарушает правила языка программирования. Например, использование неправильной пунктуации или забывание закрыть скобку может привести к синтаксической ошибке. Синтаксические ошибки обычно мешают запуску кода, поэтому их относительно легко обнаружить и исправить.
#9. Логические ошибки
Логические ошибки — это дефекты, из-за которых программа выдает неправильные результаты. Эти ошибки может быть трудно найти и исправить, потому что они часто не приводят к каким-либо видимым ошибкам. Логические ошибки могут возникать в любом типе программного обеспечения, но они особенно распространены в приложениях, требующих сложных вычислений или принятия решений.
Общие симптомы логических ошибок включают:
- Неверные результаты или выходные данные
- Неожиданное поведение
- Сбой или зависание программного обеспечения
Чтобы найти и исправить логические ошибки, тестировщикам необходимо иметь четкое представление о коде программы и о том, как она должна работать. Часто лучший способ найти такие ошибки — использовать инструменты отладки или пошаговое выполнение, чтобы отслеживать выполнение программы и видеть, где что-то идет не так.
#2. Дефекты программного обеспечения по степени серьезности
Уровень серьезности присваивается дефекту по его влиянию. В результате серьезность проблемы отражает степень ее влияния на функциональность или работу программного продукта. Дефекты серьезности классифицируются как критические, серьезные, средние и незначительные в зависимости от степени серьезности.
#1. Критические дефекты
Критический дефект — это программная ошибка, имеющая серьезные или катастрофические последствия для работы приложения. Критические дефекты могут привести к сбою, зависанию или некорректной работе приложения. Они также могут привести к потере данных или уязвимостям в системе безопасности. Разработчики и тестировщики часто придают первостепенное значение критическим дефектам, поскольку их необходимо исправить как можно скорее.
#2. Серьезные дефекты
Серьезный дефект — это программная ошибка, существенно влияющая на работу приложения. Серьезные дефекты могут привести к замедлению работы приложения или другому неожиданному поведению. Они также могут привести к потере данных или уязвимостям в системе безопасности. Разработчики и тестировщики часто придают первостепенное значение серьезным дефектам, поскольку их необходимо исправить как можно скорее.
#3. Незначительные дефекты
Незначительный дефект — это программная ошибка, которая оказывает небольшое или незначительное влияние на работу приложения. Незначительные дефекты могут привести к тому, что приложение будет работать немного медленнее или демонстрировать другое неожиданное поведение. Разработчики и тестировщики часто не придают незначительным дефектам приоритет, потому что их можно исправить позже.
#4. Тривиальные дефекты
Тривиальный дефект – это программная ошибка, не влияющая на работу приложения. Тривиальные дефекты могут привести к тому, что приложение отобразит сообщение об ошибке или проявит другое неожиданное поведение. Разработчики и тестировщики часто присваивают тривиальным дефектам самый низкий приоритет, потому что они могут быть исправлены позже.
#3. Дефекты программного обеспечения по приоритету
#1. Дефекты с низким приоритетом
Дефекты с низким приоритетом, как правило, не оказывают серьезного влияния на работу программного обеспечения и могут быть отложены для исправления в следующей версии или выпуске. В эту категорию попадают косметические ошибки, такие как орфографические ошибки, неправильное выравнивание и т. д.
#2. Дефекты со средним приоритетом
Дефекты со средним приоритетом — это ошибки, которые могут быть исправлены после предстоящего выпуска или в следующем выпуске. Приложение, возвращающее ожидаемый результат, которое, однако, неправильно форматируется в конкретном браузере, является примером дефекта со средним приоритетом.
#3. Дефекты с высоким приоритетом
Как следует из названия, дефекты с высоким приоритетом — это те, которые сильно влияют на функционирование программного обеспечения. В большинстве случаев эти дефекты необходимо исправлять немедленно, так как они могут привести к серьезным нарушениям нормального рабочего процесса. Дефекты с высоким приоритетом обычно классифицируются как непреодолимые, так как они могут помешать пользователю продолжить выполнение поставленной задачи.
Некоторые распространенные примеры дефектов с высоким приоритетом включают:
- Дефекты, из-за которых приложение не работает. сбой
- Дефекты, препятствующие выполнению задачи пользователем
- Дефекты, приводящие к потере или повреждению данных
- Дефекты, раскрывающие конфиденциальную информацию неавторизованным пользователям
- Дефекты, делающие возможным несанкционированный доступ к системе
- Дефекты, приводящие к потере функциональности
- Дефекты, приводящие к неправильным результатам или неточным данным
- Дефекты, вызывающие проблемы с производительностью, такие как чрезмерное использование памяти или медленное время отклика
#4. Срочные дефекты
Срочные дефекты — это дефекты, которые необходимо устранить в течение 24 часов после сообщения о них. В эту категорию попадают дефекты со статусом критической серьезности. Однако дефекты с низким уровнем серьезности также могут быть классифицированы как высокоприоритетные. Например, опечатка в названии компании на домашней странице приложения не оказывает технического влияния на программное обеспечение, но оказывает существенное влияние на бизнес, поэтому считается срочной.
#4. Дополнительные дефекты
#1. Отсутствующие дефекты
Отсутствующие дефекты возникают из-за требований, которые не были включены в продукт. Они также считаются несоответствиями спецификации проекта и обычно негативно сказываются на пользовательском опыте или качестве программного обеспечения.
#2. Неправильные дефекты
Неправильные дефекты — это те дефекты, которые удовлетворяют требованиям, но не должным образом. Это означает, что хотя функциональность достигается в соответствии с требованиями, но не соответствует ожиданиям пользователя.
#3. Дефекты регрессии
Дефект регрессии возникает, когда изменение кода вызывает непреднамеренное воздействие на независимую часть программного обеспечения.
Часто задаваемые вопросы — Типы программных ошибок< /h2>
Почему так важна правильная классификация дефектов?
Правильная классификация дефектов важна, поскольку она помогает эффективно использовать ресурсы и управлять ими, правильно приоритизировать дефекты и поддерживать качество программного продукта.
Команды тестирования программного обеспечения в различных организациях используют различные инструменты отслеживания дефектов, такие как Jira, для отслеживания дефектов и управления ими. Несмотря на то, что в этих инструментах есть несколько вариантов классификации дефектов по умолчанию, они не всегда могут наилучшим образом соответствовать конкретным потребностям организации.
Следовательно, важно сначала определить и понять типы дефектов программного обеспечения, которые наиболее важны для организации, а затем соответствующим образом настроить инструмент управления дефектами.
Правильная классификация дефектов также гарантирует, что команда разработчиков сможет сосредоточиться на критических дефектах и исправить их до того, как они повлияют на конечных пользователей.
Кроме того, это также помогает определить потенциальные области улучшения в процессе разработки программного обеспечения, что может помочь предотвратить появление подобных дефектов в будущих выпусках.
Таким образом, отслеживание и устранение дефектов программного обеспечения может показаться утомительной и трудоемкой задачей. , правильное выполнение может существенно повлиять на качество конечного продукта.
Как найти лежащие в основе ошибки программного обеспечения?
Определение основной причины программной ошибки может быть сложной задачей даже для опытных разработчиков. Чтобы найти лежащие в основе программные ошибки, тестировщики должны применять систематический подход. В этот процесс входят различные этапы:
1) Репликация. Первым этапом является воспроизведение ошибки. Это включает в себя попытку воспроизвести тот же набор шагов, в котором возникла ошибка. Это поможет проверить, является ли ошибка реальной или нет.
2) Изоляция. После того, как ошибка воспроизведена, следующим шагом будет попытка ее изоляции. Это включает в себя выяснение того, что именно вызывает ошибку. Для этого тестировщики должны задать себе несколько вопросов, например:
– Какие входные данные вызывают ошибку?
– При каких различных условиях возникает ошибка?
– Каковы различные способы проявления ошибки?
3) Анализ: после Изолируя ошибку, следующим шагом будет ее анализ. Это включает в себя понимание того, почему возникает ошибка. Тестировщики должны задать себе несколько вопросов, таких как:
– Какова основная причина ошибки?
– Какими способами можно исправить ошибку?
– Какое исправление было бы наиболее эффективным? эффективно?
4) Отчет. После анализа ошибки следующим шагом является сообщение о ней. Это включает в себя создание отчета об ошибке, который включает всю соответствующую информацию об ошибке. Отчет должен быть четким и кратким, чтобы разработчики могли его легко понять.
5) Проверка. После сообщения об ошибке следующим шагом является проверка того, была ли она исправлена. Это включает в себя повторное тестирование программного обеспечения, чтобы убедиться, что ошибка все еще существует. Если ошибка исправлена, то тестер может подтвердить это и закрыть отчет об ошибке. Если ошибка все еще существует, тестировщик может повторно открыть отчет об ошибке.
Заключение
В индустрии программного обеспечения дефекты — неизбежная реальность. Однако благодаря тщательному анализу и пониманию их характера, серьезности и приоритета дефектами можно управлять, чтобы свести к минимуму их влияние на конечный продукт.
Задавая правильные вопросы и применяя правильные методы, тестировщики могут помочь обеспечить чтобы дефекты обнаруживались и исправлялись как можно раньше в процессе разработки.
TAG: qa
