You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
实际项目中,我们嵌入式SDK(Software Development Kit)面临的是需要适配的硬件种类越来越多,而且复杂程度越来越高,从ARM Cortex-M0/M4/M7/CM33,到ARM-Cortex A 系列,以及包含DSC/DSP等各种架构,硬件类型多达60种。除此之外一个完整SDK不仅要提供基础的BSP和driver层的支持,也需要对三方middleware的集成,以方便客户进行二次开发。比如支持主流的RTOS,图形图像处理,机器学习,音频处理,电机控制等等热门领域。
项目简述
分析和监测嵌入式软件Continues Integration(CI)/Continues Delivery(CD)编译结果
背景
随着物联网, 智能驾驶,机器学习,5G等技术的快速发展,对嵌入式系统尤其是软件的要求越来越高,一方面软件要足够灵活,能够根据实际需求进行定制和剪裁,以满足功耗和存储的限制;另一方面对软件的准确性、安全性以及稳定性有着更严苛的标准。
实际项目中,我们嵌入式SDK(Software Development Kit)面临的是需要适配的硬件种类越来越多,而且复杂程度越来越高,从ARM Cortex-M0/M4/M7/CM33,到ARM-Cortex A 系列,以及包含DSC/DSP等各种架构,硬件类型多达60种。除此之外一个完整SDK不仅要提供基础的BSP和driver层的支持,也需要对三方middleware的集成,以方便客户进行二次开发。比如支持主流的RTOS,图形图像处理,机器学习,音频处理,电机控制等等热门领域。
这么一个复杂的SDK,对软件质量的把控带来了巨大挑战。测试点组合多,测试分支复杂,测试项繁多,测试结果和日志数据巨大,往往需要投入不小人力和时间成本去人工分析,以至于测试结果难以汇总,软件整体质量很难把控,尤其是难以得到真实数据的支撑,也很难从历史数据上得到有用的信息,这样的CI/CD已经严重拖累了SDK的开发、迭代效。
基于以上的原因,我们需要一个强大而稳定的系统监测SDK CI的状态和分析结果。
目标
自动化分析CI/CD数量巨大的测试日志,从而有效的监控软件质量和状态。
实施方案
CI生成的流式日志数据,属于流式数据,经过filebeat + logstash 对数据进行简单的清理,源源不断的写入Pravega stream。Pravega 支持数据的持久化,并且提供弹性的无限扩展能力。因此很适合日志数据处理,不仅免去了额外的存储需求,而且Pravega也能对数据进行缓冲, 达到削峰填谷的作用。下图是本项目的架构:
数据处理部分,采用了基于朴素贝叶斯算法的模型。朴素贝叶斯算法简单有效,常用于文字的分类,例如垃圾邮件检测等。在我们的模型中,选用关键词和短语作为特征值,经过大量历史日志训练,基本上可以达到95%以上的准确率。
在Flink job部分,以UDF的方式嵌入上述模型,Pravega Stream充当数据源。Pravega 的特性决定了event 不会被遗漏,重复,或者乱序处理。如果配置得当,Flink Job 还可以自动从故障中断的地方恢复。
经过处理的数据的写入业务数据库MySQL存储,,最后通过Grafana 完美的呈现一个动态、实时的可视化报表。
该项目可生成实时的可视化状态监控报表,支持查看任意历史时间点的状态。报表中提供了整体软件测试的结果汇总,各编译器编译速度的分析,硬件平台的测试进度,以及具体测试失败原因的预测和分类。
成员介绍
袁彬(Bill) :资深嵌入式软件测试工程师,在欧美企业从事嵌入式软件开发14年,目前担任软件测试经理,熟悉嵌入式ARM架构,精通Python,Ruby,C,C#,Java等编程语言。对嵌入式软件CI/CD和自动化测试有透彻的理解,特别是多任务大数据的自动化测试方案上设计和实施有诸多建树。
郭辉(Haley):高级嵌入式软件测试工程师,在欧美企业从事嵌入式软件开发5年,目前任自动化测试框架架构师,精通Python,Ruby,C,C#,Java,Java Script等编程语言。对嵌入式软件CI/CD自动化测试有深入的研究,特别是在分布式并行化的自动化测试方案上设计和实施有诸多建树。
余楚志(Fly): 资深嵌入式软件测试工程师,在欧美企业从事嵌入式软件开发7年,拥有丰富的CI/CD自动化测试项目经验。精通Python,Ruby,Perl,C,C#,Java等编程语言,熟练设计自动化测试案例和优化自动化框架。
The text was updated successfully, but these errors were encountered: