$30 off During Our Annual Pro Sale. View Details »

Дмитрий Колесник – «Тестовое покрытие»

Ozon Tech
September 22, 2023

Дмитрий Колесник – «Тестовое покрытие»

Ozon Tech

September 22, 2023
Tweet

More Decks by Ozon Tech

Other Decks in Technology

Transcript

  1. QA meetup
    1. Дмитрий Колесник


    • Тестовое покрытие
    Сегодня в программе
    2. Фёдор Жирков


    • Как устроено тестирование
    склада (WMS) в Ozon
    3. Владимир Ушаков


    • Кодогенерация Python gRPC клиентов
    4. Перекус


    • Еда, общение, спикеры
    1

    View Slide

  2. Наши соцсети
    2
    Telegram VK Github

    View Slide

  3. OzonTech 2023
    Тестовое покрытие
    Дмитрий Колесник, руководитель группы
    разработки инструментов тестирования

    View Slide

  4. Грейс Хоппер
    Grace Brewster Hopper
    • Ученый в области информатики


    и математики


    • Контр-адмирал младшего ранга
    флота США


    • Одна из первых, кто писал программы
    для Гарвардского компьютера Марк 1
    9 декабря 1906 —
    1 января 1992

    View Slide

  5. Грейс Хоппер
    • Разработала первый компилятор


    для компьютерного языка
    программирования


    • Первая, кто разработал теорию машинно-
    независимых языков программирования,
    что привело к созданию COBOL
    Grace Brewster Hopper
    9 декабря 1906 —
    1 января 1992

    View Slide

  6. Карьера
    Грейс Хоппер
    6
    • Вторая мировая война
    • UNIVAC
    • COBOL
    • Стандартизация
    • Выход в отставку

    View Slide

  7. Карьера
    Грейс Хоппер
    7
    • Вторая мировая война
    • UNIVAC
    • COBOL
    • Стандартизация
    • Выход в отставку

    View Slide

  8. Карьера
    Грейс Хоппер
    8
    • Вторая мировая война
    • UNIVAC
    • COBOL
    • Стандартизация
    • Выход в отставку

    View Slide

  9. Карьера
    Грейс Хоппер
    9
    • Вторая мировая война
    • UNIVAC
    • COBOL
    • Стандартизация
    • Выход в отставку

    View Slide

  10. Карьера
    Грейс Хоппер
    10
    • Вторая мировая война
    • UNIVAC
    • COBOL
    • Стандартизация
    • Выход в отставку

    View Slide

  11. Занимательная история
    Грейс Хоппер
    11
    Смитсоновский


    национальный музей
    американской истории

    View Slide

  12. Дмитрий Колесник
    Тестовое покрытие
    12
    1. Зачем собирать тестовое покрытие?


    2. Как можно собирать тестовое
    покрытие?


    3. Как мы собираем тестовое
    покрытие?


    4. Когда достаточно тестировать,
    чтобы сделать успешный релиз?

    View Slide

  13. Зачем собирать тестовое
    покрытие?
    1
    13

    View Slide

  14. Тестовое покрытие
    14
    Martin Fowler — 17 April 2012

    View Slide

  15. Тесты без проверок
    Тестовое покрытие
    15

    View Slide

  16. Как можно собирать тестовое
    покрытие?
    2
    16

    View Slide

  17. Со стороны менеджера
    Виды покрытия
    17
    • Покрытие требований и
    элементов дизайна
    • Покрытие рисков
    • Покрытие сред /
    конфигураций
    • Покрытие по коду

    View Slide

  18. Со стороны разработчика
    Виды покрытия по коду
    18
    • Покрытие по функциям/модулям
    • Покрытие инструкций/операторов
    • Покрытие по ребрам графа потока
    управления/веткам
    • Покрытие состояний

    View Slide

  19. Со стороны разработчика
    Виды покрытия по коду
    19
    • Операторы — вызвана


    функция foo(1,1)
    • По веткам — вызвана функция


    foo(1,1) и foo(0,1)
    • Состояния — вызвана функция


    foo(1,0), foo(0,1), foo(1,1)
    • По функциям/модулям — вызвана
    функция foo

    View Slide

  20. Open source инструменты для споро покрытия
    20
    Язык Инструмент
    Java JaCoCo
    Java JCov
    Java OpenClover
    Python Coverage.py
    C++ Bullseye
    Go Built in coverage support (go-cover)

    View Slide

  21. Как мы собираем тестовое
    покрытие?
    3
    21

    View Slide

  22. Покрытие Ozon Tech
    Как мы собираем тестовое покрытие?
    22
    • По требованиям


    • По unit-тестам


    • По методам и параметрам API


    • Покрытие по пользователям


    • Покрытие нагрузочного тестирования

    View Slide

  23. Покрытие Ozon Tech
    Как мы собираем тестовое покрытие?
    23
    • По требованиям


    • По unit-тестам


    • По методам и параметрам API


    • Покрытие по пользователям


    • Покрытие нагрузочного тестирования

    View Slide

  24. Покрытие Ozon Tech
    Как мы собираем тестовое покрытие?
    24
    • По требованиям


    • По unit-тестам


    • По методам и параметрам API


    • Покрытие по пользователям


    • Покрытие нагрузочного тестирования

    View Slide

  25. Покрытие Ozon Tech
    Как мы собираем тестовое покрытие?
    25
    • По требованиям


    • По unit-тестам


    • По методам и параметрам API


    • Покрытие по пользователям


    • Покрытие нагрузочного тестирования

    View Slide

  26. Покрытие Ozon Tech
    Как мы собираем тестовое покрытие?
    26
    • По требованиям


    • По unit-тестам


    • По методам и параметрам API


    • Покрытие по пользователям


    • Покрытие нагрузочного тестирования

    View Slide

  27. Как мы собираем тестовое покрытие?
    По требованиям
    27

    View Slide

  28. Как мы собираем тестовое покрытие?
    По требованиям
    28

    View Slide

  29. Как мы собираем тестовое покрытие?
    По unit-тестам
    29

    View Slide

  30. Как мы собираем тестовое покрытие?
    По методам и параметрам API
    30

    View Slide

  31. Высокое покрытие
    e2e тесты
    31

    View Slide

  32. Низкое покрытие
    e2e тесты
    32

    View Slide

  33. Перестарались с покрытием*
    e2e тесты
    33
    Стоит проверить: будет ли использоваться такой функционал в будущем?

    View Slide

  34. Как мы собираем тестовое покрытие?
    Покрытие нагрузочного тестирования
    34

    View Slide

  35. Когда достаточно тестировать,


    чтобы сделать успешный релиз?
    4
    35

    View Slide

  36. Когда достаточно тестировать?
    36
    1. Редко встречаете
    баги в production И


    2. Редко изменяете код
    • Можете удалить часть тестов без
    потери качества


    • Простое изменение в коде приводит
    к чрезмерному изменению в тестах


    • Дублирование в тестах


    • Тесты идут слишком долго
    Признаки избыточного
    тестирования
    Martin Fowler — 7 April 2012

    View Slide

  37. Набор простых правил
    Когда достаточно тестировать?
    37
    • Документируйте процесс


    или стратегию тестирования

    View Slide

  38. Набор простых правил
    Когда достаточно тестировать?
    38
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов

    View Slide

  39. Набор простых правил
    Когда достаточно тестировать?
    39
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном
    тестировании


    View Slide

  40. Набор простых правил
    Когда достаточно тестировать?
    40
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном
    тестировании


    • Исполняйте сквозные тесты
    критического пути пользователя

    View Slide

  41. Набор простых правил
    Когда достаточно тестировать?
    41
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном
    тестировании


    • Исполняйте сквозные тесты
    критического пути пользователя
    • Понимайте и внедряйте
    нефункциональные виды
    тестирования


    View Slide

  42. Набор простых правил
    Когда достаточно тестировать?
    42
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном
    тестировании


    • Исполняйте сквозные тесты
    критического пути пользователя
    • Понимайте и внедряйте
    нефункциональные виды
    тестирования


    • Измеряйте ваше покрытие


    по коду и функциональностям

    View Slide

  43. Набор простых правил
    Когда достаточно тестировать?
    43
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном
    тестировании


    • Исполняйте сквозные тесты
    критического пути пользователя
    • Понимайте и внедряйте
    нефункциональные виды
    тестирования


    • Измеряйте ваше покрытие


    по коду и функциональностям


    • Используйте обратную связь,
    чтобы улучшить свой процесс

    View Slide

  44. Когда достаточно тестировать?
    44
    • Тестирование скорости


    • Тестирование нагрузки


    • Тестирование
    безопасности
    Нефункциональные виды тестирования
    • Тестирование
    конфиденциальности


    • Тестирование
    отказоустойчивости


    • Юзабилити-
    тестирование
    • Accessibility тестирование


    • Тестирование локализации


    • Тестирование


    на глобализацию

    View Slide

  45. Тестирование безопасности
    45

    View Slide

  46. Accessibility тестирование
    46

    View Slide

  47. Тестирование локализации
    47

    View Slide

  48. Тестирование на глобализацию
    48

    View Slide

  49. Тестирование конфиденциальности
    49

    View Slide

  50. Тестирование
    отказоустойчивости
    50

    View Slide

  51. Тестирование отказоустойчивости
    51

    View Slide

  52. Тестирование отказоустойчивости
    52

    View Slide

  53. Тестирование отказоустойчивости
    53

    View Slide

  54. Тестирование отказоустойчивости
    54

    View Slide

  55. Тестирование отказоустойчивости
    55

    View Slide

  56. Тестирование отказоустойчивости
    56

    View Slide

  57. Тестирование отказоустойчивости
    57

    View Slide

  58. Тестирование отказоустойчивости
    58

    View Slide

  59. Тестирование отказоустойчивости
    59

    View Slide

  60. Используйте обратную связь,


    чтобы улучшить свой процесс
    60

    View Slide

  61. Набор простых правил
    Когда достаточно тестировать?
    61
    • Документируйте процесс


    или стратегию тестирования


    • Нарастите надежную базу


    unit-тестов


    • Не экономьте


    на интеграционном тестировании


    • Исполняйте сквозные тесты
    критического пути пользователя
    • Понимайте и внедряйте
    нефункциональные виды
    тестирования


    • Измеряйте ваше покрытие


    по коду и функциональностям


    • Используйте обратную связь,
    чтобы улучшить свой процесс

    View Slide

  62. Полезные ссылки
    62
    • https://en.wikipedia.org/wiki/Grace_Hopper


    • https://martinfowler.com/bliki/TestCoverage.html


    • https://testing.googleblog.com/2021/06/how-much-testing-is-enough.html


    • https://en.wikipedia.org/wiki/Code_coverage


    • https://istqb-main-web-prod.s3.amazonaws.com/media/documents/
    CTAL_
    TM
    _2012_Syllabus_v2.0.pdf


    • https://www.youtube.com/watch?v=KVS11vVeLUM


    • https://www.youtube.com/watch?v=Ij7DjFKAfUo


    • https://www.youtube.com/watch?v=DKR6o6nEVLY

    View Slide

  63. [email protected]
    Спасибо за внимание
    Дмитрий Колесник, руководитель группы
    разработки инструментов тестирования

    View Slide