/wayLocation

本地方法调用工具

Primary LanguageJava

way location use方法定位使用工具

工具介绍 🤓

方法定位使用,名如其名。当前开源社区中有很多很多基于接口的测试工具,但在实际的开发过程中,有很多场景都需要测试调用某个方法; 或在项目出现业务漏洞时,也需要直接用设置好的参数来判断业务接口的某个方法是否可行,来以此定位bug位置。 厌倦了"test"接口中,new 方法调用的这种手法,是时候有必要去实现一个去定位方法与参数,简化方法调用的工具了。 git地址:https://github.com/LeYunone/wayLocation 目前屏蔽部分功能,还在开发中

简单页面 ❀

waylocation

工具定位 🏠

拆箱即用,0侵入性,搭载在本项目中,自由选择项目中的方法,通过className[模糊] + methodName[模糊] 定位。

注意点:在项目启动时会生成本项目的类名与方法名搜索库,在项目结束后悔自动删除搜索库文件,即要注意:确保项目的正常启动和结束

工具使用 🚩

因为工具属于页面装载,所以只用明白各输入框、按钮的出现意义,以下,从页面从上往下,从左往右介绍。

快速开始 🏃‍

2022-4-11: 0.0.1-SNAPSHOT:

2022-4-12: 0.0.2.RELEASE;

2022-4-14:0.0.3-SNAPSHOT

引入依赖 📕

依赖版本:0.0.X > 0.0.X-SNAPSHOT > 0.0.X.RELEASE

<dependency>
   <groupId>xyz.leyuna</groupId>
   <artifactId>waylocation-spring-boot-start</artifactId>
   <version>0.0.3</version>
</dependency>

快照版-SNAPSHOT需要引入-SNAPSHOT仓库:

<repositories>
    <repository>
        <id>snapshots</id>
        <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

打开页面

XXXXX[项目地址]/waylocation

配置文件 ⚙

waylocation.saveType=XXX   
waylocation.savePath = xxx

saveType:决定历史数据[历史类、历史方法、历史调用]的保存方式。

  1. “object”,默认值,保存本次测试的所有信息,仅当前会话应用有用
  2. “cookie”,仅保留少量信息,但是基于cookie会话
  3. “file”,写入机械磁盘中,除非手动清除,则永不消失,生成的excel文档:savePath+/history.xlsx

savePath:保存方式为file时,记录文档的保存路径。 默认为C:/waylocation

版本环境 🌳

依赖 版本号
SpringBoot 2.3.7.RELEASE
Lombok 1.18.16
Lucene 7.6.0
FastJson 1.2.47
Mybatis 3.5.2
Jsqlparser 2.1

使用场景

搜索类名

场景一:

点击输入框,查询历史使用类,加载至搜索库中选择。

场景二:

点击输入框,输入任一字符,在项目搜索库中,以此字符 例如字符为Test,拆为T、e、s、t在数据库中最佳匹配到相关类类名,加载至输入框中。

场景三:

点击输入框,输入任一字符,但是不选择输入框中,在后续操作中属于类名模糊场景处理。

搜索方法名

场景一:

点击输入框,如果类名输入框中有值[即在上述场景一、二、三中],则出现两类分支:

如果选择了类名输入框的值,属于精准类名,在输入框中加载该类下的方法。

如果没有选择输入框的值,属于类名模糊场景,根据该类名在数据库中模糊搜索到最佳匹配类,加载该类方法。

场景二:

点击输入框,如果类名输入框没有值:输入框加载历史使用方法,并且自动装填本次历史使用的类名。

场景三:

点击输入框,在精准类名的场景或是类名模糊场景下,输入任一字符,在搜索库中模糊搜索,加载至输入框中。

入参:

入参解析。

场景一:

一定在确定了类,即点击了类名搜索的输入框后触发。

定义到方法后,解析该方法的入参。

解析场景:

1、多参,页面上出现参数个数的输入框。

2、参数为int、Integer等的基本类型或包装类型,赋予jdk规则的默认值。

3、参数为本项目类,迭代解析该类层级,迭代规则:

参数为int、Integer等基本类型或包装类型,赋予默认值。

参数为本项目对象,迭代本对象到当前循环。

参数为集合,迭代其泛型到当前循环,获得一个新对象加入到集合中。

参数为非项目对象,不解析,返回null。

参数为抽象属性[接口和接口类],不解析,返回null。

4、参数为集合,迭代其泛型到当前循环,获得一个新对象加入到集合中。

出参

场景一:

出参为void,返回void。

场景二:

出参有值,则解析情况为入参相同逻辑。

历史导出

导出本次页面面板值,即包括:

1、类名

2、方法名

3、入参

4、出参结果或出参结构 [看有无调用]

保存到自定义路径,工具规定模板Excel

https://www.leyuna.xyz/image/2022-04-14/导入.png

历史调用

展示历史调用,选择一条填充本次测试数据,包括:

1、类名

2、方法名

3、入参

4、出参结果

https://www.leyuna.xyz/image/2022-04-14/导出.png

测试

方法调用,在根据文档填写好入参前提下。

方法调用类,invoke(Object )

Object,提供情况:

当方法涉及ioc自动注入属性时,从容器中根据字节码取出。

当方法没有无参构造器时,默认从ioc中取出,其次是自动实现本方法类最低限度的一个构造器[随机赋值]

当方法场景不属于上述情况时,通过newInstance()获取

场景一:

当方法为普通方法,即无数据库操作时,调用方法,返回结果

场景二:

当方法涉及数据库操作时,调用方法。

返回:

1、该方法涉及的数据库表以及表操作

2、该方法数据库操作的数据展示

3、回滚事项[伪回滚],即实际操作了插入,记录插入数据的sql,对sql分析进行逆执行。

高并发测试

选择并发量,由工具自定义接口去实现并发方法实现

待开发

数据库BingLog日志

待开发