Как говорит Джошуа Дейл, Пекс пытается создать тесты, которые охватывают как можно больше ветвей кода.Как сказано в первом абзаце Справочного руководства Pex:
При заданном методе [sic] Microsoft Pex генерирует входные данные, которые используют множество различных путей кода.В порядке [sic] слов Microsoft Pex стремится создать набор тестов, обеспечивающий максимальное покрытие кода.
(Как вы можете видеть, этот документ мог бы сделать с некоторымичтение!)
Важно помнить об этом, поэтому Pex будет генерировать тестовые входные данные, предназначенные для выполнения всех ваших ветвей кода, а не генерировать тестовые входные данные с семантическим значением (ожидайте, где это обычно).Важно понимать это и не предполагать, что набор тестов, сгенерированный Pex, означает, что ваши тесты охватили все возможные условия отказа.Он потенциально может охватывать очень немногие из них - тестовые входы предназначены для достижения крайних случаев (например, ноль / нуль-символ), что очевидно, если учесть, что цель состоит в том, чтобы использовать как можно больше ветвей кода.
Pex пытается исследовать ветви кода, которые ваши собственные тесты не обнаруживают.Это дополнение к вашему интеллекту - вы, человек, хорошо разбирающийся в том, что должен делать код, как машина Тьюринга, Пекс хорошо разбирается во всех возможных ветвях кода (хотя часто нуждается в помощи).