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