测试积点老人 发表于 2019-1-8 15:07:42

嵌入式设备软件开发测试的关键技术 – 静态分析

最近Parasoft做过一个关于测试工具尤其是静态分析技术的调查报告,收集大家对于测试工具的使用印象和技术总结。其中有一个经验丰富的资深软件工程师Brian,他在静态分析工具上颇有经验,但他反馈的结果是这些工具报告的很多问题总是类似“编译器警告”,并非绝对的潜在漏洞(bug)或软件缺陷。深入沟通交流后发现,他的这些印象最主要的原因是因为他所采用的测试工具大部分是免费软件,而且所接受的相关培训很多时候仅限于网络论坛,这样带来的结果必然是测试工具并不能实际解决问题,反而用于学习工具的时间超过了实际解决问题的时间,这有些本末倒置了。所以,测试工具的要求(尤其是静态分析技术)除了通常大家所知的自动化属性,其实还需要更多考量测试报告结果的度量性和有效性,以用户角度去帮助客户快速应用先进测试技术并解决代码问题。众所周知,嵌入式行业的软件复杂性高,设计的平台丰富,各种不同的芯片和架构,纷繁的编译器种类等等。这必然要求一个成熟的开发测试平台体系,以及专业的技术支持服务,尤其是对于嵌入式行业。
静态分析结果的有效性各大嵌入式行业如医疗、汽车、铁路、航空航天等的软件开发者每天都可能会遇到校验软件问题(bug)的有效性挑战,接受从客户、技术支持团队及质量测试部门的反馈结果并及时调查给予响应。对于开发人员来说,有时候昨天已经做过的修复工作都有可能产生新的软件问题从而加大工作任务。所以软件问题的结果验证是一个值得非常关注的问题,需要能够有效并快速地区分各种性质的问题,对不同的问题进行自动优先级排序,将重心放在有价值的问题上,快速高效地推进问题的解决。如果这只是一个低等级的警告问题,它不是一个错误或潜在bug,并不值得浪费太多时间或优先处理。目前的情况是,许多开发测试工具无法用一个简洁方便的方式帮助用户定位真正有价值的问题。所以,这里对于一个成熟的静态分析测试工具基本提出了以下关键技术属性需求点:
[*]完备的代码规则标准支持;
[*]自动化代码测试扫描技术;
[*]分级区别明显的问题报告;
[*]问题-风险-严重性的关联价值报表。


Parasoft静态分析技术方案针对Java、C/C++、.Net等主流语言的软件产品开发, Parasoft公司提供了一个企业级的开发测试解决方案。除了全方位的静态代码分析能力如模式匹配分析、数据流分析和度量分析等,该开发测试平台还具备良好的扩展性,包括了单元测试,集成测试,运行时错误检测,代码审查,覆盖率分析等功能,可以自动化生成测试用例,执行单元测试的同时提供多种视角的覆盖率分析,提供图形化报表系统,是一个完善的方案级平台,全方位落实自动化缺陷预防政策,保障客户产品质量的同时提高软件产品交付速度。
相关Parasoft客户案例场景很多免费测试工具或不成熟的测试产品有时会报告超过20000个任务给到具体的一个开发人员,这其实是缺乏一定的测试规控,没有人能够一天处理这么多的事情。一个成熟的开发测试策略将根据任务的严重性和风险划分优先等级。此外,它将根据整个团队的工作负载进行工作分配并利用个人优势区别划分测试任务。Parasoft某医疗行业软件客户:“当我和我的新朋友确定,他认为每天修复5个静态分析的违反规则是没有问题的。如果他有一个十人的团队,每个人每天修复5个静态分析违反规则,然后他需要大约400天才能看到优美的代码。”让我们再进一步。不是所有的静态分析行为都是平等的。如果我们将最高等级的风险、最严峻的问题提前尝试解决,那么软件的质量、安全性、可靠性将被在1-2个月内梳理的非常合理。而每个问题都仅需要分配几乎忽略不计的5分钟,这将比之前很多所经历的发布周期耗时更短更高效。更棒的是,一个成熟的开发测试平台将自动管理静态分析任务的优先级和分配给不同的负责人。作为管理者,在一开始就设置一些团队测试政策,这些政策将确保团队里的每一个成员每天都得到适量的最高优先级的任务,从而实现快速高效的团队工作流程。

liuyan.198506 发表于 2019-6-25 10:11:37

又是你,我总觉得跟你在一个圈子里:o
页: [1]
查看完整版本: 嵌入式设备软件开发测试的关键技术 – 静态分析