接口测试平台演进思考

简介: 接口测试平台演进思考


640.jpg640.jpg

很多小伙伴都比较关心如何构建一个接口自动化平台,笔者恰好有从零开始搭建自动化测试平台直到产品商业化的过程经验,可以和大家分享下。由于企业性质的问题,无法分享过多的代码,本文旨在分享个人在构建整个平台变化过程中的思考和总结,给想往这方面发展的小伙伴们一些借鉴,也算是自己的一个阶段性总结。本文主要总结了以下几个问题:

1. 如何针对团队现状做技术型

2. 平台演进过挰中会经历的阶段有哪些,需要分别注意什么

3. 区分平台能力和个人能力,不要被表象迷惑

NO.1

关于技术选型的问题

      万事开头难,现在世面上关于接口自动化平台的资料,不管是开源的(虽然很多都是Demo级别的),还是商用的,都非常的多。也有一些比较被业内认可的专业化工具,如Pytest,PostMan,Jmeter等等,但具体到自己的团队,应该如何选择一个好的框架做为底层基础呢?(不需要自己再造轮子,也不一定会比别人造的好)?个人认为,至少要从以下几个方面考虑。



1.1 团队的现状是什么?


       如果当前团队已经有了部分接口测试的工作在开展,只是没有形成标准化、持续化,那么尽可能就以现有的工具为底层基础,进行开发,培养用户习惯的成本是很高的,别人也不一定乐意,还涉及到迁移成本的问题。如果当前团队还没进行过多的接口测试,那么就可以慎重的进行技术选型



1.2 团队的资源有哪些


       这里指的资源其实就是研发能力,会有几个人一起研发,还是你自己一个人?大家擅长的开发语言是什么?是否有能力做前端页面?是否有时间投入(很多时候并不一定会给工时)。对于开发语言而言,不需要纠结是Java还是Python,擅长哪个就用哪个。能和开发团队保持一致最好,不能也关系不大(如果你真的熟悉了一款语言,那么转换到其它语言上也不是什么难事。笔者从C切换到Java,再到现在的Python,适应过程并不会太长)



1.3 为什么要选它


       在确定完开发语言之后,就可以对应的去做选型了,各语言都有大量的开源框架可以使用(Java的JunitTest,TestNg等,Python的Pytest,HttpRunner等),本质上没有太大的区别,只要你选的框架文档齐全,还在持续更新,问题就不大。没人维护的框架不要选(特别要注意GIT上那些Demo类的框架,很容易误导人)


小结:技术问题一定要从团队的实际情况出发来实践,因为做出来的东西,不管是平台还是框架,都是要给到具体的人去落地使用的,所以要尊重你的用户,纯粹show代码能力的事少做(如果真想,去GIT上面提交代码,在公司,还是以解决问题为主)。


       在确认完技术选型后,接下来就可以进入研发阶段了。此时千万不要想着要规划一个大而全的平台,而做过多技术设想,应当围绕当下团队最迫切的需求来做,按敏捷的说法,要先交付MVP版本,让团队认可你的平台,真正帮助他们解决问题。后期才会有推动别人使用的空间(这里会涉及到一个问题,那就是个人与平台的关系,很多会觉的如果平台化了,那测试人员的能力如何提升?这个问题放到最后讲,希望你能意识到这个问题,很重要)。当然,如果你有几十人的团队,那另说。

NO.2

第一阶段核心问题:能用

       笔者所在的团队当时并不具备进行接口测试的能力,测试人员没有接口测试意识,且无代码能力,需要开展接口测试时640.png,无从下手。分析当时的情况后,制定了本阶段需要解决的痛点。

      痛点1:能够通过页面配置,快速生成接口及其用例。

      解决方案:基于HTTP协议(集团内部基本上都是基于此协议交互),在页面上配置相关信息,就可以生成对应的接口,并支持直接调试,避免出现接口不可用的情况。同时,对于HTTP的body内容做了丰富的支持,以便适应不同的参数类型。


       痛点2:能够支持接口参数传递

       解决方案:HttrRunner本身就支持参数传递,也支持快速运行用例(框架的好处),所以这个痛点可以很方便的得到解决:

640.png

       痛点3:产出报告对于测试人员更友好些。

       解决方案:HttpRunner原生的报告比较不友好,所以自己解析原报告数据,做了聚合,让测试人员可以更直观的查看结果,同时可以让测试人员看到参数化或者数据驱动后,发出去的真实请求是什么,方便测试和开发定位问题(遇到报错的接口,如果确认是BUG,直接复制丢给开发,省事省心)

640.png

640.png

小结:在此阶段,其实需要磨合的时间是最长的,团队的磨合、架构的磨合、业务的磨合等等,最重要的是把团队顺利的运转起来。技术上基本没什么大问题,都是基于底层框架原生的能力,做了前端的封装,降低测试人员的使用门槛,让测试人员理解、接受接口测试思想,并指导他们使用平台,设计接口测试用例,让接口测试真正落地并产生效果。


NO.3

第二阶段核心问题:好用


       在完成第一阶段的内容后,进入第二阶段,这个阶段最核心的思路是推广+优化,目标是让平台好用,我们处于并将长期处于这个阶段!!。什么是好用,用户说了算,所以团队花了比较多的时间去落地平台,去分析测试人员的痛点和难点,结合自身的经验和能力,一点点的补充平台功能。简单结总下这个阶段解决的几个典型痛点:


      痛点1:分析接口太麻烦了,需要一个个手动录。

      解决方案:通过对接Swagger平台、Fiddler工具等,让测试人员不再纠结接口维护,可以更专注于用例的设计。

640.png

      痛点2:部分接口开发未完成,或者一些外部接口如何处理?

      解决方案:集成Mock服务,针对已经定义好的接口,可以自定义返回结果,同时生成一个只是域名不同的URL,这样在写测试用例时,想要调用Mock的接口或者真实接口时,,就只需要换个域名即可,其它都不用变,非常灵活。

640.png

       痛点3:当开发的接口发生变化时,测试人员如何第一时间获知呢?

      解决方案:提供契约功能,通过算法匹配运行结果与最近一次运行成功的结果做diff,获取接口结构的变更,提醒测试人员。(现在对于Spring框架,有专门的契约测试服务可以使用,笔者当时没有注意到,所以采用了另一种思路)

640.png

      痛点4:让测试执行前置,提高测试准入门槛。

      解决方案:随着公司CICD的完善,可以让开发人员在合并代码时,自动触发接口测试,验证主流程不受影响。把平台用例对接到公司的流水线上,成为质量门禁的一环,确保新代码不会影响核心功能。

640.png

      痛点5:如何解决业务个性化需求?

      解决方案:随着服务的团队越来越多,我们需要对应的场景也千奇百怪,如何在标准化的平台上应对一些个性化的需求通过在接口用例中引入前后置函数的功能,让一些个性化的需求,业务团队可以自己编写部分代码去做处理,同时,这部分代码还可以保存成模板,方便复用。640.png

640.png



    还有一些如:公共登录、环境区分、数据驱动、数据生成、定时任务、文件管理 等等功能点,不再一一列举,主要还是根据团队实际需要来完善功能点,最怕的是测试开发人员自嗨,写一些测试人员不太用或者不是痛点的功能,让平台沦落成样子工程。一定是要结合测试人员的需求来开发功能点。我们处于并将长期处于这个阶段!!平台使用的技术不是业内最好的,但一定是团队当下的最优解。

小结:在此阶段,我们获得了很多团队和客户的认可,例如在集团多个BU的落地实践,协助外部客户完成测试价值提升。平台本身也通过了信通院的DevOps三级认证(先进级),证明了平台的价值,不至于变成样子工程,这是笔者认为得到的最大的收获和认可。

NO.4

第三阶段:未来规划


     平台功能需要不断演进,不断满足更多的需求。目前平台也没有停止探索更多的需求,在未来的规划中,我们希望解决以下问题:

       问题1:测试仓库的搭建,让创建测试数据不再成为难点

       问题2:接口测试与代码覆盖的对应关系,为精准测试提供数据支撑

       问题3:逆向用例(混沌测试)的自动化生成

       问题4:。。。。。。

NO.5

个人与平台

      我们回到最初的那个话题,当我们采用平台化来做专项测试时,封装好功能,降低对测试人员的要求,只要通过页面编排就能够执行相关的测试。那么,测试人员如何提升自己呢?这里涉及到的角色有两个:个人与组织,这两个角色对平台的诉求是不一样的。

      组织:从组织的角度来说,希望的是有统一规划和管理,同时能够有效降低准入门槛,通过简单的培训,让更多的测试人员能够开展专项测试,所以更需要平台化的管理方式,能够提供标准化的、可视化的、操作方便的服务 。

      个人:当你进入到一个团队中,有现成的平台给你使用时,一定不能满足于使用平台,而是应该抓住机会去了解平台的具体实现,甚至参与到平台的研发过程中,把别人的开发设计和解决问题的思路变成自己的心得体会。如果只会依赖公司平台开展专项测试,那是平台的能力,而不是个人的能力。这也是为什么很多面试官不太喜欢大厂出来的同学,因为离开了平台,个人的能力有可能出现断崖式的下跌,切记(其实很多岗位都会有类似的问题,要学会区分哪些是自己的能力,哪些是平台给你的加成)。


       最后,感谢团队所有成员的付出和努力。团队的能力远大于个人的能力,如果能够有一群志同道合的朋友一起为同一个目标而努力,那是件很幸福的事。

相关文章
|
6天前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
12天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
44 3
|
15天前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
65 1
|
1月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
51 2
|
15天前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
40 0
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
65 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
246 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
255 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
49 5
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0