自动化Windows用户界面测试方法

4
我们正在寻找建立自动化UI测试的最佳方法,想知道潜在的问题和是否需要高成本来实现。谢谢提前。B

1
可能的重复问题:http://stackoverflow.com/questions/120359/tools-for-automated-gui-testing-on-windows,https://dev59.com/0nVC5IYBdhLWcg3wrDNd - Nick Meyer
3个回答

8
自动化测试的最大开销可能是时间。有很多非常昂贵的工具,但也有免费的工具。即使是昂贵的工具的成本也不太可能匹配到适当设置自动化测试所需的时间成本。只要管理层明白需要付出重要的前期成本,并愿意去实施,那么在实际自动化测试时需要注意以下问题:
陷阱
可维护性
自动化的长期成本在于维护。请记住,自动化测试就是软件开发。这意味着您拥有与任何其他软件相同的潜在问题。这也意味着在自动化测试中应用提高软件可维护性的相同方法。 (这就是为什么我认为所有使用vbscript而不是适当的面向对象语言的“专业”工具都是垃圾的原因。)
"自动化测试也有其特殊的可维护性问题。最大的问题是使用界面而非 API。如果您曾经不得不使用不稳定的 API,您可能会开始理解通过不断变化的界面运行程序所带来的痛苦。幸运的是,已知这个问题的解决方案,尽管并不总是实现得很好:对象映射。您可以在一侧连接到界面,另一侧连接到代码的某些层次结构。代码一侧尽可能保持稳定,而界面一侧可以根据需要随时更改。"
"以下是我工作框架的一个示例:"
public Image GoImage
{
  get { return Browser.Image(Find.ById("BtnGo")); }
}

这个例子使用了WatiN。我可以在脚本中写入诸如GoImage.Click()之类的代码行,如果图像标签的ID发生变化,我只需要更新映射而不是更改所有脚本。

不应自动化的测试

并非所有测试都应该自动化。有时自动化一个测试所需的时间比手动运行它还要长。如果这是一个你只会运行一次或几次的测试,最好不要自动化它。你可以通过创建快速创建自动化测试的方法来缓解这种情况。如果合适,数据驱动的测试自动化是一个很好的方法。通过我们的测试自动化框架,我们可以通过修改电子表格中的十几行代码来创建新的测试。
你也应该犹豫不决地创建只部分自动化的测试脚本。这通常发生在您可以自动化测试步骤,但验证必须手动完成的情况下。理论上,你可以让自动化程序在UI上飞行并在用户检查时停止,从而获得一些速度增益,但心理因素会起到作用。大多数人会在自动化运行时调整,并需要花费与手动运行整个测试相同的时间来弄清楚他们应该检查什么。

方法

就像我之前所说的,自动化测试是软件开发,因此您需要以此方式进行。以下是我找到的最基本的测试自动化设计:

接口库

您需要某种东西来让您以编程方式控制用户界面。商业工具往往做得不错,但最近出现了一些开源项目也很好地处理了这个问题。对于Windows UI,有white。我从未使用过它,但我喜欢API。Web自动化真正属于开源工具,例如watirWatiN

框架

框架是一个通用术语,用于指代您需要自行创建的所有内容。对象映射、辅助函数、数据驱动脚本运行器。商业工具试图为您提供这些内容,但我从未找到过完全符合我的需求的工具。我总是在这里自己开发框架。这是大部分维护工作所在的地方,这就是我对使用像VBScript这样的弱语言的工具非常不满的原因。我更喜欢使用.NET创建框架。

测试运行器

你需要一些东西来实际运行测试。商业工具也提供此功能,并且在这方面做得足够好。但它们并不比单元测试程序更好。是的,NUnit对于UI自动化测试和单元测试同样有用。您还可以很容易地编写自定义测试运行器。
日志记录和结果
您需要某种方式来知道测试是否成功。任何现有的日志记录库,如log4n/log4j,都可以使用。测试运行器通常也内置了此功能。商业工具通常也在结果方面表现良好,只要避免专有格式即可。
测试脚本
显然,您需要测试本身。
我想说的最后一件事是,测试自动化可以减少进行相同数量的测试所需的时间,但当您具有在相同时间内进行更多测试的思维模式时,它的效果更好。

7
我们一直在使用基于Microsoft UI Automation框架的自主开发工具和库成功地进行自动化UI测试。这是一个有点陡峭的学习曲线,但非常值得。
我建议阅读Michael的Automation Stack以了解如何构建您的代码结构。您还可能会发现我的Introduction to UI Automation有用。

1

UI测试工具的许可费用可能非常昂贵。值得注意的是,Visual Studio 2010具有执行UI测试的功能,这可能是一种相对便宜的选择。我无法确定它的好坏。


我看了一个演示,它确实令人印象深刻,这可能是飞行的方式。 - Burt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接