Отличие отладки от тестирования 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Отличие отладки от тестирования



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

Отладочный барьер

Компиляторы не в состоянии выявить логические ошибки.

Наиболее распространенные ошибки

Ошибки описания программы — программа правильно решает некорректно сформулированныую задачу.

Ошибки анализа — учтены не все возможные ситуации.

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

Ошибки физического характера — ошибки в результате неправильных действий в исходном коде (пропуск, дублирование, наличие лишних, перестановка строк программы; отсутствие данных, неверный формат, кодировка).

Бесхитростное программирование

Для удобства отладки большое значение имеет простота программы и рациональность ее кодирования.

Синтаксические ошибки

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

Ошибки не обнаруживаемые компилятором

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

Некоторые компиляторы способны предупреждать о возможных ошибках, например: неиспользуемые переменные, использование неинициированных переменных, присваивание в выражениях и т.п.

Виды отладки

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

Общие рекомендации

Заботиться об возможностях отладки и тестирования на этапе программирования.

Неопределенные переменные (не заданы начальные значения) — нельзя использовать переменные, которые не определены при вводе или в результате вычислений. Признак: различные результати при разных запусках на одних и тех же данных, переполнение или потеря значимости.

Защитное программирование — стиль написания программ, при котором появляющиеся ошибки легко обнаруживаются и идентифицируются программистом: встраивание отладочных средств в программу, проверка достоверности информации.

Средства отладки

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

Также к средствам отладки можно отнести возможности языка, например, обработка исключений.

Программирование без ошибок

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

Псевдоотладка: Если обнаружено 95% ошибок, то для обнаружения последующих 1—2% может потребоваться вдвое больше времени.

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

Предотвращение ошибок

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


Тестирование программ.

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

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

Целью любого процесса тестирования является обеспечение такого емкого(совокупного) понятия как качество, с учётом всех или наиболее критичных для данного конкретного случая составляющих (надёжность, сопровождаемость, удобство использования, эффективность, универсальность, функциональность).

Различают дефекты программного обеспечения и сбои. В случае сбоя программа ведет себя не так, как ожидает пользователь. Дефект — это ошибка/неточность, которая может быть (а может и не быть) следствием сбоя.

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

Уровни тестирования

1) Модульное тестирование (юнит-тестирование) — тестируется минимально возможный для тестирования компонент, например, отдельный класс или функция

2) Интеграционное тестирование — проверяет, есть ли какие-либо проблемы в интерфейсах и взаимодействии между интегрируемыми компонентами — например, не передается информация, передаётся некорректная информация.

3) Системное тестирование — тестируется интегрированная система на её соответствие исходным требованиям

a) Альфа-тестирование — имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком на стороне разработчика. Применяется для законченного продукта в качестве внутреннего приемочного тестирования. Иногда выполняется под отладчиком или с использованием окружения, которое помогает быстро выявлять найденные ошибки. Обнаруженные ошибки могут быть переданы тестировщикам для дополнительного исследования в окружении, подобном тому, в котором будет использоваться ПО.

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

Методы тестирования



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 779; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.30.162 (0.008 с.)