背景
自动化是持续集成生态中必不可少的一环, 起到了一个推动力的作用因此对于自动化用例报表体现错误时候, 就会有一个十分麻烦的工作查错或者问题定位如果您是业务专家同时又是十分熟悉自动化平台, 那么凭借经验和技术能力也很快能定位出问题但是对于开发和测试人员只看到您提交的代码, 导致什么错误您输入的测试数据, 产生了什么错误他们肯定会一脸蒙逼, 那些错误鬼知道是哪里的, 心里肯定不爽提出了对于自动化的质疑什么玩意儿? 自动化的错误吧不好意思, 这样的抱怨我觉得没毛病, 因为只有自动化用例开发者可能了解那些报错返回信息那么对于被测业务系统报错还是自动化本身错误, 这个问题该怎么去解决呢?
解决方案
对于上述问题解决方法, 我想出了一个基于数据分析的方案这个系统架构图如下:
第一 由于被测业务系统日志和自动化平台日志都是可以收集到的, 那么我们分别对两个日志做区分这里技术框架用到了消息流式处理, 简单说一下: zk 这里是管理 kafka 和 redis 集群的, 保证依附这可以健康运行 kafka 用来存取和实时传输业务日志和自动化日志, redis 用来存取从 kafka 获取 (消费) 日志时候的偏移量再介入正题, 加入 topic1 用来存取业务系统日志, topic2 用来存取自动化平台日志, 那么两个数据源可以保证实时输入到我们搭建的流式系统中简单说一下选择流式处理理由: 持续集成要求实时性高, 用例量比较大, 如果采用传统处理方式效率太低且开发代价很大
第二 接下来就是最关键的部分, 数据分析与处理模块设计首先是对于原始数据 (原始日志) 做预处理, 方法是一个基于 python 的 re 模块, 将正则表达式作为一个灵活可变的配置文件, 然后通过基于 re 开发解析公共能力模块支撑每次运行加载正则表达式文件, 然后得到模板化结构数据, 此时的数据都是我们想要的内容与格式接下来我们根据业务系统日志特点和自动化日志特点, 设计一个自己的模型, 可能就是一堆简单 if else 的的堆砌, 那也没关系! 只要能达到目的, 后续可以在做优化, 但是前提这部分要解耦做成一个单独的模块此时在不同的分支就会形成不同的结果, 此时就可以区分出不同的错误, 不用在面对他们的甩锅! 这里将结果存入到 mysql 中
第三 接下来就是展示我们分析出来的结果, 采用的是 django, 写几个简单的页面就可以了
上边扔出了砖头, 您是否已经有了自己的答案呢? 那请在评论区留下, 相互学习热枕期待您的宝贵想法与经验~
写在最后
最后写一点优化点吧, 也就是体现标题智能二字, 目前这是架构设计不是那么的智能后期引入 NLP, 打算在第二步骤中加入基于 nltk 的自然语言处理技术目的是达到对我们筛选出来的重点日志通过这个评估系统智能识别出是消极的还是积极的, 根据实际情况设置评估区间, 当然需要大量的训练才可以得到这个区间
来源: https://www.cnblogs.com/xnchll/p/8607678.html