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


Тестирование ПО Лекция 5. Методики тестирования

Содержание

Позитивные и негативные тестыПозитивные тестыТесты, предназначенные для проверки, что программа выполняет свое основное предназначениеТесты на основании «правильных» входных данныхТестирование с целью проверки соответствий требованиямНегативные тестыТесты для проверки устойчивости программы к негативным

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

Слайд 1Тестирование ПО Лекция 5. Методики тестирования
Штанюк А.А., 2019

Тестирование ПО  Лекция 5. Методики тестированияШтанюк А.А., 2019

Слайд 2Позитивные и негативные тесты
Позитивные тесты
Тесты, предназначенные для проверки, что программа

выполняет свое основное предназначение
Тесты на основании «правильных» входных данных
Тестирование с

целью проверки соответствий требованиям
Негативные тесты
Тесты для проверки устойчивости программы к негативным входным данным
Тесты на проверки устойчивости программы к ошибкам пользователя
Тесты на то что у программы нет неожиданных побочных эффектов
Тестирование с целью «сломаем это!»

Позитивные и негативные тестыПозитивные тестыТесты, предназначенные для проверки, что программа выполняет свое основное предназначениеТесты на основании «правильных»

Слайд 3«Черный ящик»

«Черный ящик»

Слайд 4«Черный ящик»
Не знаем/Игнорируем устройство тестируемого объекта
Можем управлять входными параметрами
Среда,

в которой проводим эксперименты, может считаться входным параметром
Можем измерять выходные

параметры

«Черный ящик»Не знаем/Игнорируем устройство тестируемого объекта Можем управлять входными параметрамиСреда, в которой проводим эксперименты, может считаться входным

Слайд 5Шаги
Изучение спецификаций и требований
Выбор входных значений
Определение ожидаемых выходных значений
Исполнение тестов
Сравнение

полученных результатов с ожидаемыми

ШагиИзучение спецификаций и требованийВыбор входных значенийОпределение ожидаемых выходных значенийИсполнение тестовСравнение полученных результатов с ожидаемыми

Слайд 6Стратегии
Число тестов определяется числом входов и диапазоном входных данных

Перебор всех

вариантов (по диапазону), как правило, невозможен!

Стратегии уменьшения числа тестов:

Классы эквивалентности
Граничные

условия

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

Слайд 7Классы эквивалентности
Если от двух тестов ожидается одинаковый результат – они

эквивалентны
Группа тестов представляет класс эквивалентности если:

Все тесты предназначены для выявление

одной и той же ошибки
Если один тест выявит ошибку, то и остальные это сделают
Если один из тестов не выявит ошибку, то и остальные этого не сделают

Дополнительные практические критерии:

Тесты включают значения одних и тех же входных данных
Для проведения теста выполняются одни и те же операции программы
В результате тестов формируются значения одних и тех же выходных данных
Ни один из тестов не вызывает выполнения конкретного блока обработки ошибок либо выполнение этого блока вызывается всеми тестами

Классы эквивалентностиЕсли от двух тестов ожидается одинаковый результат – они эквивалентныГруппа тестов представляет класс эквивалентности если:Все тесты

Слайд 8Классы эквивалентности
Программа классификации треугольников

Классы эквивалентности по корректным входным данным:
Равнобедренные

треугольники
Равносторонние треугольники
Прямоугольные треугольники
Просто треугольники

Классы эквивалентности по некорректным входным данным:
Отрезки

не образуют треугольник
Числа больше sizeof(int)
Строка, содержащая буквы

Классы эквивалентностиПрограмма классификации треугольниковКлассы эквивалентности по корректным входным данным: Равнобедренные треугольникиРавносторонние треугольникиПрямоугольные треугольникиПросто треугольникиКлассы эквивалентности по некорректным

Слайд 9Классы эквивалентности
Программа, говорящая дату следующего дня

Классы эквивалентности по корректным входным

данным:
День от 1 до 27
Последний день месяца
Последний день года
28

февраля високосного года

Классы эквивалентности по некорректным входным данным:
Месяц > 12
День > 31
Неверная строка

Классы эквивалентностиПрограмма, говорящая дату следующего дняКлассы эквивалентности по корректным входным данным: День от 1 до 27Последний день

Слайд 10Классы эквивалентности
Построение классов эквивалентности – субъективный процесс
Общие рекомендации:
Не забывайте о

классах некорректных данных
Формируйте классы в виде таблицы или плана
Определите диапазоны

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

Классы эквивалентностиПостроение классов эквивалентности – субъективный процессОбщие рекомендации:Не забывайте о классах некорректных данныхФормируйте классы в виде таблицы

Слайд 11Граничное тестирование
Тестирование значений лежащих на границе классов эквивалентности, т.к. там

выше вероятность возникновения ошибки


int safe_add( int a, int b )
{

int c = a + b ;
if ( a >= 0 && b >= 0 && c < 0 )
{
fprintf ( stderr, "Overflow!\n");
}
if ( a < 0 && b < 0 && c >= 0 )
{
fprintf ( stderr, "Underflow!\n");
}
return c;
}

Слайд 12Граничное тестирование
Определяем границу класса эквивалентности
Проверяем значения, лежащие ровно на границе
Проверяем

значения лежащие максимально близко к границе с обоих сторон
Пример:
При покупке

более 100 единиц товара дается скидка 5%. Нужно проверить:
100
99
101

Граничное тестированиеОпределяем границу класса эквивалентностиПроверяем значения, лежащие ровно на границеПроверяем значения лежащие максимально близко к границе с

Слайд 13Преимущества и недостатки «ЧЯ»
Преимущества:
Тестирование с точки зрения пользователя
Не требует специальных

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

тесты параллельно с кодом
Тестировщик может быть отделен от разработчиков
Преимущества и недостатки «ЧЯ»Преимущества:Тестирование с точки зрения пользователяНе требует специальных знаний (например конкретного языка программирования)Позволяет найти проблемы

Слайд 14Преимущества и недостатки «ЧЯ»
Недостатки:
Эффективность зависит от выбора конкретных тестовых значений
Необходимость

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

кода
Трудность локализации причины дефекта
Возможность не протестировать часть кода

Преимущества и недостатки «ЧЯ»Недостатки:Эффективность зависит от выбора конкретных тестовых значенийНеобходимость наличия четких и полных спецификацийНевозможность сконцентрироваться на

Слайд 15«Белый ящик»
Используем знание об устройстве тестируемого объекта
В случае ПО –

имеем полный доступ к тестируемому коду
Стадии применения:
Unit-тестирование
Интеграционное тестирование

«Белый ящик»Используем знание об устройстве тестируемого объектаВ случае ПО – имеем полный доступ к тестируемому кодуСтадии применения:Unit-тестированиеИнтеграционное

Слайд 16Шаги
Представляем программу в виде графа

ШагиПредставляем программу в виде графа

Слайд 17Шаги
Создаем тестовые сценарии чтобы:
Попасть в каждое ветвление
Пройти хоть раз через

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

известные проблемные участки

ШагиСоздаем тестовые сценарии чтобы:Попасть в каждое ветвлениеПройти хоть раз через все вершиныПройти всеми возможными путямиПройти через вновь

Слайд 18Метрики
Покрытие кода (code coverage) – мера измерения оттестированости имеющегося программного

кода
Microsoft Visual Studio 2010(C++, C#)
DevPartner (C#, Java)
Codecov из Intel Compiler

(C, C++, Fortran)
Jtest (Java)
Devel::Cover (Perl)
PHPUnit (PHP)
Coverage (Python)
CoverMe (Ruby)
МетрикиПокрытие кода (code coverage) – мера измерения оттестированости имеющегося программного кодаMicrosoft Visual Studio 2010(C++, C#)DevPartner (C#, Java)Codecov

Слайд 19Преимущества и недостатки
Преимущества:
Позволяет найти «скрытые» в коде дефекты
Позитивные побочные эффекты

(например, обучение команды)
Нахождение проблем производительности
Более надежное разбиение на классы эквивалентности
Как

правило, ускорение цикла нахождение-исправление
Недостатки:
Не найдем пропущенное в коде
Дорого

Преимущества и недостаткиПреимущества:Позволяет найти «скрытые» в коде дефектыПозитивные побочные эффекты (например, обучение команды)Нахождение проблем производительностиБолее надежное разбиение

Слайд 20Сравнение «ящиков»

Сравнение «ящиков»

Слайд 21«Серый» ящик
Комбинация черного и белого ящиков:
Знаем частично или полностью внутреннее

устройство тестируемого объекта
Тестировщик находится на уровне пользователя
Пример:
Зная особенности реализации модуля,

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

«Серый» ящикКомбинация черного и белого ящиков:Знаем частично или полностью внутреннее устройство тестируемого объектаТестировщик находится на уровне пользователяПример:Зная

Слайд 22Выбор входных значений
Бессистемный выбор входных значений не позволит найти большое

количество дефектов. Необходимо использование методов для выбора набора входных значений.
Основные

методы выбора входных значений:
Перебор всех возможных значений
Случайные входные данные
Предугадывание ошибки
Построение графов «причина-следствие»
Использование классов эквивалентности
Исследование граничных значений

Выбор входных значенийБессистемный выбор входных значений не позволит найти большое количество дефектов. Необходимо использование методов для выбора

Слайд 23Метод перебора
Перебираем все возможные значения входных параметров

Последовательный перебор всех возможных

комбинаций входных значений
Попарный перебор. Перебираем комбинации пары 2х входных параметров.

Работаем в предположении что параметры попарно зависимы. На практике находит ~80% функциональных дефектов низкого уровня

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

Слайд 24Случайные входные данные
Генерируются случайные входные данные. Либо данные случайным образом

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

Часто

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

Случайные входные данныеГенерируются случайные входные данные. Либо данные случайным образом выбираются из большого тестового набора, который не

Слайд 25Предугадывание
Составление тестовых сценариев на основании опыта предыдущего тестирования

Используйте знания о

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

тесты для их поиска
Некорректная работа с памятью: переполнение, чтение за пределами, утечки памяти
Отсутствие обработки некорректных входных данных
Ошибки работы с типами данных: переполнение, приведение, приближение
Ошибки многопоточности: deadlock, data race
Отсутствие инициализации/сброса переменных
Недостаток привилегий, недоступность ресурсов
….

ПредугадываниеСоставление тестовых сценариев на основании опыта предыдущего тестированияИспользуйте знания о известных проблемных местах вашего продуктаЗнайте распространенные ошибки

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

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

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

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

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


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

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