我们目前正在使用Selenium Webdriver& amp; JUnit针对B2C产品。由于我们使用的是Selenium,因此脚本完全依赖于UI。鉴于该产品不属于科技创业公司,UI&工作流程不断变化/发展@频率非常高。
结果:应该验证应用程序神圣性的冒烟测试仍然失败。团队花费更多时间修复脚本而不是验证构建。
我很确定那里的大多数自动化人员都会面临类似的问题。快速开发周期。期待看到业内其他人遇到类似问题的方法。
注意:前端是用PHP开发的
答案 0 :(得分:0)
Webdriver的工作原理大致如下:有一个起点,webdriver与之交互(例如通过模拟按钮按下),然后找到要与之交互的下一个项目。下一个项目可能在下一页或同一页面上。它可能以各种方式被发现,通过id或第3个div = class =“foo”等。
测试就像页面加载200 OK一样,字符串“login”出现在特定的地方等等
更改用户界面的问题是所有元素都“移动”。 ids改变,第3级div foo消失。这意味着webdriver交互失败,如果他们正在寻找特定元素的测试也将失败
一种解决方案是针对一组ID进行开发和测试。这些ID将引用固定的UI元素。所有在webdriver中搜索都应该使用id。编写PHP的开发团队会将ID放在正确的位置。
这组id也可以作为一种规范的基础,可以用不同的方式向不同的利益相关者解释UI流程。
我不知道在测试和开发代码中处理这个管理ID的过程的任何特定产品,但维护这样的“词典”来描述UI项目不应该是一项主要任务
答案 1 :(得分:0)
受测系统越多功能就越重要的是在Selenium之上建立一个框架,以减少更改的维护工作量。 对于受测试系统中最常见的更改,有几种已知模式可以帮助您减少维护工作:
通过使用UIMaps对应用程序的UI进行建模,可以非常轻松地处理更改的ID,CSS类或类似的更改
PageObjects减少了更大的UI更改工作量(例如,当输入字段从TextBox更改为Dropdown字段时)
使用关键字驱动测试来模拟测试用例,而无需了解底层技术表示。即一个关键字从用户的角度封装一个动作 - 一个关键字的例子可以是:“loginWithValidUser()”
如果UI /应用程序/工作流程经常发生剧烈变化,请不要仅仅使用UI进行烟雾测试。大多数情况下,通过在没有任何Web-UI的情况下调用WebServices来测试某些功能也很有帮助