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

Содержание

Слайд 2

Некоторый план

Есть система, есть подсистемы, есть отдельные классы и методы.
Есть взаимодействия между

Некоторый план Есть система, есть подсистемы, есть отдельные классы и методы. Есть
подсистемами.
А теперь в обратном порядке: тестирование методов тестирование классов тестирование подсистем интеграционное тестирование системное тестирование … регрессионное тестирование
Я не буду учить вас программировать! Я сам не умею…

Слайд 3

ООП

инкапсуляция;
наследование;
полиморфизм;
интерфейс;
класс;
объект;
сообщение;

ООП инкапсуляция; наследование; полиморфизм; интерфейс; класс; объект; сообщение;

Слайд 4

Какие проблемы могут возникнуть

Инкапсуляция: - Объект скрывает информацию. Это приводит к тому, что

Какие проблемы могут возникнуть Инкапсуляция: - Объект скрывает информацию. Это приводит к
внесенные в объект изменения трудно заметить, в силу чего становится труднее выполнять анализ результатов тестирования. -Объект может перейти в состояние, в котором затем удерживается на протяжении всего своего жизненного цикла. Это состояние может далее стать неадекватным и служить причиной некорректного поведения. Наследование: - Каждый нижний уровень наследования создаёт новый контекст для наследованных фич, корректное поведение на верхнем уровне не гарантирует корректное поведение на нижних уровнях. - Наследование от нескольких классов. Класс наследует от 2-х классов в которых могут присутствовать функции с одинаковыми именами.

Слайд 5

- Динамическое связывание и сложные структуры наследования создают множество возможностей для ошибок

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

Слайд 6

Тестирование методов

Ошибки в реализации методов:
В общем случае: - сообщение отослано объекту у которого

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

Слайд 7

Исключения: (Exceptions): - отсутствуют - не правильные - никем не обрабатываемые (не пойманные) - не правильный

Исключения: (Exceptions): - отсутствуют - не правильные - никем не обрабатываемые (не
catch - распространяется out of scope - Exception not raised - не корректное состояние после исключения - отсутствующий объект (указанный, но не определённый) Переменные определение/использование - неиспользованные объекты (определены, но нет ссылок на них) - ссылки на неопределенные или удаленный объекты - не корректное использование дружественными функциями - отсутствующая инициализация - некорректное приведение типов - нарушение контракта - некорректная видимость - некорректная сериализация, приводящая в “испорченное” состояние - недостаточная точность, диапазон значений типа

Слайд 8

Category Partition

Не буду переводить… (Map reduce, ведь, не переводят)
Этот подход предполагает, что

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

Слайд 9

Разберем на примере функции List::getNextElement()
Умеет кидать 2 Exception’a:
NoPosition  - если

Разберем на примере функции List::getNextElement() Умеет кидать 2 Exception’a: NoPosition - если
позиция не была определена предыдущей операцией или если она больше не существует из-за к.л. промежуточного изменения или удаления
EmptyList - если список пустой

Слайд 10

7 шагов к успеху

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

7 шагов к успеху Определяем пригодные для тестирования функции метода Определяем вход
каждой функции
Определяем категории для каждого входного параметра
Для каждой категории создаем тест-кейсы
Определяем ограничения для наборов
Генерируем тесты перебирая все комбинации наборов
Разрабатываем ожидаемый результат для каждого тест-кейса используя соответствующего оракула.

Слайд 11

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

Классы эквивалентности (Эквивалентное разбиение) – красивое название простой сути. Вы определяете

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

Слайд 12

Попробуем?

Попробуем?

Слайд 14

Тестовые сценарии эквиваленты, если:

они тестируют одно и тоже;
если один из них

Тестовые сценарии эквиваленты, если: они тестируют одно и тоже; если один из
выявляет ошибку, то и остальные выявят ее;
если одни из них не выявляет ошибку, то и остальные не выявят.
Результат выполнения всех тестов в одном классе эквивалентности «отвечает на один и тот же вопрос».

Слайд 15

Граничные условия

- это ситуации перед границей, на границей и за границей входных

Граничные условия - это ситуации перед границей, на границей и за границей
КЭ и выходных КЭ.
Опыт показывает, что тест кейсы, которые исследуют граничные условия имеют большую отдачу

Слайд 16

Анализ ГУ

Анализ граничных значений отличается от эквивалентного разбиения следующим:
Выбор любого элемента в

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

Слайд 17

Правила:

Если входные данные представляют диапазон значений, то необходимо построить тесты с неправильными

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

Слайд 18

7 шагов к успеху

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

7 шагов к успеху Определяем пригодные для тестирования функции метода Определяем вход
каждой функции
Определяем категории для каждого входного параметра
Для каждой категории создаем тест-кейсы
Определяем ограничения для наборов
Генерируем тесты перебирая все комбинации наборов
Разрабатываем ожидаемый результат для каждого тест-кейса используя соответствующего оракула.
Имя файла: Тестирование-ОО-программ.pptx
Количество просмотров: 147
Количество скачиваний: 0