2014-11-23 90 views
0

我想問下一個案例的一些幫助。由測試控制器和代理遠程執行虛擬機上的CodedUI測試

我希望實現的目標是運行虛擬機Windows 7 SP1,讓我的同事 - 開發人員 - 可以運行在此機器上運行的CodedUI測試。爲了在我的機器上創建虛擬機,它適用於所有人。我從這裏安裝了一個VS 2013測試代理和控制器:http://www.microsoft.com/en-us/download/details.aspx?id=40750

我建立了兩個並根據它們可以相互通信的信息。

Test Agent set up Test Controller set up

我設置了一個用戶運行測試。此用戶是MSDN頁面中描述的管理員和其他組的成員。當我啓動虛擬機就自動登錄,我得到了你可以看到下面的截圖一樣:

Test agent status at start

此外,當我想設置在VS 2013的代理它說,它 - VS 2013 - 可以與置於虛擬機上的代理進行通信。我可以看到VS中的代理和控制器屬性。然而,對我來說這很奇怪,代理名稱如下所示:* agent_name。我的意思是星號和代理名稱之後。

Remote execution setup Agent and controller properties

後,我選擇在測試設置菜單中的testsettings文件,我該請VS運行這個測試建立和工作就可以了至少1-2分鐘,它說的VS說「測試跳過」。測試是單個單元測試還是混合SpecFlow/CodedUI無關緊要。它總是失敗。

我發現我的VS運行的那臺機器的eventlog中有興趣的東西。代理和Controller運行的VM是空的。

無法找到源VSTTExecution的事件ID 0的描述。引發此事件的組件未安裝在本地計算機上或安裝已損壞。您可以在本地計算機上安裝或修復組件。

如果事件發生在另一臺計算機上,顯示信息必須與該事件一起保存。

以下信息包括與事件:

(vstest.executionengine.x86.exe, PID 8440, Thread 10) ControllerProxy: Queue test run error: System.Net.Sockets.SocketException (0x80004005): No such host is known 

Server stack trace: 
    at System.Net.Dns.GetAddrInfo(String name) 
    at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6) 
    at System.Net.Dns.GetHostAddresses(String hostNameOrAddress) 
    at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket() 
    at System.Runtime.Remoting.Channels.RemoteConnection.GetSocket() 
    at System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew) 
    at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream) 
    at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream) 
    at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at Microsoft.VisualStudio.TestTools.Common.FileCopyService.get_DeploymentFlags() 
    at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.<StartTestRun>b__1e(FileCopyService fileCopyService) 
    at Microsoft.VisualStudio.TestTools.Execution.RemoteObjectContainer`1.InvokeAsRemoteUser(Action`1 invoke) 
    at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.StartTestRun(TestRun testRun, RemoteObjectContainer`1 fileCopyServiceContainer, RemoteObjectContainer`1 defaultListenerContainer) 
    at Microsoft.VisualStudio.TestTools.Controller.ControllerObject.QueueTestRun(TestRun testRun, FileCopyService fileCopyService, IControllerEvents eventHandler) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg) 

Exception rethrown at [1]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at Microsoft.VisualStudio.TestTools.Controller.IControllerExecution.QueueTestRun(TestRun testRun, FileCopyService fileCopyService, IControllerEvents eventHandler) 
    at Microsoft.VisualStudio.TestTools.TestManagement.ControllerProxy.QueueTestRunWorker(Object state) 

the message resource is present but the message is not found in the string/message table 

如果VS和控制器可以相互通信,那麼爲什麼我得到了「沒有這樣的主機」的錯誤?

我在這裏和微軟經歷了很多描述和錯誤報告,但我不知道該怎麼做。我多次檢查了設置,並且一切正常。

任何人,任何想法我能做什麼?

+0

您是如何安裝測試代理?建議使用MTM(微軟測試經理)實驗室部分安裝它,而不是通過直接下載。 – eetawil 2014-11-26 13:35:16

+0

它是手動安裝的。之後,我通過TM完成了它,並且它的工作很有限。我不得不使用另一個公司提供的測試控制器,它與TM所安裝在虛擬機上的測試代理一起工作。 不幸的是,我無法達到我想要的,因爲通過VS 2013,我無法將測試任務推送到VM,因此我必須使用TM。 – SayusiAndo 2014-12-18 20:35:40

回答

1

由於我有這個問題,我收集了一些在這個主題的經驗。不過,我覺得這些微軟的產品是非常不成熟的。

我可以實現的是,我設置了我提到的虛擬機,並且能夠對Test Manager執行的CudedUI測試運行。爲了做到這一點,我必須由測試經理在虛擬機上建立一個測試代理,測試代理由放置在公司基礎設施某處的測試控制器驅動。在這種情況下@Eli El-Tawil你是對的,並且謝謝你的建議。但是,如果我想在Visual Studio中安裝測試代理的計算機上運行CodedUI測試,我無法執行,因爲Visual Studio無法連接爲測試管理器基礎結構註冊的測試控制器,或者控制器沒有允許連接。我不明白這一點。

1

下面是我遇到的一些事情,以供任何人在未來尋找這個。

  1. 通過Visual Studio運行測試。手動安裝Controller和代理。設置控制器時不要註冊團隊集合。設置控制器服務器的代理集名稱包括:6901。系統應該自動將測試用戶添加到系統中。如果您在域中運行,則可能需要將該VM添加到域中。

  2. 通過MTM運行測試。使用MTM在機器上安裝代理和控制器。只能從MTM運行測試,因爲它們無法從VS運行。

  3. 如果您想使用visual studio和MTM運行測試,您將需要爲每個設置設置兩個虛擬機。

使用Visual Studio遠程運行測試的注意事項。

  1. 啓動遠程連接到將運行測試的服務器(遠程連接必須打開才能運行測試)。如果您使用hyper-v,則有解決方法。連接可以隱藏在應用程序後面,但不能最小化。
  2. 由於我們的域設置有問題,我無法運行遠程測試,除非我運行連接到VPN,現在可以使用幫助臺來解決此問題。如果您有連接問題,請嘗試此操作。
  3. 在代理安裝上禁用屏幕保護程序的設置似乎不起作用,至少它在9個不同的虛擬機上不適用於我。我不得不通過註冊表編輯並自動登錄。
  4. 您可以使用vstest.console.exe遠程運行測試,而不使用visual studio或MTM,我更喜歡運行遠程PowerShell腳本,但您也可以使用測試設置文件。 https://msdn.microsoft.com/en-us/library/jj155796(v=vs.110).aspx使用與從Visual Studio運行相同的控制器和代理設置。
  5. 如果控制器是在不同的域務必使用完全合格的域名,即myserver.companyname.corp
相關問題