Това, от което се нуждаете, е връзка между всеки тест и кода, който изпълнява.
Това може да се изчисли статично, но е трудно и не знам никакви инструменти, които да го правят. По-лошото е, че ако разполагате с такъв инструмент, статичният анализ, за да решите какво е засегнал тестът, всъщност може да отнеме повече време от простото изпълнение на самия тест, така че това не изглежда като привлекателна посока.
Това обаче може да се изчисли с помощта на инструмент за тестово покритие. За всеки отделен тест изпълнете този тест (предполагаме, че преминава) и съберете данните за покритието на теста. Сега имаме много двойки (t_i,c_i) за "тест i има покритие c".
Когато кодовата база се промени, могат да се направят справки с наборите за покритие на тестови данни. Проста проверка: ако за някой (t_i,c_i), ако c_i споменава файл F и F се е променил, трябва да изпълните t_i отново. Като се имат предвид данните за тестово покритие в почти всяко представяне, това е някак лесно за откриване в абстрактно. Като се има предвид, че повечето инструменти за тестово покритие не ви казват конкретно как съхраняват данните за тестовото покритие, това е по-трудно, отколкото изглежда на практика.
Всъщност това, което искате в идеалния случай е, ако c_i споменава някакъв програмен елемент на F и този програмен елемент се е променил, трябва да стартирате t_i отново.
Нашите инструменти за SD тестово покритие предоставят тази възможност за Java и C# на ниво методи. Трябва да настроите някои скриптове, за да свържете действителния тест, както и да сте го пакетирали, със събраните вектори на тестово покритие. От практическа гледна точка това обикновено е доста лесно.
person
Ira Baxter
schedule
25.03.2011
Unit
, защото тестват една единица отделно от останалите. Така че като цяло трябва да имате клас, тестван по начин, при който никоя реализация на друг клас няма да повлияе на теста. Това също означава, че когато промените нещо в клас, трябва да стартирате само модулни тестове за този клас, защото другите тестове трябва да използват mocks вместо този клас. - person Snowbear   schedule 25.03.2011