跨计算机执行

TAEF 支持在一台计算机上执行Te.exe,但在单独的计算机上运行测试。 TAEF 对执行测试所需的二进制文件进行身份验证、授权和部署,并将所有信息记录回原始控制台。

先决条件

若要远程执行测试,必须满足以下要求:

  • 必须在目标计算机上安装并运行 te.Service (x86 或 x64) 。

使用域帐户执行

  • 域帐户必须是管理员或目标计算机上的本地“远程 TAEF 用户”组的成员。

使用非域帐户执行

  • 本地 (非域帐户) 在两台计算机上必须具有相同的用户名和密码。

  • 该用户必须是目标计算机上的本地“远程 TAEF 用户”组的成员。

  • 在主机上,本地用户可以执行Te.exe,或者,你也可以将本地用户的通用凭据添加到凭据管理器。

    cmdkey /generic:<targetmachine> /user:<user_name> /pass:[PLACEHOLDER]
    
  • 如果在已加入域的计算机上运行,则已加入域的计算机必须具有 IPSec 边界排除。

远程执行测试

/runOn:

若要远程运行测试,必须指定 /runOn:<machine name> 参数以Te.exe以及其余命令。 如果满足先决条件,则其余用户体验将与在本地执行测试时发现的体验相同。 所有日志输出都将保存/写入本地计算机。

例如:

te unittests\wex.common.tests.dll /runon:TAEFTest1
  • 将测试所需的所有二进制文件发送到目标计算机 (TAEFTest1) ,并远程执行存在于wex.common.tests.dll中的所有 TAEF 测试,同时记录回控制台。

如果由于 HRESULT 0x800706BA而无法连接到远程计算机,并且确定计算机名称拼写正确,请尝试使用计算机的 IP 地址或使用 /disableTimeouts 开关。 有时,DNS 延迟可能足够大,导致连接尝试超时。

注意: 如果这是首次指定 /runOn: 命令,则可能需要在防火墙排除对话框中单击“ 取消阻止 ”以Te.exe。

测试依赖项

Te.exe自动确定测试的所有本机和托管模块依赖项,并将其连同测试 dll 一起发送到远程计算机。 这不包括 系统 二进制文件和测试所需的任何 COM 库。

可以通过 /TestDependencies 命令行参数以分号分隔的文件或目录列表的形式手动指定其他测试依赖项。

  • 文件

    每个文件规范可以包含通配符 (test.txt;test*.dll;等) 。 例如:

    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:*verification*.jpg;mysample.txt
    
    • 将测试所需的所有二进制文件发送到 TAEFTest1,以及找到与 /TestDependencies 参数中指定的文件匹配的任何文件。
  • Directories

    TAEF 支持递归目录搜索存在于包含测试二进制文件的目录 或目录下方 的目录。 例如:

    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\...
    
    • 将测试所需的所有二进制文件发送到 TAEFTest1 以及 unittests 目录内或下方的所有文件/目录。 TAEF 保留目录层次结构。
    _    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\*.jpg...
    
    • 将测试所需的所有二进制文件发送到 TAEFTest1 以及 unittests 目录内或下方的所有 jpg 文件。 TAEF 保留目录层次结构。

    注意:如果指定一个递归或非递归目录搜索来搜索测试目录 或测试目录下 不存在的目录,则所有文件都将复制到远程计算机,但目录层次结构将被平展。

可以通过 DeploymentItem 元数据指定测试依赖项

用户上下文

默认情况下,TAEF 会尝试使用用户上下文在远程计算机上运行测试。 它通过以下方式执行此操作:

  • 枚举远程计算机上的所有活动会话,并查找你拥有的会话。
    • 如果 TAEF 在远程计算机上找到你拥有的会话,则会在该桌面 (运行该会话中的测试,等等) 。

      注意: 这不一定是控制台会话。 它可以是远程桌面会话。

    • 如果 TAEF 在远程计算机上 找不到 你拥有的会话,它将运行测试,作为登录到控制台会话的用户 (该桌面等) 。

    • 最后,如果你在远程计算机上没有会话,并且没有人登录到控制台会话,TAEF 将在会话 0 中运行测试 (非交互式) 。

运行方式

如果在 /runOn 之外指定 /runAs 值,则 TAEF 除了满足 /runAs 设置所需的启发之外,还会使用上述启发法。 例如:

te unittests\wex.common.tests.dll /runon:TAEFTest1 /runas:system
  • 使用系统帐户在 TAEFTest1 上wex.common.tests.dll执行所有 TAEF 测试。

工作原理

  • Te.exe连接到远程计算机上运行的 Te.Service 实例
    • Windows 身份验证 (协商) 使用 Te.Service 对你进行身份验证。
    • Te.Service 通过验证你是远程计算机上的本地“远程 TAEF 用户”组的管理员或成员来授权你。
  • Te.Service 在 RemoteTests 下创建一个与测试 dll 同名的目录。
  • Te.exe生成在远程计算机上执行测试所需的文件列表。 此列表包括:
    • 必要的 TAEF 二进制文件
    • 测试 dll 的所有本机和/或托管二进制依赖项 (不包括系统二进制文件)
    • /TestDependencies 参数中指定的任何其他文件
  • Te.exe将测试依赖项列表以及每个文件的 CR 发送到 Te.Service。
  • Te.Service 查找远程计算机上的每个文件并比较 CRC 值。 将从列表中删除任何匹配项,并将该列表发送回客户端。
  • 如果依赖项列表中有任何文件,Te.exe将每个依赖项发送到 Te.Service。
    • Te.Service 将它们 <保存在 Te.Service 目录>\RemoteTests\<test dll 名称> 目录中。
  • Te.exe要求 Te.Service 使用正确的 用户上下文在远程计算机上启动新的 Te.ProcessHost.exe 实例。
  • Te.exe连接到远程Te.ProcessHost.exe实例并开始执行测试。