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

Николай Молчанов «Мутационное тестирование в .NET»

Николай Молчанов «Мутационное тестирование в .NET»

Хорошо ли вы пишете код и тесты для него? Николай расскажет:

- про мутационное тестирование на .NET Core;
- про то, как впасть в депрессию и как из нее выйти;
- как проверить себя как разработчика.

DotNetRu

March 14, 2019
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. 1

  2. 10

  3. 16 План  тестирование и парадигмы тестирования  про принцип

    мутационного тестирования  виды мутантов
  4. 17 План  тестирование и парадигмы тестирования  про принцип

    мутационного тестирования  виды мутантов  как применить в .NET
  5. 18 План  тестирование и парадигмы тестирования  про принцип

    мутационного тестирования  виды мутантов  как применить в .NET  когда использовать мутационное тестирование
  6. 34 Как протестировать тесты  code-review кода тестов  code-coverage

     test after each build  внешний аудит  рандомный набор данных
  7. 35 Как протестировать тесты  code-review кода тестов  code-coverage

     test after each build  внешний аудит  рандомный набор данных
  8. 48

  9. 49 ” Мутационное тестирование - это преднамеренное внесение в код

    специальных изменений - мутаций с целью проверки программного обеспечения ”
  10. 67 Пример 1 3 условия: 1. Покрытие мутанта тестом 2.

    Полные входные данные 3. Выходные параметры проверены
  11. 68 Пример 1 3 условия: 1. Покрытие мутанта тестом 2.

    Полные входные данные 3. Выходные параметры проверены
  12. 73 виды мутаций ОПП мутации 1. Мутации модификаторов доступа 2.

    Мутации наследования 3. Полиморфные мутации
  13. 74 виды мутаций ОПП мутации 1. Мутации модификаторов доступа 2.

    Мутации наследования 3. Полиморфные мутации 4. Мутации перегрузки методов и их аргументов
  14. 75 виды мутаций ОПП мутации 1. Мутации модификаторов доступа 2.

    Мутации наследования 3. Полиморфные мутации 4. Мутации перегрузки методов и их аргументов 5. Общие мутации
  15. 78 виды мутаций Общие мутации 1. Арифметические операции 2. Мутации

    сравнения 3. Мутации логических операторов &&_____||
  16. 79 виды мутаций Общие мутации 1. Арифметические операции 2. Мутации

    сравнения 3. Мутации логических операторов 4. Мутации bool типа true_____false
  17. 80 виды мутаций Общие мутации 1. Арифметические операции 2. Мутации

    сравнения 3. Мутации логических операторов 4. Мутации bool типа 5. Унарные операции ++i _____ i++ ++i ____ --i
  18. 81 виды мутаций Общие мутации 1. Арифметические операции 2. Мутации

    сравнения 3. Мутации логических операторов 4. Мутации bool типа 5. Унарные операции 6. Строковые мутации “”_____“asd” “asd”___
  19. 82 виды мутаций Общие мутации 1. Арифметические операции 2. Мутации

    сравнения 3. Мутации логических операторов 4. Мутации bool типа 5. Унарные операции 6. Строковые мутации 7. Мутации массивов и списков [0,1,2]_____[0,0,2]
  20. 84 Статистика Flurl 9000 строк 85% 300 тестов 43 сек

    363 мутанта 30 минут 2 критичных бага Ecwid 5000 строк 90% 200 тестов 16 сек 300 мутантов 15 минут 4 критичных бага
  21. 85 с т а т и с т и к

    а в ы ж и в ш и х м у т а ц и й эквивалентные тесты мертвый код 40% 50% 10%
  22. 99 Пример 5 limit < 100 limit < 0 Входные

    данные для теста были [-1, 101]
  23. 100 Пример 5 limit < 100 limit < 0 Входные

    данные для теста были [-1, 101] + 0 + 12
  24. 122

  25. 123

  26. 126 stryker Особенности 1. Покрыт тестами, в том числе мутационными

    2. Работает сейчас только для .NET Сore 3. Только общие мутации и LINQ мутации
  27. 127 stryker Особенности 1. Покрыт тестами, в том числе мутационными

    2. Работает сейчас только для .NET Сore 3. Только общие мутации и LINQ мутации 4. Поддержка конфигурации
  28. 128 stryker Особенности 1. Покрыт тестами, в том числе мутационными

    2. Работает сейчас только для .NET Сore 3. Только общие мутации и LINQ мутации 4. Поддержка конфигурации 5. Отключение части мутаторов
  29. 129 stryker Особенности 1. Покрыт тестами, в том числе мутационными

    2. Работает сейчас только для .NET Сore 3. Только общие мутации и LINQ мутации 4. Поддержка конфигурации 5. Отключение части мутаторов 6. Ограничение на проекты или на файлы
  30. 130 stryker Особенности 1. Покрыт тестами, в том числе мутационными

    2. Работает сейчас только для .NET Сore 3. Только общие мутации и LINQ мутации 4. Поддержка конфигурации 5. Отключение части мутаторов 6. Ограничение на проекты или на файлы 7. Флаг красного билда
  31. 139 stryker 1. 2. 3. 4. 5. 6. 7. 8.

    9. Долгожданная награда
  32. 144 критерии применимости 1. Покрытие кода тестами >70% 2. Скорость

    работы тестов 3. Чистые маленькие методы
  33. 145 критерии применимости 1. Покрытие кода тестами >70% 2. Скорость

    работы тестов 3. Чистые маленькие методы 4. .NET Core
  34. 146 критерии применимости 1. Покрытие кода тестами >70% 2. Скорость

    работы тестов 3. Чистые маленькие методы 4. .NET Core 5. Сила духа и авантюризм
  35. 149 Выводы MDD классно подходит при работе с парадигмой TDD

    при написании новых тестов и однократного аудита текущей системы
  36. 155

  37. 156