工具介绍 🤓
方法定位使用,名如其名。当前开源社区中有很多很多基于接口的测试工具,但在实际的开发过程中,有很多场景都需要测试调用某个方法;
或在项目出现业务漏洞时,也需要直接用设置好的参数来判断业务接口的某个方法是否可行,来以此定位bug位置。
厌倦了"test"接口中,new 方法调用的这种手法,是时候有必要去实现一个去定位方法与参数,简化方法调用的工具了。
简单页面 ❀
工具定位 🏠
拆箱即用,搭载在本项目中。
注意点:在项目启动时会生成本项目的类名与方法名搜索库,在项目结束后悔自动删除搜索库文件,即要注意:确保项目的正常启动和结束
工具使用 🚩
因为工具属于页面装载,所以只用明白各输入框、按钮的出现意义,以下,从页面从上往下,从左往右介绍。
快速开始 🏃
2022-4-11: 0.0.1-SNAPSHOT:
2022-4-12: 0.0.2.RELEASE;
2022-4-14: 0.0.3-SNAPSHOT
引入依赖 📕
<dependency>
<groupId>xyz.leyuna</groupId>
<artifactId>waylocation-spring-boot-start</artifactId>
<version>0.0.3</version>
</dependency>
打开页面
XXXXX[项目地址]/waylocation
配置文件 ⚙
waylocation.saveType=XXX
waylocation.savePath = xxx
saveType:决定历史数据[历史类、历史方法、历史调用]的保存方式。
- “object” ,默认值,保存本次测试的所有信息,仅当前会话应用有用
- “cookie” ,仅保留少量信息,但是基于cookie会话
- “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
历史调用
展示历史调用,选择一条填充本次测试数据,包括:
1、类名
2、方法名
3、入参
4、出参结果
测试
方法调用,在根据文档填写好入参前提下。
方法调用类,invoke(Object )
Object,提供情况:
当方法涉及ioc自动注入属性时,从容器中根据字节码取出。
当方法没有无参构造器时,默认从ioc中取出,其次是自动实现本方法类最低限度的一个构造器[随机赋值]
当方法场景不属于上述情况时,通过newInstance()获取
场景一:
当方法为普通方法,即无数据库操作时,调用方法,返回结果
场景二:
当方法涉及数据库操作时,调用方法。
返回:
1、该方法涉及的数据库表以及表操作
2、该方法数据库操作的数据展示
3、回滚事项[伪回滚],即实际操作了插入,记录插入数据的sql,对sql分析进行逆执行。
🌻交流学习
最后,为大家奉上我整理的一份包含测试开发入门,基础到进阶自动化的全部系列知识点PDF,还有测试开发学习笔记、面试真题汇总文档、测试求职精选简历的学习资源包。希望对大家有所帮助…… 查看全部🤗。
📘 往期文章推荐