SlideShare a Scribd company logo
1 of 57
Download to read offline
Тестирование	
  «черного	
  ящика»	
  
Николай	
  Васильев	
  
ИИТУ	
  Тестирование	
  ПО,	
  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	
  

More Related Content

What's hot

20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04Computer Science Club
 
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...CodeFest
 
Сергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionСергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionSQALab
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиNikita Efimov
 
Мастер-класс: Системное мышление
Мастер-класс: Системное мышлениеМастер-класс: Системное мышление
Мастер-класс: Системное мышлениеCEE-SEC(R)
 
В.Мизгулин -- программа магистратуры по системной инженерии
В.Мизгулин -- программа магистратуры по системной инженерииВ.Мизгулин -- программа магистратуры по системной инженерии
В.Мизгулин -- программа магистратуры по системной инженерииAnatoly Levenchuk
 
Нейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаНейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаAnatoly Levenchuk
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesCOMAQA.BY
 
А.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаА.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаAnatoly Levenchuk
 
А.Левенчук -- Essence для управления технологиями
А.Левенчук -- Essence для управления технологиямиА.Левенчук -- Essence для управления технологиями
А.Левенчук -- Essence для управления технологиямиAnatoly Levenchuk
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Alexei Lupan
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииSQALab
 

What's hot (13)

20120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-0420120226 information retrieval raskovalov_lecture03-04
20120226 information retrieval raskovalov_lecture03-04
 
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...
CodeFest 2013. Козлов А. — Автоматизация тестирования веб-приложений с исполь...
 
Сергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionСергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL Injection
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехи
 
Мастер-класс: Системное мышление
Мастер-класс: Системное мышлениеМастер-класс: Системное мышление
Мастер-класс: Системное мышление
 
В.Мизгулин -- программа магистратуры по системной инженерии
В.Мизгулин -- программа магистратуры по системной инженерииВ.Мизгулин -- программа магистратуры по системной инженерии
В.Мизгулин -- программа магистратуры по системной инженерии
 
Нейронные сетки: покруче интернета
Нейронные сетки: покруче интернетаНейронные сетки: покруче интернета
Нейронные сетки: покруче интернета
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
А.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортексаА.Левенчук -- смычка кортекса и экзокортекса
А.Левенчук -- смычка кортекса и экзокортекса
 
А.Левенчук -- Essence для управления технологиями
А.Левенчук -- Essence для управления технологиямиА.Левенчук -- Essence для управления технологиями
А.Левенчук -- Essence для управления технологиями
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
 

Viewers also liked

Тестирование ПО (2016)
Тестирование ПО (2016)Тестирование ПО (2016)
Тестирование ПО (2016)Marat Akhin
 
Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Technopark
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design TechnicsISsoft
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестированиеMarat Akhin
 
Cause effect graphing technique
Cause effect graphing techniqueCause effect graphing technique
Cause effect graphing techniqueAnkush Kumar
 
Техники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияТехники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияDmytro Protsenko
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решенийSQALab
 
Lead your round table nov VC Day 13.14
Lead your round table nov VC Day 13.14Lead your round table nov VC Day 13.14
Lead your round table nov VC Day 13.14Steve Glaister
 
BrightGen's Summer 13 Salesforce Release Webinar
BrightGen's Summer 13 Salesforce Release WebinarBrightGen's Summer 13 Salesforce Release Webinar
BrightGen's Summer 13 Salesforce Release Webinarbrightgenss
 
Creative endeavours portfolio
Creative endeavours portfolioCreative endeavours portfolio
Creative endeavours portfolioNabeel Mahmood
 
The Psychology of Effective Personalization
The Psychology of Effective PersonalizationThe Psychology of Effective Personalization
The Psychology of Effective PersonalizationErik Snyder
 
Summer14 Salesforce Release Highlights Webinar
Summer14 Salesforce Release Highlights WebinarSummer14 Salesforce Release Highlights Webinar
Summer14 Salesforce Release Highlights Webinarbrightgenss
 
Smart goal sppt revised
Smart goal sppt revisedSmart goal sppt revised
Smart goal sppt revisedDspratley
 
Audience Centric Branding
Audience Centric BrandingAudience Centric Branding
Audience Centric BrandingErik Snyder
 
Eanam Wharf Canal Brief
Eanam Wharf Canal BriefEanam Wharf Canal Brief
Eanam Wharf Canal BriefNabeel Mahmood
 

Viewers also liked (20)

Тестирование ПО (2016)
Тестирование ПО (2016)Тестирование ПО (2016)
Тестирование ПО (2016)
 
TestDesignReloaded(Ru)
TestDesignReloaded(Ru)TestDesignReloaded(Ru)
TestDesignReloaded(Ru)
 
Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2Тестирование осень 2013 лекция 2
Тестирование осень 2013 лекция 2
 
Экспертные системы: лекция №2
Экспертные системы: лекция №2Экспертные системы: лекция №2
Экспертные системы: лекция №2
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design Technics
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестирование
 
Cause effect graphing technique
Cause effect graphing techniqueCause effect graphing technique
Cause effect graphing technique
 
Техники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияТехники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестирования
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решений
 
Lead your round table nov VC Day 13.14
Lead your round table nov VC Day 13.14Lead your round table nov VC Day 13.14
Lead your round table nov VC Day 13.14
 
BrightGen's Summer 13 Salesforce Release Webinar
BrightGen's Summer 13 Salesforce Release WebinarBrightGen's Summer 13 Salesforce Release Webinar
BrightGen's Summer 13 Salesforce Release Webinar
 
Alex's Design and Illustration's Summary
Alex's Design and Illustration's SummaryAlex's Design and Illustration's Summary
Alex's Design and Illustration's Summary
 
Creative endeavours portfolio
Creative endeavours portfolioCreative endeavours portfolio
Creative endeavours portfolio
 
The Psychology of Effective Personalization
The Psychology of Effective PersonalizationThe Psychology of Effective Personalization
The Psychology of Effective Personalization
 
Summer14 Salesforce Release Highlights Webinar
Summer14 Salesforce Release Highlights WebinarSummer14 Salesforce Release Highlights Webinar
Summer14 Salesforce Release Highlights Webinar
 
Smart goal sppt revised
Smart goal sppt revisedSmart goal sppt revised
Smart goal sppt revised
 
Bulletin 2014
Bulletin 2014Bulletin 2014
Bulletin 2014
 
Samsung Galaxy S4
Samsung Galaxy S4Samsung Galaxy S4
Samsung Galaxy S4
 
Audience Centric Branding
Audience Centric BrandingAudience Centric Branding
Audience Centric Branding
 
Eanam Wharf Canal Brief
Eanam Wharf Canal BriefEanam Wharf Canal Brief
Eanam Wharf Canal Brief
 

Similar to Black box testing

Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practicenikolay_vasiliev
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryNikita Efimov
 
ACC - конструируем тест-план методом Google
ACC - конструируем тест-план методом GoogleACC - конструируем тест-план методом Google
ACC - конструируем тест-план методом GoogleSQALab
 
тестирование
тестированиетестирование
тестированиеYandex
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.Mad Devs
 
Usability ppt-last-140313103534-phpapp01
Usability ppt-last-140313103534-phpapp01Usability ppt-last-140313103534-phpapp01
Usability ppt-last-140313103534-phpapp01Nickola14
 
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...HappyDev-lite
 
Как мы тестировали ситуационный центр Центральной ППК
Как мы тестировали ситуационный центр Центральной ППККак мы тестировали ситуационный центр Центральной ППК
Как мы тестировали ситуационный центр Центральной ППКRina Uzhevko
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Автоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияАвтоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияSQALab
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Ontico
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий СтрелюкSQALab
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныCodeFest
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийSQALab
 

Similar to Black box testing (20)

Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practice
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product Discovery
 
ACC - конструируем тест-план методом Google
ACC - конструируем тест-план методом GoogleACC - конструируем тест-план методом Google
ACC - конструируем тест-план методом Google
 
тестирование
тестированиетестирование
тестирование
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.
 
Usability ppt-last-140313103534-phpapp01
Usability ppt-last-140313103534-phpapp01Usability ppt-last-140313103534-phpapp01
Usability ppt-last-140313103534-phpapp01
 
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...
HappyDev-lite-2016-осень, день 2 02 Анастасия Пиньгина. Тестировщик - больше,...
 
Как мы тестировали ситуационный центр Центральной ППК
Как мы тестировали ситуационный центр Центральной ППККак мы тестировали ситуационный центр Центральной ППК
Как мы тестировали ситуационный центр Центральной ППК
 
01-lection-ka
01-lection-ka01-lection-ka
01-lection-ka
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Автоматизация тестирования. Глобализация
Автоматизация тестирования. ГлобализацияАвтоматизация тестирования. Глобализация
Автоматизация тестирования. Глобализация
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)Гибкое прототипирование для гибкой разработки (Максим Гапонов)
Гибкое прототипирование для гибкой разработки (Максим Гапонов)
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий Стрелюк
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
BDD
BDDBDD
BDD
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 

Black box testing

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