有同学问了我这样一个问题:我想学习并且在工作中落地接口自动化测试,我该学Java还是Python,用哪个测试框架和工具更好?有什么推荐的学习资料和测试框架吗?
又是一个很典型的问题,也是新手最容易纠结的点。这篇文章分享一些我的经验和思考。
自动化测试框架选型
其实关于测试框架选型,要考量的无非是如下几点:
- 个人技术基础如何,框架的学习难易曲线;
- 框架功能是否丰富,官方文档是否详细,框架生态是否成熟;
- 框架本身的扩展性如何,是否支持多语言,开源还是商业的;
如果个人技术基础比较薄弱,建议选择功能丰富开箱即用,且学习曲线比较平滑的。有些框架入门简单,但是进阶和落地难度就会特别高;有些框架入门难度稍微高点,但整体的学习难易曲线比较平滑,适合不断打怪升级,这点需要看个人适配程度和喜好。
第二点,功能丰富意味着落地实践阶段二次开发封装的成本投入较低。详细的官方文档可以帮助新手更快的入门,且其中也会有不少的案例。所谓的生态就是用这个框架的人多不多,用的多自然遇到的问题多,解决问题的方法也有更多人在前面趟坑。
至于第三点,就是选型后落地方面的考量。支持多语言,意味着和研发团队的技术栈以及被测应用更为匹配;开源意味着更低的直接成本,扩展性则是是否支持团队级别的定制化选项。
自动化测试落地实践路径
自动化测试框架和工具都很成熟了,落地实践的案例也不少,但具体落地过程肯定会遇到各种各样的问题,解决问题的过程需要考量具体的业务特性,基础设施建设,项目迭代频次等很多因素,很难说有普适性的通用案例可以参考。
我想换个角度,从自动化测试相关的面试题来聊聊它的落地路径,也许你能收获不一样的思路和方法。当然,下面列举的面试问题是由浅及深的,且会列出考察点和回答问题的逻辑,希望能对大家有所帮助。
1、自动化测试是如何做的?
回答思路:从问题出发,要解决什么问题,采用了什么工具/框架,原因是什么?自动化测试的流程,重点是哪些方面,要面临哪些挑战,如何解决的,是否有更好的方式。
2、选择自研框架和开源框架?
回答思路:这个问题考察两方面,一方面是对开源/商用框架优缺点的了解程度,以及和自身团队及业务的匹配性;另一方面则是自研框架和团队及业务的是配性更强,但成本更高。
3、自动化测试主要投入和产出是什么?
回答思路:同样考察两方面,一方面是前期的产出和效果肯定是低于成本投入的,自动化需要长期持续建设且项目相对稳定,才能在大后期收益覆盖成本。另一方面则要表达出自己对自动化测试的理解,比如自动化就是用来辅助测试,解决重复性高的执行工作,如果最开始奔着提升效率,那大概率最后会不了了之。
4、如何管理自动化测试数据?
回答思路:分阶段用不同的方法。单人或者刚开始落地,以简单易懂为主,比如Excel;规模稍微起来或者参与自动化测试工作的人多了,就要考虑配置文件或者函数生成方式;大规模覆盖阶段则要考虑造数工厂方式。
测试数据管理是自动化测试中特别重要的一环。特别是团队扩大,业务复杂度上升之后,如何高效合理管理测试数据,需要很深入的思考和大量的实践。 重要的是要有持续迭代和优化的做事方式,而不是从一开始就求大而全。
5、自动化测试如何融入CICD交付流水线?
回答思路:单纯的做自动化测试,产出和价值并不高,自动化测试如果不能持续集成,融入到持续交付流水线中,那只能说是测试用例自动化执行。更好的方式是让自动化测试成为整个研发交付流程的一部分,为研发交付提供辅助和支撑。
当然,CICD的交付流水线是整个技术团队要发力做的事情,需要解决很多前置问题,比如编码规范、代码分支命名规范、版本管理、完善监控,也需要技术团队内部各团队协同配合。
回答这个问题,可以从推动和参与CICD流水线建设来讲,解决了哪些问题,最终达成了什么效果。
6、如果让你来负责整体的质量保障工作,你会从哪些方面入手?
回答思路:这个问题看似和自动化测试没有直接关联,但实际上很考验测试工程师的全局思维和技术视野,以及对业务和技术关系的理解。
在质量保障体系中,流程建设、需求/风险/进度管理、质量门禁、团队赋能、工具提效、人员培养、知识库沉淀等多个方面都需要进行建设,自动化测试是质量门禁、工具提效辅助和团队赋能的重要抓手。
7、从零开始从零开始落地自动化测试,你会如何做?列举重要的几个方面。
- 前期摸底:业务情况、团队的技术基础设施、团队成员的技术能力等。
- 调研对比:商用&开源&自研框架的优劣势,做demo,拿到数据支撑结论,然后出落地方案。
- 分阶段落地:不同阶段的重点是什么,要解决什么问题,采用什么方法和手段,需要的资源和面临的挑战。
- 更进一步思考:能否为测试团队赋能,怎么做?能否推动整个研发交付流水线流程,有什么好的想法和思路。
以上就是我在面试候选人时,关于自动化测试经常问的几个问题。至于自动化测试的落地路径,答案都在上面的几个问题中包含了。从我的角度来说,无论是面试回答问题,还是技术工程落地,注意如下几点即可。
- 事前-分析和思考:逻辑清晰条理明确。
- 事中-推动解决问题:合理的方法,以拿结果为导向。
- 事后-持续复盘改进:跟随业务和团队的变化,不断改进,使之更符合团队需要。