SlideShare a Scribd company logo
1 of 65
ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ
ПОКРЫТИЙ
ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА
В СТРАНЕ ПОКРЫТИЙ
Andrey Ladutko Minsk, Belarus
Lead QA Engineer, QA SWAT in EPAM
6+ years experience
ISTQB Full Advanced Level
SQA Days-12,13,15 lectures :
Minsk - Gamification in QA
Kiev - Growth rules in QA
Moscow – TM in QA
ladutko_andrey@tut.by, andrey_ladutko@epam.com
ladutko_andrey
sof_minsk
Blog:
http://qastugama.blogspot.com
CONFIDENTIAL
СОДЕРЖАНИЕ
- Белый VS черный ящик, достоинства и недостатки
каждого
- Покрытия метода БЯ
- Выводы
- Вопросы
3
БЕЛЫЙ ЯЩИК И ЧЕРНЫЙ: ЧТО ЛУЧШЕ?
Разработка тестов методом черного ящика
Процедура создания и/или выбора тестовых сценариев, основанная на
анализе функциональной или нефункциональной спецификации
компонента или системы без знания внутренней структуры.
Разработка тестов методом белого ящика
Процедура разработки или выбора тестовых сценариев на основании
анализа внутренней структуры компонента или системы.
ISTQB Глоссарий, версия 2.3.
КАКОЕ ОТНОШЕНИЕ
ЯЩИКОВ ПРАВИЛЬНОЕ?
БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ
Michael Bolton “Critical Thinking” training (2014, SPb)
БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ
http://lurkmore.to/Обсуждение:Индусский_код
БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ
http://www.xkcd.com/221/
БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
Мы написали идеальную программу, ВСЕ
тесты на покрытие кода выдают PASS 
БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
Мы написали идеальную программу, ВСЕ
тесты на покрытие кода выдают PASS 
НО
Программа не делает, то что было
задумано в спецификации заказчиком 
БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
Александр Ильин «Метрики покрытия. Прагматичный подход»
SQA Days-12 http://sqadays.com/ru/talk/7655
Полное покрытие кода всевозможными техниками не
гарантирует отсутствие багов….
НО
Любая техника дает нам полезные тесты, которые мы
можем использовать для поиска наиболее
(не)очевидных
МНОГО ЛИ МЫ ЗНАЕМ О БЕЛОМ ЯЩИКЕ?
 Эквивалентные классы
 Граничные значения
 Таблицы решений
• Елена Сташенко, SQA Days-14 http://sqadays.com/ru/talk/12503
 Диаграммы переходов
• Наталья Руколь, ConfeT&QA http://www.youtube.com/watch?v=8H9HgjrwQHA
 Метод попарных комбинаций
• Никита Постолакий, SQA Days-11 http://sqadays.com/ru/talk/9084
 Тестирование пользовательских историй
…..
О ЧЕРНОМ ЯЩИКЕ МЫ ЗНАЕМ ОЧЕНЬ МНОГО
А ЧТО МЫ ЗНАЕМ О БЕЛОМ ЯЩИКЕ?
 Какие-то там покрытия, слышал или читал где-то
 Надо лезть в код и смотреть, что происходит…
 Посмотрю веб-страницу FireBug ‘ом, а вдруг что-то увижу
 У нас собираются какие-то метрики тулой. А, вспомнил, Sonar
называется
 У нас программисты пишут юнит-тесты, а я проверяю по спеке
 Я же не программист, зачем мне это?
 Интересно, а что сегодня будет на обед?
 Я все это хорошо знаю, пойду послушаю доклад в другой
секции
…..
ПРОВЕРИМ УРОВЕНЬ
{A, B, C, D} = True | False
A & B - Логическое И, равно True, если все условия в нем
равны True
A | B – Логическое ИЛИ, равно True, если хотя бы одно
условие в нем равно True
ПРОВЕРИМ УРОВЕНЬ
{A, B, C, D} = True | False
Сколько тестов необходимо, чтобы проверить выражение:
D = А & (B | C) ?
1. 2
2. 3
3. 4
4. 8
БЕЛЫЙ ЯЩИК. ПОКРЫТИЯ – ЭТО ПРОСТО!
ПП
МПУР
ПУР
ПУ
3 ЧЕЛОВЕКА ИЗ ЗАЛА
ЗАДАЧА:
Показываем тесты для выражения
A & B = C
{A,B,C} = True || False
A, B – условия, С - результат
True – поднимаем руку
False – продолжаем сидеть
ЗАДАЧА
ЗАДАЧА:
Проверим?
A & B = C
A = False B = True
C = ?
ЗАДАЧА
ЗАДАЧА:
Проверим?
A & B = C
A = False B = True
C = False
ЗАДАЧА
ПОКРЫТИЕ УСЛОВИЙ (ПУ) –
CONDITION COVERAGE (CC)
ПП
МПУР
ПУР
ПУ
Определение:
 Каждое условие принимает
значение True и False
№ A B C = A & B
1 False True False
ВЕРНЕМСЯ К ЗАДАЧЕ
У нас есть один тест.
Какие еще тесты нужно добавить для ПУ?
• Каждое условие принимает значение True и
False
№ A B C = A & B
1 False True False
ВЕРНЕМСЯ К ЗАДАЧЕ
Что нужно и что проверено:
A = True, A = False. Проверено: A = False
B = True, B = False. Проверено: B = True
№ A B C = A & B
1 False True False
2 True False ?
ВЕРНЕМСЯ К ЗАДАЧЕ
Добавляем второй тест:
A = True, B = False
C = ?
№ A B C = A & B
1 False True False
2 True False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Добавляем второй тест:
A = True, B = False
C = False
№ A B C = A & B
1 False True False
2 True False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Теперь все тесты?
Каждое условие принимает значение
True и False
№ A B C = A & B
1 False True False
2 True False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Теперь все тесты?
Каждое условие принимает значение
True и False
Итого 2 теста
ПОКРЫТИЕ УСЛОВИЙ – ВЫВОДЫ
ПП
МПУР
ПУР
ПУ
 Не исследуем результат (в обоих
тестах С = False)
Вывод:
В теории интересно, на практике –
не применимо
НО: нужно для понимания более
сложных покрытий
№ A B C = A & B
1 False True False
2 True False False
ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ (ПУР) –
CONDITION DECISION COVERAGE (CDC)
ПП
МПУР
ПУР
ПУ
Определение:
 Каждое условие принимает
значение True и False
 Результат принимает
значение True и False
ВЕРНЕМСЯ К ЗАДАЧЕ
У нас есть два теста на ПУ.
Что еще нужно проверить для ПУР?
№ A B C = A & B
1 False True False
2 True False False
ВЕРНЕМСЯ К ЗАДАЧЕ
У нас есть два теста на ПУ.
Что еще нужно проверить для ПУР?
• Результат принимает значение True и False
№ A B C = A & B
1 False True False
2 True False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Что нужно и что проверено:
A = True, A = False. Проверено: A = False, A = True
B = True, B = False. Проверено: B = True, B = False
Осталось:
 C = True, C = False. Проверено: С = False
№ A B C = A & B
1 False True False
2 True False False
№ A B C = A & B
1 False True False
2 True False False
3 True True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Теперь все тесты?
 Каждое условие принимает значение True и False
 Результат принимает значение True и False
№ A B C = A & B
1 False True False
2 True False False
3 True True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Теперь все тесты?
 Каждое условие принимает значение True и False
 Результат принимает значение True и False
Итого 3 теста
№ A B C = A & B
1 False True False
2 True False False
3 True True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Оптимально? Нет.
№ A B C = A & B
1 False True False
2 True False False
3 True True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Упростим:
1. A = False, B = False, C = False
2. A = True, B = True, C = True
№ A B C = A & B
1 False False False
2 True True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Теперь все тесты?
 Каждое условие принимает значение True и False
 Результат принимает значение True и False
Оптимально? Да.
Итого 2 теста
ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ – ВЫВОДЫ
 Исследуем и условия, и
результат
 Проверили только самое важное
Вывод:
Проверяет важное, но не
критичное. Нужны более сильные
покрытия
ПП
МПУР
ПУР
ПУ
№ A B C = A & B
1 False False False
2 True True True
ЗОВЕМ 4-ГО ЧЕЛОВЕКА ИЗ ЗАЛА
ЗАДАЧА:
Показываем тесты для выражения
A & (B | C) = D
{A,B,C,D} = True | False
A, B, C – условия, D - результат
True – поднимаем руку
False – продолжаем сидеть
ЗАДАЧА
ЗАДАЧА:
Проверим?
A & (B | C) = D
A = True
B = False
C = True
D = ?
ЗАДАЧА
ЗАДАЧА:
Отлично!
A & (B | C) = D
A = True
B = False
C = True
D = True
ЗАДАЧА
МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ
И РЕШЕНИЙ (МПУР) – MODIFIED CONDITION
DECISION COVERAGE (MCDC)
ПП
МПУР
ПУР
ПУ
Определение:
 Каждое условие И результат
принимают значения True и False
1. Минимум 1 тест, в котором результат
меняется, если атомарное условие Х = True
2. Минимум 1 тест, в котором результат
меняется, если атомарное условие Х = False
3. Каждое условие содержит тесты для п. 1 и 2
МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ
И РЕШЕНИЯ (МПУР) – MODIFIED CONDITION
DECISION COVERAGE (MCDC)
ПП
МПУР
ПУР
ПУ
Подсказка 1.
Для N условий – N+1 тестов.
Вопрос:
Сколько тестов получится для выражения
D = A & (B | C) ?
ВЕРНЕМСЯ К ЗАДАЧЕ
У нас есть один тест. Рассмотрим его подробнее
№ A B С D = A & (B | C)
1 True False True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Возьмем условие А.
A = True, B = False, C = True. D = True
Минимум 1 тест, в котором результат меняется, если
атомарное условие А = True – DONE.
Нужно:
Минимум 1 тест, в котором результат меняется, если
атомарное условие А = False
№ A B С D = A & (B || C)
1 True False True True
ВЕРНЕМСЯ К ЗАДАЧЕ
Поменяем условие А с True на False
A = False, B = False, C = True. D = False
Минимум 1 тест, в котором результат меняется, если
атомарное условие А = False – DONE
Определения 1 и 2 для условия А выполнены.
Что осталось?
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
ВЕРНЕМСЯ К ЗАДАЧЕ
Аналогично для условий B и C.
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
ВЕРНЕМСЯ К ЗАДАЧЕ
Выполним для С, снова посмотрим на 1 тест
A = True, B = False, C = True. D = True
Минимум 1 тест, в котором результат меняется, если
атомарное условие С = True – DONE.
Нужно:
Минимум 1 тест, в котором результат меняется, если
атомарное условие С = False
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
ВЕРНЕМСЯ К ЗАДАЧЕ
Поменяем условие C с True на False
A = True, B = False, C = False. D = False
Минимум 1 тест, в котором результат меняется, если
атомарное условие C = False – DONE
Определения 1 и 2 для условия C выполнены.
Что осталось?
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
3 True False False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Выполним для B, посмотрим на 3 тест
A = True, B = False, C = False. D = False
Минимум 1 тест, в котором результат меняется, если
атомарное условие B = False – DONE.
Нужно:
Минимум 1 тест, в котором результат меняется, если
атомарное условие B = True
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
3 True False False False
ВЕРНЕМСЯ К ЗАДАЧЕ
Поменяем условие B с False на True
A = True, B = True, C = False. D = True
Минимум 1 тест, в котором результат меняется, если
атомарное условие B = True – DONE
Определения 1 и 2 для условия B выполнены.
Все?
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
3 True False False False
4 True True False True
ВЕРНЕМСЯ К ЗАДАЧЕ
Определения 1 и 2 выполнены для все условий:
A – тесты 1 и 2
B – тесты 3 и 4
С – тесты 1 и 3
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
3 True False False False
4 True True False True
МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ И
РЕШЕНИЙ – ВЫВОДЫ
ПП
МПУР
ПУР
ПУ
№ A B С D = A & (B | C)
1 True False True True
2 False False True False
3 True False False False
4 True True False True
 Исследуем влияние КАЖДОГО
условия на результат
 Возможны сложности с
составлением тестов для покрытия
 Некоторые ЯП выдают заранее
известный результат, обработав
ЧАСТЬ выражения
ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE
CONDITION COVERAGE (MCC)
ПП
МПУР
ПУР
ПУ
Определение:
 Проверяем ВСЕ возможные
комбинации условий
Вопрос:
Сколько тестов получится для выражения
D = A & (B | C) ?
ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE
CONDITION COVERAGE (MCC)
ПП
МПУР
ПУР
ПУ
Ответ: 8 тестов.
В общем случае для N условий:
два в степени N тестов
ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE
CONDITION COVERAGE (MCC)
№ A B С D = A & (B | C)
1 False False False False
2 False False True False
3 False True False False
4 False True True False
5 True False False False
6 True False True True
7 True True False True
8 True True True True
ПП
МПУР
ПУР
ПУ
ПОЛНОЕ ПОКРЫТИЕ – ВЫВОДЫ
 Проверяем ВСЕ возможные
случаи – для надежных систем,
рассчитанный на длительный срок
работы
Большое количество тестов для
ПП делает более применимым
предыдущее покрытие (МПУР).
Вместо 2^N -> N + 1 тестов
ПП
МПУР
ПУР
ПУ
ПРИМЕР ИСПОЛЬЗОВАНИЯ ТЕХНИК.
Авиационный стандарт DO178-B,
5 типов ошибок:
• Катастрофичная (не работает критичный
функционал, необходимый для
безопасного полета или приземления)
• Опасная (негативное влияние на
безопасность или производительность)
• Важная (ошибка значительная, но менее
серьезная чем А или В)
• Не важная
• Не имеющая эффекта
ПП
МПУР
ПУР
ПУ
ПРИМЕР ИСПОЛЬЗОВАНИЯ ТЕХНИК.
Международный стандарт
программируемых электронных
устройств C-61508.
Автомобильная, станкостроительная,
железнодорожная, атомная
промышленность. Критичность
определяется по шкале от 1 до 4 (1 –
наименее критичная):
4 (наиболее критичная) – МПУР
крайне рекомендуется
ПП
МПУР
ПУР
ПУ
ВЫВОДЫ
ВОПРОСЫ?
ladutko_andrey@tut.by, andrey_ladutko@epam.com
ladutko_andrey
sof_minsk
Blog:
http://qastugama.blogspot.com

More Related Content

Viewers also liked

ISTQB Сертификация. Приводим знания в порядок
ISTQB Сертификация. Приводим знания в порядокISTQB Сертификация. Приводим знания в порядок
ISTQB Сертификация. Приводим знания в порядокSQALab
 
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)SQALab
 
Как оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное руслоКак оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное руслоSQALab
 
Разработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseРазработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseSQALab
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решенийSQALab
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 

Viewers also liked (6)

ISTQB Сертификация. Приводим знания в порядок
ISTQB Сертификация. Приводим знания в порядокISTQB Сертификация. Приводим знания в порядок
ISTQB Сертификация. Приводим знания в порядок
 
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
 
Как оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное руслоКак оценить команду тестирования и как направить их развитие в нужное русло
Как оценить команду тестирования и как направить их развитие в нужное русло
 
Разработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wiseРазработка тест кейсов по методике pair wise
Разработка тест кейсов по методике pair wise
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решений
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Приключения белого ящика в стране покрытий

  • 1. ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ ПОКРЫТИЙ ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ ПОКРЫТИЙ
  • 2. Andrey Ladutko Minsk, Belarus Lead QA Engineer, QA SWAT in EPAM 6+ years experience ISTQB Full Advanced Level SQA Days-12,13,15 lectures : Minsk - Gamification in QA Kiev - Growth rules in QA Moscow – TM in QA ladutko_andrey@tut.by, andrey_ladutko@epam.com ladutko_andrey sof_minsk Blog: http://qastugama.blogspot.com
  • 3. CONFIDENTIAL СОДЕРЖАНИЕ - Белый VS черный ящик, достоинства и недостатки каждого - Покрытия метода БЯ - Выводы - Вопросы 3
  • 4. БЕЛЫЙ ЯЩИК И ЧЕРНЫЙ: ЧТО ЛУЧШЕ? Разработка тестов методом черного ящика Процедура создания и/или выбора тестовых сценариев, основанная на анализе функциональной или нефункциональной спецификации компонента или системы без знания внутренней структуры. Разработка тестов методом белого ящика Процедура разработки или выбора тестовых сценариев на основании анализа внутренней структуры компонента или системы. ISTQB Глоссарий, версия 2.3.
  • 6. БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ Michael Bolton “Critical Thinking” training (2014, SPb)
  • 7. БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ http://lurkmore.to/Обсуждение:Индусский_код
  • 8. БАГИ, КОТОРЫЕ ЧЕРНЫЙ ЯЩИК НЕ НАХОДИТ http://www.xkcd.com/221/
  • 9. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ Мы написали идеальную программу, ВСЕ тесты на покрытие кода выдают PASS 
  • 10. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ Мы написали идеальную программу, ВСЕ тесты на покрытие кода выдают PASS  НО Программа не делает, то что было задумано в спецификации заказчиком 
  • 11. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
  • 12. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
  • 13. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ Александр Ильин «Метрики покрытия. Прагматичный подход» SQA Days-12 http://sqadays.com/ru/talk/7655
  • 14. Полное покрытие кода всевозможными техниками не гарантирует отсутствие багов…. НО Любая техника дает нам полезные тесты, которые мы можем использовать для поиска наиболее (не)очевидных МНОГО ЛИ МЫ ЗНАЕМ О БЕЛОМ ЯЩИКЕ?
  • 15.  Эквивалентные классы  Граничные значения  Таблицы решений • Елена Сташенко, SQA Days-14 http://sqadays.com/ru/talk/12503  Диаграммы переходов • Наталья Руколь, ConfeT&QA http://www.youtube.com/watch?v=8H9HgjrwQHA  Метод попарных комбинаций • Никита Постолакий, SQA Days-11 http://sqadays.com/ru/talk/9084  Тестирование пользовательских историй ….. О ЧЕРНОМ ЯЩИКЕ МЫ ЗНАЕМ ОЧЕНЬ МНОГО
  • 16. А ЧТО МЫ ЗНАЕМ О БЕЛОМ ЯЩИКЕ?  Какие-то там покрытия, слышал или читал где-то  Надо лезть в код и смотреть, что происходит…  Посмотрю веб-страницу FireBug ‘ом, а вдруг что-то увижу  У нас собираются какие-то метрики тулой. А, вспомнил, Sonar называется  У нас программисты пишут юнит-тесты, а я проверяю по спеке  Я же не программист, зачем мне это?  Интересно, а что сегодня будет на обед?  Я все это хорошо знаю, пойду послушаю доклад в другой секции …..
  • 17. ПРОВЕРИМ УРОВЕНЬ {A, B, C, D} = True | False A & B - Логическое И, равно True, если все условия в нем равны True A | B – Логическое ИЛИ, равно True, если хотя бы одно условие в нем равно True
  • 18. ПРОВЕРИМ УРОВЕНЬ {A, B, C, D} = True | False Сколько тестов необходимо, чтобы проверить выражение: D = А & (B | C) ? 1. 2 2. 3 3. 4 4. 8
  • 19. БЕЛЫЙ ЯЩИК. ПОКРЫТИЯ – ЭТО ПРОСТО! ПП МПУР ПУР ПУ
  • 21. ЗАДАЧА: Показываем тесты для выражения A & B = C {A,B,C} = True || False A, B – условия, С - результат True – поднимаем руку False – продолжаем сидеть ЗАДАЧА
  • 22. ЗАДАЧА: Проверим? A & B = C A = False B = True C = ? ЗАДАЧА
  • 23. ЗАДАЧА: Проверим? A & B = C A = False B = True C = False ЗАДАЧА
  • 24. ПОКРЫТИЕ УСЛОВИЙ (ПУ) – CONDITION COVERAGE (CC) ПП МПУР ПУР ПУ Определение:  Каждое условие принимает значение True и False
  • 25. № A B C = A & B 1 False True False ВЕРНЕМСЯ К ЗАДАЧЕ У нас есть один тест. Какие еще тесты нужно добавить для ПУ? • Каждое условие принимает значение True и False
  • 26. № A B C = A & B 1 False True False ВЕРНЕМСЯ К ЗАДАЧЕ Что нужно и что проверено: A = True, A = False. Проверено: A = False B = True, B = False. Проверено: B = True
  • 27. № A B C = A & B 1 False True False 2 True False ? ВЕРНЕМСЯ К ЗАДАЧЕ Добавляем второй тест: A = True, B = False C = ?
  • 28. № A B C = A & B 1 False True False 2 True False False ВЕРНЕМСЯ К ЗАДАЧЕ Добавляем второй тест: A = True, B = False C = False
  • 29. № A B C = A & B 1 False True False 2 True False False ВЕРНЕМСЯ К ЗАДАЧЕ Теперь все тесты? Каждое условие принимает значение True и False
  • 30. № A B C = A & B 1 False True False 2 True False False ВЕРНЕМСЯ К ЗАДАЧЕ Теперь все тесты? Каждое условие принимает значение True и False Итого 2 теста
  • 31. ПОКРЫТИЕ УСЛОВИЙ – ВЫВОДЫ ПП МПУР ПУР ПУ  Не исследуем результат (в обоих тестах С = False) Вывод: В теории интересно, на практике – не применимо НО: нужно для понимания более сложных покрытий № A B C = A & B 1 False True False 2 True False False
  • 32. ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ (ПУР) – CONDITION DECISION COVERAGE (CDC) ПП МПУР ПУР ПУ Определение:  Каждое условие принимает значение True и False  Результат принимает значение True и False
  • 33. ВЕРНЕМСЯ К ЗАДАЧЕ У нас есть два теста на ПУ. Что еще нужно проверить для ПУР? № A B C = A & B 1 False True False 2 True False False
  • 34. ВЕРНЕМСЯ К ЗАДАЧЕ У нас есть два теста на ПУ. Что еще нужно проверить для ПУР? • Результат принимает значение True и False № A B C = A & B 1 False True False 2 True False False
  • 35. ВЕРНЕМСЯ К ЗАДАЧЕ Что нужно и что проверено: A = True, A = False. Проверено: A = False, A = True B = True, B = False. Проверено: B = True, B = False Осталось:  C = True, C = False. Проверено: С = False № A B C = A & B 1 False True False 2 True False False
  • 36. № A B C = A & B 1 False True False 2 True False False 3 True True True ВЕРНЕМСЯ К ЗАДАЧЕ Теперь все тесты?  Каждое условие принимает значение True и False  Результат принимает значение True и False
  • 37. № A B C = A & B 1 False True False 2 True False False 3 True True True ВЕРНЕМСЯ К ЗАДАЧЕ Теперь все тесты?  Каждое условие принимает значение True и False  Результат принимает значение True и False Итого 3 теста
  • 38. № A B C = A & B 1 False True False 2 True False False 3 True True True ВЕРНЕМСЯ К ЗАДАЧЕ Оптимально? Нет.
  • 39. № A B C = A & B 1 False True False 2 True False False 3 True True True ВЕРНЕМСЯ К ЗАДАЧЕ Упростим: 1. A = False, B = False, C = False 2. A = True, B = True, C = True
  • 40. № A B C = A & B 1 False False False 2 True True True ВЕРНЕМСЯ К ЗАДАЧЕ Теперь все тесты?  Каждое условие принимает значение True и False  Результат принимает значение True и False Оптимально? Да. Итого 2 теста
  • 41. ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ – ВЫВОДЫ  Исследуем и условия, и результат  Проверили только самое важное Вывод: Проверяет важное, но не критичное. Нужны более сильные покрытия ПП МПУР ПУР ПУ № A B C = A & B 1 False False False 2 True True True
  • 43. ЗАДАЧА: Показываем тесты для выражения A & (B | C) = D {A,B,C,D} = True | False A, B, C – условия, D - результат True – поднимаем руку False – продолжаем сидеть ЗАДАЧА
  • 44. ЗАДАЧА: Проверим? A & (B | C) = D A = True B = False C = True D = ? ЗАДАЧА
  • 45. ЗАДАЧА: Отлично! A & (B | C) = D A = True B = False C = True D = True ЗАДАЧА
  • 46. МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ (МПУР) – MODIFIED CONDITION DECISION COVERAGE (MCDC) ПП МПУР ПУР ПУ Определение:  Каждое условие И результат принимают значения True и False 1. Минимум 1 тест, в котором результат меняется, если атомарное условие Х = True 2. Минимум 1 тест, в котором результат меняется, если атомарное условие Х = False 3. Каждое условие содержит тесты для п. 1 и 2
  • 47. МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЯ (МПУР) – MODIFIED CONDITION DECISION COVERAGE (MCDC) ПП МПУР ПУР ПУ Подсказка 1. Для N условий – N+1 тестов. Вопрос: Сколько тестов получится для выражения D = A & (B | C) ?
  • 48. ВЕРНЕМСЯ К ЗАДАЧЕ У нас есть один тест. Рассмотрим его подробнее № A B С D = A & (B | C) 1 True False True True
  • 49. ВЕРНЕМСЯ К ЗАДАЧЕ Возьмем условие А. A = True, B = False, C = True. D = True Минимум 1 тест, в котором результат меняется, если атомарное условие А = True – DONE. Нужно: Минимум 1 тест, в котором результат меняется, если атомарное условие А = False № A B С D = A & (B || C) 1 True False True True
  • 50. ВЕРНЕМСЯ К ЗАДАЧЕ Поменяем условие А с True на False A = False, B = False, C = True. D = False Минимум 1 тест, в котором результат меняется, если атомарное условие А = False – DONE Определения 1 и 2 для условия А выполнены. Что осталось? № A B С D = A & (B | C) 1 True False True True 2 False False True False
  • 51. ВЕРНЕМСЯ К ЗАДАЧЕ Аналогично для условий B и C. № A B С D = A & (B | C) 1 True False True True 2 False False True False
  • 52. ВЕРНЕМСЯ К ЗАДАЧЕ Выполним для С, снова посмотрим на 1 тест A = True, B = False, C = True. D = True Минимум 1 тест, в котором результат меняется, если атомарное условие С = True – DONE. Нужно: Минимум 1 тест, в котором результат меняется, если атомарное условие С = False № A B С D = A & (B | C) 1 True False True True 2 False False True False
  • 53. ВЕРНЕМСЯ К ЗАДАЧЕ Поменяем условие C с True на False A = True, B = False, C = False. D = False Минимум 1 тест, в котором результат меняется, если атомарное условие C = False – DONE Определения 1 и 2 для условия C выполнены. Что осталось? № A B С D = A & (B | C) 1 True False True True 2 False False True False 3 True False False False
  • 54. ВЕРНЕМСЯ К ЗАДАЧЕ Выполним для B, посмотрим на 3 тест A = True, B = False, C = False. D = False Минимум 1 тест, в котором результат меняется, если атомарное условие B = False – DONE. Нужно: Минимум 1 тест, в котором результат меняется, если атомарное условие B = True № A B С D = A & (B | C) 1 True False True True 2 False False True False 3 True False False False
  • 55. ВЕРНЕМСЯ К ЗАДАЧЕ Поменяем условие B с False на True A = True, B = True, C = False. D = True Минимум 1 тест, в котором результат меняется, если атомарное условие B = True – DONE Определения 1 и 2 для условия B выполнены. Все? № A B С D = A & (B | C) 1 True False True True 2 False False True False 3 True False False False 4 True True False True
  • 56. ВЕРНЕМСЯ К ЗАДАЧЕ Определения 1 и 2 выполнены для все условий: A – тесты 1 и 2 B – тесты 3 и 4 С – тесты 1 и 3 № A B С D = A & (B | C) 1 True False True True 2 False False True False 3 True False False False 4 True True False True
  • 57. МОДИФИЦИРОВАННОЕ ПОКРЫТИЕ УСЛОВИЙ И РЕШЕНИЙ – ВЫВОДЫ ПП МПУР ПУР ПУ № A B С D = A & (B | C) 1 True False True True 2 False False True False 3 True False False False 4 True True False True  Исследуем влияние КАЖДОГО условия на результат  Возможны сложности с составлением тестов для покрытия  Некоторые ЯП выдают заранее известный результат, обработав ЧАСТЬ выражения
  • 58. ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE CONDITION COVERAGE (MCC) ПП МПУР ПУР ПУ Определение:  Проверяем ВСЕ возможные комбинации условий Вопрос: Сколько тестов получится для выражения D = A & (B | C) ?
  • 59. ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE CONDITION COVERAGE (MCC) ПП МПУР ПУР ПУ Ответ: 8 тестов. В общем случае для N условий: два в степени N тестов
  • 60. ПОЛНОЕ ПОКРЫТИЕ (ПП) – MULTIPLE CONDITION COVERAGE (MCC) № A B С D = A & (B | C) 1 False False False False 2 False False True False 3 False True False False 4 False True True False 5 True False False False 6 True False True True 7 True True False True 8 True True True True ПП МПУР ПУР ПУ
  • 61. ПОЛНОЕ ПОКРЫТИЕ – ВЫВОДЫ  Проверяем ВСЕ возможные случаи – для надежных систем, рассчитанный на длительный срок работы Большое количество тестов для ПП делает более применимым предыдущее покрытие (МПУР). Вместо 2^N -> N + 1 тестов ПП МПУР ПУР ПУ
  • 62. ПРИМЕР ИСПОЛЬЗОВАНИЯ ТЕХНИК. Авиационный стандарт DO178-B, 5 типов ошибок: • Катастрофичная (не работает критичный функционал, необходимый для безопасного полета или приземления) • Опасная (негативное влияние на безопасность или производительность) • Важная (ошибка значительная, но менее серьезная чем А или В) • Не важная • Не имеющая эффекта ПП МПУР ПУР ПУ
  • 63. ПРИМЕР ИСПОЛЬЗОВАНИЯ ТЕХНИК. Международный стандарт программируемых электронных устройств C-61508. Автомобильная, станкостроительная, железнодорожная, атомная промышленность. Критичность определяется по шкале от 1 до 4 (1 – наименее критичная): 4 (наиболее критичная) – МПУР крайне рекомендуется ПП МПУР ПУР ПУ

Editor's Notes

  1. -
  2. -
  3. -
  4. -
  5. -
  6. -
  7. -
  8. -
  9. -
  10. -
  11. -
  12. -
  13. -
  14. -
  15. -
  16. -
  17. -
  18. -
  19. -
  20. -
  21. -
  22. -
  23. -
  24. -
  25. -
  26. -
  27. -
  28. -