sqa days-16. white box adventures in the land of coverage (Приключения белого...

65
ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ ПОКРЫТИЙ ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ ПОКРЫТИЙ

Upload: andrey-ladutko

Post on 15-Jul-2015

408 views

Category:

Engineering


2 download

TRANSCRIPT

ПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА В СТРАНЕ

ПОКРЫТИЙПРИКЛЮЧЕНИЯ БЕЛОГО ЯЩИКА

В СТРАНЕ ПОКРЫТИЙ

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

[email protected], [email protected]

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 (наиболее критичная) – МПУР

крайне рекомендуется

ПП

МПУР

ПУР

ПУ

ВЫВОДЫ

ВОПРОСЫ?

[email protected], [email protected]

ladutko_andrey

sof_minsk

Blog:

http://qastugama.blogspot.com