'

Unit-тестирование и метрики покрытия кода тестами

Понравилась презентация – покажи это...





Слайд 0

Unit-тестирование и метрики покрытия кода тестами Сергей Андреев, JetBrains 29 февраля 2012


Слайд 1

Это очень важный слайд


Слайд 2

Continuous Integration


Слайд 3

Что такое unit-тесты? Тестирование - процесс запуска/выполнения программы с целью найти ошибки. (Гленфорд Майерс) Unit-тестирование - процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.


Слайд 4

Наглядное пособие Объект исследования – программа «Треугольник», (автор – «студент гуманитарного колледжа») Инструменты: IntelliJ Idea 11 (http://www.jetbrains.com/idea/) IDEA Code Coverage tool TestNG Framework (http://testng.org/doc/documentation-main.html)


Слайд 5

Statements Покрытие операторов - все операторы программы выполнены. 3 4 5 2 4 4 3 3 3 1 -1 1 Даёт 100% покрытие по операторам


Слайд 6

Code Coverage


Слайд 7

Control-flow graph Граф потока управления - в теории компиляции — множество всех возможных путей исполнения программы, представленное в виде графa. В графе потока управления каждый узел (вершина) графа соответствует базовому блоку — прямолинейному участку кода, не содержащего в себе ни операций передачи управления, ни точек, на которое управление передается из других частей программы. Имеется лишь 2 исключения: точка, на которую выполняется переход, является первой инструкцией в базовом блоке, и базовый блок завершается инструкцией перехода. Направленные дуги используются в графе для представления инструкций перехода. Также, в большинстве реализаций добавлено два специализированных блока: входной блок, через который управление входит в граф и выходной блок, который завершает все пути в данном графе.


Слайд 8

Mad Skillz


Слайд 9

Branches Покрытие ветвей - пройдены все ветви графа. Т.е. существует множество путей, проходящих по всем ветвям графа.


Слайд 10

Тест 3 4 5


Слайд 11

Добавим тест 2 4 4


Слайд 12

Добавим тест 3 3 3


Слайд 13

Добавим тест 1 -1 1


Слайд 14

Пробемы, офицер?


Слайд 15

All Path testing Покрытие всех путей в графе. В общем случае получаем почти неразрешимую задачу. Нужно выбирать репрезентативное множество. Убрать лишнюю информацию из множества: - лишние вершины - лишние ребра


Слайд 16

Более частные случаи Multiple Conditions – покрытие предикатов. В отличие от Branches - не рассматривает выход узлов решений как 1 единицу, а рассматривает каждый предикат по отдельности. Loop coverage – покрытие циклов. Отдельно рассматриваются циклы. Они должны быть выполнены 0, 1, … max, max-1, max+1 ?


Слайд 17

Пожалуй хватит. Спасибо за внимание! sergey.andreev@jetbrains.com smandreev@gmail.com


Слайд 18


×

HTML:





Ссылка: