Метрики тестов придумал
5/3/11 00:12Количество классов, инстанцируемых тестом, и среднее число строк кода в них.
Хорошо покажет, где лишняя связность.
И ещё одна метрика наверняка будет очень полезной. Сейчас ведь можно ходить по синтаксическому дереву вызываемой функции/класса. Почему бы тесту не отследить значения, вычисляемые в вызываемой функции, и не посчитать, на какой % их написаны ассерты?
Задача сложная, но вполне выполнимая, даже одним человеко-программистом.
А метрика получится очень объективная и полезная. Вот мы и узнаем, что кто-то ассертит 60% вычислений, а кто-то - 3%.
Хорошо покажет, где лишняя связность.
И ещё одна метрика наверняка будет очень полезной. Сейчас ведь можно ходить по синтаксическому дереву вызываемой функции/класса. Почему бы тесту не отследить значения, вычисляемые в вызываемой функции, и не посчитать, на какой % их написаны ассерты?
Задача сложная, но вполне выполнимая, даже одним человеко-программистом.
А метрика получится очень объективная и полезная. Вот мы и узнаем, что кто-то ассертит 60% вычислений, а кто-то - 3%.
Tags:
(no subject)
4/3/11 22:56 (UTC)(no subject)
4/3/11 23:01 (UTC)Мне кажется, померять покрытие ассертами вообще никому в голову не приходило.
(no subject)
4/3/11 23:06 (UTC)(no subject)
4/3/11 23:06 (UTC)Кто хочет
влипнутьвойти в историю?(no subject)
5/3/11 16:37 (UTC)Второе - это просто более точная метрика, которую должен показать CI. Точнее бранча, как бранч точнее лайн-кавераджа.
Первое - чётко будет заставлять людей разбираться со связностью. И это почти всегда хорошо.
(no subject)
5/3/11 16:35 (UTC)По второй - примерно на половину-треть меньше, чем бранч каверадж.
По-моему, вполне информативно.
(no subject)
5/3/11 20:06 (UTC)А вот со второй - очень спорные мысли:
1 - будет заставлять ассертить все подряд
2 - не факт, что при 90% покрытии вычислений ассертами, будет гарантирована правильность вычислений.
Скорее всего, принуждать к асертам надо будет в тех местах, где проверяемый результат получен с некоторой степенью сложности (функция с более чем 5 строками, например).
(no subject)
7/3/11 08:13 (UTC)Тогда подумаем о немного другой метрике - покрытие ассертами:
а) всех ветвей результата функции
б) всех ветвей сайд-эффектов функции.
(no subject)
7/3/11 08:42 (UTC)А на счет сайд эффекта, по-моему, перебор, хотя бы с точки зрения программирования этой метрики :)
Ведь проверяя некую переменную после вызова функции, которую она "вроде бы может" поменять - будет ну совсем непонятно при чтении теста коллегой.
Подумал еще раз. Все ветви - и так должны быть покрыты, чтобы покрытие было нормальное. Другое дело, что можно и нужно проверять, что все ветви ассертятся... да, все верно написано, надо больше баллов ставить за покрытие тестами всех ветвей возврата значения функций - а разве сейчас не так?
(no subject)
7/3/11 09:46 (UTC)> разве сейчас не так?
Сейчас, вообще-то, вообще никак. Не видел ни одной тулзы для мейнстрима, которая проверяет покрытие ассертами.
Есть шанс стать первым :D
(no subject)
7/3/11 09:54 (UTC)Осталось попробовать написать это :)
Судя по всему, с дотНета будет проще начать, а потом уже и для Джавы подтянуть
(no subject)
7/3/11 10:00 (UTC)(no subject)
7/3/11 10:11 (UTC)(no subject)
7/3/11 10:15 (UTC)(no subject)
7/3/11 10:18 (UTC)без понятия, как следить за выполнением строк кода :)
(no subject)
7/3/11 10:20 (UTC)(no subject)
7/3/11 10:43 (UTC)(no subject)
7/3/11 10:48 (UTC)(no subject)
7/3/11 10:52 (UTC)