наведённая ошибка
-
1
propagated errorУниверсальный англо-русский словарь > propagated error
-
2
induzierte FehlerУниверсальный немецко-русский словарь > induzierte Fehler
См. также в других словарях:
-
Волшебство мира Гарри Поттера — Эта статья является частью цикла статей о волшебном мире Гарри Поттера. Эта статья об объекте вымышленного мира описывает его только на основе самого художественного произведения. Статья, состоящая только из инфор … Википедия
-
Октябрьская революция — У этого термина существуют и другие значения, см. Октябрьская революция (значения). Октябрьское восстание … Википедия
-
Гражданская война в Испании — Смерть республиканца анархиста Федерико Боррелла Гарсии (фотография Роберта Капы) … Википедия
-
Гибель тургруппы Дятлова — В таком виде спасатели нашли палатку группы. Фото спасателя Вадима Брусницына 26 или 28 февраля 1959 г. Слева поисковик Юрий Коптёлов Гибель тургруппы Дятлова событие, случившееся предположительно в ночь с 1 на 2 … Википедия
-
Видоискатель — Запрос «Визир» перенаправляется сюда; см. также другие значения. Видоискатель, Визир, Визирное устройство элемент фотоаппарата, показывающий границы будущего снимка, иногда резкость и параметры съёмки. Также видоискатели используются в… … Википедия
-
Assassin’s Creed — Assassin’s Creed Разработчик Ubisoft Montreal Издатели … Википедия
-
Assassin’s Creed — Assassin’s Creed Разработчик Ubisoft Montreal Издатели … Википедия
-
Assassin’s Creed — Это статья о компьютерной игре. О серии компьютерных игр см. статью Assassin s Creed (серия игр) Assassin’s Creed Разработчик Ubisoft Montreal … Википедия
Вряд ли в мире был хоть один случай тестирования системы без замечаний. Среди них, как и среди требований, попадаются замечания-дичь, но мы разберём объективные и наиболее часто возникающие: их виды, причины и даже примеры из замечаний к тестированию ECM-системы. Спасибо за предоставленный материал ИТ-компании Акелон, чьи аналитики слона съели на этой теме и поделились выдержками из своей Базы знаний.
Для начала определимся в какой форме может быть высказано замечание:
- Дефект – невыполнение требования, связанного с предназначенным использованием и зафиксированного в следующих источниках: документация на систему, проектные решения, тех. проекты, проект тестирования, а также общепринятые документы (например, правила русского языка). К описанию дефектов по программным продуктам могут относиться: нелогичности и несоответствия стандартам, ошибки выполнения команд; по документам – неточности в технологических документах, их несоответствие реальным процессам, ошибки и опечатки и так далее.
- Пожелание – предложение об осуществлении чего-либо относительно продукта. Пожелания, как правило, бывают связаны с расширением функциональности элемента, оптимизацией его работы и использования, дополнительным контролем некорректных действий пользователя и т.д. Например, наличие нового типа документа, многоадресные служебные записки.
- Новая фича – крупная разработка/кардинальное преобразование в существующих продуктах, которая не является улучшением или пожеланием по развитию существующей функциональности. Например, чат-боты, новый модуль «Закупки», интеллектуальная обработка документов и так далее.
Мы выделили пять основных причин для подобного рода замечаний
-
Несоответствие требованиям. Такое замечание можно классифицировать как дефект продукта. Несоответствие требованиям может быть вызвано некорректной разработкой или некорректной настройкой.
ПРИМЕР некорректного требования
Требование: «Специалист должен иметь возможность фильтровать список входящих документов по полю Подписал со стороны корреспондента». В результате разработали фильтрацию по полю Адресат.
В техпроекте написано: «Добавить поле в справочник <наименование справочника>, с возможностью выбора записи из справочника Сотрудники, а в результате разработали обычное текстовое поле / не добавили новое поле / поле недоступно для редактирования и так далее.
2. Некорректно зафиксированное требование. Это тот случай, когда некорректно сформулировано или некачественно проработано требование, либо в процессе появились дополнительные пожелания к продукту и требования неполные (не выявили при проектировании, осознали необходимость на этапе разработки или тестирования); есть ещё противоречащие требования.
ПРИМЕР
Первоначальное требование: сотрудники должны загружаться в систему при интеграции с HR-системой.
В карточке записи справочника Сотрудники должно быть предусмотрено обязательное поле Непосредственный руководитель. Дефект требования в том, что, при попытке заполнить непосредственного руководителя сотрудник может быть еще не загружен из HR-системы, в связи с этим будут возникать ошибки интеграции. Правильнее было сделать поле Непосредственный руководитель необязательным, либо заполнять его после первичной загрузки (поэтапный запуск сеанса интеграции).
3. Некорректное проектирование. Это дефекты, которые могли появиться по причине некачественного проектирования при разработке проектных решений, системных анализов, а также при разработке техпроекта модификаций/интеграции.
ПРИМЕР
В проектных решениях консультант описал бизнес — процесс «Работа с договорными документами» следующим образом: «… После смены состояния документа на Утвержден происходит сеанс интеграции с учетной системой. Передаются следующие данные о договоре: Рег.№, Контрагент, Подписант…». Ошибка в том, что в учетную систему должна попадать информация о договоре в случае, если состояние документа изменяется на Действующий, то есть документ зарегистрирован и подписан с обеих сторон.
4. Наведенные дефекты. Проявляется, когда исправлен один дефект, после чего возникли дефекты в связанных элементах разработки.
ПРИМЕР
Удалили поле Уполномоченное лицо в карточке документа, в результате регламент согласования отрабатывает некорректно, так как в этапе Согласование с уполномоченным лицом исполнитель вычисляется из данного поля.
5. Несоответствие общепринятым нормам. Когда разработка или настройка не соответствует требованиям законодательства, правилам русского языка, нормативным документам, положениям об ЭДО и так далее.
ПРИМЕР
Разработано новое решение, которое включает в себя заключение трудовых договоров. Согласно требованиям проекта ФЗ об участии в эксперименте минтруда система должна поддерживать выгрузку трудовых договоров в необходимом формате. При разработке данное требование не было учтено, выгрузка не была реализована, что противоречит требованиям ФЗ.
Это лишь часть большой статьи руководителя группы консультирования Сергея Птицына о “Работе с замечаниями при тестировании системы”. В следующих постах мы расскажем, как оформлять замечания и тестировать исправления так, чтобы остановить цепочку замечаний по замечаниям замечаний ))).
- Суть методики
- Особенности
- Что требуется, чтобы эффективно (пред)угадывать ошибки
- Примеры
- Преимущества и недостатки методики
Что это
Техники тест-дизайна — это то, чем должен хорошо владеть каждый тестировщик, даже стажер. Наиболее часто применяемые техники: эквивалентные классы, анализ граничных значений, и предугадывание ошибок.
В данной методике (типологически относится к тестированию черного ящика) нет какого-то специфического метода идентификации ошибок. Тестировщик действует, исходя из своего опыта и интуиции, пытаясь предугадать проблемные места в приложении. Поэтому успешность этой методики сильно зависит от опыта и скиллов, и глубины понимания тестируемого продукта.
Особенности
Как уже сказано, эффективность зависит от опыта, особенно с похожими приложениями ранее. Поэтому лучше и быстрее с такой задачей справляются QA-инженеры с опытом 1 год и более.
Методика направлена на поиск багов, не поддающихся другим методикам черного ящика. Поэтому стандартно выполняется уже после них.
Частыми ошибками в приложениях (следовательно, наиболее вероятными ошибками в тестируемом приложении) являются, например:
- Ввод некорректных (невалидных) параметров и символов
- Например, ввод пробела в “цифровые” поля, где это недопустимо
- Ошибка-исключение null pointer exception
- Деление на ноль
- Превышение максимального количества передаваемых файлов
- И подобные «типичные пользовательские» ошибки
Итак, цель предугадывания — найти ошибки, которые трудно “выловить” другими методиками черного ящика. Готовятся тест-кейсы, направленные на области наиболее вероятных ошибок; по возможности покрываются все проблемные места; но без избыточности.
Методика, разумеется, не является идеальной, способной обеспечить высокое качество — ведь она основана на интуиции, поэтому ограничена по умолчанию, зависит от умений и, главное, опытности QA-инженера. Она вовсе не гарантирует высокого покрытия, и должна сочетаться с другими методиками, дополнять их.
Что нужно, чтобы хорошо угадывать ошибки
- Интуиция тестировщика
- И его знание продукта
- Опыт прошлых проектов
- Чек-лист
- Риск-репорты
- Знание типичных проблем с интерфейсом
- Идеальное знание общих принципов тестирования
- Результаты предыдущих тестов
- Характерные ошибки, случавшиеся ранее
Примеры предугадывания ошибок
Пример 1
В приложении есть функция ввода номера телефона клиента, и он должен быть стандартной длины, то есть 10 цифр. Методика предугадывания ошибок в данном случае может проверить, например:
- Что случится, если ввести не цифру, а букву или пробел
- Если ввести только 8 цифр
- Если оставить поле пустым
- Если ввести не 10, а 12 цифр
Если такие невалидные значения введены, и функция ведёт себя как ожидается — то есть показывает ошибку, она расценивается как не имеющая багов; в противном случае заводится баг, и функция передается разработчикам, чтобы те устранили баг.
Пример 2
Счет на банковской карте настроен так, что принимает только суммы от 5000 до 7000 рублей (так нужно клиенту). Действуя по методике предугадывания ошибок, подбираем значения ввода, пытаясь добиться наибольшего покрытия:
| Значение | Результат |
| 6000 | ОК |
| 5500 | ОК |
| 4000 | Ошибка |
| 7200 | Ошибка |
| 7400 | Ошибка |
| 8000 | Ошибка |
| Пустое | Ошибка |
| 100$ | Ошибка |
| … | … |
| … и так далее |
Преимущества и недостатки методики
Преимущества
- Неплохой контроль возможных проблемных мест в проекте (они обычно стандартные)
- Отлично работает в сочетании с другими техниками тест-дизайна и дополняет их
- Позволяет довольно просто находить баги, которые доступны только при исчерпывающем тестировании (всех комбинаций ввода, что невозможно из-за недостатка времени)
Недостатки
- Является как бы ориентированной на личность тестировщика методикой, а не на процессы, что более правильно; то есть не является универсальной, а сильно зависит от скиллов тестировщика
- Не обеспечивает хорошее покрытие сама по себе
- Не очень подходит новичкам, неопытным, плохо знакомым с продуктом или областью его применения
***
Обработка ошибок
Каждая фаза компиляции может обнаружить ошибки в транслируемой программе. После обнаружения ошибки фаза должна каким-то образом справиться с возникшей ситуацией. Иными словами, процесс компиляции должен быть продолжен, причем так, чтобы была возможность поиска следующих ошибок в исходной программе. Компилятор, который останавливается после обнаружения первой ошибки, не может быть признан достаточно хорошим. Впрочем, в некоторых ситуациях это вполне приемлемо. Такие ситуации возникают, например, если разрабатывается диалоговый транслятор, который будет использоваться в учебных целях, поскольку начинающему программисту, с одной стороны, вполне достаточно получать информацию об одной ошибке, с другой стороны, получение информации сразу о большом количестве ошибках может его дезориентировать. Одно из основных требований, предъявляемых промышленным трансляторам, заключается в том, чтобы пользователь получил как можно больше корректных ошибок за одну трансляцию. Мы не зря использовали прилагательное «корректные», говоря об ошибках, которые обнаруживает компилятор. Дело в том, что иногда трансляторы выдают информацию о так называемых «наведенных» ошибках. Наведенные ошибки, т.е. такие, которых в программе на самом деле нет, могут возникнуть в результате не совсем корректной работы транслятора после обнаружения какой-нибудь ошибки.
Наибольшая доля ошибок приходится, как правило, на две фазы: синтаксический анализ и фазу контроля типов. Лексический анализатор может обнаружить только те ошибки, которые связаны, например, с использованием неверных литер, или если выделенная лексема не принадлежит ни одному из лексических классов языка. Количество типов ошибок, которые может обнаружить фаза лексического анализа, весьма незначительно, поскольку лексический анализатор «видит» только небольшой, локальный, участок программы. Например, лексический анализатор не сможет обнаружить ошибку в следующем контексте:
Ошибки, связанные с нарушением синтаксической структуры исходной программы, определяются на фазе синтаксического анализа. Ошибки, возникающие на фазе контроля типов, связаны с неверным использованием идентификаторов, с некорректной передачей фактических параметров процедурам и т.п.
Обычно, фазы оптимизации и генерации не обнаруживают ошибки, хотя и здесь бывают исключения. Например, представим себе, что в реализуемом языке определено присваивание одной структуры другой по именам полей. Это означает, что если у нас есть две структуры, то присваивание одной структуры другой будет иметь эффект в том случае, если обе из этих структур имеют по крайней мере одну пару одинаковых выделителей полей. При таком определении присваивания структур, компилятор, должен проверить, возможно ли такое присваивание, и если все выделители полей структур различны, должен выдать сообщение об ошибке. Понятно, что ситуация такого рода станет ясна только после контроля типов. Кроме того, поскольку компилятор должен выполнить так называемую «расклейку» присваивания (т.е. преобразовать исходное присваивание в одно или несколько присваиваний соответствующих полей), то такого рода действия можно считать оптимизирующими и, соответственно, сообщение об ошибке в случае, если все имена полей структуры-получателя и структуры-источника различны, будет выдавать фаза оптимизации.
Информация, необходимая для выдачи сообщения об ошибке
В однопросмотровом компиляторе все фазы выполняются параллельно. Если возникает ошибка в исходной программе, то текущая позиция лексического анализатора является приемлемой аппроксимацией позиции исходной программы, содержащей ошибку. В таком компиляторе лексический анализатор сохраняет текущую позицию в глобальной переменной. Процедура, предназначенная для выдачи сообщений об ошибках, печатает сообщение об ошибке и значение переменной, содержащей текущую позицию.
Компиляторы, состоящие более чем из одного просмотра, часто выполняют синтаксический анализ и типовой анализ на разных просмотрах. Естественно, это облегчает жизнь в различных аспектах, но существенно усложняет выдачу сообщений о типовых ошибках. Лексический анализатор достигает конца исходной программы раньше, чем начнет выполняться фаза контроля типов. Контроль типов осуществляется во время обхода синтаксического дерева, поэтому невозможно использовать текущую позицию в исходной программе, которую поддерживает лексический анализатор, для выдачи информации об ошибке. Поэтому каждый узел синтаксического дерева должен содержать позицию соответствующей ему конструкции в исходном файле, т.е. структура, определяющая узел дерева, должна содержать поле pos, предназначенное для этой цели. Это поле pos само является структурой из двух полей: номера строки исходной программы и номера позиции в строке. Понятно, что текущая позиция первоначально определяется лексическим анализатором (оно является одним из полей структуры Lexeme ), а затем передается синтаксическому анализатору, который и помещает это значение в поле pos узла синтаксического дерева. Для более точного определения позиции в исходном файле каждый узел синтаксического дерева обычно содержит два поля, определяющих положение конструкции, а именно, позицию начала конструкции и позицию ее конца ( beg_pos и end_pos соответственно).