【智能化测试专题】基于强化学习的测试日志智能分析实践
随着软件规模的不断扩增,加快测试时间降低成本、实现智能化测试是至关重要的,而测试日志智能分析是提升智能化测试效率的一个关键步骤。当前由自动化测试阶段产生的大量日志,主要依赖人工分析,而人工分析工作量大、耗时较长,以华为某产品线为例,每月都会产生30-40万的测试失败日志,而人工分析每天仅能分析20-30条日志。此外人工分析时,很大一部分工作是分析重复或同类问题,且测试人员分析经验复用困难,严重制约测试效率。
测试日志智能分析是从日志采集、日志解析与预处理、失败日志根因分析及分类以及数据可视化的一整套解决方案。日志分析的发展从传统的基于规则引擎的算法,到现在的基于机器学习与AI技术的算法方案,其自动化程度得到了很大的提升, 然而它依然会面临着一些问题:1)算法和业务之间存在一定的信息差,业务需要理解算法层面所需要的关键信息,才可能使得所提供的信息是有效的。2)算法方面也需要协同产品方面的专家,来进行特征提取,而专家资源受限。3)其解决方案需要针对不同产品特性进行调参、优化模型等,但模型需要海量历史数据和标准化的标注,业务方标注准确率堪忧。
针对上述问题,我们基于强化学习和主动学习,提出了一种失败测试日志分析方案,其主要流程如图1所示。该方案包括了:1) 数据采集 2)数据预处理3)特征生成 4)模型生成 5)智能分析等模块。
1. 数据采集
日志智能分析的任务是有监督/半监督学习任务,我们需要事先对数据进行收集与标注,针对测试人员标注好的数据,我们按8:2的比例进行训练数据和测试数据的切分。平均地,训练数据的量级可达到万级以上,测试数据的量级可达到千级/万级以上。
2. 数据预处理
测试日志文本通常是非结构化的日志文本,文本长度通常较长,单个日志大小平均可达300KB,我们需要事先进行文本清洗和预处理,来过滤与失败类别无关的信息,聚焦到与任务相关的有效信息上。预处理步骤会先移除不需要的格式,比如解析html格式文本,提取相应的日志内容;接着,提取的日志内容会分别经过基于通用规则的方法和基于用户自定义规则的方法,来进行数据的清洗和分词。这里的通用规则是综合多个业务提炼的规则,用户自定义规则则是用户针对当前业务生成的规则和自定义词典(包括专业名词和停用词等),可适配到各个业务。
3. 特征生成
日志文本特征向量构建主要选取了基于word2vec的向量化方法和基于TextCNN的向量化方法来。日志文档特征向量是利用word2vec方法生成的词向量与对数词频加权平均后的结果,以及TextCNN直接生成文档向量。
4. 模型生成与智能分析
模型生成与智能分析主要是结合了强化学习和主动学习,来对是否给出正确预测进行奖罚。对于新采集到的日志,会跟日志库中的数据进行比较,选出top-k个距离最近的日志样本,若距离超出一定阈值,则不给出分析结论,若符合阈值内的样本则加入候选集中,并且强化学习模型会计算候选集的得分,根据得分判断是否给出失败原因描述。最后由人工去确认失败原因是否正确以此是否做出奖励或惩罚,从而不断优化强化学习模型。
5. 性能分析
相比于业界主流方法,该模型的分析准确率能够达到90%以上,算法时间整体从501.2s提升在2.1s左右。另外智能分析模型在某产品落地时,免人工复核占比52.78%。
6. 自助接入
测试日志智能分析已经落地华为100多个产品线,为用户提供了自主接入、自主训练、结果分析的功能:提供自动的预处理规则管理、预处理效果展示,支持用户一键式自助训练模型,观测模型分析准确率与结果。
7. 总结
在华为多个产品业务背景下,本文提出了一种有效的日志智能分析方案,可以学习历史测试日志,对现网失败用例根因智能定界,大大减少了重复问题的定位,减轻了测试人员的工作量,另外针对不同产品的数据特征,可以适配合适的模型方案,并提供了用户自助接入与分析的功能。相比于基于规则的分析方法,本文方法不需要维护复杂的规则表以及规则冲突的情况,另外相比于传统监督学习的方法,本文方法更适用于有大量人工标记且数据稀疏的情况,来提升预测结果的准确性。我们也将持续地关注业界学界的最佳实践及新模型,以探索更优的解决方案。
文章来自 PaaS技术创新Lab,PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新“境界”!(详情欢迎联系 mayuchi1@huawei.com;guodongshuo@huawei.com)
PaaS技术创新Lab主页链接:https://www.huaweicloud.com/lab/paas/home.html
- 点赞
- 收藏
- 关注作者
评论(0)