Курс «Основы тестирования ПО» Лекция №2 Докучаев Сергей

Скачать презентацию Курс «Основы тестирования ПО» Лекция №2 Докучаев Сергей Скачать презентацию Курс «Основы тестирования ПО» Лекция №2 Докучаев Сергей

13-dokuchaev._osnovy_testirovaniya_po_-_lekciya_#2.pptx

  • Количество слайдов: 81

>Курс «Основы тестирования ПО» Лекция №2  Докучаев Сергей / руководитель группы нефункционального тестирования/ Курс «Основы тестирования ПО» Лекция №2 Докучаев Сергей / руководитель группы нефункционального тестирования/ Тензор, 2014

>2 Что будет на этой лекции Что такое тест-дизайн. Термины.  Техники черного ящика 2 Что будет на этой лекции Что такое тест-дизайн. Термины. Техники черного ящика Техники белого ящика Выводы Самостоятельные задания

>3 Сначала про ошибки… World of Warcraft 13 сентября 2005, Зул’Гуруб, Хаккар  3 Сначала про ошибки… World of Warcraft 13 сентября 2005, Зул’Гуруб, Хаккар не учли все возможности персонажей будет что рассказать внукам

>4 Сначала про ошибки… Kill Screen на 255 уровне (Pac-Man, Duck Hunt)  4 Сначала про ошибки… Kill Screen на 255 уровне (Pac-Man, Duck Hunt) не учли все возможности фанатов образовались экстра-уровни для игроков

>5 Литература Lee Copeland  “A Practitioner's Guide to Software Test Design”  Torbjörn 5 Литература Lee Copeland “A Practitioner's Guide to Software Test Design” Torbjörn Ryber “Essential Test Design”

>6 Терминология 6 Терминология

>7 Терминология Что такое ошибка? 7 Терминология Что такое ошибка?

>8 Терминология Что такое ошибка? Ошибка – это несоответствие между желаемым и действительным 8 Терминология Что такое ошибка? Ошибка – это несоответствие между желаемым и действительным

>9 Концепция полного тестирования calc(x:int, y:int)  - покрыть юнит-тестами данную функцию ||(X,Y)|| = 9 Концепция полного тестирования calc(x:int, y:int) - покрыть юнит-тестами данную функцию ||(X,Y)|| = 264 На 1 Гц машине потребуется 3K лет, что бы прогнать все тесты, если он будет состоять из 100 команд

>10 Концепция полного тестирования Полное тестирование невозможно. 10 Концепция полного тестирования Полное тестирование невозможно.

>11 Методы тестирования Черный, белый, серый… 11 Методы тестирования Черный, белый, серый…

>12 Терминология Тестовый случай, test-case – набор условий, при которых анализируется реакция системы. 12 Терминология Тестовый случай, test-case – набор условий, при которых анализируется реакция системы. Условия – действия и/или данные Типичная (но не обязательная) структура: Действие №1 Действие №2 … Ожидаемый результат

>13 Терминология Позитивный и негативный сценарии 13 Терминология Позитивный и негативный сценарии

>14 Терминология Если  тестирование – это процесс, при котором мы задаём вопрос тестируемому 14 Терминология Если тестирование – это процесс, при котором мы задаём вопрос тестируемому объекту и анализируем ответ с ожидаемым то тест-дизайн – это процесс выбора вопроса из бесконечного множества вариантов

>15 Терминология Оракул – механизм определения верности ответа  Примеры оракулов:  спецификация и 15 Терминология Оракул – механизм определения верности ответа Примеры оракулов: спецификация и документация аналогичные продукты человек-оракул прежние версии программы модель системы эвристические правила …

>16 Терминология Техники – лишь набор инструментов, которые нужно подбирать к каждой отдельной ситуации 16 Терминология Техники – лишь набор инструментов, которые нужно подбирать к каждой отдельной ситуации

>17 Полное тестирование int blech (int j) {    j = j 17 Полное тестирование int blech (int j) { j = j -1; // should be j = j + 1 j = j / 30000; return j; } j in range: [-32768, 32767] Всего 65536 тестов.

>18 Полное тестирование int blech (int j) {    j = j 18 Полное тестирование int blech (int j) { j = j -1; // should be j = j + 1 j = j / 30000; return j; } j in range: [-32768, 32767] Всего 65536 тестов. Если есть хоть одна малейшая возможность протестировать всё – нужно тестировать всё.

>19 Классы эквивалентности, граничные значения и domain тестирование 19 Классы эквивалентности, граничные значения и domain тестирование

>20 Классы эквивалентности Классы эквивалентности - это некое подмножество входящих значений, которое удовлетворяет следующим 20 Классы эквивалентности Классы эквивалентности - это некое подмножество входящих значений, которое удовлетворяет следующим требованиям: проверяют одно и то же если одно значение обнаружит дефект, то вероятно и остальные обнаружат дефект если одно значение не находит дефект, то вероятно и остальные не найдут дефекта

>21 Классы эквивалентности Класс эквивалентности – множество значений, при которых приложение ведёт себя одинаково 21 Классы эквивалентности Класс эквивалентности – множество значений, при которых приложение ведёт себя одинаково Разбить на классы эквивалентности – выделить данные подмножества

>22 Классы эквивалентности Суть техники:  Множество значений разбиваем на подмножества (классы эквивалентности) Выбираем 22 Классы эквивалентности Суть техники: Множество значений разбиваем на подмножества (классы эквивалентности) Выбираем из каждого множества по одному значению Проверяем поведение системы для каждого из значений

>23 Классы эквивалентности Как разбивать на классы?  Пользоваться эвристиками:  правильные/неправильные значения разбивать 23 Классы эквивалентности Как разбивать на классы? Пользоваться эвристиками: правильные/неправильные значения разбивать множество аномальными точками группировать значения по определённому признаку выводить свои эвристики

>24 Классы эквивалентности Пример: 24 Классы эквивалентности Пример:

>25 Классы эквивалентности Итоговый набор данных: [-10, 10, 70] 25 Классы эквивалентности Итоговый набор данных: [-10, 10, 70]

>26 Граничные значения Граничные значения – это значения, которые возникают между классами эквивалентности 26 Граничные значения Граничные значения – это значения, которые возникают между классами эквивалентности Граничные значения могут отсутствовать или не принадлежать ни одному из классов

>27 Классы эквивалентности В нашем случае граничные значения – это 1 и 60 27 Классы эквивалентности В нашем случае граничные значения – это 1 и 60 А так же соседние значения – 0, 3, 59, 61 Итоговый набор данных: [-10, 10, 70, 0, 3, 59, 61]

>28 Классы эквивалентности Domain тестирование (когда есть несколько зависимых значений)  Domain (англ.) – 28 Классы эквивалентности Domain тестирование (когда есть несколько зависимых значений) Domain (англ.) – область определения Способ борьбы с комбинаторным взрывом Выбираем только те комбинации, которые вероятнее всего выявят проблему.

>29 Классы эквивалентности 29 Классы эквивалентности

>31 Классы эквивалентности 31 Классы эквивалентности

>32 Классы эквивалентности 32 Классы эквивалентности

>33 Таблицы принятия решений 33 Таблицы принятия решений

>34 Таблицы принятия решений 34 Таблицы принятия решений

>35 Таблицы принятия решений 35 Таблицы принятия решений

>36 Таблицы принятия решений 36 Таблицы принятия решений

>37 Таблицы принятия решений 37 Таблицы принятия решений

>38 Таблицы принятия решений 38 Таблицы принятия решений

>39 Таблицы принятия решений 39 Таблицы принятия решений

>40 Таблицы принятия решений Техника с таблицами принятия решений:  Определяем условия Определяем действия 40 Таблицы принятия решений Техника с таблицами принятия решений: Определяем условия Определяем действия Записываем все комбинации условий Выбрасываем дубли и невозможные Заполняем действия Каждый столбец = тест кейс

>41 Таблицы принятия решений Для чего используются:  Для удобной записи документации Для уточнения 41 Таблицы принятия решений Для чего используются: Для удобной записи документации Для уточнения требований Для составления тест-кейсов (60-70) Как средство разработки ПО

>42 Pairwise тестирование 42 Pairwise тестирование

>43 Pairwise тестирование ОС: Windows 7, Windows XP, Linux Ubuntu 14, Mac OS X 43 Pairwise тестирование ОС: Windows 7, Windows XP, Linux Ubuntu 14, Mac OS X Браузеры: firefox x 3, chrome x 1, safari x 2, ie x 5 Разрешение: 1366x768, 1920x108, 1024x768, 1280x1024, 1440x900, 1280x800 Итого: 4 X 11 x 6 = 264 комбинаций

>44 Pairwise тестирование 44 Pairwise тестирование

>45 Pairwise тестирование ОС: Windows 7, Windows XP  Браузеры: firefox, chrome, ie 45 Pairwise тестирование ОС: Windows 7, Windows XP Браузеры: firefox, chrome, ie Разрешение: 1366x768, 1920x1080 Итого: 2 X 3 x 2 = 12 комбинаций

>46 Pairwise тестирование 46 Pairwise тестирование

>47 Pairwise тестирование 47 Pairwise тестирование

>48 Pairwise тестирование 48 Pairwise тестирование

>49 Pairwise тестирование 49 Pairwise тестирование

>50 Pairwise тестирование N – параметров {P} = {P1 ,P2 , … ,PN} – 50 Pairwise тестирование N – параметров {P} = {P1 ,P2 , … ,PN} – набор параметров R(Pi ) = Ri – алфавит каждого из параметров | Ri | = ni - количества элементов алфавита для каждого из параметров X = ni T = max(X) x max(X\max(X)) T – общее число pairwise комбинаций

>51 Pairwise тестирование 3 – параметра {P} = {ОС, браузер, разрешение} – набор параметров 51 Pairwise тестирование 3 – параметра {P} = {ОС, браузер, разрешение} – набор параметров X ={2, 3, 2} T = max(X) x max(X\max(X)) T = 3 x max({2, 2}) T = 3 x 2 T = 6 T – общее число pairwise комбинаций

>52 Pairwise тестирование Для 12 параметров по 8 значений:  общее число комбинаций = 52 Pairwise тестирование Для 12 параметров по 8 значений: общее число комбинаций = 128 = 429 981 696 односвязные комбинации = 8 двусвязные комбинации = 64

>53 Pairwise тестирование Какие есть варианты автоматизации:  готовые утилиты   веб-сервисы 53 Pairwise тестирование Какие есть варианты автоматизации: готовые утилиты веб-сервисы встроенные средства во фреймворки

>54 Диаграммы переходов состояний 54 Диаграммы переходов состояний

>55 Диаграммы переходов состояний Состав диаграммы состояний:  состояние (кружок) – условия, в которых 55 Диаграммы переходов состояний Состав диаграммы состояний: состояние (кружок) – условия, в которых система ожидает одного и более событий. Состояние помнит о данных/действиях, полученных ранее. транзакция (стрелка) – переход системы из одного состояния в другое при каком-либо событии событие (надпись над стрелкой) – нечто, заставляющее систему изменить состояние действие (надпись со слешем) – операция инициированная изменением состояния

>56 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт  Заполнен данными Отменил пользователь 56 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт Заполнен данными Отменил пользователь Ждём перехода по ссылке Финиш Открыли визард Отмена пользователем Отмена пользователем Отмена пользователем Перешли по ссылке Сессия истекла спустя час неактивности Час бездействия Заполнили форму Нажали «вперёд» назад назад

>57 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт  Заполнен данными Отменил пользователь 57 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт Заполнен данными Отменил пользователь Ждём перехода по ссылке Финиш Открыли визард Отмена пользователем Отмена пользователем Отмена пользователем Перешли по ссылке Сессия истекла спустя час неактивности Час бездействия Заполнили форму Нажали «вперёд» назад назад Проходим по всем состояниям

>58 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт  Заполнен данными Отменил пользователь 58 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт Заполнен данными Отменил пользователь Ждём перехода по ссылке Финиш Открыли визард Отмена пользователем Отмена пользователем Отмена пользователем Перешли по ссылке Сессия истекла спустя час неактивности Час бездействия Заполнили форму Нажали «вперёд» назад назад Проходим по всем событиям

>59 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт  Заполнен данными Отменил пользователь 59 Диаграммы переходов состояний Старт Создан Временный аккаунт Аккаунт Заполнен данными Отменил пользователь Ждём перехода по ссылке Финиш Открыли визард Отмена пользователем Отмена пользователем Отмена пользователем Перешли по ссылке Сессия истекла спустя час неактивности Час бездействия Заполнили форму Нажали «вперёд» назад назад Проходим по всем переходам

>60 Диаграммы переходов состояний Данная техника удобна при работе с документацией  Очень удобна 60 Диаграммы переходов состояний Данная техника удобна при работе с документацией Очень удобна при тестировании различных визардов, которые часто встречаются в современных веб-приложениях Не применима, если у системы нет состояний Предпочтительно использовать покрытие по всем транзакциям

>61 Usecase тестирование 61 Usecase тестирование

>62 Usecase тестирование Usecase – некий сценарий, который описывает использование системы пользователем для достижения 62 Usecase тестирование Usecase – некий сценарий, который описывает использование системы пользователем для достижения поставленной цели. Пример: директор компании X (пользователь) хочет узнать динамику прибыли (цель) некоторой компании Y, для этого он выполняет, например, следующую последовательность действий: Открывает раздел «Контрагенты» Поиском находит нужную организацию Открывает карточку организации Открывает раздел про динамику прибыли

>63 Usecase тестирование Почему такой подход хорош:  Документация описывается с точки зрения пользователя, 63 Usecase тестирование Почему такой подход хорош: Документация описывается с точки зрения пользователя, а не с технической/системной точки зрения Формат прост и понятен – любой может участвовать в сборе требований Легко превращаются в тест-кейсы Идеально подходят для приёмочного тестирования

>64 Whitebox тестирование 64 Whitebox тестирование

>65 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 65 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start

>66 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 66 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start покрытие всех операторов/выражений/строчек кода

>67 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 67 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start покрытие всех условий

>68 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 68 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start покрытие путей

>69 Control flow тестирование M = E – N + 2P  M – 69 Control flow тестирование M = E – N + 2P M – цикломатическая сложность E – количество рёбер в графе N – число узлов в графе P – количество компонент связанности

>70 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 70 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start N = 7 E = 6 P = 1 M = 7- 6 + 2 = 3

>71 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 71 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start N = 7 E = 6 P = 1 M = 7- 6 + 2 = 3

>72 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 72 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start N = 7 E = 6 P = 1 M = 7- 6 + 2 = 3

>73 Control Flow тестирование if (a>0) {x=x+1;}  if (b==3) {y=0;}  a > 73 Control Flow тестирование if (a>0) {x=x+1;} if (b==3) {y=0;} a > 0 x = x + 1 b == 3 x = x + 1 end start N = 7 E = 6 P = 1 M = 7- 6 + 2 = 3

>74 Тестируем слона Протестируем слона… 74 Тестируем слона Протестируем слона…

>75 Тестируем слона Какова его спецификация? Какие требования? Для чего будем использовать? 75 Тестируем слона Какова его спецификация? Какие требования? Для чего будем использовать?

>76 Тестируем слона Какова его спецификация? Какие требования? Для чего будем использовать?  Спецификации: 76 Тестируем слона Какова его спецификация? Какие требования? Для чего будем использовать? Спецификации: рост: от 3 до 10 метров вес: от 500 кг до 2 тонн длина хобота: 0.8-1.5 метра Использоваться будет для переноса грузов в Мурманске. Размеры груза, равно как и длительность работы не известны. Начинаем тестировать…

>77 Тестируем слона Проверяем на соответствие спецификациям 77 Тестируем слона Проверяем на соответствие спецификациям

>78 Тестируем слона Определяем входные параметры нашей системы:  вес груза длина пути температура 78 Тестируем слона Определяем входные параметры нашей системы: вес груза длина пути температура окружающего воздуха тип осадков тип дороги … Мы получаем параметры, которые обрабатываем, используя техники тест-дизайна. Определяем сценарии использования слона (таблицы принятия решений, граф переходов состояний) Составляем тест-кейсы и тестируем…

>79 Тестируем слона 79 Тестируем слона

>80 Вопросы есть? 80 Вопросы есть?

>Спасибо за внимание! Разработка СБИС  Докучаев Сергей Валерьевич / sv.dokuchaev@tensor.ru (4852) 262-000 (доб. Спасибо за внимание! Разработка СБИС Докучаев Сергей Валерьевич / [email protected] (4852) 262-000 (доб. 3435) sbis.ru

>