4. БЕЛЫЙ ЯЩИК И ЧЕРНЫЙ: ЧТО ЛУЧШЕ?
Разработка тестов методом черного ящика
Процедура создания и/или выбора тестовых сценариев, основанная на
анализе функциональной или нефункциональной спецификации
компонента или системы без знания внутренней структуры.
Разработка тестов методом белого ящика
Процедура разработки или выбора тестовых сценариев на основании
анализа внутренней структуры компонента или системы.
ISTQB Глоссарий, версия 2.3.
9. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
Мы написали идеальную программу, ВСЕ
тесты на покрытие кода выдают PASS
10. БАГИ, КОТОРЫЕ БЕЛЫЙ ЯЩИК НЕ НАХОДИТ
Мы написали идеальную программу, ВСЕ
тесты на покрытие кода выдают PASS
НО
Программа не делает, то что было
задумано в спецификации заказчиком
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
21. ЗАДАЧА:
Показываем тесты для выражения
A & B = C
{A,B,C} = True || False
A, B – условия, С - результат
True – поднимаем руку
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 – продолжаем сидеть
ЗАДАЧА
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 (наиболее критичная) – МПУР
крайне рекомендуется
ПП
МПУР
ПУР
ПУ