Разделы презентаций


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

Содержание

08/13/2019СодержаниеОсновные определенияТестирование на базе спецификацийТестирование с выполнением программ

Слайды и текст этой презентации

Слайд 1Тестирование и отладка ПС.
Отвагин Алексей Владимирович, доцент каф. ЭВМ,

к.т.н., а. 505-5

Тестирование и отладка ПС. Отвагин Алексей Владимирович, доцент каф. ЭВМ, к.т.н., а. 505-5

Слайд 208/13/2019
Содержание
Основные определения
Тестирование на базе спецификаций
Тестирование с выполнением программ

08/13/2019СодержаниеОсновные определенияТестирование на базе спецификацийТестирование с выполнением программ

Слайд 308/13/2019
Основные определения
Отладка ПС – деятельность, направленная на обнаружение и исправление

ошибок в ПС с использованием спецификаций и процессов выполнения его

программ
Тестирование ПС – процесс выполнения программ на некотором наборе данных, для которого заранее известен результат применения или правила поведения этих программ
Тест - набор данных для тестирования
Отладка = Тестирование + Поиск ошибок + Устранение
08/13/2019Основные определенияОтладка ПС – деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием спецификаций и

Слайд 408/13/2019
Обзор тестирования
Аналитическое
Пошаговая детализация
Сосредоточена на основной цели ПС, игнорируя детали
Анализ стоимость-производительности
Метрики
Система

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

качество
Автоматизированное
Онлайн проверки
Версии
Документирование вариаций
Преимущества
Производительность, скорость, простота, эффективность
08/13/2019Обзор тестированияАналитическоеПошаговая детализацияСосредоточена на основной цели ПС, игнорируя деталиАнализ стоимость-производительностиМетрикиСистема раннего предупреждения – основана на метрикахСтоимость, длительность

Слайд 508/13/2019
Необходимость тестирования
Почему тестирование столь важно?
Позволяет устранить ошибки на ранних стадиях
Интегрируется

во все фазы
Промежуточное тестирование
Окончательное тестирование

08/13/2019Необходимость тестированияПочему тестирование столь важно?Позволяет устранить ошибки на ранних стадияхИнтегрируется во все фазыПромежуточное тестированиеОкончательное тестирование

Слайд 608/13/2019
Дополнительные определения
Тестирование исполняемого кода
Запуск тестов на работающей программе
Тестирование спецификаций
Тщательный анализ

кода или документов
Верификация
Определение, насколько корректно завершена фаза
Валидация
Определение степени соответствия продукта

требованиям
08/13/2019Дополнительные определенияТестирование исполняемого кодаЗапуск тестов на работающей программеТестирование спецификацийТщательный анализ кода или документовВерификацияОпределение, насколько корректно завершена фазаВалидацияОпределение

Слайд 708/13/2019
Тестирование на базе спецификаций
Основные принципы
Не тестировать собственную работу
Использовать команды тестеров
Два

типа тестирования
проходы
инспекции
Отличия типов
Проходы имеют меньше этапов
Инспекции сохраняют детальные отчеты, используемые

в последующем
08/13/2019Тестирование на базе спецификацийОсновные принципыНе тестировать собственную работуИспользовать команды тестеровДва типа тестированияпроходыинспекцииОтличия типовПроходы имеют меньше этаповИнспекции сохраняют

Слайд 808/13/2019
Проходы
Группы 4-6 человек под руководством инженера по качеству
Разработчики спецификаций, клиенты,

программисты
Опытные специалисты
Каждый участник группы
Создает список проверенных элементов
Создает список ошибочных элементов
Интерактивно

взаимодействует с другими
Производительность зависит от квалификации
08/13/2019ПроходыГруппы 4-6 человек под руководством инженера по качествуРазработчики спецификаций, клиенты, программистыОпытные специалистыКаждый участник группыСоздает список проверенных элементовСоздает

Слайд 908/13/2019
Инспекции
Процесс из 5 стадий
Общий устный обзор – пояснение и раздача

документов
Подготовка – участники разбираются в деталях представленных документов и анализируют

результаты прошлых инспекций
Инспекция
Каждый участник тщательно проверяет документы
Создание ежедневного отчета о найденных ошибках
Переработка – ответственные за ошибки разработчики устраняют недочеты
Завершение – проверка корректности отчета об инспекции
Если изменено более 10% документов, проводится новая инспекция
08/13/2019ИнспекцииПроцесс из 5 стадийОбщий устный обзор – пояснение и раздача документовПодготовка – участники разбираются в деталях представленных

Слайд 1008/13/2019
Статистика ошибок
Накапливается по степени серьезности и разновидности ошибок
Метрики
Плотность ошибок (ошибок

/ стр. или ошибок / строк кода)
Степень серьезности (критическая/серьезная/важная/незначительная)
Скорость поиска

ошибок (ошибок / час)
Использование статистики
Помогает оценить результаты инспекции
Концентрирует внимание на проблемах
Сравнение с предыдущим продуктом на той же стадии
непропорциональное количество ошибок в модуле
непропорциональное количество ошибок определенного типа
08/13/2019Статистика ошибокНакапливается по степени серьезности и разновидности ошибокМетрикиПлотность ошибок (ошибок / стр. или ошибок / строк кода)Степень

Слайд 1108/13/2019
Преимущества и недостатки аналитического тестирования
Преимущества
Успешно определяет ошибки
Ошибки выявляются на ранних

стадиях
Недостатки
Сложно применить в системах запутанной архитектуры
Эффективно применять в ООП –

небольшие изолированные модули
Требует обновления документации из предыдущей фазы
08/13/2019Преимущества и недостатки аналитического тестированияПреимуществаУспешно определяет ошибкиОшибки выявляются на ранних стадияхНедостаткиСложно применить в системах запутанной архитектурыЭффективно применять

Слайд 1208/13/2019
Тестирование на базе выполнения кода
Тестируемые свойства:
Соответствие результатов спецификации
Надежность
Производительность
Точность

08/13/2019Тестирование на базе выполнения кодаТестируемые свойства:Соответствие результатов спецификацииНадежностьПроизводительностьТочность

Слайд 1308/13/2019
Проектирование набора тестов
Набор тестов должен обнаруживать максимум ошибок
Набор тестов должен

быть минимален (сокращать время тестирования)

08/13/2019Проектирование набора тестовНабор тестов должен обнаруживать максимум ошибокНабор тестов должен быть минимален (сокращать время тестирования)

Слайд 1408/13/2019
Модель процесса тестирования

08/13/2019Модель процесса тестирования

Слайд 1508/13/2019
Стратегии тестирования
Тесты, основанные на спецификациях (black-box)
Тесты, основанные на структуре кода

(white-box)
Оптимальная стратегия (40% - black box, 60% - white box)

08/13/2019Стратегии тестированияТесты, основанные на спецификациях (black-box)Тесты, основанные на структуре кода (white-box)Оптимальная стратегия (40% - black box, 60%

Слайд 1608/13/2019
Стратегии тестирования
Тесты, основанные на спецификациях (black-box)
Тесты, основанные на структуре кода

(white-box)
Оптимальная стратегия (40% - black box, 60% - white box)

08/13/2019Стратегии тестированияТесты, основанные на спецификациях (black-box)Тесты, основанные на структуре кода (white-box)Оптимальная стратегия (40% - black box, 60%

Слайд 1708/13/2019
Тестирование по спецификации
Основано на данных (логические или математические отношения между

входом и выходом)
Применяется для тестирования модуля и обнаружения ошибок кодирования
Использует

граничное тестирование
08/13/2019Тестирование по спецификацииОсновано на данных (логические или математические отношения между входом и выходом)Применяется для тестирования модуля и

Слайд 1808/13/2019
Пример для тестирования
Программа вычисляет сумму кредита в зависимости от возраста
Ввод:

пол [м,ж], возраст [18-55], зарплата [0-10000]
Вывод: сумма возможного кредита
Кредит =

зарплата * множитель
08/13/2019Пример для тестированияПрограмма вычисляет сумму кредита в зависимости от возрастаВвод: пол [м,ж], возраст [18-55], зарплата [0-10000]Вывод: сумма

Слайд 1908/13/2019
Программа, реализующая пример
int Кредит (int муж, int возраст, int зарплата)
{

if (муж)
{
return ((18

(31<= возраст <40)?(1.55* зарплата):
(1.30* зарплата))
}
else
{
return ((18<= возраст <30)?(1.75* зарплата):
(31<= возраст <40)?(1.50* зарплата):(1.35* зарплата))
}
}
08/13/2019Программа, реализующая примерint Кредит (int муж, int возраст, int зарплата){ if (муж)  {   return

Слайд 2008/13/2019
Тестирование примера
Каждый тест = комбинация ввода + ожидаемый вывод
Полное тестирование

требует перебора всех комбинаций
Нужно выбрать комбинации:
по покрываемым ошибкам
по типу ввода

(граничное, реальное, запредельное значения)

08/13/2019Тестирование примераКаждый тест = комбинация ввода + ожидаемый выводПолное тестирование требует перебора всех комбинацийНужно выбрать комбинации:по покрываемым

Слайд 2108/13/2019
Тестирование значений входов
Применяется для каждой переменной x, изменяемой в пределах

[a;b]
Количество тестов для n входов = 4n+1

08/13/2019Тестирование значений входовПрименяется для каждой переменной x, изменяемой в пределах [a;b]Количество тестов для n входов = 4n+1

Слайд 2208/13/2019
Расширенное тестирование значений входов
Применяется для каждой переменной x, изменяемой в

пределах [a;b] и за пределами диапазона
Количество тестов для n входов

= 6n+1

a

b

x

08/13/2019Расширенное тестирование значений входовПрименяется для каждой переменной x, изменяемой в пределах [a;b] и за пределами диапазонаКоличество тестов

Слайд 2308/13/2019
Надежное тестирование значений входов (worst case)
Применяется для каждой переменной x,

изменяемой в пределах [a;b] и за пределами диапазона, а также

для комбинаций переменных
Количество тестов для n входов = 5n
08/13/2019Надежное тестирование значений входов (worst case)Применяется для каждой переменной x, изменяемой в пределах [a;b] и за пределами

Слайд 2408/13/2019
Применимость граничного тестирования
Требует независимых входов
Требует количественного выражения переменных
Легко применимо для

поиска ошибок, связанных с неправильным значением переменной

08/13/2019Применимость граничного тестированияТребует независимых входовТребует количественного выражения переменныхЛегко применимо для поиска ошибок, связанных с неправильным значением переменной

Слайд 2508/13/2019
Эквивалентное разделение домена
Для каждой переменной x, изменяемой в пределах [a;b]

диапазон делится на Sx поддиапазонов
Переменные должны быть независимы
Слабый вариант: количество

тестов = MAX(Sx)
08/13/2019Эквивалентное разделение доменаДля каждой переменной x, изменяемой в пределах [a;b] диапазон делится на Sx поддиапазоновПеременные должны быть

Слайд 2608/13/2019
Эквивалентное разделение домена
Для каждой переменной x, изменяемой в пределах [a;b]

диапазон делится на Sx поддиапазонов
Строгий нормальный вариант:
количество тестов = Πx

sx (произведение числа поддиапазонов)
08/13/2019Эквивалентное разделение доменаДля каждой переменной x, изменяемой в пределах [a;b] диапазон делится на Sx поддиапазоновСтрогий нормальный вариант:количество

Слайд 2708/13/2019
Эквивалентное разделение домена
Тестирование за пределами диапазонов
Слабый надежный вариант: количество тестов

= Maxx sx + Σx 2

08/13/2019Эквивалентное разделение доменаТестирование за пределами диапазоновСлабый надежный вариант: количество тестов = Maxx sx + Σx 2

Слайд 2808/13/2019
Эквивалентное разделение домена
Тестирование за пределами диапазонов везде
Строгий надежный вариант: количество

тестов = Πx (sx+2)

08/13/2019Эквивалентное разделение доменаТестирование за пределами диапазонов вездеСтрогий надежный вариант: количество тестов = Πx (sx+2)

Слайд 2908/13/2019
Применимость разделения домена
Большее покрытие при меньшем объеме тестов
Требует независимых переменных
Требует

числовых значений переменных
Может комбинироваться с граничным тестированием

08/13/2019Применимость разделения доменаБольшее покрытие при меньшем объеме тестовТребует независимых переменныхТребует числовых значений переменныхМожет комбинироваться с граничным тестированием

Слайд 3008/13/2019
Случайное тестирование
Входные комбинации генерируются случайным образом
Может быть достаточно эффективным
Обычно применяется

в комбинации с систематическим

08/13/2019Случайное тестированиеВходные комбинации генерируются случайным образомМожет быть достаточно эффективнымОбычно применяется в комбинации с систематическим

Слайд 3108/13/2019
Тестирование по структуре кода (white-box testing)
Предполагает исследование логики алгоритма
Направлено на

проверку всех возможных логических путей выполнения
Требует высокой квалификации тестировщика

08/13/2019Тестирование по структуре кода (white-box testing)Предполагает исследование логики алгоритмаНаправлено на проверку всех возможных логических путей выполненияТребует высокой

Слайд 3208/13/2019
Пример тестирования – задача определения типа треугольника
вход: a,b,c: [1,..]
выход: тип

равносторонний/равнобедрен-ный/произвольный/ошибка
требования: формулируются математически
тесты: комбинация входов и ожидаемый выход
структура теста: каждый

тест – путь в программе

String Triangle (int a, int b, int c){
int IsATriangle;
{
if ((a IsATriangle = 1;
else IsATriangle = 0;
if (IsATriangle)
{
if ((a==b) && (b==c))
return “Равносторонний”;
else {
if ((a!=b) && (a!=c) && (b!=c))
return “Произвольный”;
else return “Равнобедренный”;
}
}
else return “Ошибка”;
}

08/13/2019Пример тестирования – задача определения типа треугольникавход: a,b,c: [1,..]выход: тип равносторонний/равнобедрен-ный/произвольный/ошибкатребования: формулируются математическитесты: комбинация входов и ожидаемый

Слайд 3308/13/2019
Граф программы
5. IsATriangle = 1
7. IsATriangle?
9. ((a==b) && (b==c))?
10. “Равносторонний”
13.

“Произвольный”
14. “Равнобедренный”
16. end
4. ((a

(a!=c) && (b!=c))?

6. IsATriangle = 0

15. “Ошибка”


3. begin

08/13/2019Граф программы5. IsATriangle = 17. IsATriangle?9. ((a==b) && (b==c))?10. “Равносторонний”13. “Произвольный”14. “Равнобедренный”16. end4. ((a

Слайд 3408/13/2019
Представление теста
Каждый тест представляет путь в графе, например a=b=c=1: “Равносторонний”
Покрывает:
узлы
ребра
Полное

покрытие не всегда достижимо

08/13/2019Представление тестаКаждый тест представляет путь в графе, например a=b=c=1: “Равносторонний”Покрывает:узлыребраПолное покрытие не всегда достижимо

Слайд 3508/13/2019
Создание тестов
Создается матрица покрытия вершин графа
В строке – путь, в

столбцах – номера вершин





Базис графа программы = множество путей

таких, что:
количество = число дуг – число вершин +2
Все строки в матрице независимы

08/13/2019Создание тестовСоздается матрица покрытия вершин графаВ строке – путь, в столбцах – номера вершин Базис графа программы

Слайд 3608/13/2019
Создание тестов
Создать новый путь p’ из базового:
Изменить (еще не тронутый)

переход
Свободно выбирать следующий узел

08/13/2019Создание тестовСоздать новый путь p’ из базового:Изменить (еще не тронутый) переходСвободно выбирать следующий узел

Слайд 3708/13/2019
Создание тестов
Создать новый путь p’ из базового:
Изменить (еще не тронутый)

переход
Свободно выбирать следующий узел

08/13/2019Создание тестовСоздать новый путь p’ из базового:Изменить (еще не тронутый) переходСвободно выбирать следующий узел

Слайд 3808/13/2019
Создание тестов
Создать новый путь p’ из базового:
Изменить (еще не тронутый)

переход
Свободно выбирать следующий узел

08/13/2019Создание тестовСоздать новый путь p’ из базового:Изменить (еще не тронутый) переходСвободно выбирать следующий узел

Слайд 3908/13/2019
Критерий полноты покрытия
Операторы: выполняется каждый узел графа
Условия: выполняется переход по

каждой дуге
Циклы:
Цикл не выполняется ни разу
Цикл выполняется определенное количество итераций
Цикл

выполняется до конца
08/13/2019Критерий полноты покрытияОператоры: выполняется каждый узел графаУсловия: выполняется переход по каждой дугеЦиклы:Цикл не выполняется ни разуЦикл выполняется

Слайд 4008/13/2019
Недостижимые пути
Определяют «мертвый код», который никогда не сработает
Соответствуют ошибке в

логике алгоритма
Выявляются только при тестировании white-box

08/13/2019Недостижимые путиОпределяют «мертвый код», который никогда не сработаетСоответствуют ошибке в логике алгоритмаВыявляются только при тестировании white-box

Слайд 4108/13/2019
Характеристика тестирования по структуре кода
Обеспечивает максимальное покрытие
Ограничено по количеству тестов
Выявляет

многие ошибки

08/13/2019Характеристика тестирования по структуре кодаОбеспечивает максимальное покрытиеОграничено по количеству тестовВыявляет многие ошибки

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика