2012 03 01_testing_lecture01

1,476 views
1,454 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,476
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 2 1 1
  • MC 000 - > 000 001 - > 110 010 - > 101 100 - > 011 110 - > 113 101 - > 131 011 - > 311 111 - > 333
  • 2012 03 01_testing_lecture01

    1. 1. Unit-тестирование и метрики покрытия кода тестами Сергей Андреев, JetBrains 29 февраля 2012
    2. 2. Это очень важный слайд
    3. 3. Continuous Integration
    4. 4. Что такое unit-тесты?Тестирование - процесс запуска/выполнения программы с целью найти ошибки. (Гленфорд Майерс)Unit-тестирование - процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.
    5. 5. Наглядное пособиеОбъект исследования – программа «Треугольник», (автор – «студент гуманитарного колледжа»)Инструменты:- IntelliJ Idea 11 (http://www.jetbrains.com/idea/)- IDEA Code Coverage tool- TestNG Framework (http://testng.org/doc/documentation-main.html)
    6. 6. StatementsПокрытие операторов - все операторы программы выполнены.3452443331 -1 1 Даёт 100% покрытие по операторам
    7. 7. Code Coverage
    8. 8. Control-flow graphГраф потока управления - в теории компиляции — множество всех возможных путей исполнения программы, представленное в виде графa.В графе потока управления каждый узел (вершина) графа соответствует базовому блоку — прямолинейному участку кода, не содержащего в себе ни операций передачи управления, ни точек, на которое управление передается из других частей программы. Имеется лишь 2 исключения: точка, на которую выполняется переход, является первой инструкцией в базовом блоке, и базовый блок завершается инструкцией перехода. Направленные дуги используются в графе для представления инструкций перехода.Также, в большинстве реализаций добавлено два специализированных блока: входной блок, через который управление входит в граф и выходной блок, который завершает все пути в данном графе.
    9. 9. Mad Skillz
    10. 10. BranchesПокрытие ветвей - пройдены все ветви графа. Т.е. существует множество путей, проходящих по всем ветвям графа.
    11. 11. Тест 3 4 5
    12. 12. Добавим тест 2 4 4
    13. 13. Добавим тест 3 3 3
    14. 14. Добавим тест 1 -1 1
    15. 15. Пробемы, офицер?
    16. 16. All Path testingПокрытие всех путей в графе. В общем случае получаем почти неразрешимую задачу. Нужно выбирать репрезентативное множество. Убрать лишнюю информацию из множества: - лишние вершины - лишние ребра
    17. 17. Более частные случаиMultiple Conditions – покрытие предикатов. В отличие от Branches - не рассматривает выход узлов решений как 1 единицу, а рассматривает каждый предикат по отдельности.Loop coverage – покрытие циклов. Отдельно рассматриваются циклы. Они должны быть выполнены 0, 1, … max, max-1, max+1 ?
    18. 18. Пожалуй хватит. Спасибо за внимание!sergey.andreev@jetbrains.com smandreev@gmail.com

    ×