Как спланировать тестирование whitebox

Я относительно новичок в мире тестирования WhiteBox и мне нужна помощь в разработке плана тестирования для одного из проектов, над которыми я сейчас работаю. В данный момент я просто слежу за поиском тестируемых фрагментов кода, а затем пишу для этого некоторые модульные тесты. Я как-то чувствую, что это далеко не так, как должно быть. Не могли бы вы дать мне совет, как лучше подготовиться к тестированию этого проекта? Какие-нибудь инструменты или шаблоны плана тестирования, которые я мог бы использовать? Используемый язык - C++, если это будет иметь значение.

3 ответа

Решение

Одна из целей тестирования белого ящика - охватить 100% (или как можно ближе) операторов кода. Я предлагаю найти инструмент покрытия кода C++, чтобы вы могли видеть, какой код выполняются вашими тестами и какой код вы пропустили. Затем разработайте тесты, чтобы тестировать как можно больше кода.

Другое предложение состоит в том, чтобы взглянуть на граничные условия в том случае, если показатели, циклы, циклы и т. Д. Проверены на наличие "серых" областей, ложных срабатываний и ложных отрицаний.

Вы также можете разработать тесты, чтобы посмотреть на жизненный цикл важных переменных. Проверьте их определение, их использование и их уничтожение, чтобы убедиться, что они используются правильно:)

Есть три идеи, чтобы вы начали. Удачи

Попробуйте "Эффективно работать с устаревшим кодом": http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052

Это актуально, поскольку под "наследием" он подразумевает код, который не имеет тестов. Это также довольно хорошая книга.

Соответствующими инструментами являются: http://code.google.com/p/googletest/ и http://code.google.com/p/gmock/ Могут быть и другие модульные тесты и макеты, но я знаком с ними и Я очень рекомендую их.

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

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


Мой личный (не TDD) подход заключается в следующем:

Поэтому мое тестирование не совсем "белая коробка", за исключением того, что я реинжиниринг тестируемой функциональности. Затем я тестирую эту функциональность с обратной инженерией и избегаю использования какого-либо бесполезного (и, следовательно, непроверенного) кода. Я мог (но не часто) использовать инструмент покрытия кода, чтобы увидеть, какая часть исходного кода выполняется тестами черного ящика.

Другие вопросы по тегам