Как сделать значимый анализ покрытия кода моих модульных тестов?

0,1 на самом деле очень сложное значение для хранения двоичного файла. В базе 2 1/10 представляет собой бесконечно повторяющуюся дробь

0.0001100110011001100110011001100110011001100110011...

Как указывалось несколькими, сравнение должно проводиться с постоянной одинаковой точности.

5
задан Salim Fadhley 17 June 2009 в 17:08
поделиться

5 ответов

FWIW, это то, что мы делаем. Так как я не знаю о ваших настройках Unit-Test и Regression-Test, вы должны решить сами, полезно ли это.

  • Каждый пакет Python имеет Модульные тесты .
  • Мы автоматически обнаруживаем модульные тесты, используя нос . Nose автоматически обнаруживает стандартные модульные тесты Python (в основном все, что выглядит как тест ). Тем самым мы не пропускаем юнит-тесты. В Nose также есть плагин, чтобы вы могли производить, например, хороший результат.
  • Мы стремимся к 100% охвату для юнит-тестирование. Для этого мы используем Покрытие для проверки, потому что носовой плагин обеспечивает интеграцию .
  • Мы настроили Eclipse (наша IDE) на , чтобы автоматически запускать нос всякий раз, когда файл изменяется, так что модульные тесты всегда получить, который показывает покрытие кода как побочный продукт.
4
ответ дан 18 December 2019 в 09:09
поделиться

«Каждая отдельная часть нашего проекта имеет значимый тест»

«Часть» не определена. «Значимый» не определен. Это нормально, однако, так как дальше будет лучше.

«проверяет правильность каждого компонента в нашей системе»

«Компонент» не определен. Но корректность определена, и мы можем назначить компоненту ряд альтернатив. Вы упоминаете только Python, поэтому я предполагаю, что весь проект является чистым Python.

  • Проверяет правильность каждого модуля.

  • Проверяет правильность каждого класса каждого модуля.

  • Проверяет правильность каждого метода каждый класс каждого модуля.

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

" Для каждое изменение кода необходимо создать unittest.TestCase для изменяемого класса.

Тестовый код следует тем же правилам, что и любой другой код. В конце дня все проверяется. Он должен работать - даже если не все тесты проходят.

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

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

3
ответ дан 18 December 2019 в 09:09
поделиться

Только для покрытия кода вы можете использовать покрытия.py .

Что касается покрытия.py vs figleaf :

figleaf отличается от золотого стандарта инструментов покрытия Python ('охват.py') несколькими способами. В первую очередь фиговый лист использует тот же критерий для "интересных" строк кода как функция sys.settrace, что устраняет некоторые сложности в покрытии .py (но не означает, что ваш счетчик "loc" идет вниз). Во-вторых, figleaf не записывает выполненный код в стандартной библиотеке Python, которая приводит к значительному ускорению. И в-третьих, формат, в котором формат покрытия сохраняется очень просто и легко работать.

Вы можете использовать фиговый лист, если вы записываете репортаж из несколько типов тестов и необходимость объединить освещение в интересные способы и / или контроль, когда покрытие записано. cover.py лучше выбор для выполнения из командной строки и его отчеты намного приятнее.

Я думаю, у обоих есть свои плюсы и минусы.

6
ответ дан 18 December 2019 в 09:09
поделиться

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

Кстати, я бы использовал нос в качестве среды unittest ( http://somethingaboutorange.com/mrl/projects/nose/0.11. 1 / ); его система плагинов очень хороша и оставляет вам вариант покрытия (--with-cover для покрытия Неда, --with-figleaf для Titus one; поддержка для покрытия3 должна появиться), и вы можете написать плагин для своей собственной системы сборки, тоже.

4
ответ дан 18 December 2019 в 09:09
поделиться

Предполагая, что у вас уже есть относительно полный набор тестов, есть инструменты для части Python. Часть C гораздо более проблематична, в зависимости от доступности инструментов.

  • Для модульных тестов python

  • Для кода C это сложно на многих платформах, потому что gprof, профилировщик кода Gnu не может обрабатывать код, созданный с помощью -fPIC . Таким образом, в этом случае вы должны построить каждое расширение статически, что не поддерживается многими расширениями (например, см. Мое сообщение в блоге для numpy ). В Windows могут быть лучшие инструменты покрытия кода для скомпилированного кода, но это может потребовать от вас перекомпиляции расширений с помощью компиляторов MS.

Что касается «правильного» покрытия кода, я думаю, что это хороший баланс, чтобы избежать написания сложной единицы тестов как можно больше.

1
ответ дан 18 December 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: