Автоматическая генерация тестов для PHP

Идея вот в чем. Для каждой функции(метода), которая нуждается в unit-тесте, программист оставляет тег @needTest в DOC-комментарии. После этого при выполнении скрипта специальный модуль отслеживает все запуски этой функции и запоминает при каких аргументах какое возвращаемое значение. По этим данным модуль автоматически строит unit-тесты (PHPUnit). Как бы фиксирует корректную работу приложения в данный момент. После этого можно заниматься рефакторингом или чем угодно.

Есть ли уже такие уже решения? И как Вам кажется, есть ли в этом смысл?
  • Вопрос задан
  • 3911 просмотров
Пригласить эксперта
Ответы на вопрос 7
@rPman
Вообще то как помощник для написания тестов такой бы модуль был бы неплох, не абсолютное решение но кучу муторной работы вполне автоматизировал бы.
Ответ написан
Комментировать
DeadMoroz
@DeadMoroz
А смысл? Тесты должны документировать код, описывая различные варианты его использования. Если тесты по коду генерировать, как генератор поймёт, что именно вы хотели от кода? По кривому коду будут сгенерированы кривые тесты, и код от этого ровнее не станет.
Ответ написан
Davert
@Davert
Генерировать файл ок.

Но это глупость:
отслеживает все запуски этой функции и запоминает при каких аргументах какое возвращаемое значение. По этим данным модуль автоматически строит unit-тесты (PHPUnit). Как бы фиксирует корректную работу приложения в данный момент.
Работу 90% методов нельзя проверить по сравнению input/output
Метод вообще ничего может не возвращать, но зато может вызывать из себя кучу других методов. Никак корректную их работу вы не отследите. Только писать вручную.
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
В Netbeans есть втроенная генериловка статических тестов, к сожалению, без перегенерирования по ходу изменений.
Ответ написан
AxisPod
@AxisPod
А зачем вам генератор тестов? Может быть вам необходим генератор программного кода, которому достаточно сказать: «Хочу программу», генератор прочитает мысли, сгоняет в будущее, поглядит самый правильный вариант развития событий и выдаст вам готовую программу.

Автоматическая генерация тестов по созданному коду это какой-то бред.
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
падение теста ничего не будет означать — будет больше вероятности, что тест криво сгенерировался. Успех теста тоже ничего не будет означать, по той же причине. Да и устранение зависимостей — не всегда тривиальная задача для человека, а уж для программы вообще, имхо, неразрешимая в наше время, т.к. программе придется программировать, создавать моки, стабы…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы