一个自定义调用项目内方法的测试工具

110 阅读5分钟

工具介绍 🤓

方法定位使用,名如其名。当前开源社区中有很多很多基于接口的测试工具,但在实际的开发过程中,有很多场景都需要测试调用某个方法;

或在项目出现业务漏洞时,也需要直接用设置好的参数来判断业务接口的某个方法是否可行,来以此定位bug位置。

厌倦了"test"接口中,new 方法调用的这种手法,是时候有必要去实现一个去定位方法与参数,简化方法调用的工具了。

简单页面 ❀

a33fb106a10176e342ccb34386cffa5b (1).jpg

工具定位 🏠

拆箱即用,搭载在本项目中。

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

工具使用 🚩

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

快速开始 🏃‍

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:决定历史数据[历史类、历史方法、历史调用]的保存方式。

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

savePath:保存方式为file时,记录文档的保存路径。

默认为C:/waylocation

版本环境 🌳

依赖版本号
SpringBoot2.3.7.RELEASE
Lombok1.18.16
Lucene7.6.0
FastJson1.2.47
Mybatis3.5.2
Jsqlparser2.1

使用场景

搜索类名

场景一:

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

场景二:

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

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

搜索方法名

场景一:

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

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

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

场景二:

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

场景三:

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

入参

入参解析。

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

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

解析场景:

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

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

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

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

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

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

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

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

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

出参

场景一:

出参为void,返回void。

场景二:

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

历史导出

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

1、类名

2、方法名

3、入参

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

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

3d261a2e907c87d3ede248cfadd7cecd.jpg

历史调用

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

1、类名

2、方法名

3、入参

4、出参结果

c73c85dca6e6be58297cd2a4575d644b.jpg

测试

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

方法调用类,invoke(Object )

Object,提供情况:

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

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

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

场景一:

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

场景二:

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

返回:

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

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

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

🌻交流学习

最后,为大家奉上我整理的一份包含测试开发入门,基础到进阶自动化的全部系列知识点PDF,还有测试开发学习笔记、面试真题汇总文档、测试求职精选简历的学习资源包。希望对大家有所帮助…… 查看全部🤗。

📘 往期文章推荐

随手写个接口测试工具,让学妹瞧瞧我的能耐

「 性能测试技术笔记系列(一)」之性能指标行业参考|收藏版

✨ 实战系列 ✨ 1️⃣ 微信小程序自动化测试实践(附 Python 源码)❤️

深圳不是说很缺软件测试吗?为什么我找了两个月还是没找到工作?