Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Black box testing

1,135 views

Published on

Published in: Technology
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/NtY1Z ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/NtY1Z ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Black box testing

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

×