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

时间:2018-07-19 10:53:54

标签: automation tosca

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

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

是否有任何有效的方法来避免测试用例和工作的重复?

2 个答案:

答案 0 :(得分:2)

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

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

Creating and Managing Branches in Tricentis Tosca

答案 1 :(得分:0)

如果您没有像MartinThe的答案中提到的那样运行11.2,则可以尝试...

因此,我对测试脚本进行了管理,以便它们可以在多个测试环境(例如Dev,SIT,UAT等)中运行。我用一个名为“准备测试数据”的文件夹启动每个脚本,该文件夹中通常只有多个设置缓冲步骤。此文件夹是驱动环境之间差异的关键。

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

接下来,在“准备测试数据”块中,设置我的切换缓冲区。此处的计划是针对脚本中的所有测试步骤,仅使用简单的基本缓冲区,例如“用户名”,“ Instrument Ref#”等。因此,Prepare Test Data块将这些缓冲区与测试数据一起预加载,但是它会根据运行脚本的环境进行切换。我将使用缓冲区“ Username”作为示例...

在第一个Set Buffer块中,我创建三个缓冲区,如下所示:

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

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

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

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

因此,在此示例中,如果将TestEnvironment设置为SIT,则将Username设置为Username-SIT的值,即“ TestUser1”。这种切换是在测试运行期间实时进行的。

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

在此之下,我所有的测试步骤都可以使用“ Username”之类的基本缓冲区,而不是“ Username-SIT”,因为它们都已被“切换”。

使用这种技术,并专门回答您的问题,我还将使用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

当然,如果需要两个以上的环境/版本,则可以堆叠“ IF-ELSE-IF”块。我希望你能明白。