black box testing

Post on 15-Jun-2015

390 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

ИИТУ  Тестирование  ПО,  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  

top related