如何实现前端项目的自动化测试?

PS:本文转载自黑马测试知乎高赞文章
链接:https://www.zhihu.com/question/37977930/answer/3198226504

针对这个问题,我先告知答题思路如下:
1、什么是UI自动化?有什么优势?
2、UI自动化实践中会遇到什么难题?
3、如何解决难题,将UI落实到实践中?【重点】
4、UI自动化学习资料推荐
一、什么是UI自动化?为什么使用UI自动化?
1、什么是UI自动化?
本质上来说,UI自动化测试,就是通过脚本或工具代替人工去执行功能测试用例,自动完成测试用例的执行工作。常用于验证用户界面的功能、兼容和稳定性等,主要用于执行回归测试。
UI自动化测试,可以模拟用户与应用程序或网站的交互,自动执行用户界面上的操作,如点击按钮、输入文本、选择选项等,并检查应用程序或网站的响应和行为是否符合预期,在软件开发过程中帮助检测是否存在bug。
2、UI自动化有什么优势?
UI自动测试可以模拟人工执行测试,是最接近用户真实操作的测试方法,这是UI自动化测试最吸引人的地方,那么UI自动化测试还有下面这些优势:
优势1:提高测试效率。
相比手动测试,UI自动化测试可以快速、准确地执行大量的测试用例,提高测试效率,减少人工测试的工作量。
优势2:提高测试覆盖率。
UI自动化测试可以覆盖应用程序或网站的各个功能和页面,确保每个功能都经过测试,提高测试覆盖率,减少漏测的风险。
优势3:提高测试一致性。
UI自动化测试可以确保在不同平台、浏览器或设备上的测试执行一致,减少人工测试的主观因素,提高测试的一致性和可靠性。
优势4:提高软件质量。
UI自动化测试可以帮助检测和修复应用程序或网站中的错误和缺陷,提高软件质量,减少软件发布后的问题。
但UI自动化测试在实战中却像是“带刺的玫瑰”。因为它能模拟用户真实的操作应用程序或前端网站,是最贴近用户真实行为的模拟测试,但是因为实践中的一些难题,导致UI自动化容易投入很大,却没有取的很好的效果。
二、UI自动化实践中会遇到什么难题?
有些人说UI自动化没有啥用,主要是UI自动化在实际应用中会遇到一些难题,导致没有取的很好的效果,UI自动化测试目前主要面临下列这些挑战:
1.UI自动化测试的投入产出比低。
想要取得好的效果,必须前期投入较大在资源进行脚本开发,但是往往后期使用时没有取的预想的效果,容易导致投入中断?
2.保障脚本的维护是个大问题。
项目频繁的迭代,导致前端页面变化很快,对应的脚本得不断的修改,如何保障脚本的维护是个大问题。
3.UI自动化测试的稳定性也是个挑战.
脚本执行时经常遇到各种奇奇怪怪的Bug,如何保障脚本的稳定性是个头疼的问题。
三、实践中如何解决以上4个难题?【重点】
实际过程中,以上4个难题该如何进行优化呢?咱们以前端的web UI自动化为项目,以Python+Selenium框架为背景,来看下项目若要执行自动化测试,应该怎么搞。
优化1:如何保障投入产出比?
很多人搞UI自动化测试没有想清楚到底要怎么搞?上来就拿个框架,先搞起来再说,投入了很多人力物力,然后搞到一半时却发现很多问题,最后就完犊子了。。。
所以开始前,需要做好规划,要明确目标。如果是新起动的UI自动化测试,建议可以先选好框架,然后选择一个业务流程作为案例,以该案例为目标去执行框架的搭建和脚本的开发,完成开发后主要投入回归测试当中,看看实际执行的效果如何,然后统计投入的时间和人力成本,然后再进行下一步的推进。
优化2:如何保障脚本的维护?
当前项目都是频繁迭代的,这是不可改变的事实,所以脚本写完后一定需要维护修改。
基于这个事实,我们能优化的就是减少修改的次数,在UI自动化中,最常用的优化方法就是使用PO模式进行封装。
那什么是PO模式呢?
PO,是Page Object的缩写,简单来说,就是将前端项目中的每个页面封装为一个“类”,页面上的元素都封装为实例的“属性”,页面上的功能操作都封装为实例的“方法”。
这样封装后,无论将来页面怎么变化,我们只需要修改一次即可,可以大大的提升维护的效率。

优化3:如何保障脚本执行的稳定性?
UI自动化脚本执行时可能会遇到各种问题,比如浏览器启动时间过长,比如页面加载过长,比如图片被挡住等等,你无法预知。
优化方法,除了我们常用的各种显式或隐式等待处理外,我们还可以对原始的api进行封装。比如以Web UI常用的Selenium框架为例,当我们等待某个元素出现时,为了保障成功性,需要对“等待”做一个封装。除了显示等待外,还可以进一步优化,做个循环处理,就是等待3次,每次等待失败后可以重新刷新等待。
比如封装一个“等待元素”出现,确保可以点击的方法,如下所示:
当然,除了以上的实践经验,其他比如还可以找开发配合,对要测试的常用UI元素进行id的编码,这样也可以大大提升成功的效率,轻松解决定位的问题等。
四、UI自动化学习资料推荐
UI自动化分为web自动化和app自动化。
如果想深入学习UI自动化,建议可以看下列4套视频进行系统学习,如下所示:





若你是对测试不太了解的测试小萌新,有太多太多对测试的疑惑(前途、薪资、技术含量、男生是否可以干.....),强烈推荐你观看《测试小白必看:学习软件测试必问的100个问题,从此贴开始》,相信能扫除掉你心目中90%以上的常见问题。
《100个常见问题链接》:http://bbs.itheima.com/thread-507947-1-1.html

包括软件学习路线图,黑马50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2020软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助…..
《2023黑马测试学习路线图链接》:http://bbs.itheima.com/thread-405757-1-1.html
