自动化工具 rabbit 自动化测试平台介绍

兔子 · 2019年12月18日 · 最后由 ZYH 回复于 2023年01月15日 · 15282 次阅读

前言

很多公司都需要一个自己的测试平台,用来减少测试人员实现自动化测试的成本。并且便于项目的管理。Rabbit,就是一个集 UI、接口、app、性能测试与一体的自动化测试管理平台。目前 UI 自动化测试模块已正式开发完成

  • UI 自动化和平台化,最大的难点在于在线调试、功能拓展 和 简洁直观的测试报告。而 rabbit 则解决了这一切的难点。
  • UI 自动化采用关键字驱动,测试人员无需任何代码基础,即可轻松完成复杂的自动化测试工作。
  • 并且可以实时在线进行调试。
  • 加入了定时任务和自动发送测试报告邮件功能,简洁大方的测试报告,使 UI 自动化持续化,可视化
  • 实现了页面元素,用例,业务分离的设计模式。可以使巨大的 UI 自动化维护成本最小化。
  • 如果你会代码,平台提供了自定义关键字功能。可以实现平台没有提供的功能,理论上可以达到只要是代码能实现的功能都可以实现自动化

服务端演示地址

因为只有一个服务器,所以只能部署服务端,没有执行端执行用例

  1. 项目地址:http://rabbittest.xyz/public/
  2. 测试密码:admin/admin1
  3. gitee 地址:https://gitee.com/tuzikuaipao/rabbit_test_platform_server 觉得项目对你有帮助,gitee 请点下 star。
  4. 项目手册:http://rabbittest.xyz
  5. 好的建议或遇到问题欢迎交流(qq 群:835208549) ## 创建页面和元素

创建页面

创建元素

创建测试用例

创建用例

关键字描述

在线调试

关联测试集

创建定时任务并配置

测试报告

测试报告

详细测试步骤

其他本来想继续写,需要上传图片,今天就暂时就写到这里

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 27 条回复 时间 点赞

感谢作者的无私分享!

感谢分享。和我公司一位同事写的 UI 自动化测试平台非常像,可以互相借鉴经验和学习。

优秀,正好学学 java😂

前端工程木有。。

兔子 在 [该话题已被删除] 中提及了此贴 12月28日 18:29
兔子 在 [暂停][美团点评] 招人招人招人 中提及了此贴 12月28日 18:30

必须打赏,怎么打赏呢?

兔子 #12 · 2020年04月15日 Author

@qugo9955 感谢,写这个只是兴趣,然后为找工作留点资本。感谢支持

咦,难道 python 的一大推人看,java 的就无人问津么?

UI 自动化一般

我很不喜欢这种骗子行为,现在这风气不好,说做了 XX X 平台就是为了增加面试时的资本或是和同行间多些谈资吗
https://gitee.com/tuzikuaipao/rabbit_test_platform_server
我看了开源出来的代码,感觉是个壳
controller 我看来全是增删改查,感觉是用工具生成的,然后我看了他接口这个实体类,就下同几个属性,

https://gitee.com/tuzikuaipao/rabbit_test_platform_server/blob/master/src/main/java/com/rabbit/model/TTestInterface.java


我找了整个 model 下的类,页面上这些属性都都地方存
/**
* id
*/
private Long id;

/**
* 接口名称
*/
private String name;

/**
* 业务流 id
*/
private Long businessId;

/**
* 业务流名称
*/
private String businessName;

/**
* 项目 id
*/
private Long projectId;

/**
* 类型 0 公共接口 业务流接口
*/
private Integer type;

/**
* 状态 0 启用 1 禁用
*/
private Integer status;

/**
* 备注
*/
private String remark;

/**
* createBy
*/
private String createBy;

/**
* createTime
*/
private Date createTime;

/**
* 排序
*/
private Integer sort;

/**
* updateBy
*/
private String updateBy;

/**
* updateTime
*/
private Date updateTime;

private static final long serialVersionUID = 1L;
}
我想参数是不是在子类中,没有,我找了,

接口 controller 就这点,
https://gitee.com/tuzikuaipao/rabbit_test_platform_server/blob/master/src/main/java/com/rabbit/controller/InterfaceController.java
/**

  • 接口相关接口
    */
    @Slf4j
    @RestController
    @RequestMapping("/interface")
    @Api(tags = "接口相关接口")
    public class InterfaceController {

    @Autowired
    private TTestInterfaceService testInterfaceService;

    @GetMapping("/listPage")
    @ApiOperation(value = "获取分页带参列表")
    public ResponseInfo getPageList(@RequestParam(value = "pageNum") int pageNum, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "serchData") String serchData) {
    JSONObject jsonObject = JSONObject.parseObject(serchData);
    TTestInterface testInterface = JSONObject.toJavaObject(jsonObject, TTestInterface.class);
    PageInfo pageInfo = testInterfaceService.findByAllwithPage(pageNum, pageSize, testInterface);
    return new ResponseInfo(true, pageInfo);
    }

    @GetMapping("/listByProjectId/{id}")
    @ApiOperation(value = "获取列表")
    public ResponseInfo listByProjectId(@PathVariable long id) {
    return new ResponseInfo(true, testInterfaceService.findByProjectId(id));
    }

    @PostMapping("/add")
    @ApiOperation(value = "新增")
    public ResponseInfo savaTTestInterface(@RequestBody TTestInterface testInterface) {
    List testInterfaces = testInterfaceService.findByNameAndProjectId(testInterface.getName(),testInterface.getProjectId());
    if (testInterfaces.size() > 0) {
    return new ResponseInfo(false, new ErrorInfo(520, "接口" + testInterface.getName() + "已存在"));
    }
    testInterface.setUpdateBy(UserUtil.getLoginUser().getUsername());
    testInterface.setCreateBy(UserUtil.getLoginUser().getUsername());
    testInterfaceService.insertSelective(testInterface);
    return new ResponseInfo(true, "保存接口成功");
    }

    @PutMapping("/edit")
    @ApiOperation(value = "编辑")
    public ResponseInfo editTTestInterface(@RequestBody TTestInterface testInterface) {
    List testInterfaces = testInterfaceService.findByNameAndProjectIdAndIdNot(testInterface.getName(),testInterface.getProj

作者这要么是不装开源,要么就是装怪,欺负别的人不看代码?

我是基于当前发布的提的疑问 ,如有不对大家拍我就是了,我是特不喜欢这种风气

兔子 #17 · 2021年06月23日 Author

@5itest 建议学一下 java 基础。实体类中使用了 lombok 插件,不需要 get set 方法。

对 兔子 回复

我当然知道 lombok ,你接口对像中,接口的参数存哪,? Moel 包下,也没看到有别的和他关联的类,请告诉我,你存哪里,get,set 可以没有, 属性得有吧,

对 兔子 回复

要开源可以不开源最新版,要开就开完全能跑的,伪开源,或是只是个壳 就不好了 。说不好听点,这是 “骗炮” 行为

对 兔子 回复


请问这几个属性,在接口类的哪里 ???? 如是在和他关联的对像里有这几个属性,请指出来是哪个实体类,lombok 只是省了 set get ,难道他能 自动给你加属性?

对 兔子 回复

请指出来,接行接口调用的代码在哪里 ,不要放一个壳子,

兔子 #22 · 2021年06月24日 Author

@5itest 这个代码就是能跑的,没少一行代码。如果非要拿自己的无知当成资本,我也无话可说。另外告诉你,你找的代码入口都错了,真的控制层路径是在 com.rabbit.controller.ApiController,别说了,我觉得都难为情

兔子 #23 · 2021年06月24日 Author

@5itest 别人点 start 的人不是傻子,至少也几百了,我从来没有要求那个点 star。你可以看看这个项目我闲置多久了。我能骗你啥。你有啥可骗的。我还是第一次遇到你这种奇葩

对 兔子 回复

不说了,最后一次回复 ApiController 里调用的是这个,笑死人了,这种代码,
https://gitee.com/tuzikuaipao/rabbit_test_platform_server/blob/master/src/main/java/com/rabbit/service/Impl/ExcApiServiceImpl.java

行不行不是你说了算,也不是我说了算,骗取不骗跑,大家明见
骗不骗对我没什么损失,我只是看到这种行为,这种风气不行,说出真相
连接口用到的参数都没地方体现,这能生产用??? 这要是测试接口能好使就有鬼了
装 B ,被人揭穿了,还说别人无知,这才是无知的表现,

兔子 #25 · 2021年06月25日 Author

@5itest 你是傻缺吧,自己看不懂代码,就别看

仅楼主可见

我也来说句实话,现在大家都在做流量,风气太差了。
嘴上说的开源,实际上是在圈流量,
再偷偷的告诉你,很多开源的作者都是做培训机构的,哈哈,比如什么师。

兔子 #28 · 2021年12月10日 Author

@kingTester 我好像没有做收费的东西吧

对 codes 回复


应该是有的呀

咋部署啊

请教下,UIweb 自动化,我看有个调试功能?如何调试呢?是在用户本客户端调起游览器执行调试?还是在平台服务器上执行调试的?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。