Black box testing
-
Upload
nikolayvasiliev -
Category
Technology
-
view
390 -
download
3
Transcript of Black box testing
Тестирование «черного ящика»
Николай Васильев
ИИТУ Тестирование ПО, 2014 1
Напутствие
«Модели -‐ это мысленные инструменты, в них нет чего-‐либо принципиально правильного или неправильного. Они могут быть полезными и бесполезными.»
Б. Бейзер, «Тестирование черного ящика»
ИИТУ Тестирование ПО, 2014 2
Что такое «черный ящик»?
• Не знаю, что это, но нужно проверить что оно работает правильно
• «Горшочек, не вари!» • Квадрат Малевича • Кубик-‐рубик?
ИИТУ Тестирование ПО, 2014 3
Что такое «черный ящик»?
• Не знаю, что это, но нужно проверить что оно работает правильно
• «Горшочек, не вари!» • Квадрат Малевича • Кубик-‐рубик? Нет.
ИИТУ Тестирование ПО, 2014 4
Тестирование «черного ящика»
А.к.а. • Поведенческое тестирование • Функциональное тестирование
Мы знаем, с чем имеем дело.
ИИТУ Тестирование ПО, 2014 5
Тестирование по спецификации
ИИТУ Тестирование ПО, 2014 6
С чего начать?
• Какой подход к тестированию выбрать? • Какие тесты из огромного множества выбрать?
• Как оценить время тестирования? – На этот вопрос мы здесь не будем отвечать :)
ИИТУ Тестирование ПО, 2014 7
Тестирование по модели 1. Составление спецификации 2. Анализ требований – Однозначность – Тестируемость – Непротиворечивость
3. Составление модели 4. Составление тестовых сценариев по модели 5. Проведение тестирования 6. Анализ покрытия 7. Повторить или завершить тестирование
ИИТУ Тестирование ПО, 2014 8
Построение модели
• Графы • Узлы • Связи • Их свойства – Симметричность, транзитивность, направление…
ИИТУ Тестирование ПО, 2014 9
Создание тестового набора
• Начиная с самых простых сценариев • Дополняем набор, чтобы обеспечить желаемую полноту тестирования (покрыть граф)
• Проводим тесты, анализируем результаты…
ИИТУ Тестирование ПО, 2014 10
Что делать со всеми этими тестами?
• Как понять, что результат теста говорит об ошибке?
• Где взять эталон ожидаемого значения? • Одного ответа нет, зато есть много: – Уже существующие тесты (работающие) – Предыдущая версия программы (stable) – Прототипная или модельная программа – Простые сценарии («синтетические») – Сама программа (но что мы в таком случае проверяем?)
ИИТУ Тестирование ПО, 2014 11
ИИТУ Тестирование ПО, 2014 12
Пример. Тестирование веб-‐форм
• hmps://metrika.yandex.ru/add/
ИИТУ Тестирование ПО, 2014 13
ИИТУ Тестирование ПО, 2014 14
ИИТУ Тестирование ПО, 2014 15
ИИТУ Тестирование ПО, 2014 16
ИИТУ Тестирование ПО, 2014 17
Пример. Тестирование веб-‐форм
Модель • Заполнить имя счетчика или адрес сайта и нажать «принимаю соглашение» – Доступна кнопка «Продолжить»
• Нажать кнопку «продолжить» – Создание счетчика – Переход на страницу со счетчиком
ИИТУ Тестирование ПО, 2014 18
Пример. Тестирование веб-‐форм
Анализ модели • Узлы – действия пользователя • Связи – последовательность действий • Условия? – Тоже узлы – Содержат предикаты – Исходящих связей > 1
• Граф потока управления ИИТУ Тестирование ПО, 2014 19
Граф потока управления
• Блок-‐схема • Модель – это программа на псевдокоде – Может существовать только у вас в голове :)
• Как создавать тестовые сценарии по такой модели?
ИИТУ Тестирование ПО, 2014 20
Граф потока управления: пишем тесты
1. Проверить узлы графа – Пользователь может сделать каждое действие? – Нет ли лишних доступных действий?
2. Проверить связи – Правильно ли обрабатываются
последовательности действий?
3. Проверить входы и выходы – Как можно попасть на форму? – Как можно выйти с формы?
ИИТУ Тестирование ПО, 2014 21
Граф потока управления: rule of thumb
• Сначала создать простые тесты • Если простые тесты не дают нужное покрытие, сделайте более сложные
• Если тест слишком сложен – мы что-‐то делаем не так
ИИТУ Тестирование ПО, 2014 22
Пример. Тестирование веб-‐форм Тест-‐кейсы 1. Кейс 1.
1. Заполнить имя счетчика 2. Нажать «принимаю условия» 3. Нажать «продолжить» 4. Ожидание – счетчик появился в списке
2. Кейс 2. 1. Заполнить сайт 2. Дальше 1.2 – 1.4
3. Кейс 3. 1. Заполнить имя 2. Заполнить сайт 3. Дальше 1.3, 1.4
Этого достаточно?
ИИТУ Тестирование ПО, 2014 23
Граф потока управления
• А что если есть циклы в графе?
ИИТУ Тестирование ПО, 2014 24
ИИТУ Тестирование ПО, 2014 25
Пример. Обработчик логов событий
• Входные данные – текстовые файлы вида user_<�mestamp>.txt – UserID, EventTime
• Выходные данные – Date, UniqUsersCount
• Входные логи появляются в real-‐�me • Обработчик запускается по cron, обработанные логи удаляются
• Обработчик считает, сколько было уникальных пользователей за каждый день
• Обработчик берет все файлы которые есть
ИИТУ Тестирование ПО, 2014 26
Пример. Обработчик логов событий
Явный цикл • Входных файлов нет • Есть один файл • Есть много файлов Другой явный цикл • Файл пуст • В файле 1, 2, много записей… Неявный цикл? • SomeId за день SomeDate не встречался • SomeId встретился однажды • SomeId встретился несколько раз
ИИТУ Тестирование ПО, 2014 27
Модель: цикл
• 0 итерация (мимо цикла) • 1 итерация (или n первых итераций) • Все последующие итерации • … • Максимальная итерация ? – В нашем примере маловероятно достичь ограничения сверху
ИИТУ Тестирование ПО, 2014 28
ИИТУ Тестирование ПО, 2014 29
Пример. Сложный обработчик логов
• Входные данные – текстовые файлы вида user_<�mestamp>.txt – UserID, EventTime, EventType, TraficSource – EventType ::= Show, Click – TraficSource ::= Search, Adv, Other
• Выходные данные – UsersClicked: Date, UserID, SearchClickCount, AdvClickCount
ИИТУ Тестирование ПО, 2014 30
Модель
• CFG не подходит. Что еще? • Попробуем вывести • Имеем такой же цикл, но усложненные условия
ИИТУ Тестирование ПО, 2014 31
Создадим модель • Если EventType = Click – Если нет UserID, Date
• Если TraficSource = Search – Insert UserID, 1, 0
• Если TraficSource = Adv – Insert UserID, 0, 1
• Иначе ничего – Если есть UserID, Date
• Если TraficSource = Search – Replace UserID, searchCntOld + 1, advCntOld
• Если TraficSource = Adv – replace UserID, searchCntOld, advCntOld + 1
• Иначе ничего
ИИТУ Тестирование ПО, 2014 32
Тестирование потока данных
• data flow graph • Узлы – Входные – параметры извне – Вычисляющие – которые генерируют промежуточное значение
– Выходные – которые выводят конечное значение – Условия выбора данных
• Связи – «используется для вычисления», «входит в формулу»
ИИТУ Тестирование ПО, 2014 33
Метод тестирования графа потока данных
1. Проверить, дополнить спецификацию 2. Найти входные переменные, константы 3. Найти функции, зависящие только от
констант или входных переменных 4. Найти функции, зависящие только от ф. из
3 5. … 6. профит
ИИТУ Тестирование ПО, 2014 34
Пример. Сложный обработчик логов
• Константы – EventType = Show, Click; TraficSource = Adv, Search, Other; 0, 1;
• Входные переменные – UserID, EventTime, EventType, TraficSource – UsersClicked: Date, SearchUniqUsersCount,
AdvUniqUsersCount – с предыдущего шага • Функции – Определение типа события – Определение типа источника – Вычисление {Search|Adv}ClickCnt для новой строки – Вычисление {Search|Adv}ClickCnt для обвовляемой строки – …
ИИТУ Тестирование ПО, 2014 35
Пример. Сложный обработчик логов
Тесткейсы…
ИИТУ Тестирование ПО, 2014 36
ИИТУ Тестирование ПО, 2014 37
Пример. Сложные условия
• Будем считать TopAc�veUniqUsers – Date, TopAc�veUniqUsersCnt
• Критерий: SearchClickCount > 5, AdvClickCount <= 10, за день
ИИТУ Тестирование ПО, 2014 38
Пример. Сложные условия
• Составной предикат – SearchClickCount > 5 and AdvClickCount <= 10
• Сколько есть вариантов входных параметров? – Maxint * maxint
• Сколько есть вариантов выходного значения? – 2
• Разобьем на части: – F1 <= SearchClickCount > 5 (int -‐> boolean) – F2 <= AdvClickCount <= 10 (int -‐> boolean) – F3 <= F1 and F2
• Сколько нужно тесткейсов?
ИИТУ Тестирование ПО, 2014 39
Пример. Сложные условия
true, false • SearchClickCount > 5 – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …
• AdvClickCount <= 10 – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, …
• Какие точки выбрать?
ИИТУ Тестирование ПО, 2014
(0, 0) (1, 1) (6, 11) (5, 5)
(6, 10) (3, 12) (3, 3) (5, 11)
(20, 5) (5, 10) (15, 3) (MAXINT, MAXINT)
40
Метод тестирования доменов
• «граничных условий» • Домен – область в пространстве • Точка на границе и сразу за ней
ИИТУ Тестирование ПО, 2014 41
ИИТУ Тестирование ПО, 2014 42
Пример. Конвейер обработки логов
Этапы конвейера 1. Делит входные логи на шарды – UserID % 10 = номер шарда – Из 1 получается 10
2. Считает статистику UserID, Date, Count – Заводит заявку на обновление сводной
статистики 3. Считает сводную статистику Date,
UniqUsersCount – Удаляет заявку
ИИТУ Тестирование ПО, 2014 43
Что изменилось?
• Для этапов конвейера есть CFG, DFG • Создаются и удаляются заявки на обработку
• Нет заявки – нет результата
ИИТУ Тестирование ПО, 2014 44
Граф потока транзакций
• != транзакциям в БД • То же, что и раньше + маркеры (транзакции, заявки)
• Узлы – обработчики заявок • Связи – переходы заявок между узлами
ИИТУ Тестирование ПО, 2014 45
Метод тестирования
1. Проверить/дополнить спецификацию 2. Обозначить все виды транзакций 3. По каждому виду
1. Как возникает 2. Как уничтожается 3. Как хранится
4. Каков порядок обработки транзакций? 5. Разбить граф на части, проверить от
малого к целому ИИТУ Тестирование ПО, 2014 46
Оценка покрытия
• Все узлы – все этапы конвейера – слабое
• Создание и поглощение всех заявок – лучше
• Все связи – переходы заявок между узлами – Хорошее
• Если конвейер straigh¤orward, можно обойтись 1 большим тест-‐кейсом
ИИТУ Тестирование ПО, 2014 47
Когда использовать граф потока транзакций
1. Есть параллельные вычисления 2. Работа идет кусочками. Прогресс
сохраняется. 3. Есть очереди обработки 4. Есть механизм отправки сообщений 5. Обработка распределена
ИИТУ Тестирование ПО, 2014 48
ИИТУ Тестирование ПО, 2014 49
Пример. Веб-‐интерфейс графика
• hmps://metrika.yandex.ru/stat/traffic/?counter_id=5265289
ИИТУ Тестирование ПО, 2014 50
Пример. Веб-‐интерфейс графика. Исходная
ИИТУ Тестирование ПО, 2014 51
Пример. Веб-‐интерфейс графика. Другой период, другие данные
ИИТУ Тестирование ПО, 2014 52
Пример. Веб-‐интерфейс графика. Другая группировка
ИИТУ Тестирование ПО, 2014 53
Пример. Веб-‐интерфейс графика. Модель
• Временной период • Тип данных • Способ группировки • Состояние графика – объединение состояний его контролов
• Графики есть почти в каждом отчете
ИИТУ Тестирование ПО, 2014 54
Тестирование конечного автомата
• Узлы – состояния • Связи – переходы между ними • Веса связей – условия переходов • Начальная маркировка – Значения по-‐умолчанию для контролов – Запоминаются ли значения с прошлого визита, и как?
ИИТУ Тестирование ПО, 2014 55
Методика тестирования
• Все состояния • Все переходы между состояниями • От частного к целому
ИИТУ Тестирование ПО, 2014 56
ИИТУ Тестирование ПО, 2014 57