19 июня 2008

Ola Bini: Testing Regular Expressions

Вот задался чувак таким вопросом - как тестировать регэкспы, раз всякие тестовые фреймворки тут бессильны.

В комментах несколько разумных мыслей - вынести в отдельный модуль, завести отдельную спеку... А тестить-то как?

Всё время в голове крутилась фраза

Benchmarks?
let your users do it.
-Scaling Twitter

И в комментах похожую мысль всё-таки высказали:
Use a good sample of real examples for both positive and negative cases. Add any terms that fail in production to the tests

Ведь как ни выдумывай, первые куски тестовых текстов будут синтетическими. Так пусть реальный мир сам тестит, автоматически пополняя объём тестовых текстов. Правда, какое-то время это придётся отслеживать мозгом, относя тестовый текст к положительным или отрицательным проверкам, но обычно это не проблема, поскольку часто с помощью регэкспов мы мытаемся формализовать то, что в голове выражается очень простыми словами. Главная проблема в том, что
...переход от неформального к формальному неформален
Соловьёв А. Е.

а значит мы не можем формально тестировать регекспы, но , по крайней мере, можно сильно упростить себе жизнь, автоматизировав сбор test case'ов.

3 комментария:

eveel комментирует...

на linux.org.ru в talks однажды был разговор на эту тему.

дело в том, что регекспы - строгая математическая теория, которая может быть проверена (я не математик, поэтому о методе проверки не помню).

в википедии весьма интересно написано на эту тему

PhoeniX комментирует...

Теория - да, может быть проверена. Множество полученных регэкспом строк может быть проверено на соответствие регэкспу. Суть в том, чтобы регэксп соответствовал задуманному внутри простой человеческой мысли типа "хочу такие строки".

eveel комментирует...

это уже тема для диплома или диссертации :)