Как спланировать тестирование белого ящика
Вопрос
Я относительно новичок в мире тестирования Whitebox, и мне нужна помощь в разработке плана испытаний для 1 проектов, над которыми я сейчас работаю. На данный момент я просто разбираюсь в поисках тестируемых фрагментов кода, а затем пишу несколько модульных тестов для этого. Я как -то чувствую, что это, безусловно, не так, как это должно быть сделано. Пожалуйста, не могли бы вы дать мне совет о том, как лучше всего подготовиться к тестированию этого проекта? Какие -нибудь инструменты или шаблоны плана тестирования, которые я мог бы использовать? Используемый язык C ++, если он будет иметь значение.
Решение
Одна из целей тестирования белой коробки-охватить 100% (или как можно ближе) кодовых операторов. Я предлагаю найти инструмент покрытия кода C ++, чтобы вы могли видеть, какой код выполняет ваши тесты и какой код вы пропустили. Затем проектируйте тесты так, чтобы как можно больше кода было протестировано.
Другое предложение состоит в том, чтобы посмотреть на граничные условия, если в законодательстве, для петли, в то время как петли и т. Д. И проверить их на любые «серые» области, ложные позитивы и ложные отрицательные.
Вы также можете разработать тесты, чтобы посмотреть на жизненный цикл важных переменных. Проверьте их определение, их использование и их уничтожение, чтобы убедиться, что они используются правильно :)
Есть три идеи, чтобы начать вас. Удачи
Другие советы
На данный момент я просто разбираюсь в поисках тестируемых фрагментов кода, а затем пишу несколько модульных тестов для этого. Я как -то чувствую, что это, безусловно, не так, как это должно быть сделано.
Люди говорят, что одно из основных преимуществТестовая разработка«Это то, что вы можете разрабатывать ваши компоненты с учетом тестируемости: это делает ваши компоненты более тестируемыми.
Мой личный (не-TDD) подход выглядит следующим образом:
- Понять требуемую и реализованную функциональность: оба «априори» (т. Е. Считая/зная функциональную спецификацию программного обеспечения), и считывая исходный код для обратного инженера функциональности
- Реализуйте тесты черного ящика для всех реализованных/необходимых функций (см., Например, 'Должен ли один тестировать внутреннюю реализацию или только проверить общественное поведение?').
Поэтому мое тестирование не совсем «белая коробка», за исключением того, что я обратно инженерист проверяется функциональность. Затем я проверяю эту функциональность с обратным инженером и избегаю какого-либо бесполезного (и, следовательно, непроверенного) кода. Я мог бы (но не часто) использовать инструмент покрытия кода, чтобы увидеть, сколько из исходного кода осуществляется тестами черного ящика.
Попробуйте «эффективно работать с устаревшим кодом»: http://www.amazon.com/working-effectively-leagacy-michael-feathers/dp/0131177052
Это актуально, поскольку под «Наследием» он имеет в виду код, который не имеет тестов. Это также довольно хорошая книга.
Соответствующие инструменты: http://code.google.com/p/googletest/ и http://code.google.com/p/gmock/Там могут быть другие модульные тест и фиктивные рамки, но я знаком с ними, и я рекомендую их высоко.