Слайд 40началоa,b,ca=0b=0D
Слайд 13Причины ошибок выполненияВсе возможные причины ошибок можно
данных, логические ошибки, накопление погрешностей результатов вычислений.
Слайд 65Основная особенность практики тестирования ПСПо мере роста
растёт также относительная вероятность существования в нём необнаруженных ошибок. Это подтверждает важность предупреждения ошибок на всех стадиях разработки ПС.
Слайд 60Два основных вида тестирования1. Автономное (модульное) тестирование
входящих в ПС, с поиском и исправлением в них фиксируемых при тестировании ошибок. Включает отладку каждого программного модуля и их сопряжения.2. Комплексное (системное) тестирование – тестирование ПС в целом с поиском и исправлением фиксируемых при тестировании ошибок во всех рабочих продуктах;
Слайд 21Долгое время было принято считать, что целью
Но полный перебор всех возможных вариантов выполнения программы находится за пределами вычислительных возможностей даже для очень небольших программ.
«Тестирование – это процесс выполнения программ с целью обнаружения ошибок».Гленфорд Майерс
Слайд 26Основные понятия, связанные с тестированием и отладкойОтладка
обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ.Тестирование программного средства — процесс выполнения программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ.
Отладка = Тестирование + Поиск ошибок + Редактирование
Слайд 62Основные этапы разработки сценария автономного тестированияНа основании
возможности ситуации;каждой границы областей возможных значений всех входных данных;каждой области недопустимых значений;каждого недопустимого условия.Проверить текст модуля, чтобы убедиться, что каждое направление любого разветвления будет пройдено хотя бы один раз. Добавить недостающие тесты.
Слайд 42Только на основании выбранного критерия можно определить тот
для проверки программы с некоторой полнотой (степень полноты, определяется экспериментально). Используется два вида критериев: критерии черного и белого ящика. Соответственно тесты делятся на функциональные и структурные.• функциональные тесты составляются исходя из спецификации программы;• структурные тесты составляются исходя из текста программы.
Критерии полноты тестирования
Слайд 22До начала 80-х годов процесс тестирования программного
вначале программисты реализовывали заданную функциональность, а затем тестировщики приступали к проверке качества созданных программ. Проблемы: разработка программ может оказаться достаточно длительной – чем в это время должны заниматься тестировщики? Плохая предсказуемости результатов такого процесса разработки. Ключевой вопрос: сколько времени потребуется на завершение продукта, в котором существует 500 известных ошибок?
Слайд 36Функциональный подход основывается на том, что структура
«черный ящик»). В этом случае тесты проектируют, исследуя внешние спецификации или спецификации сопряжения программы или модуля, которые он тестирует. Логика проектировщика тестов такова: «Меня не интересует, как выглядит эта программа, и выполнил ли я все команды. Я удовлетворен, если программа будет вести себя так, как указано в спецификациях». В идеале — проверить все возможные комбинации и значения на входе.
Подходы к выработке стратегии проектирования тестов
Слайд 31Рекомендуемая стандартом IEEE 830 структура SRSВведениеЦелиСоглашения о
источникиОбщее описаниеВидение продуктаФункциональность продуктаКлассы и характеристики пользователейСреда функционирования продукта (операционная среда)Рамки, ограничения, правила и стандартыДокументация для пользователейДопущения и зависимостиФункциональность системыФункциональный блок X (таких блоков может быть несколько)Описание и приоритетПричинно-следственные связи, алгоритмыФункциональные требования
- Информатика
- finley
- 3 года назад
1. Г) Логической2. Б) Формат
Знаешь ответ? Добавь его сюда!
- 1 час назадСоставьте 2 диалога на темы: книга, учëба, добро и т. д+схемы по русскому языку
- 3 часа назад
150 центеров это сколько грамм
- 8 часов назадУстанови последовательность движения нервного сигнала по рефлекторной дуге. 1. Двигательный нерв 2. Чувствительный нерв
- 10 часов назадНужно рассчитать энергию связи никеля 9 класс
- 10 часов назадНайти амплитуду колебания и рисунок
- 12 часов назадПоле площадью 560 га засеяно огурцами, морковью и помидорами. Огурцы занимают 35% всего поля. Сколько гектаров занимают помидоры, морковь и огурцы в отдельности, если моркови засеяно в раз больше, чем помидоров? ПОМОГИТЕ СРОЧНО!!! 15 МИНУТ ОСТАЛОСЬ!
- 13 часов назад. Выполните действия: ( 3). помогите решить
- 14 часов назадДан треугольник ABC Найти 1)длины сторон 2)углы треугольника 3)периметр треугольника 4)площадь треугольника 5)длину медианы СМ 6)длину высоты АН 7) сделать чертеж Если кординаты вершины равны
- 15 часов назадНайти координаты вектора P. Помогите пожалуйста очень срочно!!!
- 1 день назадОрганическое вещество А содержит по массе 56,81% углерода; 6,98% водорода и кислород. Вещество А можно получить гидратацией вещества Б.На основании данных условия задачи:1) проведите необходимые вычисления и установите молекулярную формулу вещества А;2) составьте структурную формулу вещества А, которая однозначно отражает порядок атомов в его молекуле;3) напишите уравнение реакции получения вещества А гидратацией вещества Б.
- 1 день назадЧерез 480 г 15%-ного раствора едкого натра пропускали постоянный электрический ток до тех пор, пока на электродах не выделилось 358,4 л газов (объем приведен к нормальным условиям). Из полученного раствора отобрали пробу массой 96 г для полного осаждения ионов меди из 290 г насыщенного при 25°С раствора сульфата меди(II). Вычислите растворимость медного купороса – пентагидрата сульфата меди(II) при 25°С. В ответе запишите уравнения реакций, которые указаны в условии задачи, и произведите все необходимые вычисления (указывайте единицы измерения искомых физических величин).
- 1 день назадХудожественные выразительные средства в произведении джека лондона любовь к жизниможно пару штук хотя бы =_
- 1 день назадПисьмён на писька содержание своей любимой книге перед началом работы составь план в последнем абзаце своего текста напиши почему это книга
- 1 день назадЧто делать если скучно???
- Информатика
- clancyri3c
- 3 года назад
1) Совокупность взаимосвязанных явлений, процессов, работ, образующих законченный круг развития в течение какого-л. промежутка времени.
3) сочетание кнопок Ctrl+Break останавливает исполнение программы.
4) ответ на этот вопрос прикрепила картинку
- Информатика
- tucker5
- 3 года назад
1) Если ввести два равных значения, то программа «зациклится». Цикл будет повторяться бесконечное количество раз. 2) Если условие с самого начало ложно, то цикл выполняться не будет.3) Да, возможно. В цикле с переменной сама переменная может встречаться несколько раз, что позволяет производить над ней действия.4) В случае, когда необходимо выполнить арифметические вычисления (возведение в квадрат и тд);
Отладка программы призвана выискивать «вредителей» кода и устранять их. За это отвечают отладчик и журналирование для вывода сведений о программе.
В предыдущей части мы рассмотрели исходный код и его составляющие.
После того, как вы начнете проверять фрагменты кода или попытаетесь решить связанные с ним проблемы, вы очень скоро поймете, что существуют моменты, когда программа крашится, прерывается и прекращает работу.
Это часто вызвано ошибками, известными как дефекты или исключительные ситуации во время выполнения. Акт обнаружения и удаления ошибок из нашего кода – это отладка программы. Вы лучше разберетесь в отладке на практике, используя ее как можно чаще. Мы не только отлаживаем собственный код, но и порой дебажим написанное другими программистами.
Для начала необходимо рассортировать общие ошибки, которые могут возникнуть в исходном коде.
Синтаксические ошибки
Эти эрроры не позволяют скомпилировать исходный код на компилируемых языках программирования. Они обнаруживаются во время компиляции или интерпретации исходного кода. Они также могут быть легко обнаружены статическими анализаторами (линтами). Подробнее о линтах мы узнаем немного позже.
Синтаксические ошибки в основном вызваны нарушением ожидаемой формы или структуры языка, на котором пишется программа. Как пример, это может быть отсутствующая закрывающая скобка в уравнении.
Семантические ошибки
Отладка программы может потребоваться и по причине семантических ошибок, также известных как логические. Они являются наиболее сложными из всех, потому что не могут быть легко обнаружены. Признак того, что существует семантическая ошибка, – это когда программа запускается, отрабатывает, но не дает желаемого результата.
Рассмотрим данный пример:
3 + 5 * 6
По порядку приоритета, называемому старшинством операции, с учетом математических правил мы ожидаем, что сначала будет оценена часть умножения, и окончательный результат будет равен 33. Если программист хотел, чтобы сначала происходило добавление двух чисел, следовало поступить иначе. Для этого используются круглые скобки, которые отвечают за смещение приоритетов в математической формуле. Исправленный пример должен выглядеть так:
3 + 5, заключенные в скобки, дадут желаемый результат, а именно 48.
Ошибки в процессе выполнения
Как и семантические, ошибки во время выполнения никогда не обнаруживаются при компиляции. В отличие от семантических ошибок, эти прерывают программу и препятствуют ее дальнейшему выполнению. Они обычно вызваны неожиданным результатом некоторых вычислений в исходном коде.
Вот хороший пример:
input = 25
x = 0.8/(Math.sqrt(input) — 5)
Фрагмент кода выше будет скомпилирован успешно, но input 25 приведет к ZeroDivisionError. Это ошибка во время выполнения. Другим популярным примером является StackOverflowError или IndexOutofBoundError. Важно то, что вы идентифицируете эти ошибки и узнаете, как с ними бороться.
Существуют ошибки, связанные с тем, как ваш исходный код использует память и пространство на платформе или в среде, в которой он запущен. Они также являются ошибками во время выполнения. Такие ошибки, как OutOfMemoryErrorand и HeapError обычно вызваны тем, что ваш исходный код использует слишком много ресурсов. Хорошее знание алгоритмов поможет написать код, который лучше использует ресурсы. В этом и заключается отладка программы.
Процесс перезаписи кода для повышения производительности называется оптимизацией. Менее популярное наименование процесса – рефакторинг. Поскольку вы тратите больше времени на кодинг, то должны иметь это в виду.
Отладка программы
Вот несколько советов о том, как правильно выполнять отладку:
- Использовать Linters. Linters – это инструменты, которые помогают считывать исходный код, чтобы проверить, соответствует ли он ожидаемому стандарту на выбранном языке программирования. Существуют линты для многих языков.
- Превалирование IDE над простыми редакторами. Вы можете выбрать IDE, разработанную для языка, который изучаете. IDE – это интегрированные среды разработки. Они созданы для написания, отладки, компиляции и запуска кода. Jetbrains создают отличные IDE, такие как Webstorm и IntelliJ. Также есть NetBeans, Komodo, Qt, Android Studio, XCode (поставляется с Mac), etc.
- Чтение кода вслух. Это полезно, когда вы ищете семантическую ошибку. Читая свой код вслух, есть большая вероятность, что вы зачитаете и ошибку.
- Чтение логов. Когда компилятор отмечает Error, обязательно посмотрите, где он находится.
Двигаемся дальше
Поздравляем! Слово «ошибка» уже привычно для вас, равно как и «отладка программы». В качестве новичка вы можете изучать кодинг по книгам, онлайн-урокам или видео. И даже чужой код вам теперь не страшен 🙂
В процессе кодинга измените что-нибудь, чтобы понять, как он работает. Но будьте уверены в том, что сами написали.
Викторина
input = Hippo’
if input == ‘Hippo’:
print ‘Hello, Hippo’
Ответы на вопросы
2. Синтаксическая ошибка: Отсутствует стартовая кавычка в первой строке.
Кто-то из великих мыслителей когда-то сказал: «Покажите мне человека, который не ошибся ни разу в жизни, и я покажу вам человека, который ничего не достиг». Сами по себе ошибки — это не зло, они помогают нам расти и развиваться. Совершить их может специалист любого уровня. Однако учиться лучше на чужих неудачах, нежели на своих. «Библиотека программиста» детально разобралась в этой теме и составила список распространенных ошибок кодеров, которых вы можете избежать, если дочитаете статью до конца. Поехали!
Приступать к программированию, не до конца проработав схему проекта
Реализацию любого проекта можно разделить на три простых этапа:
- Анализ требований проектируемого продукта
- Создание схемы или прототипа самого проекта
- Реализация или непосредственное написание кода
Применяя такой подход, вы быстро поймете, что даже небольшой, но правильно написанный фрагмент кода, послужит прочным фундаментом для дальнейшего построения сложной архитектуры.
Отсутствие единообразия и формата написания кода
Это ошибка, которую чаще всего совершают неопытные разработчики и новички.
Разрозненный неоднообразный код затруднит чтение и расстроит не только членов вашей команды, но и всех, кому доведется читать ваши угловатые конструкции. Старайтесь оставлять после себя чистоту и не заставляйте потомков извергать проклятья, глядя на ваш свободный стиль написания кода. В современном программировании большинство ИТ-специалистов используют определенные методологии написания кода, которые варьируются в зависимости от области разработки и языка. Также многие из них используют «плагины для форматирования кода», помогающие мгновенно избавиться от этой ошибки.
Написание глупых или заумных комментариев
Напомним, для начинающих разработчиков, про два типа комментариев, существующих на сегодняшний день: поясняющие и документационные.
- Документационные — нужны для тех людей, кто в будущем будет использовать ваш код, но вряд ли сможет понять или прочитать его правильно.
- Поясняющие — это отражение вашего кода и предназначены они для всех (включая вас в будущем), кто будет его поддерживать, рефакторить и расширять.
Однако при комментировании нужно знать меру. Не стоит писать философское эссе размером в страницу, все должно быть четко, лаконично и по существу.
Не тестировать написанное
Эту ошибку часто допускают опытные программисты, обладающие излишней самоуверенностью. Неважно, напишите ли вы одну строку кода, небольшую функцию или целое приложение — все это будет просто набор символов без подтверждения их работоспособности. Отладка и тестирование даст вам уверенность в том, что ваш код надежен и удовлетворяет всем возможным сценариям.
Написание универсальных супер-функций
Постарайтесь проектировать методы так, чтобы они выполняли только одно действие. Вместо того чтобы назначать несколько задач одной большой функции, разделите ее обязанности среди нескольких мелких. Такой подход увеличит читаемость кодовой конструкции и поможет избежать полного отказа приложения, ведь при некорректно написанной одной функции — остальные не будут работать.
Плохие сообщения коммитов
Чаще всего, сообщения к коммитам читают в логе изменений, где их порой бывает очень много, поэтому они должны быть достаточно короткими с четким описанием того, что произошло с кодом. Сравнить их можно с заголовками рекламных статей.
Фиксации с сообщениями типа: «Исправлена ошибка» или «Обновлена функция» — так себе названия. Хороший коммит содержит информацию о проблеме и ее решении, предшествующий уникальному идентификатору токена (если он доступен).
Чрезмерная инженерия или усложнение простых вещей
Реализация кода с помощью шаблона проектирования не всегда является разумным шагом, даже если огромное число разработчиков сделали так до вас. Поэтому, учитывая, что на протяжении разработки очередного проекта вам будут встречаться сотни различных инструментов и бесконечный океан кодовых инструкций — вы, прежде чем внедрять какое-либо решение, должны уметь ответить на три базовых вопроса:
Не стоит городить огород из ненужных плагинов и библиотек — старайтесь делать все проще и не усложняйте себе и без того нелегкий труд.
Не анализировать готовые решения в сети
Это ошибка, наиболее распространена в индустрии проектирования и разработки программного обеспечения. Если программист не знает, какие функции уже предоставлены языком, фреймворком или другими разработчиками, то он может потратить много времени чтобы создать то, что уже давно создано и отлично работает. Не стоит вступать в клуб изобретателей велосипедов, даже не попробовав поискать решение в сети. Технологии меняются буквально каждый день и довольно часто, то, что вы ищете уже кто-то сделал. К тому же время, потраченное на поиск готового решения, будет в разы меньше, времени, израсходованного на разработку очередного псевдопаттерна.
Консерватизм и проповедование только одного стека
Поговорка, про кулика, расхваливающего свое болото актуальна и для мира ИТ. Наверняка, вам также доводилось слышать, как некоторые специалисты превозносят одну конкретную технологию, говоря, что все остальные ужасны. И заголовки кликбейтных статей, увещевающих о войнах фреймворков и языков («Vue vs React» или «Python vs Java») рождаются именно по их вине. Нельзя говорить, что один популярный инструмент хуже другого только лишь потому, что вы к нему привыкли. В разных ситуациях каждый будет хорош по-своему. Здесь главное уметь с ним работать. Грешно ругаться на молоток, утверждая, что он плохо забивает гвозди. А поскольку технологии совершенствуются довольно быстро, крайне важно быть открытым для новых идей и способов реализации. Консерватизм в ИТ — это ошибочный путь.
Последняя, наиболее важная проблема и главная ошибка начинающих разработчиков — это пренебрежение собственным здоровьем. Бесспорно, к работе нужно относиться ответственно и стараться делать поставленные задачи в срок, но не в ущерб себе. Факторов, влияющих на самый ценный ваш ресурс может быть много, начиная с вредного начальника и ежедневных мозговых штурмов и заканчивая решением срочных задач с горящими дедлайнами и работой допоздна. Однако несмотря ни на что, одно должно оставаться неизменным — ваша забота о собственном самочувствии. Помните, жизнь — это дар и ее качество гораздо важнее, чем сверхурочная работа, за которую в большинстве случаев вам даже «спасибо» никто не скажет.
Учитесь на чужих ошибках! Такой подход поможет вам сэкономить время, энергию и деньги. Удачи!
Материалы по теме
- 🐛 Типовые ошибки в разработке UI: найти и обезвредить
- 8 самых распространенных ошибок веб-разработчика
- ⚠️ Как не нужно учить TypeScript: 5 распространенных ошибок
- 👶 10 ошибок начинающего разработчика
- ТОП-13 ошибок начинающего программиста
Слайд 25Зависимость вероятности правильного исправления ошибок и стоимости
показали, что чем раньше обнаруживаются те или иные несоответствия или ошибки, тем больше вероятность их правильного исправления (рис. а) и ниже его стоимость (рис. б).
Слайд 15При разработке проекта программист должен предусмотреть все
привести к возникновению ошибок времени выполнения, и обеспечить способы защиты от них.
Предотвращение и обработка исключений
Слайд 37Структурный подход базируется на том, что известна
его алгоритмы («стеклянный ящик»). В этом случае тесты строят так, чтобы проверить правильность реализации заданной логики в коде программы.Проектировщики тестов стремятся подготовить достаточное число тестов, чтобы каждая команда была выполнена, хотя бы, один раз. Чтобы каждая команда условного перехода выполнялась в каждом направлении хотя бы раз. В идеале — проверить каждый путь, каждую ветвь алгоритма.
Слайд 51Структурные критерииСтруктурные критерии — критерии покрытия кода.
программного обеспечения. Она показывает процент, насколько исходный код программы был протестирован. Покрытие операторов — каждая ли строка исходного кода была выполнена и протестирована?Покрытие условий — каждая ли точка решения (вычисления истинно ли или ложно выражение) была выполнена и протестирована?Покрытие путей — все ли возможные пути через заданную часть кода были выполнены и протестированы?Покрытие функций — каждая ли функция программы была выполненаПокрытие вход/выход — все ли вызовы функций и возвраты из них были выполнены
Слайд 9Наиболее типичные ошибки компиляции
Виды ошибок
1. Медведовский И.Д., Семьянов П.В., Леонов Д.Г., Лукацкий А.В. Атака из Internet. – М.: Солон-Р, 2002.
2. Галатенко В. А. Основы информационной безопасности. – М: Интернет-Университет Информационных Технологий – ИНТУИТ.РУ, 2003.
3. Щербаков А. Ю. Введение в теорию и практику компьютерной безопасности. – М.: Издательство Молгачева С. В., 2001.
4. В. Г. Олифер, Н. А. Олифер. Компьютерные сети. Принципы, технологии, протоколы. – СПб: Питер, 2000.
Ошибки анализа. Связаны либо с неполным учетом ситуации, которые могут возникнуть, либо с неверным решением задачи. К 1 случаю относятся, например, пренебрежение возможностью появления отрицательных значений переменных, малых и больших величин. Во 2 случае обычно имеют место крупные и мелкие логические ошибки, из которых можно назвать:
- Отсутствие заданий начальных значений переменных.
- Неверные условия окончания цикла.
- Неверную индексацию цикла.
- Отсутствие задания условий инициирования цикла.
- Неправильное указание ветви алгоритма для продолжения процесса решения задачи.
Ошибки общего характера. После того, как найден подходящий алгоритм решения задачи, на этапе программирования также могут появиться ошибки, независимо от выбранного языка. Такими ошибками могут быть:
- ошибки из-за недостаточного знания или понимания программистом языка программирования или самой машины
- ошибки, допущенные при программировании алгоритма, когда команды, используемые в программе, не обеспечивают последовательности событий, установленной алгоритмом.
Ошибки физического характера. Можно назвать несколько типов ошибок, вызываемых неверными действиями программиста:
- Пропуск некоторых операторов.
- Отсутствие необходимых данных.
- Непредусмотренные данные.
- Неверный формат данных.
Большое значение для успешной отладки программы имеют простота и рациональность ее кодирования. Когда программа написана аккуратно и логично, легче избежать ошибок или выявить их в случае возникновения. Следует избегать возможных программистских трюков, т.к. чем их больше, тем труднее отладка программы для самого автора, а кто-то другой этого сделать просто не сможет. Правильность программ. Любые программы — правильные в отношении их логического построения только для определенного типа данных, поэтому необходимо четко определить область значений данных, в которой программа способна функционировать. Необходимо вводить операторы, позволяющие проверить, находятся ли данные в установленных границах. Нарушение правильности может проявляться двумя способами:
- неверная синтаксическая конструкция программы
- программа выдает неверные результаты
Правильность синтаксиса означает, что должны быть точно сформированы наименования переменных; арифметические и логические операции должны подчиняться определенным синтаксическим правилам и т.п. Синтаксические ошибки. Выявление транслятором синтаксических ошибок представляет собой самый важный и необходимый этап отладки программы. Если под синтаксической ошибкой понимать «всякое нарушение требований языка программирования», то следует признать, что многие ошибки остаются необнаруженными. В качестве примеров синтаксических ошибок можно назвать:
- пропуск необходимого знака пунктуации
- несогласованность скобок
- пропуск нужных скобок
- неправильное формирование оператора
- неверное образование имени переменной
- неправильное использование арифметических операторов
- неверное написание зарезервированных слов
Примерами синтаксических ошибок, охватывающих взаимодействие двух или более операторов, могут служить:
- Противоречивые команды.
- Отсутствие условий окончания цикла.
- Дублирование или отсутствие меток.
- Отсутствие описания массива.
- Запрещенный переход.
Советы по устранению ошибок:
- Если ошибок много, то в первую очередь устранить очевидные.
- Обратиться к руководству по программированию на данном языке (справка).
- Выбрать хороший отладочный компилятор.
Неопределенные переменные. Распространенными источниками программных ошибок являются неопределенные переменные и переменные, для которых не заданы начальные значения. Определение начальных значений:
- Присваивание.
- Ввод.
- Чтение из файла.
Разные прогоны программы с одними и теми же данными могут привести к различным результатам. Обнаружение ошибок. Ситуации, по которым мы определяем, что в программе есть ошибка:
- Отсутствует уверенность в том, что программа начала выполняться.
- Программа начала выполняться, но произошел преждевременный останов с выдачей или без выдачи сообщений о системной ошибке.
- Программа начала выполняться, но зациклилась.
- Программа выдала неправильную информацию.
Любая из этих ситуаций требует от программиста проверки последовательности выполнения команд. Обычно для этого пригодна трассировка. Процесс обнаружения ошибок характеризуется выявлением двух мест в программе:
- точки обнаружения
- точки происхождения
Точка обнаружения — место в программе, где ошибка себя проявляет или становится очевидной. Точка происхождения — место в программе, где возникают условия для появления ошибки. Точка обнаружения выявляется первой и служит отправным пунктом для поиска точки происхождения. Действительная ошибка исходит не из точки обнаружения, а из точки происхождения. Виды отладки. Защитное программирование. Отладка начинается с того момента, когда перестают выдаваться сообщения о синтаксических ошибках. Вначале процесса отладки надо использовать простые тестовые данные. Если при этом получаются верные результаты, следует переходить к тестированию программы на более сложных данных. Если результаты не верны, возможны следующие ситуации:
- Синтаксических ошибок нет, но программа не скомпилирована. Подобные ситуации встречаются редко и свидетельствуют о наличии какой-то принципиальной ошибке в программе. В этих случаях обычно появляется сообщение о тех или иных системных ошибках, которые можно использовать в качестве вспомогательного средства для выявления имеющихся ошибок.
- Программа скомпилирована, работает, но не выдает результатов. Такие неполадки вызываются какими-либо логическими или синтаксическими ошибками. Примером ошибки служит ситуация, когда программа начинает работу и сразу уходит на ветвь окончания выполнения задания, не выдав результатов. Системная ошибка имеет своей первоосновой некоторую программную ошибку, которая заставляет ОС прервать процесс выполнения программы. Сигнал прерывания может исходить от оборудования самой ОС или скомпилированной программы.
- Программа скомпилирована, работает, но происходит преждевременный останов. Ошибки, приводящие к преждевременному прекращению работы и сопровождаемые затем сообщением о системной ошибке, называют «взрывами » или «воронками».
- Программа скомпилирована, работает, но выдает неправильные результаты. Достижение этой стадии говорит, что программа в принципе работает правильно, а ее логика работает почти точно.
- Программа зациклилась. На этом этапе отладки необходимо произвести разбор циклов.
Защитное программирование характеризует такой стиль написания программы, при котором появляющиеся ошибки легко обнаруживаются. Защитное программирование — это встраивание отладочных средств в программу. Примером защитного программирования может служить метод заглушек при кодировании сверху вниз.
Слайд 4Семантические ошибкиПричина возникновения ошибок данного типа связана
являются ситуации попытки открыть несуществующий файл или выполнить деление на нуль).
Слайд 34Стратегия проектирования тестов
В тестирование ПС входят постановка
тестов, изучение результатов тестирования.
Слайд 33 1. Тестирование по отношению к спецификациям -функциональный
— структурный подход
Покрытие операторов Покрытие условий
Действия, направленные на выявление ошибок
местонахождение);внесение исправлений в программу с целью устранения ошибок (редактирование).Отладка = Тестирование + Поиск ошибок + Редактирование
Основные понятия, связанные с тестированием и отладкой
Самым трудоемким и дорогим является тестирование, затраты на которое приближаются к 45% общих затрат на разработку ПС и от 30 до 60% общей трудоемкости создания программного продукта.
Слайд 16Предотвращение и обработка исключений Инструкция обработки исключения
частично семантического анализа программы;Наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию. Компилятор просматривает программу от начала. Если обнаруживается ошибка, то процесс компиляции приостанавливается и в окне редактора кода выделяется строка, которая, по мнению компилятора, содержит ошибочную конструкцию.
Слайд 61Уровни тестированияМодульное тестирование (автономное тестирование, юнит-тестирование) — тестируется
класс или функция. Часто модульное тестирование осуществляется разработчиками ПО.Интеграционное тестирование — тестируются интерфейсы между компонентами, подсистемами. При наличии резерва времени на данной стадии тестирование ведётся итерационно, с постепенным подключением последующих подсистем.Системное тестирование — тестируется интегрированная система на её соответствие требованиям.
Слайд 12Ошибки выполненияВыделяют четыре способа проявления таких ошибок
выполнения машинных команд, например, переполнении разрядной сетки, нарушении адресации и т.п.; появление сообщения об ошибке, обнаруженной операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т.п.; «зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка; несовпадение полученных результатов с ожидаемыми.
Слайд 53Пример 1If ((A>1) and (B =0))
Можно выполнить каждый оператор, записав один-единственный тест, который реализовал бы путь асе. Иными словами, если бы в точке а былиустановлены значения А = 2, В = 0 и Х = 3, каждый оператор выполнялся быодин раз (в действительности Х может принимать любое значение)
Слайд 56Покрытие условийПример 2a
случае достаточно одного теста. Например такого, чтобы х был равен 6 или 5. Все ветви будут пройдены. Но ошибка в программе обнаружена так и не будет. Она проявится в единственном случае, когда х=0. Но такого теста от нас критерий покрытия ветвей не требует.
Слайд 5Логические ошибкисвязаны с неправильным применением тех или
программы могут проявиться явно (выдано сообщение об ошибке, нет результата или выдан неверный результат, программа «зацикливается»), но чаще они проявляют себя только при определенных сочетаниях параметров или вообще не вызывают нарушения работы программы, которая в этом случае выдает правдоподобные, но неверные результаты.
Слайд 38Наборы тестов, полученные в соответствии с методами
Оптимальная стратегия проектирования тестов расположена внутри интервала между этими крайними подходами, но ближе к левому краю
Слайд 57Покрытие путейПокрытие путей (все возможные пути через
протестированы) может быть выполнено четырьмя тестами:a,c,e – A=2, B=0, X=3a,b,e – A=2, B=1, X=1a,b,d – A=3, B=1, X=1a,c,d – A=3, B=0, X=1
Слайд 11Ошибки выполнения – ошибки, обнаруженные операционной системой,
иметь разную природу, и соответственно по-разному проявляться. Часть ошибок обнаруживается и документируется операционной системой.
Слайд 29Для повышения качества тестирования рекомендуется соблюдать следующие
до тестирования; следует избегать тестирования программы автором; необходимо досконально изучать результаты каждого теста; необходимо проверять действия программы на неверных данных; необходимо проверять программу на неожиданные побочные эффекты на неверных данных.
Слайд 3Синтаксические ошибки это ошибки, возникающие в связи
языка программирования (к таким ошибкам относятся пропущенные точки с запятой, ссылки на неописанные переменные, присваивание переменной значений неверного типа и т. д.).
Слайд 2синтаксические ошибки;семантические ошибки;логические ошибки. Классификация ошибок по причине
Слайд 55Покрытие условийПример 1If ((A>1) and (B =0))
Покрытие условий может быть выполнено двумя тестами, покрывающими либо пути асе и abd, либо пути acd и abe.Если мы выбираем последнее альтернативное покрытие, то входа-ми двух тестов являются A = 3, В = 0, Х = 1 и A = 2, В = 1, Х = 1.
Try — ключевое слово, обозначающее, что далее
исключений, и что обработку этих исключений берет на себя программа;except — ключевое слово, обозначающее начало секции обработки исключений. Инструкции этой секции будут выполнены, если в программе возникнет ошибка;on — ключевое слово, за которым следует тип исключения, обработку которого выполняет инструкция, следующая за do;else — ключевое слово, за которым следуют инструкции, обеспечивающие обработку исключений, тип которых не указаны в секции except.
Слайд 66Пример автономного структурного тестирования фрагмента программыProcedure m
Для формирования тестов программу представляют в виде графа, вершины которого соответствуют операторам программы, а дуги представляют возможные варианты передачи управления.
Даже однострочное изменение в программе
старую ошибку, либо вносит новую. Если же учитывать изменения любого объема, то в среднем менее 20 % изменений корректны с первого раза.
Слайд 30Требования к программному продукту и тестированиеРазработка любого
этому продукту. Спецификация (англ. Software Requirements Specification, SRS) — документ, в котором отражены все требования к продукту — описываются, как функциональные (что должна делать программа, варианты взаимодействия между пользователями и программным обеспечением), так и нефункциональные (например, на каком оборудовании должна работать программа, производительность, стандарты качества) требования.
Слайд 6Классификация ошибок по этапу обработки программыОшибки, которые
три группы:ошибки компиляции;ошибки компоновки;ошибки выполнения.
Слайд 50Проверка в исключительных ситуациях. проводится с использованием данных,
Например:Что произойдет, если программе, не рассчитанной на обработку отрицательных или нулевых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными? Как будет вести себя программа, работающая с массивами, если количество их элементов превысит величину, указанную в описании? Что случится, если цепочки символов окажутся длиннее или короче, чем это предусмотрено?
Критерии тестирования входных и выходных данных
Слайд 46Пример. Программа для учета кадров предприятияКритерии тестирования
Слайд 24В 90-х годах появилась другая методика разработки
том, что качество программ проверяется постоянно в процессе разработки.
Тестирование становится центральной частью любого процесса разработки программ
Данная методика предъявляет существенно более высокие требования к квалификации инженера тестирования: в сферу его ответственности попадает не только функциональное тестирование, но и организация процесса разработки (процесс ежедневной сборки, участие в инспекциях, сквозных просмотрах и обычное чтение исходных текстов тестируемых программ). Поэтому идеальной кандидатурой на позицию тестировщика становится наиболее опытный программист в команде.
Слайд 8В нижнюю часть окна редактора кода компилятор
это первая от начала текста программы синтаксическая ошибка, обнаруженная компилятором. Наличие в тексте даже одной синтаксической ошибки приводит к возникновению второй, фатальной ошибки (Fatal Error) – невозможности генерации исполняемой программы.
Слайд 52Пример. Показывает отличие количества тестов при различных
операторов» достаточен 1 тест (рис.а) В случае выбора критерия «Покрытие условий» достаточно двух тестов, покрывающих пути 1, 4 или 2, 3 (рис.б)В случае выбора критерия «Покрытие путей необходимо четыре теста для всех четырех путей (рис.б)
Слайд 47Критерии тестирования входных и выходных данныхТестирование области
разделить на три этапа:
1. Проверка в нормальных условиях.
2. Проверка в экстремальных условиях.
3. Проверка в исключительных ситуациях.
Проверка в нормальных условиях
Проверка в нормальных условиях предполагает тестирование на основе данных, которые характерны для реальных условий функционирования программы. Проверка в нормальных условиях должна показать, что программа выдает правильные результаты для характерных совокупностей данных.
Слайд 67Творческая работа1. Разделиться на группы 2. Получить
5, 7, 9, 10)3. Составить спецификацию4. Разработать программу тестирования:4.1. Определить виды тестирования4.2. Определить объекты тестирования4.3. Определить субъекты тестирования4.4. Определить классы входных данных4.5. Написать тест-кейсы для тестирования функций и ожидаемые результаты4.6. Написать тест-кейсы для структурного тестирования и ожидаемые результатыСоставить чек-листы для проведения всех видов тестирования5. Провести тестирование 6. Сделать выводы
Слайд 32Требования к внешним интерфейсамИнтерфейсы пользователя (UX)Программные интерфейсыИнтерфейсы
к сохранности (данных)Критерии качества программного обеспеченияТребования к безопасности системыПрочие требованияПриложение А: ГлоссарийПриложение Б: Модели процессов и предметной области и другие диаграммыПриложение В: Список ключевых задач
Рекомендуемая стандартом IEEE 830 структура SRS (продолжение)
Слайд 39Пример. Нахождение корней квадратного уравнения. План тестирования,
требований к программе: какие сообщения и в каких случаях должен получить пользователь.
Слайд 59Пример 2
If (a=0) or (b=0) or (c=0)
Then
критерий комбинаторного покрытия условий, который требует подобрать такой набор тестов, чтобы хотя бы один раз выполнялась любая комбинация простых условий. Критерий значительно более надежен, чем покрытие путей, но обладает двумя существенными недостатками. Во-первых, он может потребовать очень большого числа тестов. Количество тестов, необходимых для проверки комбинаций n простых условий, равно 2n.Во-вторых, даже комбинаторное покрытие условий не гарантирует надежную проверку циклов.
Ошибка будет выявлена только при a=0 и b=0. Критерий покрытия путей не гарантирует проверки такой ситуации.
Слайд 28 Первая задача тестирования – подготовить набор тестов
в нём по возможности большее число несоответсвий. Вторая задача тестирования — определить момент окончания отладки ПС (или отдельной его компоненты).
Две задачи тестирования
Слайд 58Покрытие путейПример 1If ((A>1) and (B =0))
Слайд 48Проверка в экстремальных условияхТестовые данные этого этапа
которые должны восприниматься программой как правильные данные. Для нецифровых данных необходимо использовать подобные типичные символы, охватывающие все возможные ситуации. Для цифровых данных в качестве экстремальных условий следует брать начальное и конечное значения допустимой области изменения переменной при одновременном изменении длины соответствующего поля от минимальной до максимальной. Типичными примерами таких экстремальных значений являются очень большие числа, очень малые числа и отсутствие информации. Каждая программа характеризуется своими собственными экстремальными данными, которые должны подбираться программистом.
Слайд 10Ошибки компоновкиОшибки компоновки – ошибки, обнаруженные компоновщиком
связаны с проблемами, обнаруженными при разрешении внешних ссылок. Например, предусмотрено обращение к подпрограмме другого модуля, а при объединении модулей данная подпрограмма не найдена или не стыкуются списки параметров. В большинстве случаев ошибки такого рода также удается быстро локализовать и устранить.
Слайд 35По объекту тестированияФункциональное тестированиеТестирование производительностиНагрузочное тестированиеСтресс-тестированиеТестирование стабильностиКонфигурационное
знанию системыТестирование чёрного ящикаТестирование белого ящикаТестирование серого ящикаПо степени автоматизации –Ручное тестированиеАвтоматизированное тестированиеПолуавтоматизированное тестирование
По степени изолированности компонентовМодульное тестированиеИнтеграционное тестирование Системное тестированиеПо времени проведения тестирования Альфа-тестированиеДымовое тестирование Тестирование новой функции Подтверждающее тестированиеРегрессионное тестированиеПриёмочное тестированиеБета-тестированиеПо признаку позитивности сценариевПозитивное тестированиеНегативное тестированиеПо степени подготовленности к тестированиюТестирование по документации (формальное тестирование)Интуитивное тестирование (англ. ad hoc testing)
Слайд 49Проверка в экстремальных условиях (продолжение)Особый интерес представляют
обычно нулевые значения вводимых данных; для последовательностей символов — это цепочка пробелов или нулей. Нулевые примеры представляют собой один из лучших тестов, поскольку они имитируют состояние данных, которое время от времени имеет место в реальных условиях эксплуатации программы. Если подобное тестирование не выполняется, то впоследствии часто приходится сталкиваться с непонятным поведением программы.
Слайд 45Критерии тестирования входных и выходных данных
Слайд 63Проверить текст модуля, чтобы убедиться, что для
мере, три следующие ситуациитело цикла не выполняется ни разу;тело цикла выполняется один раз;тело цикла выполняется максимальное число раз;Проверить текст модуля, чтобы убедиться, что существуют тесты, проверяющие чувствительность к отдельным особым значениям входных данных. Добавить недостающие тесты.
Основные этапы разработки сценария автономного тестирования
Обработка исключения типа EZeroDivideprocedure TForm1. Button1Click(Sender
сопротивление, ток begin
Labels.Caption := ‘ ‘; try // инструкции, которые могут вызвать исключение (ошибку)u := StrToFloat(Edit1.Text); r := StrToFloat(Edit2.Text); i := u/r;
except // секция обработки исключенийonEZeroDivide do // деление на ноль begin
ShowMessage(‘Сопротивление не может быть равно нулю!’);exit; end;
on EConvertError do // ошибка преобразования строки в число begin
ShowMessage(‘Напряжение и сопротивление должны быть заданы числом. ‘ );
exit;end; end;