我们有几个Angular应用程序(Micro UI),并且它们全部都由我们用Protractor(基于Selenium的Angular测试框架)编写的UAT(用户接受测试)所涵盖。
这种方法有很多问题,尽管这可能是Angular测试的最佳建议方法:
- 费时...不明白我的意思。这些测试非常方便,每当我们进行更改时,我们都会让它们运行(它们实际上已集成在我们的CI / CD管道中),并确保该应用程序仍可以按照我们希望的方式运行。但是尽管如此,即使我们至少手动测试了一次用例,也必须用Protractor / Jasmine编写。并且需要时间。.
- 这些测试非常依赖HTML结构。有些定位器发现带有xpaths的html元素(非常糟糕),有些带有id等。但是最后,HTML的任何更改都将以某种方式导致我们的测试发生更改。.尽管该更改最终不会改变UI上的任何内容。用户。
- 整个CSS被忽略。像典型的Selenium测试一样,所有测试都是针对DOM运行的,除了检查隐藏/显示字段的测试外,超过90%的CSS都将被忽略..如果有一天,单行不应该以2行显示显示,实际上显示为2行,我们不会自动知道。
我想象这样的测试框架:您在浏览器上打开应用程序,然后启动测试框架的键盘/鼠标捕获工具。然后,您开始在浏览器中的应用程序上测试场景,例如,将鼠标移到特定位置,单击按钮,从下拉列表中选择一个值,发生重定向,最后查看您的屏幕上查看是否在右侧显示了所需的X文本。
捕获工具唯一不知道的是您真正检查的内容(右侧的X文本)。为此,您需要截取该区域的屏幕截图,然后放入测试框架。
然后,在管道上进行测试时将重播这些鼠标/键盘捕获,并且针对这些屏幕截图进行检查/确认。.即使有些像素偏移,如果您不希望在css微小变化的情况下测试失败,也可以
这会有用吗?您知道这样的框架吗?特别是我们可以将其用于Angular应用程序吗?您认为这种方法在时间和质量上都更好吗?
好处是:
- 由于您只是在完成实现后手动测试应用程序时才运行捕获工具,并制作了一些屏幕截图并将其以某种方式放入框架中,因此测试不会像编写UAT的代码那样浪费很多时间。 / li>
- 它们通常独立于HTML结构运行。因此,只要我们的按钮位于其位置和行为上,如果它现在在DOM中又有一个div父级,就不会打扰我们。
- 由于我们比较图片,因此我们的CSS也将受到测试。
- 最后,这正是我们想要的,在应用程序上查看并查看它是否正确,单击并输入一些键盘事件,然后再次检查是否看到我们想要的内容。不像量角器或硒测试,只是盲目地与DOM通信。