Вопрос

В настоящее время одна из наших производственных систем управляется более чем 3000 программами, написанными в период с 1986 года по настоящее время.Кодовая база написана на нестандартном языке, в котором, к сожалению, отсутствуют современные средства тестирования.

Стремясь улучшить качество нашего кода в дальнейшем, я работал над внедрением процессов и созданием инструментов, которые улучшат разработку и тестирование.У меня только что появился инструмент полного покрытия строк, чтобы мы могли помочь идентифицировать мертвый код + непроверенный код во время разработки.

Теперь я хотел бы начать работу по добавлению покрытия пути к инструменту.

Как мне следует поступить с этим?

Учитывая , что:

1) Инструмент покрытия линий действует как препроцессор, который вводит код
2) У меня уже есть возможность собирать статистику, которую я установил в указанном коде.

Какие данные я должен записывать по мере выполнения программы и как мне их интерпретировать?

Как я могу представить результаты с помощью HTML?

Я уже прочитал этот вопрос Как начать “писать” инструмент покрытия кода?, который был о Java, однако это не помогло (включая статью "Упрощенное покрытие ветвей для произвольных языков").

Заранее благодарю за любые рекомендации!

Это было полезно?

Решение

Чтобы выполнить покрытие пути, вам нужно каким-то образом получить доступ к потоку управления программой.Очевидный метод заключается в построении реального графика потока управления, а затем в прохождении его сегментов для выбора "фрагментов пути" (например, базовых путей), которые будут использоваться в вашем анализе покрытия пути.(Вы можете попытаться сделать это путем строкового взлома исходного кода, но, скорее всего, у вас ничего не получится;синтаксический анализ и потоковый анализ слишком сложны).

Видишь В чем смысл покрытия базового пути? для хорошего обсуждения stackoverflow базовых путей.

Чтобы реализовать необходимый инструмент покрытия пути, вам, вероятно, потребуется действительно полностью разобрать весь устаревший язык.Для 3000 программ и высоких требований к тестированию имело бы смысл использовать для этого промышленный анализатор надежности и инфраструктуру.

Наш Инструментарий для реинжиниринга программного обеспечения DMS может использоваться для построения не только синтаксического анализатора, но и анализа потока управления и инструментарий, необходимый для сбора данных о покрытии трассы.(В разделе "Покрытие ветвей для произвольных языков" был сделан этот вывод, если все, что вы хотели сделать, это собрать данные о покрытии ветвей, но в DMS есть нечто большее, чем просто синтаксический анализ).DMS также поддерживает построение графиков управления (и потока данных), если они вам нужны, как вы, очевидно, и делаете в этом случае;видишь DMS построила графики потока управления.

DMS использовалась для создания анализаторов управления и потоков данных для C, Java и COBOL, а также для создания синтаксических анализаторов для более чем 30 языков.Он может работать с вашим устаревшим языком, если вы серьезно относитесь к этому.

РЕДАКТИРОВАТЬ 31.10.2011:DMS теперь может вычислять поток управления для C ++, так что это было бы отличной основой для инструмента покрытия пути C ++.

Другие советы

Измерение покрытия пути – сложная тема.Сначала вам нужно определить, что вы подразумеваете под путем.Является ли цикл, выполняемый три раза, другим путем, чем цикл, выполняемый четыре раза?Если да, то у вас есть бесконечное количество путей.В противном случае тестовые примеры будут пропущены, даже если все пути покрыты.

Возможно, следующим шагом будет охват филиалов:измерение того, выполняется ли каждое условие как истинное, так и ложное.Это может быть достигнуто путем записи последовательности номеров строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top