极简接口录制的后台数据管理

文章介绍了如何创建一个简单的接口测试录制工具,该工具允许用户录制接口请求并以Excel形式共享数据。通过一天的工作,作者实现了一个包含基本CRUD操作的后台系统,支持菜单配置和数据下载。这个后台基于Springboot构建,用于团队内的接口数据共享和代码生成。未来计划将此工具与自动化框架对接,以提高接口测试的效率和覆盖率。
摘要由CSDN通过智能技术生成

接口测试|极简接口录制工具(https://testerhome.com/topics/36369)这篇文章有一些反馈,看到大佬提到说一些代码生成的事情,这个也会去做,不过考虑到实际团队需要共享数据的情况,就进行了一个录制共享数据的后台原型。有了后台页面,做代码生成也会更方便一些。

在小公司成本是关键,所以怎么简单怎么来了。

下面是服务端页面的一个例子,还是一样,做这个后台主要是成本不高,实际也就是花了一天时间,当然每个人情况不同,这个需要额外考虑。

大体效果: 基本增删改查 都实现了。

● 菜单都可以配置实现

● 基本CRUD也都可以完成

目前数据已经记录下来了,服务端也可以保存了,那么这个数据可以共享了. 通过下载功能可以把所有的录制场景下的请求和返回数据通过 excel 下载.

后续的修改和代码生成就是通过这个excel来进行了. 也可以只进行数据修改就可以,通过接口直接运行.

实现这样一个后台,其实就定义了一个实体

实现这样一个后台,其实就定义了一个实体,然后运行通过Springboot运行就可以,启动后相应的菜单都可以配置。

这个会在后面在详细介绍下,目前先把录制数据/下载说完了。

@Datapublic class ApiMonitorRecord extends MetaModel {

    @EruptField(
            views = @View(title = "app"),
            edit = @Edit(
                    title = "app应用名",
                    type = EditType.TAGS, search = @Search(vague = true), notNull = true,
                    tagsType = @TagsType(
                            fetchHandler = SqlTagFetchHandler.class,
                            fetchHandlerParams = "select distinct app from api_monitor_record"
                    )
            ))
    private String app;
    @EruptField(
            views = @View(title = "场景名称"),
            edit = @Edit(title = "场景名称",
                    type = EditType.TAGS, search = @Search(vague = true), notNull = true,
                    tagsType = @TagsType(
                            fetchHandler = SqlTagFetchHandler.class,
                            fetchHandlerParams = "select distinct scenario_name from api_monitor_record"
                    )
            ))
    private String scenarioName;
    @EruptField(
            views = @View(title = "请求地址"),
            edit = @Edit(title = "请求地址", notNull = true, search = @Search)
    )
    private String requestUrl;

    @EruptField(
            views = @View(title = "服务"),
            edit = @Edit(
                    title = "服务",
                    type = EditType.TAGS, search = @Search(vague = true), notNull = true,
                    tagsType = @TagsType(
                            fetchHandler = SqlTagFetchHandler.class,
                            fetchHandlerParams = "select distinct service from api_monitor_record"
                    )
            )
    )

    private String service;
    @EruptField(
            views = @View(title = "接口API"),
            edit = @Edit(title = "接口API", notNull = true, search = @Search)
    )
    private String api;

    @EruptField(
            views = @View(title = "请求路径"),
            edit = @Edit(title = "请求路径", notNull = true, search = @Search)
    )
    private String path;

    @EruptField(
            views = @View(title = "请求头"),
            edit = @Edit(title = "请求头", type = EditType.CODE_EDITOR, codeEditType = @CodeEditorType(language = "json"))
    )
    private String requestHeaders;

    @EruptField(
            views = @View(title = "方法"),
            edit = @Edit(title = "方法", notNull = true, search = @Search)
    )
    private String method;

    @EruptField(
            views = @View(title = "请求报文", type = ViewType.CODE),
            edit = @Edit(title = "请求报文", type = EditType.CODE_EDITOR,
                    codeEditType = @CodeEditorType(language = "json"))
    )
    private String requestBody;

    @EruptField(
            views = @View(title = "response_headers"),
            edit = @Edit(title = "responseHeaders", type = EditType.CODE_EDITOR,
                    codeEditType = @CodeEditorType(language = "json"))
    )
    private String responseHeaders;

    @EruptField(
            views = @View(title = "status_code"),
            edit = @Edit(title = "status_code", notNull = true, search = @Search)
    )
    private int statusCode;

    @EruptField(
            views = @View(title = "返回报文", type = ViewType.CODE),
            edit = @Edit(title = "返回报文", type = EditType.CODE_EDITOR,
                    codeEditType = @CodeEditorType(language = "json"))
    )
    private String responseBody;}

工作量和效果

● 功能:

基本的增删改查都可以,下面是个编辑页面,支持代码高亮和JSON等

支持不同录制场景的查询

● 工作量

这个server框架由于之前了解,所以这个时间我自己没有考虑在里面

后台的构建我自己也就今天1个下午

● 后续打算

和自动化框架做对接,下载的EXCEL经过修改之后可以用作接口测试;

录制场景修改完的数据,可以用来造数据,通过管理后台实现;

自动化跑的CASE进行记录;

录制的数据和目前所有的 API 清单做一个对比,可以知道那些有接口测试覆盖了;

其实按照目前的效果看,后续打算里面的内容都会在这几天里面可以完成一个原型。

不足和说明

目前肯定是比较粗糙的, 主要还是实现成本低,来验证思路是否符合实际情况的使用,是否真的可以提高效率

也欢迎大家多提意见和建议,有人反馈是最开心的事情.

后台代码在: github(https://github.com/fluent-qa/fluentqa-workspace)
代码量其实真的没有太多夸张,真的很少。

main
├── java
│   └── io
│       └── fluentqa
│           └── server
│               ├── QAWorkspaceApp.java
│               └── recorder
│                   ├── handles
│                   │   └── SqlTagFetchHandler.java
│                   └── model
│                       └── ApiMonitorRecord.java
└── resources
    ├── application-dev.yaml
    └── application.yaml

做了这么一些尝试,我想最重要的是尽可能介绍画太多额外的时间进行接口测试:

1.接口测试最好可以业务测试的时候,就可以获取相关的接口请求 - 所以进行场景名的录制;

2.不用太去做太多额外的造数据的工作,录制的场景就可以在进行数据修改之后就可以用来造数据;

3.不同人的数据是可以方便的在团队内不共享的;

4.投入尽可能少的;

.........

可能还有很多很多, 好处就是能动手了,有目的了,大家就都可以动起手来,如果没用,成本也低,而且最少还能学点东西;如果不要,反正就不用了,也就是几天时间;如果效果不错,那可以再人做漂亮的后台,自己做也可以,就是花时间,但是如果核心是有用的,最少是解决了一些问题。

理念太多有时也不一定解决太多问题,凡事都要能动起手来才行,不能动手有个样子,也不知道具体是个什么东西。 

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片

整套资料获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值