singalen: (Default)
[personal profile] singalen
Количество классов, инстанцируемых тестом, и среднее число строк кода в них.
Хорошо покажет, где лишняя связность.

И ещё одна метрика наверняка будет очень полезной. Сейчас ведь можно ходить по синтаксическому дереву вызываемой функции/класса. Почему бы тесту не отследить значения, вычисляемые в вызываемой функции, и не посчитать, на какой % их написаны ассерты?

Задача сложная, но вполне выполнимая, даже одним человеко-программистом.
А метрика получится очень объективная и полезная. Вот мы и узнаем, что кто-то ассертит 60% вычислений, а кто-то - 3%.

(no subject)

4/3/11 22:56 (UTC)
Posted by [identity profile] catty-ua.livejournal.com
Хм, я думала какой-нибудь NCover уже давно делает что-то подобное..не ? Ну мож не всё, но что-то из этого ?

(no subject)

4/3/11 23:06 (UTC)
Posted by [identity profile] catty-ua.livejournal.com
А, ну я так и думала..)
(deleted comment)
(deleted comment)

(no subject)

5/3/11 20:06 (UTC)
Posted by [identity profile] profuel.livejournal.com
первая метрика действительно интересно звучит, но я пока не до конца понял ее границы и еобходимость ее улучшения.
А вот со второй - очень спорные мысли:
1 - будет заставлять ассертить все подряд
2 - не факт, что при 90% покрытии вычислений ассертами, будет гарантирована правильность вычислений.
Скорее всего, принуждать к асертам надо будет в тех местах, где проверяемый результат получен с некоторой степенью сложности (функция с более чем 5 строками, например).

(no subject)

7/3/11 08:42 (UTC)
Posted by [identity profile] profuel.livejournal.com
да-да, об этом и пытался намекнуть добавив некий порог для проверяемых функций.
А на счет сайд эффекта, по-моему, перебор, хотя бы с точки зрения программирования этой метрики :)
Ведь проверяя некую переменную после вызова функции, которую она "вроде бы может" поменять - будет ну совсем непонятно при чтении теста коллегой.

Подумал еще раз. Все ветви - и так должны быть покрыты, чтобы покрытие было нормальное. Другое дело, что можно и нужно проверять, что все ветви ассертятся... да, все верно написано, надо больше баллов ставить за покрытие тестами всех ветвей возврата значения функций - а разве сейчас не так?

(no subject)

7/3/11 09:54 (UTC)
Posted by [identity profile] profuel.livejournal.com
точно. я спутал в голове покрытие и покрытие ассертами.
Осталось попробовать написать это :)
Судя по всему, с дотНета будет проще начать, а потом уже и для Джавы подтянуть

(no subject)

7/3/11 10:11 (UTC)
Posted by [identity profile] profuel.livejournal.com
ты о покрытиях? если да, то нет :)

(no subject)

7/3/11 10:18 (UTC)
Posted by [identity profile] profuel.livejournal.com
тогда не знаю :)
без понятия, как следить за выполнением строк кода :)

(no subject)

7/3/11 10:43 (UTC)
Posted by [identity profile] profuel.livejournal.com
Как минимум можно каждым ассертом проверять путь "наверх" по стеку вызова и помечать выполненные строки, а потом сравнить это количество с общим.

(no subject)

7/3/11 10:52 (UTC)
Posted by [identity profile] profuel.livejournal.com
да-да, говоря "ассертом" - имел в виду внутренним кодом функции.