wayLocation日记1
wayLocation 本地方法测试工具开发日记1
当前开源社区中有很多很多基于接口的测试工具,但在实际的开发过程中,有很多场景都需要测试调用某个方法; 或在项目出现业务漏洞时,也需要直接用设置好的参数来判断业务接口的某个方法是否可行,来以此定位bug位置。 厌倦了"test"接口中,new 方法调用的这种手法,是时候有必要去实现一个去定位方法与参数,简化方法调用的工具了。 初级阶段和swagger对标,但是也有很多自己想的点。
准备
技术选型
因为是一款工具,所以对他的第一定位应该是:开箱即用,所以架构上选择了SpringBoot+vue的非前后端分离的组合。 然后使用了Lucene作为该工具应该的内部搜索库,最后配合java的内部工具和sql的一些底层实现。
需求分析
定位方法
1、根据方法名+类名的组合 2、检索项目内方法名,展示进行动态模糊查询 3、最近使用方法展示
入参与出参
1、返回入参完整结构 2、返回出参完整结构 3、入参填充相对有依据的随机值 4、历史入参记录
方法调用
1、直接调用返回结果 2、保存本次调用历史 3、自定义保存本次测试
导入与导出
实现方案
定位方法
1、方法名+类名 理论上走反射直接简单获得,但是有很大的局限性:需要用户很准确的填充全类名和方法名。 解决:依然是走全类名+方法名的形式,但是可以让用户模糊的填写全类名,达到只用写类名的形式,然后在工具端口应用的搜索库中找到最近对应的方法的方法执行。 2、动态模糊查询 配合页面上的键盘监听事件,动态的发送请求给后端,后端根据key查询搜索库里的所有方法,取最近10条展示。 3、最近使用方法 配合update-dt字段,排列出最近的10条使用方法。
入参与出参
1、入参完整结构 目前的两种解决方案: 使用easy-random工具,将入参对象随机赋值。 使用注释,解析项目内包含注释的对象属性 两种都有缺点,第一种:easy-random生成对象工具,当遇到领域对象,即对象中包含除了成员外还拥有业务接口时,会抛出异常,生成失败。 第二种:需要用户在自己的入参对象的每一个类上或属性上,填充注释 2、出参完整结构 同上 3、填随机值 待.... 4、历史记录问题 只能由工具自定义生成缓存在游览器,或者生成文件在硬盘某个位置
方法调用
1、直接调用 2、保存本次调用历史 应该只用由cokiee完成 3、保存本次测试 提供保存按钮,可以的话生成一个符合工具格式的测试文档,并且搭配导入功能使用
思路核心
首先是一个核心点,出参和入参的结构展示。 其次就是项目中的细节。 然后就是围绕Lucene搜索库的一系列搜索操作。 搜索场景:
- 在输入框输入时,动态调用索引库搜索,并且展示前十条。在页面上展示的是 全类名-方法名-入参-出参;这样的格式,如果用户选择了下拉框的则直接定位到其方法。
- 在第一个场景中,如果没有选择下拉框,则以输入的类名加方法名的形式。通过类名在索引库模糊搜,在选择最接近的一条,查里面有没有这个方法,有的话就返回否则返回查找失败。
- 直接在历史调用方法中选择方法。
调用场景:
- 涉及sql
- 涉及rpc
- 涉及事务
- ...