测试执行
Test Execution 是建立在 Total Control 基础上的自动化测试框架。该框架基于XML设计,帮助用户轻松对多个应用或单个应用的不同模块进行全面测试。通过采用结构化的方法,让用户能够方便地定义测试套件、测试工具和依赖关系,实现模块化和可重用性。该框架利用stest框架中的FindNode和assert机制,帮助定位应用中的特定元素,并检查它们的属性或行为,确保每个部分都正常工作。
结构和组件
测试控制器(Test Harness)
测试控制器是用于组织测试执行的顶层容器。它可以引用测试套件文件(Test Suite)和其他测试控制器文件,允许以层次结构组织测试。这种结构使测试人员能够根据测试阶段的范围和需求,灵活地对测试进行逻辑分组,并在不同的细粒度级别执行测试。
每个应用程序至少需要一个包含一个或多个套件文件的控制器文件。
测试套件(Test Suite)
每个测试套件的 XML 文件都封装了一系列测试脚本,每个脚本都有唯一标识符和可选的依赖项。套件中包含详细的配置,例如开始日期、时间、迭代次数以及测试运行规范,以便选择性地执行测试。
FindNode and assert
测试框架的核心在于每个测试脚本中使用的 FindNode 和 assert 函数。FindNode 负责在被测应用程序中定位特定元素,使用名称、ID 或其他属性作为标识。一旦找到元素,assert 语句会用来验证其属性,如文本内容、颜色、可见性或其他相关属性。这种方法确保每个元素不仅存在,而且按预期行为运行,从而为验证复杂应用程序的功能提供了强大的机制。assert 失败则意味着测试失败,否则即为通过。
结论
这个基于 XML 的测试框架为管理多个应用程序或单个应用程序的各个部分的大规模测试活动提供了强大且灵活的解决方案。其层次化结构与 FindNode 和 assert 函数的精确性相结合,提供了一个全面的工具集,确保应用程序的质量和可靠性。通过将测试定义和配置集中在 XML 文件中,该框架方便了测试组件的维护、可扩展性和可重用性,使其成为任何严格测试流程中的宝贵资产。
示例
测试控制器(Test Harness)
测试控制器作为我们测试层级中的根级别,负责协调多个测试套件的执行,必要时也可以管理其他测试控制器。这种方式使我们能够灵活扩展,测试应用程序中的各种组件。
<TestHarness>
<Name>主应用程序测试控制器</Name>
<TestSuiteFiles>
<TestSuiteFile path="path/to/ui_tests.suite" />
<TestSuiteFile path="path/to/api_tests.suite" />
<!-- 可以在此处添加其他测试套件文件 -->
</TestSuiteFiles>
<TestHarnessFiles>
<!-- 如果此测试控制器需要运行其他测试控制器 -->
<TestHarnessFile path="path/to/another_harness.harness" />
<!-- 可以在此处添加其他测试控制器文件 -->
</TestHarnessFiles>
</TestHarness>
测试套件(Test Suite)
测试套件是针对应用程序中特定功能或特性的测试脚本集合。它们旨在将相关测试分组,以便高效执行和管理。在此版本中,设计被简化,将 ID 和依赖项推送到各个脚本中。
<TestSuite>
<Name>UI Test Suite</Name>
<AppName>com.example.myapp</AppName>
<Description>应用程序的用户界面功能测试</Description>
<TestScripts>
<TestScript prefix="LP">
<Path>tests/ui/login_page_tests.py</Path>
</TestScript>
<TestScript prefix="SM">
<Path>tests/ui/message_sending_tests.py</Path>
</TestScript>
<!-- 根据需要添加更多 TestScript 条目 -->
</TestScripts>
</TestSuite>
测试执行配置 (TestExecutionConfiguration(TEC))
该组件概述了测试执行的动态方面,如开始时间、设备规格、迭代次数以及需要运行的特定测试。这允许根据各种场景和需求灵活地执行测试。
<TestExecutionConfiguration>
<Target>
<Type>Harness</Type>
<FilePath>path/to/mainApplicationTestHarness.harness</FilePath>
</Target>
<LogConfiguration>
<ReportLogPath>report.log</ReportLogPath>
<ExecutionLogPath>test.log</ExecutionLogPath>
</LogConfiguration>
<StartTime>2024-04-10T08:00:00</StartTime>
<Devices>
<Device name="Pixel 4"/>
<Device androidVersion="10" count="10"/>
<Device name="Galaxy S20"/>
<Device groupName="group1"/>
<Device androidVersion="14" count="10"/>
<Device groupName="group2" androidVersion="14"/>
<Device groupName="group2"/>
</Devices>
<Iterations>5</Iterations>
<TestRun>
<Include>LP:1</Include> <!-- 登录页面测试中的测试 ID 1 -->
<Include>LP:2-4</Include> <!-- 登录页面测试中的测试 ID 2 到 4 -->
<Include>SM:10</Include> <!-- 发送消息测试中的测试 ID 10 -->
</TestRun>
</TestExecutionConfiguration>
TEC 是可执行的,一旦执行完成,将为 TEC 运行生成两个文件:JSON 格式的结果文件和日志文件。框架将运行“报告生成器”来解析结果和日志文件并处理数据。测试框架捆绑了一个非常基础的报告生成器,用户可以自由选择使用自己的报告生成器。
Total Control 中的实例
Total Control 提供了一个完整的 App 自动化测试示例。安装 Total Control 以后,您可以在这个目录中看到:%appdata%\Sigma-RT\Total Control\modules\test
运行自动化测试
通过命令行运行
打开 Total Control - Script - Terminal,在终端里输入以下命令运行脚本
addToClasspath('C:/Users/admin/AppData/Roaming/Sigma-RT/Total Control/modules/test'); //将路径设置为您的自动化测试脚本所在目录
runTest("TestExecutionConfiguration.tec") //运行测试执行配置文件
通过用户界面运行
通过用户界面,可以方便的生成测试执行配置文件(*.tec)并运行它,也可以编辑已保存的 *.tec 文件。
在 Total Control 的脚本窗口点击 “测试执行器” 打开测试执行器窗口。
点击“+”创建一个新的测试执行配置文件。
创建完成后点击“保存并运行”,指定文件名及保存位置后,开始测试。 (也可以打开已经保存的测试执行配置文件(后缀名为”.tec”),点击“保存并运行”,开始测试。)
可以看到,列表中增加了一条记录。
点击记录后的日志图标可以查看报告日志和执行日志