black box testing

57
Тестирование «черного ящика» Николай Васильев ИИТУ Тестирование ПО, 2014 1

Upload: nikolayvasiliev

Post on 15-Jun-2015

390 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Black box testing

Тестирование  «черного  ящика»  

Николай  Васильев  

ИИТУ  Тестирование  ПО,  2014   1  

Page 2: Black box testing

Напутствие  

«Модели  -­‐  это  мысленные  инструменты,  в  них  нет  чего-­‐либо  принципиально  правильного  или  неправильного.  Они  могут  быть  полезными  и  бесполезными.»  

Б.  Бейзер,  «Тестирование  черного  ящика»  

ИИТУ  Тестирование  ПО,  2014   2  

Page 3: Black box testing

Что  такое  «черный  ящик»?  

•  Не  знаю,  что  это,  но  нужно  проверить  что  оно  работает  правильно  

•  «Горшочек,  не  вари!»  •  Квадрат  Малевича  •  Кубик-­‐рубик?    

ИИТУ  Тестирование  ПО,  2014   3  

Page 4: Black box testing

Что  такое  «черный  ящик»?  

•  Не  знаю,  что  это,  но  нужно  проверить  что  оно  работает  правильно  

•  «Горшочек,  не  вари!»  •  Квадрат  Малевича  •  Кубик-­‐рубик?  Нет.  

ИИТУ  Тестирование  ПО,  2014   4  

Page 5: Black box testing

Тестирование  «черного  ящика»  

А.к.а.  •  Поведенческое  тестирование  •  Функциональное  тестирование  

Мы  знаем,  с  чем  имеем  дело.  

ИИТУ  Тестирование  ПО,  2014   5  

Page 6: Black box testing

Тестирование  по  спецификации  

ИИТУ  Тестирование  ПО,  2014   6  

Page 7: Black box testing

С  чего  начать?  

•  Какой  подход  к  тестированию  выбрать?  •  Какие  тесты  из  огромного  множества  выбрать?  

•  Как  оценить  время  тестирования?  – На  этот  вопрос  мы  здесь  не  будем  отвечать  :)  

ИИТУ  Тестирование  ПО,  2014   7  

Page 8: Black box testing

Тестирование  по  модели  1.  Составление  спецификации  2.  Анализ  требований  –  Однозначность  –  Тестируемость  –  Непротиворечивость  

3.  Составление  модели  4.  Составление  тестовых  сценариев  по  модели  5.  Проведение  тестирования  6.  Анализ  покрытия  7.  Повторить  или  завершить  тестирование  

ИИТУ  Тестирование  ПО,  2014   8  

Page 9: Black box testing

Построение  модели  

•  Графы  •  Узлы  •  Связи  •  Их  свойства  – Симметричность,  транзитивность,  направление…  

ИИТУ  Тестирование  ПО,  2014   9  

Page 10: Black box testing

Создание  тестового  набора  

•  Начиная  с  самых  простых  сценариев  •  Дополняем  набор,  чтобы  обеспечить  желаемую  полноту  тестирования  (покрыть  граф)  

•  Проводим  тесты,  анализируем  результаты…  

ИИТУ  Тестирование  ПО,  2014   10  

Page 11: Black box testing

Что  делать  со  всеми  этими  тестами?  

•  Как  понять,  что  результат  теста  говорит  об  ошибке?  

•  Где  взять  эталон  ожидаемого  значения?  •  Одного  ответа  нет,  зато  есть  много:  –  Уже  существующие  тесты  (работающие)  – Предыдущая  версия  программы  (stable)  – Прототипная  или  модельная  программа  – Простые  сценарии  («синтетические»)  –  Сама  программа  (но  что  мы  в  таком  случае  проверяем?)  

ИИТУ  Тестирование  ПО,  2014   11  

Page 12: Black box testing

ИИТУ  Тестирование  ПО,  2014   12  

Page 13: Black box testing

Пример.  Тестирование  веб-­‐форм  

•  hmps://metrika.yandex.ru/add/  

ИИТУ  Тестирование  ПО,  2014   13  

Page 14: Black box testing

ИИТУ  Тестирование  ПО,  2014   14  

Page 15: Black box testing

ИИТУ  Тестирование  ПО,  2014   15  

Page 16: Black box testing

ИИТУ  Тестирование  ПО,  2014   16  

Page 17: Black box testing

ИИТУ  Тестирование  ПО,  2014   17  

Page 18: Black box testing

Пример.  Тестирование  веб-­‐форм  

Модель  •  Заполнить  имя  счетчика  или  адрес  сайта  и  нажать  «принимаю  соглашение»  – Доступна  кнопка  «Продолжить»  

•  Нажать  кнопку  «продолжить»  – Создание  счетчика  – Переход  на  страницу  со  счетчиком  

ИИТУ  Тестирование  ПО,  2014   18  

Page 19: Black box testing

Пример.  Тестирование  веб-­‐форм  

Анализ  модели  •  Узлы  –  действия  пользователя  •  Связи  –  последовательность  действий  •  Условия?  – Тоже  узлы  – Содержат  предикаты  – Исходящих  связей  >  1  

•  Граф  потока  управления  ИИТУ  Тестирование  ПО,  2014   19  

Page 20: Black box testing

Граф  потока  управления  

•  Блок-­‐схема  •  Модель  –  это  программа  на  псевдокоде  – Может  существовать  только  у  вас  в  голове  :)  

•  Как  создавать  тестовые  сценарии  по  такой  модели?  

ИИТУ  Тестирование  ПО,  2014   20  

Page 21: Black box testing

Граф  потока  управления:    пишем  тесты  

1.  Проверить  узлы  графа  –  Пользователь  может  сделать  каждое  действие?  –  Нет  ли  лишних  доступных  действий?  

2.  Проверить  связи  –  Правильно  ли  обрабатываются  

последовательности  действий?  

3.  Проверить  входы  и  выходы  –  Как  можно  попасть  на  форму?  –  Как  можно  выйти  с  формы?  

ИИТУ  Тестирование  ПО,  2014   21  

Page 22: Black box testing

Граф  потока  управления:    rule  of  thumb  

•  Сначала  создать  простые  тесты  •  Если  простые  тесты  не  дают  нужное  покрытие,  сделайте  более  сложные  

•  Если  тест  слишком  сложен  –  мы  что-­‐то  делаем  не  так  

ИИТУ  Тестирование  ПО,  2014   22  

Page 23: Black box testing

Пример.  Тестирование  веб-­‐форм  Тест-­‐кейсы  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  

Page 24: Black box testing

Граф  потока  управления  

•  А  что  если  есть  циклы  в  графе?  

ИИТУ  Тестирование  ПО,  2014   24  

Page 25: Black box testing

ИИТУ  Тестирование  ПО,  2014   25  

Page 26: Black box testing

Пример.  Обработчик  логов  событий  

•  Входные  данные  –  текстовые  файлы  вида  user_<�mestamp>.txt  –  UserID,  EventTime    

•  Выходные  данные  –  Date,  UniqUsersCount  

•  Входные  логи  появляются  в  real-­‐�me  •  Обработчик  запускается  по  cron,  обработанные  логи  удаляются  

•  Обработчик  считает,  сколько  было  уникальных  пользователей  за  каждый  день  

•  Обработчик  берет  все  файлы  которые  есть  

ИИТУ  Тестирование  ПО,  2014   26  

Page 27: Black box testing

Пример.  Обработчик  логов  событий  

Явный  цикл  •  Входных  файлов  нет  •  Есть  один  файл  •  Есть  много  файлов  Другой  явный  цикл  •  Файл  пуст  •  В  файле  1,  2,  много  записей…  Неявный  цикл?  •  SomeId  за  день  SomeDate  не  встречался  •  SomeId  встретился  однажды  •  SomeId  встретился  несколько  раз  

ИИТУ  Тестирование  ПО,  2014   27  

Page 28: Black box testing

Модель:  цикл  

•  0  итерация  (мимо  цикла)  •  1  итерация  (или  n  первых  итераций)  •  Все  последующие  итерации  •  …  •  Максимальная  итерация  ?  – В  нашем  примере  маловероятно  достичь  ограничения  сверху  

ИИТУ  Тестирование  ПО,  2014   28  

Page 29: Black box testing

ИИТУ  Тестирование  ПО,  2014   29  

Page 30: Black box testing

Пример.  Сложный  обработчик  логов  

•  Входные  данные  –  текстовые  файлы  вида  user_<�mestamp>.txt  – UserID,  EventTime,  EventType,  TraficSource  – EventType  ::=  Show,  Click  – TraficSource  ::=  Search,  Adv,  Other  

•  Выходные  данные  – UsersClicked:  Date,  UserID,  SearchClickCount,  AdvClickCount  

ИИТУ  Тестирование  ПО,  2014   30  

Page 31: Black box testing

Модель  

•  CFG  не  подходит.  Что  еще?  •  Попробуем  вывести  •  Имеем  такой  же  цикл,  но  усложненные  условия  

ИИТУ  Тестирование  ПО,  2014   31  

Page 32: Black box testing

Создадим  модель  •  Если  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  

Page 33: Black box testing

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

•  data  flow  graph  •  Узлы  –  Входные  –  параметры  извне  –  Вычисляющие  –  которые  генерируют  промежуточное  значение  

–  Выходные  –  которые  выводят  конечное  значение  –  Условия  выбора  данных  

•  Связи  –  «используется  для  вычисления»,  «входит  в  формулу»  

ИИТУ  Тестирование  ПО,  2014   33  

Page 34: Black box testing

Метод  тестирования    графа  потока  данных  

1.  Проверить,  дополнить  спецификацию  2.  Найти  входные  переменные,  константы  3.  Найти  функции,  зависящие  только  от  

констант  или  входных  переменных  4.  Найти  функции,  зависящие  только  от  ф.  из  

3  5.  …  6.  профит  

ИИТУ  Тестирование  ПО,  2014   34  

Page 35: Black box testing

Пример.  Сложный  обработчик  логов  

•  Константы  –  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  

Page 36: Black box testing

Пример.  Сложный  обработчик  логов  

Тесткейсы…  

ИИТУ  Тестирование  ПО,  2014   36  

Page 37: Black box testing

ИИТУ  Тестирование  ПО,  2014   37  

Page 38: Black box testing

Пример.    Сложные  условия  

•  Будем  считать  TopAc�veUniqUsers  – Date,  TopAc�veUniqUsersCnt  

•  Критерий:  SearchClickCount  >  5,  AdvClickCount  <=  10,  за  день  

ИИТУ  Тестирование  ПО,  2014   38  

Page 39: Black box testing

Пример.    Сложные  условия  

•  Составной  предикат  –  SearchClickCount  >  5  and  AdvClickCount  <=  10  

•  Сколько  есть  вариантов  входных  параметров?    – Maxint  *  maxint    

•  Сколько  есть  вариантов  выходного  значения?  –  2  

•  Разобьем  на  части:    –  F1  <=  SearchClickCount  >  5  (int  -­‐>  boolean)  –  F2  <=  AdvClickCount  <=  10  (int  -­‐>  boolean)  –  F3  <=  F1  and  F2  

•  Сколько  нужно  тесткейсов?  

ИИТУ  Тестирование  ПО,  2014   39  

Page 40: Black box testing

Пример.  Сложные  условия  

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  

Page 41: Black box testing

Метод  тестирования  доменов  

•  «граничных  условий»  •  Домен  –  область  в  пространстве  •  Точка  на  границе  и  сразу  за  ней    

ИИТУ  Тестирование  ПО,  2014   41  

Page 42: Black box testing

ИИТУ  Тестирование  ПО,  2014   42  

Page 43: Black box testing

Пример.  Конвейер  обработки  логов  

Этапы  конвейера  1.  Делит  входные  логи  на  шарды  –  UserID  %  10  =  номер  шарда  –  Из  1  получается  10  

2.  Считает  статистику  UserID,  Date,  Count  –  Заводит  заявку  на  обновление  сводной  

статистики  3.  Считает  сводную  статистику  Date,  

UniqUsersCount  –  Удаляет  заявку  

ИИТУ  Тестирование  ПО,  2014   43  

Page 44: Black box testing

Что  изменилось?  

•  Для  этапов  конвейера  есть  CFG,  DFG  •  Создаются  и  удаляются  заявки  на  обработку  

•  Нет  заявки  –  нет  результата  

ИИТУ  Тестирование  ПО,  2014   44  

Page 45: Black box testing

Граф  потока  транзакций  

•  !=  транзакциям  в  БД  •  То  же,  что  и  раньше  +  маркеры  (транзакции,  заявки)  

•  Узлы  –  обработчики  заявок  •  Связи  –  переходы  заявок  между  узлами  

ИИТУ  Тестирование  ПО,  2014   45  

Page 46: Black box testing

Метод  тестирования  

1.  Проверить/дополнить  спецификацию  2.  Обозначить  все  виды  транзакций  3.  По  каждому  виду  

1.  Как  возникает  2.  Как  уничтожается  3.  Как  хранится  

4.  Каков  порядок  обработки  транзакций?  5.  Разбить  граф  на  части,  проверить  от  

малого  к  целому  ИИТУ  Тестирование  ПО,  2014   46  

Page 47: Black box testing

Оценка  покрытия  

•  Все  узлы  –  все  этапы  конвейера    – слабое  

•  Создание  и  поглощение  всех  заявок  – лучше  

•  Все  связи  –  переходы  заявок  между  узлами  – Хорошее  

•  Если  конвейер  straigh¤orward,  можно  обойтись  1  большим  тест-­‐кейсом  

ИИТУ  Тестирование  ПО,  2014   47  

Page 48: Black box testing

Когда  использовать  граф  потока  транзакций  

1.  Есть  параллельные  вычисления  2.  Работа  идет  кусочками.  Прогресс  

сохраняется.  3.  Есть  очереди  обработки  4.  Есть  механизм  отправки  сообщений  5.  Обработка  распределена  

ИИТУ  Тестирование  ПО,  2014   48  

Page 49: Black box testing

ИИТУ  Тестирование  ПО,  2014   49  

Page 50: Black box testing

Пример.  Веб-­‐интерфейс  графика  

•  hmps://metrika.yandex.ru/stat/traffic/?counter_id=5265289  

ИИТУ  Тестирование  ПО,  2014   50  

Page 51: Black box testing

Пример.  Веб-­‐интерфейс  графика.  Исходная  

ИИТУ  Тестирование  ПО,  2014   51  

Page 52: Black box testing

Пример.  Веб-­‐интерфейс  графика.    Другой  период,  другие  данные  

ИИТУ  Тестирование  ПО,  2014   52  

Page 53: Black box testing

Пример.  Веб-­‐интерфейс  графика.  Другая  группировка  

ИИТУ  Тестирование  ПО,  2014   53  

Page 54: Black box testing

Пример.  Веб-­‐интерфейс  графика.  Модель  

•  Временной  период  •  Тип  данных  •  Способ  группировки  •  Состояние  графика  –  объединение  состояний  его  контролов  

•  Графики  есть  почти  в  каждом  отчете  

ИИТУ  Тестирование  ПО,  2014   54  

Page 55: Black box testing

Тестирование  конечного  автомата  

•  Узлы  –  состояния  •  Связи  –  переходы  между  ними  •  Веса  связей  –  условия  переходов  •  Начальная  маркировка  – Значения  по-­‐умолчанию  для  контролов  – Запоминаются  ли  значения  с  прошлого  визита,  и  как?  

ИИТУ  Тестирование  ПО,  2014   55  

Page 56: Black box testing

Методика  тестирования  

•  Все  состояния  •  Все  переходы  между  состояниями  •  От  частного  к  целому  

ИИТУ  Тестирование  ПО,  2014   56  

Page 57: Black box testing

ИИТУ  Тестирование  ПО,  2014   57