背景

纵然市面上存在大大小小、各种语言的接口自动化工具,但阅览之后,总觉得部分与自己的期望不符(或者说有些自己的业务无法实现),遂有了自己从 0 撸一个的想法。
因为这几年接触的测试团队中,都是代码基础薄弱或者压根没有的伙伴,所以自己对工具有以下期望:

技术选型

因为自己编程这方便的能力也不强,Java 了解不多,语言能力方面 Python > Go > Js > Java,所以生态圈自然围绕着 Python 来实现。
所以项目的技术栈是 Flask + Vue(单页面)
部署用的 Nginx + Gunicorn + Supervisord

项目经历

第一行代码始于 2017 年,当时我负责推动这个项目,从想法到需求到实现均为个人完成(后期有一个团队内对代码感兴趣的小伙伴帮忙维护,加一些其他功能)。
但当时由于正常的测试工作干扰(项目多、迭代频繁、人手不足)及自身能力的不足,导致此项目虽具雏形,但在健壮性上做的很差,导致用例维护麻烦,团队内部推广的不是很好,所以就此搁置了。
两年后换了一份工作,做的是性能方面的测试,相对于之前的喋喋不休的业务测试来说,时间上有了部分充裕,但团队性质和之前无异,所以重新又捡起了这个项目,再次经过一番打磨后,相对算是能正常使用了吧,但还是存在一些自己目前不知道怎么能更好的处理的不足,后面会提及。

功能及交互展示

特性

登录

项目本身只部署一套。
为了隔离环境、隔离用户、所有接口调用需要携带 token,所以需要使用各自的账户。
且为了方便一键获取所有 token ,登录的手机号需要同时可以登录运营平台、供应商平台和 APP,且两个平台的密码需要一致(APP 因为没有密码一说,所以不作此要求)。
在登录时,以上三个平台任何一个登录失败都会导致接口测试平台无法登录。此强约束是为了在平台内部进行测试的时候,不用关心环境、平台等因素,只需要录入用例,然后执行。

目前支持三个环境的登录, 选择具体环境后,登录时会去自动调用选择环境下的运营平台、供应商平台、APP,并存储三方 token。在登录的同时,会开启一个线程去轮询各平台下的一个接口,使 token 保持有效期,目前设置的轮询时间为 25 分钟一次。

登录后,右上角会显示当前登录用户和所属环境,在执行用例时,会在此环境下执行。所以用例是和环境不挂钩的,需要在什么环境回归,只需要退出重新选择环境登录即可。

用例组织

目前分为三层,分别是 项目 → 模块 → 接口(用例),所以在录制用例时,必须将其所属于某一项目下的某一模块。当然,这个从属关系是可以灵活变更的


需要变更时,只需要修改用例的所属项目、所属模块或者修改模块的所属项目即可。

用例定义


校验规则支持多条(回车新行视为新的校验规则),当存在多条时,前面任意一条不满足,则会终止后续流程,当前用例会被判定为失败。

回归

直接在项目页面或者模块页面,搜索出需要回归的项目/模块,直接点击操作列的运行,即可批量、并发去执行项目、接口下的所有有效用例(不包含被标注为基础用例的用例)

视用例数量,可能会执行几秒到几分钟的时间,且执行记录在【执行记录】页面中可以查看(当操作列中没有标识 Fail 或者 Pass 时,则表示当前发起的回归动作还没执行完)

如果操作列为 Pass,则表示此次回归,所有的用例全部校验正常,没有失败用例,当操作列的值为 Fail 时,则表示此次回归存在一个或者多个校验失败的用例,可以点击 明细 按钮,查看失败、成功的用例,默认打开 失败 tab。在复制列中,可以复制运行当时的实际地址、参数、响应、校验内容(不过还是建议在用例列表中搜索当前失败的这条用例,打开详情页进行调试,会有过程数据辅助定位失败原因)




测试报告

没有和现有市场上的测试报告一样,我这里是将每次回归动作记录下来,并将其下所有的用例分为 Pass 和 Fail 面板来统计
可以从单独的记录页面进入,也可以从项目 / 模块列表页进入



不足

特别是测试数据,现在最头痛的就是这个,也看过很多其他人的方案,但都感觉和自己这边不贴合。
所以有在这方面做的自认为比较满意的伙伴贡献下自己公司的方案么。。。


↙↙↙阅读原文可查看相关链接,并与作者交流