标题借用《web之困》这本书名,借机吐槽一下在web自动化测试中遇到的各种不顺畅。看了这本书,大感欣慰,因为终于有专家说出了我多年想说而不好意思说的话——现在的web应用是建立在一堆胡乱拼凑的技术基础之上的。
  从底层协议级定义不周到渲染技术的五花八门;从古老的html、css、java applet、ActiveX到javascript、flash、sliverlight、html5;从浏览器的各显神通到眼花缭乱的版本升级;从静态到动态;从即时到异步,真是一个百家争鸣、百花齐放啊。虽说给普通用户带来了赏心悦目的享受,可真苦了我们这些测试工程师了。手工做浏览器兼容性测试都不是一般的麻烦,更别提自动化了。十几年前我每样技术都尝试去学习,后来发现我学的速度还赶不上技术新出的速度,于是我厌倦了,从此对web前端技术及其排斥。我幻想着某前端技术可以统一得象操作系统那样规矩和稳定。不过看来一时半会还实现不了,所以厌倦归厌倦,活还是要干的,所以几年来我也在考虑这是非做不可的。于是前一篇提到的vs2010是一个尝试。当时考虑操作系统是ms家的、浏览器是ms家的、自动化工具是ms家的甚至C#语言也是ms家的,要是这样还不顺利,恐怕别的工具更别指望了。事实上,我还是低估了事情的复杂性。
  录制/回放遇到的麻烦随便列举一下有这些:
  只支持ie,且不能使用64位版本
  视图缩放比例要求必须为
  不能识别flash插件
  各种意外(如窗口没有在前端、没有大化等、控件被阻止运行……)导致回放中断
  建立自动化任务时不能在后台运行(因为要在桌面环境真实启动浏览器),所以管理员必须登录。这样一来,服务器一旦重启无法做到无人值守的继续运行
  ……
  诸如此类,总之想顺利走通一段自动化脚本可费劲了,经常是烦不胜烦
  为此我还总结出一堆录制脚本的经验,比如:
  把场景分割成每段尽量少操作的多个脚本文件
  尽量用键盘操作,少用鼠标操作
  屏幕上尽量少留无关窗口
  对于浏览器,尽量在同一个页签中操作,尽量避免弹出窗口造成主流程被干扰
  动作、脚本之间留的延时要足够,比如连续执行两条sql,有可能第二条执行出错
  ……
  但真要把这些问题都注意到了,费的心还不如手工来一遍算了。再说费这么大事只是为了回归验证以前的功能,确实有点得不偿失。所以过后反思起来有这样一些教训:
  1.目标定位有偏差。借鉴自Apple Chow观点:只保留少数几个用来验证端到端的集成场景的高级别冒烟测试,除此之外尽可能编写底层的测试。
  2.工具不给力。当然如果有google的水平,自行探索和开发各式各样的测试工具和框架那自然是厉害了,但是没这水平啊,还是只能找现有的工具用。
  后续准备尝试selenium。说到这里,想起有的团队成员提出经常换工具的困扰。——这个问题应该这样看:使用工具是为了解决问题,是人的思想和能力去驾驭工具而不能让工具限制了人的思想和能力。所以要去掌握事物的本质,那么换工具也会是经常和顺理成章的事情。