Поделиться через


Устранение неполадок, связанных с выполнением тестов

Обновлен: Ноябрь 2007

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

Ошибки, связанные с тестами, выводятся в соответствии с одним из следующих уровней.

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

  • Ошибки уровня выполнения. Ошибки уровня выполнения, включающие ошибки конфигурации при запуске, выводятся в окне результатов теста. При возникновении ошибки уровня выполнения в строке состояния в окне результатов теста появляется ссылка. Щелчок этой ссылки откроет страницу с дополнительными сведениями о выполнении теста. Эту страницу можно также открыть, нажав кнопку Сведения о выполнении на панели инструментов в окне результатов теста. Примером ошибки уровня выполнения является ошибка тайм-аута выполнения, возникающая по истечении времени ожидания выполнения.

Не все проблемы приводят к сбою выполнения теста. Если принято решение о получении данных о покрытии кода и если проект имеет определенные параметры построения, при выполнении тестов может быть выведено предупреждение. Дополнительные сведения см. в разделе Использование параметра построения "AnyCPU" при получении данных о покрытии кода.

Ошибки развертывания

В любых автоматически выполняемых тестах (то есть имеющих тип, отличный от ручного) можно обнаружить ошибки. Часто эти ошибки связаны с развертыванием тестов. При развертывании теста содержащий его файл копируется в другую папку либо на локальном, либо на удаленном компьютере. Дополнительные сведения см. в разделе Развертывание тестов.

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

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

Можно разворачивать не только двоичные файлы. Можно указать, что для теста требуется определенный файл, например файл данных, который должен быть развернут. Если во время развертывания этот файл не удается найти, поскольку он был перемещен или удален, тест выполняется неправильно и возникает ошибка. Сведения об ошибке в отношении обычных тестов см. в разделе Сведения по типу теста.

Чтобы изучить эту ошибку, сначала запомните файлы и папки, указанные на странице "Развертывание" диалогового окна, используемого для изменения конфигураций выполнений тестов. Дополнительные сведения см. в разделе Практическое руководство. Задание конфигурации тестового запуска. Затем проверьте наличие этих файлов и папок на диске и убедитесь, что они имеют одинаковые имена.

В решении может существовать несколько файлов конфигурации при запуска. В этом случае убедитесь, что проверяется конфигурация, которая была активной во время возникновения ошибки теста. Чтобы определить, какая конфигурация была активной, проверьте страницу сведений о выполнении теста для данного выполнения теста. Дополнительные сведения см. в подразделе "Страница "Сведения о выполнении теста"" раздела Получение результатов теста.

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

Ошибки в отчетах о результатах удаленных тестов

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

Так же как и результаты локальных выполнений тестов, сведения о результатах удаленных тестов сообщаются локально. Отчеты об определенных результатах удаленных тестов зависят от возможности Visual Studio Team System Test Edition копировать сгенерированные файлы результатов тестов с компьютера, на котором выполняется удаленное тестирование, на локальный компьютер.

При обнаружении ошибок в результатах удаленных тестов сначала проверьте, не прерывалось ли сетевое соединение между удаленным компьютером и компьютером, на котором установлен Visual Studio.

Дополнительные сведения см. в разделе Устранение неполадок, связанных с контроллерами, агентами и тестовыми платформами.

Ошибки инструментирования

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

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

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

Другой причиной ошибок покрытия кода является использование одного или нескольких модульных тестов вместе с ручным тестом. Во время ручного теста тестер выполняет проверяемый рабочий код. При нажатии клавиши F5 или сочетания клавиш CTRL+F5 для запуска или отладки кода происходит перестраивание исполняемого файла проекта и удаление инструментирования.

Кроме того, нужно проверить, что двоичный файл не используется никаким другим процессом. Например, убедитесь, что файл не открыт в другом экземпляре Visual Studio.

При инструментировании Сборки со строгими именами можно обнаружить и другие ошибки, связанные с повторной подписью сборки. Дополнительные сведения см. в разделе Инструментирование и повторная подпись сборок.

Закрытие результатов тестов для повышения производительности

Чтобы повысить производительность Visual Studio, следует закрыть старые результаты тестов.

При выполнении тестов Visual Studio сохраняет их и результаты выполнения в памяти. В связи с выполнением большего количества тестов и наличием множества результатов, выделяется больший объем памяти. Чтобы вывести выполнения тестов из памяти, на панели инструментов окна результатов теста нажмите кнопку Закрыть результаты. При этом будут высвобождены объекты результатов тестов, однако явного вызова сборщика мусора не произойдет. Это значит, что память будет доступна, но необязательно сразу же.

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

Использование параметра построения "AnyCPU" при получении данных о покрытии кода

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

ms182478.alert_note(ru-ru,VS.90).gifПримечание.

Это предупреждение не применяется к проектам C++, поскольку "AnyCPU" не является платформой для проектов C++.

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

Warning VSP2013 : Instrumenting this image requires it to run as a 32-bit process.  The CLR header flags have been updated to reflect this.

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

ms182478.alert_note(ru-ru,VS.90).gifПримечание.

Если приложение предназначено для выполнения как на 32-, так и на 64-разрядных компьютерах, по завершении тестирования его следует перекомпилировать с использованием параметра "AnyCPU".

Выполнение модульных тестов может привести к блокировке сборки теста C++/CLI

Может возникнуть ситуация, когда модуль выполнения теста открывает и блокирует сборку в тестовом проекте. В этом случае сохранить изменения сборки, например, уже невозможно. Данная проблема может появиться в следующих случаях.

  • Случай 1. Отключено развертывание для тестового проекта "TestProjectA". Проект "TestProjectA" был скомпилирован в C++/CLI. Код в проекте "TestProjectA" определяет класс атрибутов и этот атрибут оформляет как минимум один из методов теста в данном проекте. На этом этапе при выполнении модульных тестов в проекте "TestProjectA" средство выполнения теста открывает файл TestProjectA.DLL и может оставить его заблокированным.

  • Случай 2. Тестовый проект "TestProject1", содержит файл DLL, скомпилированный из второго тестового проекта "TestProject2". Проект "TestProject2" был скомпилирован в C++/CLI. Код в проекте "TestProject2" определяет класс атрибутов и этот атрибут оформляет как минимум один из методов теста в данном проекте. Теперь при выполнении модульных тестов в проекте "TestProject1" средство выполнения теста открывает файл TestProject2.DLL и может оставить его заблокированным.

В обоих этих случаях решение может состоять из двух частей. Сначала выполните следующие действия.

  1. В меню Сервис выберите пункт Параметры.

    Откроется диалоговое окно Параметры.

  2. Разверните узел Средства тестирования и щелкните Выполнение теста.

  3. В разделе Производительность снимите флажок Держать модуль выполнения тестов работающим в промежутке между тестовыми запусками.

Если после действий проблема устранена не будет, выполните следующее.

Измените код таким образом, чтобы тестовый проект, скомпилированный в C++/CLI, не нужно было загружать в домене приложения по умолчанию. Одним из способов является перемещение определений настраиваемых атрибутов в отдельную сборку, реализованную в C#.

Сведения по типу теста

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

  • Ручные тесты. Ручные тесты нельзя выполнять удаленно. При попытке запуска теста, содержащего ручной тест, Test Edition старается удалить его из выполнения. В этом случае выводится оповещение возникшей ситуации и предоставляется возможность либо отменить выполнение теста, либо продолжить выполнение, но уже без ручного теста. Дополнительные сведения см. в разделе Диалоговые окна выпуска Test Edition.

  • Упорядоченные тесты. Ошибки, происходящие в упорядоченных тестах, часто связаны с процессом развертывания файлов. Перед выполнением в упорядоченном тесте тестовый модуль кроме всех остальных необходимых файлов должен найти и развернуть все файлы теста для всех содержащихся тестов. Сбой при выполнении этих действий для отдельных тестов приведет к возникновению ошибки.

  • Обычные тесты. При выполнении обычных тестов могут возникнуть ошибки развертывания. Существует два способа указания файлов, развертываемых для обычных тестов: на странице "Развертывание" конфигурации выполнения теста и на странице создания обычного теста. Если не представлен список всех необходимых файлов или Team System (средства тестирования) не удается найти эти файлы в указанных расположениях, может произойти сбой теста.

    Эти два способа развертывания файлов приводят к ошибкам, возникающим на разных уровнях. Если ошибки развертывания относятся к файлу, указанному на странице создания обычного теста, речь идет об ошибках на уровне теста. Если ошибки развертывания относятся к файлу, указанному в конфигурации выполнения, речь идет об ошибках на уровне выполнения.

См. также

Задачи

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

Основные понятия

Диалоговые окна выпуска Test Edition

Получение результатов теста

Инструментирование и повторная подпись сборок

Модульные тесты и C++

Другие ресурсы

Развертывание тестов

Настройка выполнения теста