测试用例又双叒叕失败了,啥原因?NLP帮你来分析

敏捷小智 发表于 2021/11/04 10:23:51 2021/11/04
【摘要】 随着软件行业的快速发展,为了实现高质量的快速迭代,越来越多的公司开始推进测试自动化来缩短测试周期,较成熟的软件公司开始追求80%甚至更高的测试自动化率。一轮耗时一周的手工测试在自动化后可能一天或更短时间内就能完成全部执行。在每一轮自动化测试中,对失败用例进行根因分析是一份十分重要的工作,而海量测试日志的人工分析开始成为瓶颈。本文将介绍如何使用AI技术实现失败测试用例的智能分析。基于日志分析辅...

随着软件行业的快速发展,为了实现高质量的快速迭代,越来越多的公司开始推进测试自动化来缩短测试周期较成熟的软件公司开始追求80%甚至更高的测试自动化率一轮耗时一周的手工测试在自动化后可能一天或更短时间完成全部执行每一轮自动化测试中对失败用例进行根因分析是一份十分重要的工作,海量测试日志的人工分析开始成为瓶颈本文将介绍如何使用AI技术实现失败测试用例的智能分析。

基于日志分析辅助开发人员发现及定位系统问题早已不是新鲜课题,在过去几十年里都有广泛的研究。随着数据的持续积累,学术界的研究和工业实践都有尝试使用机器学习来求解,包括监督方法和非监督方法。在发现问题方面,2017年的一篇DeepLog: Anomaly Detection and Diagnosis from System Logs》引起了广泛的关注。文中介绍了通过多重LSTM模型,学习日志模板及日志参数组成的时序数据特征系统行为及系统状态异常检测辅助开发人员提前感知系统的潜在风险。本文将定位问题的角度,介绍如何使用日志分析的技术在测试场景下辅助失败用例的根因定位。

本文的使用的算法简单很多,但对测试日志及历史分析有较高的要求。首先基于大数定律,样本量越大越接近数据的原始分布所以要求待分析的失败用例有足够的量级,-否则不仅有杀鸡用牛刀之嫌,效果也不会好。其次,有一定的失败测试用例分析数据,本文介绍的是有监督学习的解决方案,带标签的数据质量将会决定学习效果的上线。

好了,既然上来就揭了谜底:用文本分类模型来实现失败测试用例的根因定位。就给大家展示一下完整的解决方案

截图.PNG

图一:失败测试日志分析服务构建流程

如图所示,失败测试日志分析服务构建流程可以概括为以下步骤:

1. 测试日志分析数据的准备:确认测试日志被正确记录并保存,对失败测试日志的根因分析也被妥善保存。日志中应该包含可以用来定位根因的高价值信息,如系统返回的错误码、报错信息等。

2. 模型的训练:根据已有的分析数据训练模型

a) 日志清洗在失败用例的日志中, 充斥的大量与失败原因不相关的内容。这些噪音数据会增加模型训练的不确定性。结合历史经验,对日志数据进行清洗,提取关键信息,在训练初期是不可缺少的关键一步。例如,实践中发现,几乎所有失败用例中都有系统返回的错误信息。如果没有,需要仔细检查一下是日志设计不合理还是可以直接认定为测试环境问题。测试人员拿到失败测试用例,看到错误信息基本就能定位大概的失败原因。所以在日志清洗时,只截取错误信息,是目前实践下来效果较好的一个预处理步骤。

样例:

Case001    配置问题    参数比对失败

Case002    环境问题    无法连接*.*.*.*

……

b) 日志预处理人参与的越少,后期维护的成本越低,所以在日志预处理阶段,只对日志做简单预处理,如分词、去除停用词等。

c) 模型训练:将历史分析数据载入TextCNN文本分类模型。TextCNN最大的优势是网络结构简单,多项数据集上轻松超越benchmark。网络结构简单,参数数目少,计算量少,训练速度较快。想了解模型细节的同学,可以戳Convolutional Neural Networks for Sentence Classification

d) 模型调参通过修改embedding dim长度、调整随机策略等,尝试获得最优的模型。模型能在实验室实现train test准确率在85%左右,可以认为是ready to go的模型

3. 步骤2训练获得的模型host成在线分析服务

4. 测试自动化执行中,失败测试用例的日志在预处理后,被自动post到预测服务,获得预测的结果,包括预测的根因和置信度。

测试人员可以在一轮测试执行后立刻得到测试结果分析报告。

首先测试人员结合历史经验,对可直观感知失败原因的测试用例及时进行定位并做出处理,比如是测试环境问题则修复环境,重新执行测试用例。

其次结合模型输出的置信度对预测结果做好分级历史上大量出现过的错误日志,一般置信度较高,直接给出根因置信度较低的失败用例,可能是新增问题及时给出警告。

不同的业务场景会生成不同的日志,随着业务场景的不断增加,日志的特征空间趋于无限,无法用同一个模型适配所有场景尽量减少人工参与针对特定业务场景,使用较轻量级的模型快速训练迭代是能够在工业界落地实现的一个很重要的特性本文介绍的TextCNN文本分类模型目前实践来看能够满足以上要求的。在提升模型准确度上,结合主动学习提升数据质量,引入小样本学习减少人工依赖将是后续重点的探索方向。


参考资料

1. Experience Report: System Log Analysis for Anomaly Detection, 2016.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。