在Coded UI中解释页面对象模型体系结构

时间:2017-02-09 14:03:22

标签: selenium automated-tests coded-ui-tests

什么是"页面","对象"和"模型"编码用户界面中的架构?
我们可以使用编码的UI自动化数据库测试吗? 用一个简单的例子来解释它会很有帮助。

2 个答案:

答案 0 :(得分:0)

我有一个网站Coded UI Examples,试图分解如何使用编码的ui及其原因。

然而,你的问题相当广泛。

如果您正在查看Web测试,那么Page将是浏览器中的当前页面或浏览器中页面上的某些控件。由于传统的Web开发多年来发生了变化(考虑SPA),因此Page的定义不太清楚。在MVC时代,通常每个页面都有一个表单或结果表或不同的东西。现在,使用SPA,页面将拥有大量控件并使用单个实际页面模拟多个页面。因此,页面或多或少是您正在测试的最重要的容器。

我个人将页面对象与页面模型区分开来(这不一定是你在其他地方找到的标准),页面对象跟随Martin Fowler's definition,并将控件的粒度抽象为更有意义的操作。

我喜欢创建页面模型,它是页面上控件的精确镜像。然后,我使用这些页面模型来创建类似于页面对象的更强大的对象。我更多地讨论了差异on my blog。从本质上讲,我发现传统的Page Objects是God Objects,它对页面中的所有内容都有太多的了解。通过细分这些职责,您可以获得更多可重复使用的代码。

虽然您可能可以通过编码的ui进行某种类型的数据库测试,但实际上并不是进行此类测试的正确技术。使用编码的ui来测试数据库将更多地是一种集成,以确保数据库最终注意到前端操作。此外,编码ui测试的速度可能会使测试数据库变得痛苦,因为您必须操纵UI来制定可以使用单元测试直接触发的命令。

答案 1 :(得分:0)

没有。在任何情况下都不应使用CodedUI进行数据库测试。

CodedUI是一个用户界面测试框架。它依赖于msTest的一部分 - 一个单元测试框架,它有点适合数据库测试。

CodedUI的架构基于这样一种理念,即应用程序或网页中的所有元素都是父母和子女的层次结构。页面有一个标签,其中有一个表格,其中一行有一个单元格。 CodedUI标识行的子节点的单元格,它是表的子节点......等等。