AAA 是 Coded UI 测试的好习惯吗?

Posted

技术标签:

【中文标题】AAA 是 Coded UI 测试的好习惯吗?【英文标题】:Is AAA a good practice for Coded UI tests? 【发布时间】:2014-03-14 18:51:06 【问题描述】:

我在所有自动测试(单元测试、系统测试等)中都使用 AAA 语法(Arrange、Act、Assert)。 最近我开始编写 Coded UI 测试。现在我想知道 AAA 语法是否适合这里。与单元测试不同,在单元测试中,每个测试都有一个动作和断言(或多个断言),我可以有数百个运行不到几分钟的单元测试,编码的 UI 测试将运行更长的时间。因此,如果我以与编写单元测试相同的方式编写编码 UI 测试,它们将需要几个小时(如果不是更长的话)来运行。

如果我将编码 UI 测试与手动 UI 测试进行比较,则菜单测试不使用 AAA 语法以节省时间(不要一遍又一遍地执行相同的“排列”操作,只是为了在再次单击后检查字段的值)。

您在应用中做什么?您如何推荐编写 Coded UI 测试?

【问题讨论】:

【参考方案1】:

是的。在这里也使用相同的方法。手动测试人员在一次测试中进行大量验证。在自动化时,最好将多个验证测试用例拆分为更小的测试用例,并且只对每个测试用例进行最少的断言。这将使您的测试用例维护在未来变得容易。一旦您已经在测试方法中完成了断言,再继续使用另一组 AAA 并不是一个好习惯。

时间不是问题。 UI 自动化应该运行缓慢。 CodedUI 测试通常在具有测试控制器和测试代理的测试实验室中运行。在这里,您的数百个测试将在所有测试代理上并行运行,从而减少整体执行时间。

我的 CodedUI 测试方法是这样的:

[TestMethod]
public void VerifyWhenThisThenThis() 

   // Prepare test data, Perform prerequisite action

   // Do test

   // One or more assertions to verify one major requirement only. 

   // If other major verification exist then split the test case 
   // and write a new test method for it.

如果测试用例很大,那么请手动测试人员将其拆分(或自行拆分并通知测试人员)。维护一个单独的自动化测试包,其测试用例比手动测试人员的测试用例短。

【讨论】:

以上是关于AAA 是 Coded UI 测试的好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

在java中对每个方法使用一个大的try-catch是一种已知的好习惯吗? [关闭]

这是问答的好习惯吗?

Coded UI Test学习网站

Coded UI Test学习网站

这是使用 WebView 而不是 Textview 的好习惯吗? [关闭]

PHP:类型检查返回值是弥补 PHP 缺乏泛型的好习惯吗?