thedeemon: (office)
Dmitry Popov ([personal profile] thedeemon) wrote2013-12-24 06:24 pm

О тестах

(выношу из коммента мысли вслух)

С т.з. алгебры: многие алгебраические конструкции (моноиды, поля, категории...) имеют определение из двух частей:
1. что там есть (например, есть множество с выделенным элементом и есть двуместная операция) и
2. как оно себя ведет (например, эта операция ассоциативна, а тот выделенный элемент относительно нее нейтрален). И если первое обычно нормально описывается типами, то второе без завтипов редко можно описать, а с оными - все равно сложно и громоздко бывает. Так вот, тестами как раз можно описывать вторую часть, пусть и не очень надежно. Такие тесты можно считать частью типа.

С т.з. ремесла: покрытие некоторого кода тестами - это материальная справка о том, что данный код был запущен хотя бы единожды. Ибо некоторый код может быть написан, успешно скомпилирован, но он может вызываться в редких условиях, и потому довольно долго оставаться ни разу не проверенным. А если он накрыт тестом, то по крайней мере у нас есть справка, что он не совсем уж безумен.

[identity profile] clayrat.livejournal.com 2013-12-24 10:00 pm (UTC)(link)
у пирса где-то было
мол, типы это общие, но слабые теоремы
а тесты - конкретные и сильные

[identity profile] nivanych.livejournal.com 2013-12-25 12:34 am (UTC)(link)
В правильных типах можно внутри сделать тесты.
Но очевидно, не наоборот.

[identity profile] beroal.livejournal.com 2014-02-10 08:34 pm (UTC)(link)
2. как оно себя ведет (например, эта операция ассоциативна, а тот выделенный элемент относительно нее нейтрален). И если первое обычно нормально описывается типами, то второе без завтипов редко можно описать, а с оными - все равно сложно и громоздко бывает. Так вот, тестами как раз можно описывать вторую часть, пусть и не очень надежно. Такие тесты можно считать частью типа.
(Казалось бы, есть общепринятые термины — сорт, операция, аксиома.) Аксиома обычно имеет вид ∀v. p. Тест проверяет p для некоторых значений v.