Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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
  2. Грейс Хоппер Grace Brewster Hopper • Ученый в области информатики

    и математики • Контр-адмирал младшего ранга флота США • Одна из первых, кто писал программы для Гарвардского компьютера Марк 1 9 декабря 1906 — 1 января 1992
  3. Грейс Хоппер • Разработала первый компилятор для компьютерного языка программирования

    • Первая, кто разработал теорию машинно- независимых языков программирования, что привело к созданию COBOL Grace Brewster Hopper 9 декабря 1906 — 1 января 1992
  4. Карьера Грейс Хоппер 6 • Вторая мировая война • UNIVAC

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

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

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

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

    • COBOL • Стандартизация • Выход в отставку
  9. Дмитрий Колесник Тестовое покрытие 12 1. Зачем собирать тестовое покрытие?

    2. Как можно собирать тестовое покрытие? 3. Как мы собираем тестовое покрытие? 4. Когда достаточно тестировать, чтобы сделать успешный релиз?
  10. Со стороны менеджера Виды покрытия 17 • Покрытие требований и

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

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

    — вызвана функция foo(1,1) • По веткам — вызвана функция foo(1,1) и foo(0,1) • Состояния — вызвана функция foo(1,0), foo(0,1), foo(1,1) • По функциям/модулям — вызвана функция foo
  13. Open source инструменты для споро покрытия 20 Язык Инструмент Java

    JaCoCo Java JCov Java OpenClover Python Coverage.py C++ Bullseye Go Built in coverage support (go-cover)
  14. Покрытие Ozon Tech Как мы собираем тестовое покрытие? 22 •

    По требованиям • По unit-тестам • По методам и параметрам API • Покрытие по пользователям • Покрытие нагрузочного тестирования
  15. Покрытие Ozon Tech Как мы собираем тестовое покрытие? 23 •

    По требованиям • По unit-тестам • По методам и параметрам API • Покрытие по пользователям • Покрытие нагрузочного тестирования
  16. Покрытие Ozon Tech Как мы собираем тестовое покрытие? 24 •

    По требованиям • По unit-тестам • По методам и параметрам API • Покрытие по пользователям • Покрытие нагрузочного тестирования
  17. Покрытие Ozon Tech Как мы собираем тестовое покрытие? 25 •

    По требованиям • По unit-тестам • По методам и параметрам API • Покрытие по пользователям • Покрытие нагрузочного тестирования
  18. Покрытие Ozon Tech Как мы собираем тестовое покрытие? 26 •

    По требованиям • По unit-тестам • По методам и параметрам API • Покрытие по пользователям • Покрытие нагрузочного тестирования
  19. Перестарались с покрытием* e2e тесты 33 Стоит проверить: будет ли

    использоваться такой функционал в будущем?
  20. Когда достаточно тестировать? 36 1. Редко встречаете баги в production

    И 2. Редко изменяете код • Можете удалить часть тестов без потери качества • Простое изменение в коде приводит к чрезмерному изменению в тестах • Дублирование в тестах • Тесты идут слишком долго Признаки избыточного тестирования Martin Fowler — 7 April 2012
  21. Набор простых правил Когда достаточно тестировать? 38 • Документируйте процесс

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

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании
  23. Набор простых правил Когда достаточно тестировать? 40 • Документируйте процесс

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании • Исполняйте сквозные тесты критического пути пользователя
  24. Набор простых правил Когда достаточно тестировать? 41 • Документируйте процесс

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании • Исполняйте сквозные тесты критического пути пользователя • Понимайте и внедряйте нефункциональные виды тестирования
  25. Набор простых правил Когда достаточно тестировать? 42 • Документируйте процесс

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании • Исполняйте сквозные тесты критического пути пользователя • Понимайте и внедряйте нефункциональные виды тестирования • Измеряйте ваше покрытие по коду и функциональностям
  26. Набор простых правил Когда достаточно тестировать? 43 • Документируйте процесс

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании • Исполняйте сквозные тесты критического пути пользователя • Понимайте и внедряйте нефункциональные виды тестирования • Измеряйте ваше покрытие по коду и функциональностям • Используйте обратную связь, чтобы улучшить свой процесс
  27. Когда достаточно тестировать? 44 • Тестирование скорости • Тестирование нагрузки

    • Тестирование безопасности Нефункциональные виды тестирования • Тестирование конфиденциальности • Тестирование отказоустойчивости • Юзабилити- тестирование • Accessibility тестирование • Тестирование локализации • Тестирование на глобализацию
  28. Набор простых правил Когда достаточно тестировать? 61 • Документируйте процесс

    или стратегию тестирования • Нарастите надежную базу unit-тестов • Не экономьте на интеграционном тестировании • Исполняйте сквозные тесты критического пути пользователя • Понимайте и внедряйте нефункциональные виды тестирования • Измеряйте ваше покрытие по коду и функциональностям • Используйте обратную связь, чтобы улучшить свой процесс
  29. Полезные ссылки 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