технология и отладка по (47)

Post on 12-Jan-2017

219 views 0 download

Transcript of технология и отладка по (47)

Тестирование и отладка по

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

Существуют следующие подходы к формулированию стратегии тестирования:1. Определение объемов тестовых работ;2. Определение подхода к тестированию;3. Определение критериев тестирования и

точек контроля качества;4. Определение стратегии автоматизации.

Этапы тестирования программного продукта

•Повысить вероятность того, что приложение, предназначенное для тестирования, будет работать правильно при любых обстоятельствах;•Повысить вероятность того, что приложение,

предназначенное для тестирования, будет соответствовать всем описанным требованиям;•Провести полное тестирование приложения за

короткий срок.

Цели тестирования программного продукта

1) Проверить, что система работает в соответствии с определенными временами отклика клиента и сервера;

2) Проверить, что наиболее критические последовательности действий с системой конечного пользователя выполняются верно;

3) Проверить работу пользовательских интерфейсов;4) Проверить, что изменения в базах данных не

оказывают неблагоприятного влияния на существующие программные модули;

Задачи тестирования программного продукта

5) При проектировании тестов свести к минимуму переработку тестов при возможных изменениях приложения;

6) Использовать инструменты автоматизированного тестирования там, где это целесообразно;

7) Проводить тестирование таким образом, чтобы не только обнаруживать, но и предупреждать дефекты;

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

Задачи тестирования программного продукта

По типу тестов:Функциональные типы тестов;

(рассматривают внешнее поведение системы)Нефункциональные типы тестов;

(описывает тесты, необходимые для определения характеристик ПО, которые могут быть измерены различными величинами)

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

была действительно решена)

Классификация тестирования программных продуктов

По уровням тестирования:

•Компонентное (модульное) тестирование(Проверка отдельных модулей программы, тестирование носит изолированный характер. Включает в себя как функциональные, так и нефункциональные виды тестирования); •Интеграционное тестирование(Тестирования

взаимодействия между компонентами (модулями) системы. Включает в себя как функциональные, так и нефункциональные виды тестирования); •Системное тестирование(Проверяется поведение системы в

целом. Включает в себя как функциональные, так и нефункциональные виды тестирования);•Приемочное тестирование(Целью приемочного тестирования

является оценка готовности системы для ее выпуска).

ПО ЗНАНИЮ СИСТЕМЫ (ДОСТУПНОСТИ КОДА):

•Тестирование чёрного ящика(Тестирование проводится без доступа к исходному коду); •Тестирование белого ящика(Тестирование

проводится с доступом к исходу коду и с возможностью модификации кода);•Тестирование серого ящика(Представляет

собой объединение двух выше перечисленных видов тестирования).

По объекту тестирования:•Функциональное тестирование(Проверка функций и характеристик

разрабатываемого ПО на основе проектной документации);

•Тестирование производительности (Проверка работоспособности системы под нагрузкой. Может служить для проверки и подтверждения других атрибутов качества системы, таких как масштабируемость, надёжность и потребление ресурсов);

•Юзабилити-тестирование/Тестирование интерфейса; пользователя (Цель данного вида тестирования заключается в определении степени удобства и практичности пользовательского интерфейса) ;

•Тестирование безопасности (Проверка надежности системы от возможных рисков и угроз (потеря, конфиденциальность, целостность и доступность данных));

•Тестирование локализации (Корректность перевода и работы отдельных компонентов системы (форматы дат, единицы измерения и т.д.));

•Тестирование совместимости (Проверка возможности приложения взаимодействовать с различными программными продуктами, операционными системами и окружением).

По степени автоматизации:•Ручное тестирование(Тестирование проводится без

инструментов автоматизации); •Автоматизированное тестирование (Тестирование на

всех уровнях выполняется с использованием средств автоматизации); •Полуавтоматизированное тестирование

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

По времени проведения тестирования:•Тестирование при приёмке (Минимальный набор тестов на явные

ошибки); •Тестирование новой функциональности(Тестируется новые

функции системы); •Регрессионное тестирование(Проверка изменений сделанных в

системе для подтверждения того факта, что существующая ранее функциональность работает как и прежде) ;•Тестирование при сдаче(Целью приемочного тестирования

является оценка готовности системы для его выпуска на рынок или передачи клиенту. Может включать в себя альфа-тестирование (alpha testing) и бета-тестирование (beta testing)).

По признаку позитивности сценариев:•Позитивное тестирование(Проверка позитивных (правильных)

пользовательских сценариев. На вход подается разрешенные (ожидаемые) данные); •Негативное тестирование(Проверка реакции системы на ввод негативных

(не разрешенных) данных) .По степени подготовленности к тестированию•Тестирование по документации(Тестирование приложения проводится по

заранее подготовленным данным (тест-кейсы, чек-листы, чит-листы, спецификация и т.д.)); •Тестирование ad hoc или интуитивное тестирование(тестирование

проводится при полном отсутствии документации, без плана и цели); •Тестирование методом свободного поиска или

исследовательское тестирование(предполагается наличие минимально необходимой для тестирования документации).

-Модульное тестирование (заключается в изолированной проверке каждого отдельного элемента путем запуска тестов в

искусственной среде)-Интеграционное тестирование 

(предназначено для проверки связи между компонентами, а также взаимодействия с различными частями системы (операционной системой, оборудованием либо связи между различными системами))

-Системное тестирование (задачей CТ является проверка как функциональных, так и не функциональных требований в системе в целом)

– Альфа-тестирование((имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой

потенциальными пользователями/заказчиком. )– Бета-тестирование 

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

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

Уровни тестирования программных продуктов

Воспроизведение дефекта;Анализ дефекта;Дизайн исправления дефекта;Кодирование исправления дефекта;Валидация исправления;Интеграция исправления в кодовую базу;Дополнительные валидации после интеграции.

Этапы отладки программного обеспечения

Запуск программы из под отладчика;Логировании кода;Анализ кода без исполнения программы;Анализ поведения системы или ее части;Unit тестирование;Прототипирование;Отладка с помощью memory-dump-ов или crash-дампов;Отладка с помощью перехватов;Профилирование кода;Выполнение программы в другой среде;Отладка методом RPC;Отладка путем анализа документации;Отладка трансляцией кода;Отладка разработкой интерпретатора.

Методы отладки

•Ошибки анализа; •Ошибки общего характера;•Ошибки физического характера;•Правильность программ;•Синтаксические ошибки;•Неопределенные переменные. 

Отладка. Виды ошибок

Связаны либо с неполным учетом ситуации, которые могут возникнуть, либо с неверным решением задачи. К 1 случаю относятся, например, пренебрежение возможностью появления отрицательных значений переменных, малых и больших величин. Во 2 случае обычно имеют место крупные и мелкие логические ошибки, из которых можно назвать: Отсутствие заданий начальных значений переменных.• Неверные условия окончания цикла;• Неверную индексацию цикла;• Отсутствие задания условий инициирования цикла;• Неправильное указание ветви алгоритма для продолжения процесса

решения задачи.

Ошибки анализа

После того, как найден подходящий алгоритм решения задачи, на этапе программирования также могут появиться ошибки, независимо от выбранного языка. Такими ошибками могут быть :• ошибки из-за недостаточного знания или понимания

программистом языка программирования или самой машины;• ошибки, допущенные при программировании

алгоритма, когда команды, используемые в программе, не обеспечивают последовательности событий, установленной алгоритмом.

Ошибки общего характера

Можно назвать несколько типов ошибок, вызываемых неверными действиями программиста:•Пропуск некоторых операторов;•Отсутствие необходимых данных;•Непредусмотренные данные;•Неверный формат данных.

Ошибки физического характера

Любые программы - правильные в отношении их логического построения только для определенного типа данных, поэтому необходимо четко определить область значений данных, в которой программа способна функционировать. Необходимо вводить операторы, позволяющие проверить, находятся ли данные в установленных границах. Нарушение правильности может проявляться двумя способами:• неверная синтаксическая конструкция программы;• программа выдает неверные результаты.

Правильность программ

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

языке (справка);• Выбрать хороший отладочный компилятор.

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

Распространенными источниками программных ошибок являются неопределенные переменные и переменные, для которых не заданы начальные значения. Определение начальных значений:• Присваивание;• Ввод;• Чтение из файла.Разные прогоны программы с одними и теми же данными могут привести к различным результатам. 

Неопределенные переменные