我们正在寻求建立自动化的UI测试,并想知道最好的方法是什么,潜在的缺陷是什么,设置是否昂贵?
提前致谢。
B
答案 0 :(得分:8)
自动化测试的最大开支可能是时间。有很多非常昂贵的工具,但也有免费的工具。甚至昂贵的工具的成本也不可能与正确设置自动化测试所需的时间成本相匹配。只要管理层了解需要大量的前期成本并且愿意接受它,那么在实际自动化测试时要注意这些:
自动化以维护的形式存在长期成本。请记住,自动化测试是软件开发。这意味着您具有与任何其他软件相同的潜在问题。这也意味着改进软件可维护性的相同方法适用于自动化测试。 (这就是为什么我认为使用vbscript而不是适当的OO语言的所有那些“专业”工具都是垃圾。)
自动化测试也有其特殊的可维护性问题。最大的问题是您使用的是UI而不是API。如果您曾经不得不使用不稳定的API,您可能会开始了解通过不断变化的UI运行程序的痛苦。幸运的是,如果并不总是很好地实现了解决方案:对象映射。你基本上有一些层连接到一侧的UI和另一侧的代码。代码端保持尽可能稳定,而UI端可以根据需要随时更改。
我工作的框架中的一个例子:
public Image GoImage
{
get { return Browser.Image(Find.ById("BtnGo")); }
}
此示例使用WatiN。有了这个,我用GoImage.Click()
这样的脚本编写行,如果图像标记的id发生变化,我不会更改所有脚本,只更新映射。
并非每项测试都应自动化。有时,自动化测试需要的时间比手动运行要长。如果测试只是你要运行一次或只运行一次,那么最好不要自动运行它。您可以通过创建快速创建自动化测试的方法来缓解这种情况。如果合适,数据驱动的测试自动化是一种很好的方法。使用我们的测试自动化框架,我们可以通过修改Excel电子表格中的十几行来创建新的测试。
您还应该犹豫是否要创建仅部分自动化的测试脚本。当您可以自动执行测试步骤时,通常会发生这种情况,但验证必须手动完成。从理论上讲,你可以通过让自动化在用户界面中飞行并在用户进行检查时停止来获得一些速度提升,但心理学会阻碍。大多数人会在自动化运行时调出,需要花费很多时间来弄清楚他们应该检查什么,因为他们必须手动运行整个测试。
正如我之前所说,自动化测试是软件开发,所以你就是这样做的。这是我发现的最基本的测试自动化设计:
您需要能够以编程方式控制UI的内容。这是商业工具往往表现良好的部分,但最近出现的开源项目也能很好地解决这个问题。对于Windows UI,有white。我从未使用它,但我喜欢API。 Web自动化实际上属于watir和WatiN等开源工具。
框架是您自己创建所需内容的通用术语。对象映射,辅助函数,数据驱动的脚本运行器。商业工具试图为您提供这些,但我从来没有找到一个完全符合我需要的工具。我总是在这里自己动手。这是大多数维护工作的地方,这就是为什么我对使用像vbscript这样的弱语言的工具如此沮丧。我更喜欢使用.NET创建一个框架。
你需要一些东西来实际运行测试。商业工具也提供了这一点,在这里他们做得很好。但它们并不比单元测试程序好。是的,NUnit对于UI自动化测试和单元测试同样有用。您也可以非常轻松地编写自定义测试运行器。
您需要一些方法来了解测试是否成功。大多数现有的日志库如log4n / log4j都可以使用。测试跑步者通常也会内置此功能。只要您避免使用专有格式,商业工具通常也能很好地完成测试。
显然你自己需要测试。
我想说的最后一件事。测试自动化可以减少进行相同数量测试所需的时间,但是当您在相同的时间内进行更多测试时,它会更好地工作。
答案 1 :(得分:7)
我们一直在使用我们自己的基于Microsoft UI Automation框架的本土工具和库成功进行自动UI测试。它有点陡峭的学习曲线,但值得。
我建议您阅读迈克尔的Automation Stack,了解如何构建代码。您可能还会发现我的Introduction to UI Automation很有用。
答案 2 :(得分:1)
UI测试工具的许可证费用非常非常昂贵。值得注意的是,Visual Studio 2010具有UI testing的功能,这可能是一个相对便宜的选择。我不知道它有多好或不好。