1

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

В таком функциональном сценарии, как я могу написать тестовые примеры, которые охватывают все определения переменной x?

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

Function x (int y, int z) { 
    int x = 0; 
    M = y + z; 
    My_Array = [1,2,3];   
    if (0 < M < 10) 
     x = My_Array[1]; 
    else if (10 < M < 20) 
     x = My_Array[2]; 
    else 
     x = 0; 
} 
+0

На каком языке это? Возвращает ли эта функция что-либо? –

+0

Больше похоже на псевдокод, который может быть применен на многих языках, но он много используется при тестировании. Он может быть недействительным (нет возвращаемого значения) или возвращает x, но это никак не влияет на мой вопрос. –

+0

Я спросил, потому что [возвращение значения используется] (http://stackoverflow.com/questions/32908375/data-flow-coverage-return-statement/37127193). Во всяком случае, вы спрашиваете, какие тестовые примеры должны писать для этого конкретного (псевдо) кода или какой метод использовать для поиска тестовых примеров для кода с неиспользуемыми определениями? –

ответ

1

Способ применения анализа потока данных при тестировании должен

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

Анализ DU-path предполагает, что все переменные определены, а затем используются. Когда переменная не используется до конца кода, это ошибка в коде, и мы исправляем ее, как указано выше. Анализ DUK-path учитывает «убийства» (места, где переменная переназначается или выходит из программы), но она считает убийство без использования ошибки, которая должна быть исправлена ​​таким же образом.

Итак, в вашем примере мы устраняем все неиспользуемые назначения и обнаруживаем, что кода нет, ничего не тестировать, и функция может быть встроена!