Я уже два дня тяну волосы за этот.
Я получил новый и намного более быстрый блок тестирования, и он начал постоянно давать сбои каждый раз в одном и том же месте в коде и очень похожих местах в цикле тестирования.
Я использую Visual Studio 2017, хотя это не очень актуально. Последний сервер TFS, я думаю, что это также 2017 год. У меня есть два тестовых окна с установленным агентом оболочки Power Test, агентом GUI и контроллером тестирования. Один из них действительно старый и медленный, он отлично работает, кроме проблем с таймаутом. Более новая версия, на которую я пытаюсь перейти, работает под управлением Windows 10.
Окно тестирования Windows 10 зарегистрировано как пользователь домена, которого я использую для тестирования. Этот пользователь является локальным администратором и используется для установки всех агентов тестирования. Я запускаю UltraVNC для удаленного подключения к моим тестовым блокам, чтобы избежать проблем, которые RDP и TeamViewer вызывают для тестовых агентов.
Код будет работать отлично для 5 для шести итераций, но во время одного конкретного теста он всегда выдает ошибку на трех итерациях Итерации обычно происходят в один и тот же момент времени, но не всегда используют одни и те же данные.
Код, вызывающий ошибку:
Mouse.Click(save_tab);
где save_tab - это объект UITestControl, гиперссылка на веб-страницу.
Сработала ошибка:
Сообщение: ядро автоматизации не может воспроизвести тест, потому что оно
не может взаимодействовать с рабочим столом. Это может произойти, если
компьютер, на котором выполняется тест, заблокирован или окно удаленного сеанса
сведено к минимуму.
StackTrace: в
Microsoft.VisualStudio.TestTools.UITesting.UITestLogGenerator.ExceptionRecorder (Exception
исключение, логическое переопределение) в
Microsoft.VisualStudio.TestTools.UITesting.Playback.ThrowIfScreenLockedOrRemoteSessionMinimized ()
в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Exception
исключение, контекст IPlaybackContext) в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Exception
исключение, String actionName, UITestControl uiControl) в
Microsoft.VisualStudio.TestTools.UITesting.UITestActionExecutorCore.Click (UITestControl
управление, кнопка мыши, кнопки-модификаторы, клавиши-модификаторы, точка
относительная координата) в
Microsoft.VisualStudio.TestTools.UITesting.Mouse.ClickImplementation (UITestControl
управление, кнопка мыши, кнопки-модификаторы, клавиши-модификаторы, точка
относительная координата) в
Microsoft.VisualStudio.TestTools.UITesting.Mouse. <> C__DisplayClass32_0.b__0 ()
в
Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod [Т] (Func`1
функция, элемент управления UITestControl, логическое firePlaybackErrorEvent,
Логическое действие) в
Microsoft.VisualStudio.TestTools.UITesting.Mouse.Click (UITestControl
управление, кнопка мыши, кнопки-модификаторы, клавиши-модификаторы, точка
относительная координата) в
Microsoft.VisualStudio.TestTools.UITesting.Mouse.Click (UITestControl
контроль) * +1021 *
Я использовал VNC для наблюдения за тестовой машиной, которая вызвала эти ошибки. Заставка никогда не включается (она отключена), экран никогда не засыпает (это тоже отключено). Вместо этого весь тест зависает на некоторое время, прежде чем вызвать ошибки.
В части catch моего try-cache для этой ошибки я пытаюсь сделать снимок экрана, используя объект браузера для тестирования, и получаю эту ошибку:
Сообщение: параметр недействителен.
StackTrace: в System.Drawing.Graphics.GetHdc () в
System.Drawing.Graphics.CopyFromScreen (Int32 sourceX, Int32 sourceY,
Int32 destinationX, Int32 destinationY, Размер blockRegionSize,
CopyPixelOperation copyPixelOperation) в
System.Drawing.Graphics.CopyFromScreen (Int32 sourceX, Int32 sourceY,
Int32 destinationX, Int32 destinationY, Размер blockRegionSize) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.CaptureImagePrivate ()в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.b__173_0 ()
в
Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod [Т] (Func`1
функция, элемент управления UITestControl, логическое firePlaybackErrorEvent,
Логическое действие) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.CaptureImage ()
в Testing.Base_CodedUITest.CaptureAndSaveImage (UITestControl doc,
String FileName)
Затем я пытаюсь сделать снимок экрана, используя:
UITestControl.Desktop.CaptureImage();
, приводящий к этой ошибке:
Сообщение: параметр недействителен.
StackTrace: в System.Drawing.Bitmap..ctor (ширина Int32, высота Int32,
Формат PixelFormat) в System.Drawing.Bitmap..ctor (ширина Int32, Int32
высота) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.CaptureImagePrivate ()
в Microsoft.VisualStudio.TestTools.UITesting.UITestControl.b__173_0 ()
в
Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod [Т] (Func`1
функция, элемент управления UITestControl, логическое firePlaybackErrorEvent,
Логическое действие) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.CaptureImage ()
в Testing.Base_CodedUITest.CaptureAndSaveImage (UITestControl doc,
String FileName)
Кажется очевидным, что тест по какой-то причине не может связаться с компьютером. Я не уверен, почему, хотя. Как только эта ошибка была обработана, тест продолжает успешно повторять один и тот же тест несколько раз подряд, прежде чем снова вызвать ту же ошибку.
У меня есть еще одна возможная подсказка по этому вопросу. При подключении к этому тестовому боксу, на котором работает UltraVNC, я периодически получаю сообщение о том, что соединение было прервано сервером (тестовый блок), но впоследствии оно всегда будет переподключаться. У меня нет этой проблемы с моей старой тестовой коробкой. Я пытался выполнить постоянный тест ping для этого более нового тестового блока во время одного из этих сбоев подключения UltraVNC и не видел какого-либо снижения скорости или потери пакетов. Соединение по всей нашей локальной сети составляет менее 1 мс.
Кто-нибудь знает, что происходит?
РЕДАКТИРОВАТЬ: По рекомендации я начал просматривать журнал событий. Одно событие показалось мне странным из Source = VSTTExecution.
(vstest.console.exe, PID 5356, поток 9)
TestTypes {13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b} не может быть загружен
потому что TIP не может быть создан по следующим причинам:
Элемент с таким же ключом уже добавлен.
Source = VSTTController имел это, но не думаю, что это проблема, так как тесты на самом деле запущены. Я подозреваю, что установленное мной программное обеспечение контроллера и агента может быть устаревшим и больше не нужно.
Службе контроллера не удалось подключиться к Test Management Server.
Не удалось загрузить файл или сборку 'Microsoft.VisualStudio.Threading,
Версия = 15.6.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или
одна из его зависимостей. Определение манифеста локализованной сборки
не соответствует ссылке на сборку. (Исключение из HRESULT:
0x80131040)
И был этот, Source = VSTTAgentProcess:
(QTDCAgent32.exe, PID 10416, поток 51) DataCollectionAgentProcess:
Родительский процесс завершен. Код выхода родителя: -1
РЕДАКТИРОВАТЬ 2:
Когда я пытаюсь собрать больше данных об этом, я обнаружил, что эта ошибка происходит примерно в то же время, что и другие. Я думаю, что это просто более глубокая ошибка. К сожалению, это также более общий характер, поэтому найти что-либо в Google сложно. На данный момент я почти уверен, что существует проблема глубоко внутри ОС, IE или механизма тестирования. Я надеюсь найти обходной путь. Через месяц я смогу протестировать и еще один аппаратный компонент.
Эта вторая ошибка является исходной ошибкой, которую я пытаюсь сделать снимок экрана. Я пытаюсь нажать кнопку. Кнопка, которая очень видима и доступна, нет видимой ошибки. По какой-то причине механизм тестирования CodedUI, похоже, не распознает, что IE даже существует. Однако, как только эта ошибка исчезнет, механизм тестирования сможет восстановить работу браузера и перейти к следующей странице теста.
уровень ошибки 2
Сообщение. При воспроизведении не удалось найти элемент управления с заданным поиском.
свойства. Дополнительные детали: TechnologyName: «Web» ControlType:
TagName: Document BODY Не удалось найти элемент управления, соответствующий
условие поиска ControlType = 'Document'
StackTrace: в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapControlNotFoundException (COMException
например, контекст IPlaybackContext) в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowComException (COMException
innerException, контекст IPlaybackContext) в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Exception
исключение, контекст IPlaybackContext) в
Microsoft.VisualStudio.TestTools.UITesting.Playback.MapAndThrowException (Exception
исключение, String queryId) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindFirstDescendant (String
queryId, Int32 maxDepth, Int32 & timeLeft) в
Microsoft.VisualStudio.TestTools.UITesting.SearchHelper.GetUITestControlRecursive (Boolean
useCache, Boolean всегдаSearch, ISearchArgument searchArg, IList 1
windowTitles, Int32& timeLeft) at
Microsoft.VisualStudio.TestTools.UITesting.SearchHelper.GetElement(Boolean
useCache, ISearchArgument searchArg) at
Microsoft.VisualStudio.TestTools.UITesting.SearchHelper.Search(ISearchArgument
searchArg) at
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindInternal()
at
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindControlIfNecessary()
at
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReadyPrivate(Int32
millisecondsTimeout, Boolean doLogging) at
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.<>c__DisplayClass186_0.b__0()
at
Microsoft.VisualStudio.TestTools.UITesting.CodedUITestMethodInvoker.InvokeMethod[T](Func
1
функция, элемент управления UITestControl, логическое firePlaybackErrorEvent,
Логическое действие) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady (Int32
millisecondsTimeout) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady ()
в Testing.Base_CodedUITest.NavigateToUrl (String url) в
C: \ agent_work \ 2 \ s \ VerizonOTM \ Other \ trc_UITesting \ Тесты \ UI \ Base_CodedUITest.cs: линия
348
уровень ошибки 3
Сообщение: ошибка HRESULT E_FAIL была возвращена после вызова COM
составная часть.
StackTrace: в
Microsoft.VisualStudio.TestTools.UITest.Playback.Engine.IScreenElement.FindAllDescendants (String
bstrQueryId, Object & pvarResKeys, Int32 cResKeys, Int32 nMaxDepth) в
Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.FindAllScreenElement (String
queryId, глубина Int32, логическое значение singleQueryId, логическое значение throwException,
Boolean resetSkipStep) в
Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.FindScreenElement (String
queryId, глубина Int32, логическое значение resetSkipStep) в
Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FindFirstDescendant (String
queryId, Int32 maxDepth, Int32 & timeLeft)