Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,793 views

Published on

Презентация Андрея Ладутько на SQA Days-16
14-15 ноября 2014, Санкт-Петербург, Россия
www.sqadays.com

Published in: Education
  • Be the first to comment

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

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

×