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

Презентация:



Advertisements
Похожие презентации
Эффективные методики автоматизированного тестирования в условиях непрерывной интеграции Сергей Андреев, JetBrains.
Advertisements

Тестирование ОО программ Сергей Андреев, JetBrains 26 апреля 2012.
Оптимизация управляющего графа программ, имеющих избыточные условные вычисления Выполнил: Степнов Денис, 816 гр. Научный руководитель: Бучнев А.Ю. Выпускная.
Автоматизированное тестирование. Процесс верификации программного обеспечения, при котором основные функции и шаги теста, такие как запуск, инициализация,
Тестирование программных средств Сафронов Сергей, 2008 год.
Теория графов Основные определения. Дуга Пусть имеется множество вершин V={V 1,V 2,…,V n } и пусть на нем задано бинарное отношение Г V×V, – V i Г V j.
Этапы решения задач на компьютерах Постановка задачи Формальное построение модели задачи Формальное построение модели задачи Построение математической.
Java Puzzlers Автор: Фофанова Мария Руководитель: Симончик Сергей.
Методы тестирования Впрактике тестирования используются методы: статический, детерминированный, стохастический ивреальном масштабе времени. Статическое.
Анализ потока управления. Линейные участки (basic blocks, базовые блоки) Линейный участок – это максимальная последовательность инструкций, такая что:
Еквівалентні автомати. Реакция автомата Реакцией автомата называется последовательность выходных сигналов автомата, полученная под воздействием некоторой.
ТЕОРИЯ И ПРАКТИКА МНОГОПОТОЧНОГО ПРОГРАММИРОВАНИЯ Тема 15 Методика разработки и анализа неблокирующих алгоритмов. Д.ф.-м.н., профессор А.Г. Тормасов Базовая.
Технология подготовки и решения задач с помощью компьютера Этапы решения задач с помощью компьютера.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ФИЗИКО - ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет) Решение задачи восстановления профильной.
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
Оптимизация времени работы и качества генерируемого кода компиляторов Apache Harmony Куртов Николай Владимирович студент 3-го.
Алгоритмизация и требования к алгоритму Алгоритм и алгоритмизация Алгоритм и алгоритмизация.
Домашнее задание «Применение графа» ВСПОМНИМ… Граф Простейшая модель системы.Отображает элементарный состав системы и структуру связей Сеть Граф с возможностью.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Я.А. Кириленко.
Транксрипт:

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

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

Continuous Integration

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

Наглядное пособие Объект исследования – программа «Треугольник», (автор – «студент гуманитарного колледжа») Инструменты: -IntelliJ Idea 11 ( ) -IDEA Code Coverage tool -TestNG Framework ( )

Statements Покрытие операторов - все операторы программы выполнены Даёт 100% покрытие по операторам

Code Coverage

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

Mad Skillz

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

Тест 3 4 5

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

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

Добавим тест

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

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

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

Пожалуй хватит. Спасибо за внимание!