Языковые (юнит) тесты PHP
На данный момент я работаю (просто для удовольствия) над неким компилятором PHP
-код вниз до исходного кода для низкого уровня VM
,
Как система типов и многое из PHP
-функции не так логичны, мне нужно много тестовых сценариев, чтобы убедиться, что мой код ведет себя так, как в PHP
,
Я начал тестировать все с тестом из PHP
Источники ( здесь). Но многие тесты не только зависят от языка, они также содержат некоторые функции обработки веб-сервера (POST-данные и т. Д.). Есть ли другие тесты для тестирования? PHP
как язык? Лучше всего было бы, если сам скрипт написан на PHP
,
2 ответа
Если вы проверяете, что ваша семантика ведет себя так же, как в Zend-реализации PHP, я бы порекомендовал создать автоматизированный инструмент для генерации грамматики из BNF самого PHP. Таким образом, вы получите множество файлов.php, выражающих большую часть семантики. Не забудьте включить много кода трассировки в сгенерированные файлы.
Затем запустите его через реализацию Zend и вашу, чтобы убедиться, что вы получите такую же проверку. Используйте генерацию неработающего кода, чтобы убедиться, что вы тоже его поймаете. Только тогда, когда вы знаете, что ваша реализация верна (со странностями), вы можете двигаться дальше.
http://llvm.org/devmtg/2008-08/Lopes_PHP-JIT-InTwoDays.pdf может помочь. Посмотрите на людей, создающих PHP JIT для LLVM. Может предоставить некоторую информацию о том, как они проверяют правильность синтаксиса и семантики языка в сравнении с существующей реализацией.
Возможно, я вас неправильно понимаю, но это может быть то, что вы ищете?
http://www.simpletest.org/
Они разработали его как JUnit, но для php, согласно описанию.