Для предотвращения слишком большого тестирования я хотел бы обеспечить, Гарантия качества (QA) подходят к подсказкам, на которых функциями должна быть регрессия, протестированная после повторения разработки. Вы знаете инструменты, которые могли сделать это на C++ и Подверсии (и Visual Studio) dev среда?
Детали о варианте использования:
Очень, вероятно, этот инструмент использовал бы статический анализ кода и использовал бы API подверсии. Но это существует?
Добрый день,
То, что вы описываете, на самом деле не является регрессионным тестированием. Вы просто тестируете новые функции.
Регрессионное тестирование - это когда вы специально запускаете свой полный набор тестов, чтобы увидеть, не нарушил ли код, поддерживающий вашу новую функцию, ранее работавший код.
Я настоятельно рекомендую прочитать превосходную статью Мартина Фаулера " Непрерывная интеграция ", который охватывает некоторые аспекты, о которых вы говорите.
Это также может предоставить вам лучший способ работы, особенно аспекты CI, о которых говорит Мартин в своей статье.
Редактировать: Особенно потому, что CI есть несколько скрытых ловушек, которые очевидны задним числом. Такие вещи, как остановка тестировщиков, пытающихся протестировать версию, в которой еще не были зафиксированы все файлы, реализующие новую функцию. (Вы проверяете, что за последние пять минут не было никаких коммитов.)
Еще один важный момент - потеря времени, если у вас сломанная сборка и Я знаю, что он не работает, пока кто-то не проверит код, а затем попытается собрать его, чтобы протестировать.
Если он сломан, теперь у вас есть:
Основная идея CI состоит в том, чтобы сделать несколько сборок полного продукта в течение дня, чтобы как можно раньше выявлять неработающие сборки. Вы даже можете выбрать несколько тестов, чтобы убедиться, что основные функции вашего продукта все еще работают. Еще раз, чтобы как можно скорее уведомить о проблеме с текущим состоянием вашей сборки.
Изменить: Что касается вашего вопроса, как насчет того, чтобы пометить репозиторий, когда вы выполнили свое тестирование, например, TESTS_COMPLETE_2009_12_16. Затем, когда вы будете готовы решить, какой следующий набор тестов выполняет «svn diff -r» между тегом завершения последних тестов и HEAD?
HTH
Кстати, я дополню этот ответ некоторыми дополнительными предложениями. как я думаю о них.
ура,
Вы даже можете выбрать несколько тестов, чтобы убедиться, что основные функции вашего продукта все еще работают. Еще раз, чтобы как можно скорее уведомить о проблеме с текущим состоянием вашей сборки.Изменить: Что касается вашего вопроса, как насчет того, чтобы пометить репозиторий, когда вы выполнили свое тестирование, например TESTS_COMPLETE_2009_12_16. Затем, когда вы будете готовы решить, какой следующий набор тестов выполняет «svn diff -r» между тегом завершения последних тестов и HEAD?
HTH
Кстати, я дополню этот ответ некоторыми дополнительными предложениями. как я думаю о них.
ура,
Вы даже можете выбрать несколько тестов, чтобы убедиться, что основные функции вашего продукта все еще работают. Еще раз, чтобы как можно скорее уведомить о проблеме с текущим состоянием вашей сборки.Изменить: Что касается вашего вопроса, как насчет того, чтобы пометить репозиторий, когда вы выполнили свое тестирование, например, TESTS_COMPLETE_2009_12_16. Затем, когда вы будете готовы решить, какой следующий набор тестов выполняет «svn diff -r» между тегом завершения последних тестов и HEAD?
HTH
Кстати, я дополню этот ответ некоторыми дополнительными предложениями. как я думаю о них.
ура,
TESTS_COMPLETE_2009_12_16. Затем, когда вы будете готовы решить, какой следующий набор тестов выполняет «svn diff -r» между тегом завершения последних тестов и HEAD?HTH
Кстати, я дополню этот ответ некоторыми дополнительными предложениями. как я думаю о них.
ура,
TESTS_COMPLETE_2009_12_16. Затем, когда вы будете готовы решить, какой следующий набор тестов выполняет «svn diff -r» между тегом завершения последних тестов и HEAD?HTH
Кстати, я дополню этот ответ некоторыми дополнительными предложениями. как я думаю о них.
ура,
Split your project up into separate executables and build them.
Make will rebuild any executable if its dependencies change.
Add the output files of any chained tests to the dependencies of the next test - for example the save file test's output as a dependency of the read file test.
Anything which has been built after this point needs unit testing.
If any libaries use common exhaustable resources ( heap memory, disk, global mutexes etc. ) add them as dependencies too, as exhaustion due to a leak in one library is often a regression failure in another.
Anything which has been built after a certain point needs regression testing.
Unless you are working in an environment which guarentees lack resource exhaustion ( eg TinyC ), you will end up regression testing everything. Regression testing is not unit testing.