预备知识:GUI自动化测试核心技术(二)
作者:强哥   类别:测试开发    日期:2020-07-14 10:27:52    阅读:2579 次   消耗积分:0 分

 实 验 简 介





对于界面级自动化测试来说,目前在企业当中应用相当普遍,究其原因是因为其入门相对简单,同时,目前的各类工具也较为成熟,不需要过多的程序设计经验便可以开始实施起来。并且通过录制回放的方式就可以快速看到效果。


但是,往往也正是因为所谓的表面上的简单实施,导致很多企业盲目上马开展起界面级自动化测试的实施工作。但是随着越来越深入,我们会发现,问题越来越多,到最后不了了之,甚至谈自动化测试色变。


这些都是不可取的,本节内容将主要为大家梳理一下技术体系及实施过程当中的各类可能的问题,以使读者对界面级自动化测试有一个更加清晰的认识,不盲目自信,也不必要灰心丧气。




 实 验 目 的 




(1) 理解界面级自动化测试技术的核心要素。

(2) 理解实施界面级自动化测试的优势与不足。

(3) 对自动化测试技术体系有更加完整的理解。




 实 验 流 程 




5.基于元素的核心属性进行识别。


事实上,每一个展现在界面上的元素,都有一批属性,比如ID,比如类型,比如位置,比如内容等各类属性特征。所以,我们如果通过这些关键属性来识别和操作该对象,那么可以想像,其执行的稳定性必然会高很多。


通常我们平常看到的基于界面的自动化测试工具,均是通过核心属性来识别和操作界面元素的,比如QTP,TestComplete,RFT,Watir,Selenium,CodeUI,AutoIt等各类工具均是如此。但是通常情况下,这些工具也会提供图像识别或鼠标定位等附属功能,以应对一些无法识别到核心属性时情况,可以较好地保证不会因为识别不对对象就不能进行自动化测试。

 

6.界面级自动化测试的优势。


(1) 支持录制回放,大大简化了实施门槛,任何团队均可以实施自动化测试。

(2) 商业工具和开源工具的技术均已经非常成熟,技术体系不再是问题。

(3) 对于标准的应用程序如Windows, .NET, Java, Web等支持得非常好。

(4) 使用了当前比较通用的编程语言进行高级开发,不需要公司有二次投入。

(5) 可以更快速地看到实施效果,进而决定是否继续投入。

(6) 对于黑盒层面的功能性测试,兼容性测试等支持得相对较好。

 

7.界面级自动化测试的难题。


事实上,相比于界面级自动化测试的优势而已,其实施难题也是非常明显的,这也是由其技术实现原理决定的。主要体现在以下几方面:

(1) 由于界面的不稳定性或需求的频繁变更,导致测试脚本的维护成本较高。

(2) 由于入门简单容易上手导致重视程度不够,对风险的预估不足,进而无法持续投入。

(3) 由于在自动化测试上的技术体系不完善,导致单一的界面级自动化测试只能解决部分问题。

(4) 由于项目的周期不长,导致自动化测试的投入成效不显著,最终放弃。

(5) 由于测试人员对编程的理解不够,导致遇到各类特殊情况无法找到有效的解决方案。

(6) 由于项目计划紧张,无法给予自动化测试足够的资源和人力支持。

(7) 由于每一个项目的界面差别较大,导致自动化测试的投入无法获得较高的重用性。

(8) 由于界面级自动化测试完全可以由手工代替,导致其优先级和重要性并没有那么明显。

 

8.关于自动化测试的实践经验。


笔者在自动化测试开发的技术领域和项目实践中积累了多年的经验,各类自动化测试项目实施虎头蛇尾的情况发生较多。所以在此,对于实施自动化测试的团队给予如下一些经验,供各位读者参考:


(1)具备较强的风险意识,及面对最坏情况的打算。

笔者总结自动化测试实施包括各类项目实施过程中的经验,得出如下结论:Sounds Good, Do it Hard, Finally Bad。指的是大多数情况下,一个项目的推进或者组织的某些变革,如果对风险和资源投入的预估不足,盲目乐观的话,基本上就会通过这样三步迈向失败的境地。第一步:听起来很美,所以我们投入。第二步:实施起来很难,所以成本增加。第三步:结果很差,最终失败。


(2)不要相信实施起来很简单这种鬼话。


经验表明,没有一个自动化测试技术的实施成功是因为它很简单,没有任何技术积累是不可能做好自动化测试的。即使做了,其效果怎么样也得打一个大大的问号。


(3)不要依赖于通过工具而不是人来帮我们解决问题。


很多团队认为购买一款工具就可以解决测试效率的问题,目前笔者还没有看到成功案例。一个测试团队的能力建设从来不是基于某些工具积累起来的。自动化测试的实施也同样如此,与其把钱花在购买工具上,倒不如花在对员工能力的培养上,这才是长治久安的做法。因为所有的工具,最多只能解决1/3的问题,而且面对不同的项目,不同的产品和技术栈,没有什么工具能够通吃。


(4)理性地实施自动化测试。


很多团队一开始对自动化测试抱有很高的期望值,结果实施下来以后发现没有想像中那么有价值,甚至还在拖累整个团队的精力。


(5)不要试图通过自动化测试发现很多Bug。


其实道理非常简单,如果自动化测试可以发现很多Bug,那么我们在开发自动化测试脚本时,Bug已经被发现。自动化测试的目的是为了执行回归测试,或者测试系统稳定性和性能,界面级自动化测试也可以部分实现兼容性。所以其根本目的并不是纯粹为了去发现Bug,而更多的是一种对软件测试的有效补充。无论是技术层面,可以代替一些简单的手工执行,还是执行一些手工测试无法实现的效果,都是一种补充。由于目前我们的自动化测试技术还无法达到人工智能的层面,所以将两者有效地结合才是解决问题的根本。


(6)成本不是考核自动化测试成效的唯一标准。


自动化测试的成本主要体现在人力成本上,这一点任何软件研发过程都逃避了不。但是这不是评价自动化测试价值的唯一标准,甚至不应该成为标准。因为,自动化测试虽然可以代替人完成很多重复性的工作,但是我们也需要有专门的人来开发和维护自动化测试脚本和执行工作。从另外一个层面上来说,实施自动化测试还有可能增加成本。但是其目的是什么?这一点我们务必思考清楚,自动化测试的目的是保障产品质量,让我们对产品质量更加有信心,对每一次发布的版本更加有信心,同时,把人这种珍贵的资源解放出来,完成更加重要的测试设计和新功能的验证等。甚至有更多的时间加强与其它研发人员的沟通与配合,将更多潜在的缺陷扼杀在摇篮中。而不是每天疲于奔命地执行测试用例。


(7)综合运用多种自动化测试技术。


单纯的一种自动化测试技术的使用是无法真正解决多大问题的,所以要实施好自动化测试,我们通常都应该将多种自动化测试技术结合运用,完成从前面界面,到网络协议,再到后台服务器代码,甚至再到数据库等各个层面的测试。这样的测试才会更加完善,对质量的保障才会更加可靠。


(8)测试人员不懂编程不是借口。


千万不要让不懂编程成为借口,现在懂编程的测试人员越来越多,而且工具也做得越来越完善。不懂编程,所以我们无法很好地实施自动化测试,不懂编程,所以我们的自动化测试效果不明显,这些都是借口。当然,如果一个项目团队或者一个企业组织,必须需要具备培养人才的能力和机制。


(9)测试团队的人员配备必须有梯度。


软件测试目前来说还没有达到程序设计那样的成熟的体系,但是很多企业在测试团队的建设上非常随意,甚至只找一些实习生来完成最基本的功能性黑盒测试。单纯从一个项目的成本控制来说,无可厚非。但是从一个长期的产品投入来说,研发团队的能力建设才是根本,所以我们必然要让团队有梯度,有层次。保持一个良性的人力资源管理体系。


(10)实现自动化测试并不是为了减少员工数量。


很多企业实施自动化测试的初衷是有问题的,比如为了节省人力成本,因为自动化测试脚本一开发完成,一切都可以自动化起来了。我们还需要那么多人做什么?但是事实表明,自动化测试能够确保成功实施,其开发和维护成本并不低,反而可能更高。所以,如果我们没有一个长期的能力建设的投入计划,建议不要盲目实施自动化测试。




 思 考 练 习 




(1)自动化测试技术体系包含哪些层面?它们的关系怎样?

(2)描述一下自己所在项目级在自动化测试方面的实施情况,及优化方案。

(3)面对自动化测试失败的情况,对产品的测试造成的影响会有多大?


下周分享:核心实验:基于图像识别的测试工具SikuliX





为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。

20190320_095757_834.jpg



   
版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/538
上一篇: 学了PS就想当UI设计师?做什么美梦?
下一篇: 蜗牛学院天府校区开新班,这次大家都有点狠!
提示:登录后添加有效评论可享受积分哦!
最新文章
    最多阅读
      特别推荐
      回到顶部