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

Докучаев. Основы тестирования ПО - Лекция #2.pptx

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблицы принятия решений Правило 1 Правило 2 … Правило p Условия Условие 1 Условие Таблицы принятия решений Правило 1 Правило 2 … Правило p Условия Условие 1 Условие 2 … Условие m Действия Действие 1 Действие 2 … Действие m 34

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

Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Логин введён? Пароль введён? Логин валидный? Пароль валидный? Авторизация Сообщаем, что нужно заполнить все поля Сообщаем о неправильном логине или пароле 36

Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Логин введён? 0 0 0 0 1 1 1 1 Пароль введён? 0 0 0 0 1 1 1 1 Логин валидный? 0 0 1 1 Пароль валидный? 0 1 0 1 Авторизация Сообщаем, что нужно заполнить все поля Сообщаем о неправильном логине или пароле 37

Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 Таблицы принятия решений 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Логин введён? 0 0 0 0 1 1 1 1 Пароль введён? 0 0 0 0 1 1 1 1 Логин валидный? 0 0 1 1 Пароль валидный? 0 1 0 1 Авторизация Сообщаем, что нужно заполнить все поля Сообщаем о неправильном логине или пароле 38

Таблицы принятия решений 1 6 9 11 13 14 15 16 Логин введён? 0 Таблицы принятия решений 1 6 9 11 13 14 15 16 Логин введён? 0 0 1 1 1 Пароль введён? 0 1 0 0 1 1 Логин валидный? 0 0 0 1 1 Пароль валидный? 0 1 0 0 0 1 x Авторизация Сообщаем, что нужно заполнить все поля Сообщаем о неправильном логине или пароле x x x X 39

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

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

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

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

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

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

Pairwise тестирование 1 2 3 4 5 6 7 8 9 10 11 12 Pairwise тестирование 1 2 3 4 5 6 7 8 9 10 11 12 ОС Win 7 Win 7 Win XP Win XP Браузер firefox chrome ie Firefox chrome Ie Разреше ние 1366 x 768 1366 x 768 1920 x 1080 1920 x 1080 46

Pairwise тестирование 1 2 3 ОС Win 7 Win XP Win 7 Браузер firefox Pairwise тестирование 1 2 3 ОС Win 7 Win XP Win 7 Браузер firefox Chrome ie Разрешен ие 1366 x 768 1920 x 1080 1366 x 768 47

Pairwise тестирование 1 2 3 4 5 6 7 8 9 10 11 12 Pairwise тестирование 1 2 3 4 5 6 7 8 9 10 11 12 ОС Win 7 Win 7 Win XP Win XP Браузер firefox chrome ie Firefox chrome Ie Разреше ние 1366 x 768 1366 x 768 1920 x 1080 1920 x 1080 48

Pairwise тестирование 1 3 5 8 10 12 ОС Win 7 Win XP Браузер Pairwise тестирование 1 3 5 8 10 12 ОС Win 7 Win XP Браузер firefox ie chrome Firefox Ie Разреше ние 1366 x 768 1920 x 1080 49

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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