Что вам нужно, так это связь между каждым тестом и кодом, который он выполняет.
Это можно вычислить статически, но это сложно, и я не знаю никаких инструментов, которые это делают. Хуже того, если бы у вас был такой инструмент, статический анализ для определения того, на что повлиял тест, мог бы на самом деле занять больше времени, чем просто запуск самого теста, так что это направление не выглядит привлекательным.
Однако это можно вычислить с помощью инструмента тестового покрытия. Для каждого отдельного теста запустите этот тест (мы предполагаем, что он прошел) и соберите данные о покрытии тестами. Теперь у нас есть много пар (t_i,c_i) для «тест i имеет покрытие c».
При изменении базы кода можно обращаться к наборам покрытия тестовых данных. Простая проверка: если для любого (t_i,c_i), если c_i упоминает файл F, а F изменился, нужно снова запустить t_i. Учитывая данные о тестовом покрытии практически в любом представлении, это легко обнаружить абстрактно. Учитывая, что большинство инструментов тестового покрытия конкретно не сообщают вам, как они хранят данные тестового покрытия, это сложнее, чем кажется на практике.
На самом деле, в идеале вы хотите, чтобы если c_i упоминает какой-либо программный элемент F, и этот программный элемент изменился, вам нужно снова запустить t_i.
Наши инструменты SD Test Coverage предоставляют эту возможность для Java и C# на уровне методов. Вам нужно настроить некоторые сценарии, чтобы связать фактический тест, независимо от того, как вы его упаковали, с собранными векторами тестового покрытия. С практической точки зрения это довольно просто.
person
Ira Baxter
schedule
25.03.2011
Unit
, потому что они тестируют один модуль отдельно от других. Поэтому, как правило, вы должны протестировать класс таким образом, чтобы никакая реализация другого класса не повлияла на тест. Это также означает, что когда вы что-либо меняете в классе, вы должны запускать модульные тесты только для этого класса, потому что другие тесты должны использовать mocks вместо этого класса. - person Snowbear   schedule 25.03.2011