Как инструменты покрытия кода работают на различных языках?

Понижение vue-router до 3.0.1 решает проблему. Доказательство:

https://codesandbox.io/s/oxlryzvzl9

Была ошибка , которая, кажется, все еще появляется.

8
задан James Brady 21 January 2009 в 12:38
поделиться

3 ответа

По существу все инструменты покрытия кода оснащают код для проверки, какие части кода выполнялись.

Как определено в ссылке Вы, если, C0 и C1 довольно подобны с точки зрения человека, пишущего инструментарий. Единственная разница - то, куда Вы помещаете код. Я пойду далее, чтобы размышлять, что C1 еще легче, чем C0, потому что инструментарий происходит на, скажем, уровень абстрактного синтаксиса, где концы строки не рассчитывают очень.

Другая причина я говорю, что C1 легче, состоит в том, потому что это имеет дело с синтаксическими единицами в противоположность лексическим объектам: как был бы Вы инструмент:

if
c > 1 && c
< 10
then
blabla
end

Ну, просто мысль.

Что касается C2, я никогда не видел сделанный на практике. Причина состоит в том, что можно получить экспоненциальный взрыв:

if c1 then * else * end
if c2 then * else * end
...
if cn then * else * end

Для n строк кода Вам было бы нужно 2^n тесты. Кроме того, что Вы делаете для циклов? Как правило, Вы абстрагируете их далеко как простых, если операторы (т.е. для каждого цикла, Вы тестируете то его тело, выполнялся 0 раз для одного теста и по крайней мере однажды в другом тесте).

Я полагаю, что выборка ПК является особенно ужасным способом сделать покрытие кода, потому что можно пропустить некоторые операторы, потому что они выполнились слишком быстро :D То же идет для нечеткой логики, которая используется для обоснования о приближениях; обычно Вы хотите свое покрытие кода к детерминированному b.

Карты Karnaugh используются для уменьшения булевых функций, и я не вижу полезной ссылки с инструментами покрытия кода.

Кроме того, Ваш вопрос не очень ясен время от времени: Вы хотите, чтобы методы достигли лучшего покрытия кода, или это - просто реализация инструментов покрытия кода, которая интересует Вас?

5
ответ дан 6 December 2019 в 00:59
поделиться

В.NET предпочтительный путь состоит в том, чтобы использовать.NET Профильный API, который в основном предлагает набор совместных точек в самом CLR.

-2
ответ дан 6 December 2019 в 00:59
поделиться

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

Технический документ можно найти здесь: http://www.semdesigns.com/Company/Publications/TestCoverage.pdf объясняет, как это можно сделать в целом.

Моя компания Semantic Designs предлагает большой набор инструментов для тестирования покрытия. которые обеспечивают так называемое покрытие C1 выше (например, "покрытие филиала") так что да, это обычно ), для разных языков (C, C ++, C #, Java, COBOL, PHP, все в нескольких диалекты). См. Www.semdesigns.com/Products/TestCoverage/index.html

0
ответ дан 6 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

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