• UnitAuto——机器学习单元测试平台 (三)


    UnitAuto自动化单元测试平台

    (一)官方描述

    机器学习单元测试平台,零代码、全方位、自动化 测试 方法/函数 的正确性和可用性

    相比 JUnit, JTest, Mockito, Mockk 等一堆 Compiling testing 工具:
    1.其它工具需要每个方法都写一大堆测试代码,需要开发成本、需要解决测试代码的 bug、业务代码更改后需要同步修改测试代码等;
    UnitAuto 不需要写任何代码,直接读取方法的属性,自动注入参数,拿到返回值和类成员变量,机器学习自动化校验。

    2.UnitAuto 这种 Runtime testing 工具无需 Mock 环境(Application, Context 等),
    更不用为 无法有效地 Mock 环境相关类、第三方登录未提供 Mock 支持 等而头疼,
    只要被测方法满足 有 return 值、有 interface 回调、改变成员变量 field 这 3 点中至少一点就能测。

    (二)使用参考

    (1)方法上传和方法调用

    在这里插入图片描述
    UnitAuto提供了俩个基本的endpoint端点,主要功能如下:
    method/list:通过扫描项目中的可访问的 package, class, method 来生成和导入测试用例(根据路径扫描项目下的可访问的所有类,然后将类下的方法信息上传到平台)
    method/invoke:HTTP 远程调用被测服务/App,转至内部 构造/获取 实例来 invoke 动态执行方法(根据上传到平台的方法信息,远程调用并通过反射执行该方法,在此过程中会自动填充参数)

    测试平台:
    http://apijson.org:8000/unit/
    在这里插入图片描述
    【备注】
    1:通过这个平台进行上传和测试目前看存在很多的问题,通过PostMan是可以扫描到所有的方法信息,但是该平台持续卡在上传中,一直没有反应,但是自己指定单个方法路径是可以调用的,目前并未找到完善的解决方法

    2:需要严格注意指定路径的分隔符,否则会有问题

    【执行单元测试】
    备注:这里是只进行了单个方法的测试,是手动操作的,该平台可以通过一键自动执行所有上传的方法,并且可以智能的设置参数和次数
    在这里插入图片描述

    (2)设置父类选项(测试组)

    需求:如果我们对于比较重要且分支和参数比较多的方法,我们想要进行多方面的测试,那么可以通过添加父类选项的方式来构建
    在这里插入图片描述
    1:设置参数0,从-10到100随机给出生成参数,此外下面一样同样也设置了测试,他设置的从-10到100顺序给出参数
    2:设置执行的次数,这里会执行100次
    3:添加到组中
    在这里插入图片描述
    下面创建了俩个组,然后都上传了,那么就可以在分组中统一执行测试用例,并且通过设置左侧的次数执行,对于测试结果和执行次数可以通过右下方的数据面板查看到
    在这里插入图片描述
    【随机测试常用语句参考】
    在这里插入图片描述
    示例:

    随机参数
    methodArgs/0/value: RANDOM_INT(-10,100)
    
    顺序参数
    methodArgs/0/value: ORDER_INT(-10,100)
    
    指定参数列表
    methodArgs/0/value: ORDER_INT(1,2,5,7,1000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (三)总结和分析

    优势

    【1】同ApiJson一样后端也不需要写单元测试用例了,所有的单元测试可以只需要内部提供俩个特定的endPoint即可,通过平台可以上传所有方法
    【2】可以测试所有public方法,包括静态和非静态方法
    【3】测试用例是可以在平台永久保存
    【4】支持随机测试,随机参数,指定次数

    劣势

    【1】在测试抛出异常的代码用例时,该平台经常出现未扫描到错误信息,并将部分错误测试用例予以通过,这个还需要完善,否则将严重影响产品质量和回归测试
    【2】到目前为止,并未发现该单元测试平台支持自动注入对象的测试,如果测试方法是SpringBean,并不会自动注入,也没有发现提供了什么方式来支持这个操作,如果这个不予以支持的话,那么实际使用不太适合
    【3】平台目前还处于雏形阶段,出现的问题以及需要完善的地方还非常的多
    【4】UnitAuto所测试的必须是public修饰的,否则会报错方法不存在

    参考

    1、APIJSON-Java-Server代码
    https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server
    2、UnitAuto参考文档
    https://github.com/TommyLemon/UnitAuto
    3、APIJSON通用文档
    https://github.com/Tencent/APIJSON/blob/master/Document.md
    4、apijson-doc
    https://vincentcheng.github.io/apijson-doc/zh/

    5、APIJSON集成框架
    https://github.com/APIJSON/apijson-framework

    6、UnitAuto视频参考
    https://www.bilibili.com/video/BV1Tk4y1R7Yo?from=search&seid=15448805103016842306

  • 相关阅读:
    数据结构——队列
    不习惯的 Vue3 起步五 のapiHooks 封装
    RabbitMQ忘记guestadmin 密码
    WPF 通过依赖属性Value更新长历史图表
    《Unity 2D与3D手机游戏开发实战》简介
    java序列回显学习
    四 . 分支和循环——Java基础篇
    二叉树实现(创建,遍历)
    [C++]IO流
    Nginx实现负载均衡
  • 原文地址:https://blog.csdn.net/Octopus21/article/details/126442002