多版本应用程序自动化 - TOSCA

multi version application automation - TOSCA

有没有办法管理具有相同测试用例的多个版本的 TOSCA 模块。请考虑以下情况:

有 3 个版本的应用程序正在生产中。对于每个版本,在为自动化而扫描的模块中都有小到中等的变化。我们必须使用 TOSCA 在每个版本上维护和执行测试用例。我们知道我们可以创建多个测试用例和模块副本来管理它,但这会创建多个自动化测试步骤和模块的工作副本。

有什么有效的方法可以避免测试用例和工作的重复?

Tricentis Tosca 11.2 引入了分支和合并以支持测试被测系统的不同版本。

此功能类似于您将用于应用程序的版本控制。这样您就可以为应用程序的每个版本创建一个分支。

Creating and Managing Branches in Tricentis Tosca

如果您不是 MartinThe 的回答中提到的 运行ning 11.2,您可以试试这个...

因此,我管理我的测试脚本,以便它们可以 运行 在多个测试环境 - Dev、SIT、UAT 等。我从一个名为 "Prepare Test Data" 的文件夹开始每个脚本,并在该文件夹通常只是多个设置缓冲区步骤。此文件夹是驱动环境差异的关键。

首先,我使用名为 "TestEnvironment" 的测试配置参数。因为这是一个测试配置参数,它可以直接附加到测试用例或测试用例文件夹,并且它向下级联到包含在其中的任何测试用例......所以,我在我的蓝色部分中将 TCP 设置为 "SIT"因为我使用我的 SIT 环境开发我所有的自动化脚本来玩。执行时,我还在我的执行列表(绿色部分)上使用 TCP "TestEnvironment",因为在那里找到的 TCP 覆盖了蓝色部分的 TCP。因此,尽管我的测试脚本设置为 "SIT",但我的执行列表可以设置为 "DEV" 或 "UAT",并且在通过执行列表执行时,它们 运行 与 TCP设置为那个。

接下来,在 "Prepare Test Data" 块中,我设置了切换缓冲区。这里的计划是脚本中的所有测试步骤都只使用简单的基本缓冲区,如 "Username"、"Instrument Ref#" 等。因此,准备测试数据块会使用测试数据预加载这些缓冲区, 但它会根据我 运行 在其中运行脚本的环境进行切换。我将使用缓冲区 "Username" 作为示例...

在第一个 Set Buffer 块中,我创建了三个这样的缓冲区:

Username-DEV = "Fred"
Username-SIT = "TestUser1"
Username-UAT = "TestDude"

{(*advanced note) 有时我的脚本更高级,我从测试用例设计测试表中提取数据...在那种情况下,上面的内容看起来更像这样:Username-SIT = "{XL [测试 Data.Users.Clerk User.SIT]}",其中数据表将包含所有不同的用户,通常存储在 TCD 类 中......我可以在不同的主题中讨论......}

在下一个“设置缓冲区”步骤中,我将缓冲区切换为测试步骤将使用的最终值,如下所示:

Username = "{B[Username-{CP[TestEnvironment]}]}"

因此,在此示例中,如果 TestEnvironment 设置为 SIT,则 Username 将设置为 Username-SIT 的值,即 "TestUser1" 。这种切换发生在测试期间 运行.

(*高级说明:)您必须使用单独的设置缓冲区步骤,因为 Tosca 似乎按顺序同时执行单个 "step" 的所有部分。我的意思是 "Username-SIT" 的缓冲区在第一个设置缓冲区步骤完成之前不会存在,因此如果您在同一步骤中合并对用户名缓冲区的分配,它将崩溃。(或使用旧的, 可能是错误的值)

在此之下,我所有的测试步骤都可以使用基本缓冲区,例如 "Username" 而不是 "Username-SIT",因为它们都是 "switched".

使用这种技术,并具体回答您的问题,我还会使用 Tosca IF 块来分隔正在使用的模块。例如,在我的测试环境中,SIT 和 UAT 之间的登录屏幕之一非常不同,以至于我不能对两者使用相同的模块。所以,一个简单的IF块就可以切换它。

IF
   Condition
      TBox Evaluation tool
         Expression = "{CP[TestEnvironment]} == "SIT"
   Then
      SIT-version of module
         Username = "{B[Username]}"
   Else
      UAT-version of module
         Username - "{B[Username]}"    <-- can use same buffer because its' already switched

当然,如果您需要两个以上 environments/versions,您可以堆叠 "IF-ELSE-IF" 个方块。我希望你明白了。