HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

InfoQ 专访:Coverity 谈“开发中测试”与程序员最常犯的编码错误

  • 2011-11-21
  • 本文字数:2412 字

    阅读完需:约 8 分钟

Coverity 公司位于美国加州旧金山,他们的产品包括 Coverity Integrity Control、Coverity Static Analysis 等一系列代码分析工具与解决方案。日前,Coverity 公司产品副总 Ezi Boteach 先生就“开发中测试”、代码复查和开发人员最常犯的编码错误接受了 InfoQ 中文站的采访。

InfoQ:能否介绍下 Coverity 的“开发中测试”理念和你们的 Development Testing Platform?

Ezi:“开发中测试”是新出现的一种技术,包括一系列流程和软件,例如静态分析。开发中测试的目的是要帮助开发人员、管理层和业务人员能在开发周期的早期,找到并修复质量和安全方面的问题,这些代码还在开发之中,不会影响上市时间、成本或客户满意度。

“开发中测试”扩大了传统测试范围,可以包括功能测试、性能测试和安全审核,为开发团队提供更快、更便捷的方式来测试代码中的缺陷,而且是以非侵入的方式。这种方式下,开发人员能够把注意力集中在创新上,管理层能够在开发周期早期尽早了解问题以作出决策,业务人员能持续向市场交付高质量的产品,获得竞争优势。

InfoQ:代码复查是人们高度推荐的编程实践。如果使用你们的产品,对于代码复查,您有什么建议?

Ezi:代码复查是软件“开发中测试”很重要的部分,而且其成本很高,因为需要另一个开发人员来复审代码,很多时候这个开发人员还必须是资深人员。在代码复查之前先做静态分析,这能让代码复审过程更快,而且成本更低。使用自动化分析来检查变更以及于系统其他部分的集成点,以此来识别和消灭代码错误,代码复审就可以更集中于逻辑和功能错误,而不是代码的缺陷,这样做更划算,能够自动化,而且易于重复。

我们推荐测试驱动开发所有的工具和实践,包括代码复审、单元测试和代码覆盖率。当然,要是能和 Coverity 的自动化代码测试工具一起使用就更好了。

InfoQ:你们的产品如何与像 xUnit 这样的工具一起配合使用?

Ezi:单元测试是“开发中测试”的重要组成,需要支持测试驱动开发。使用 Coverity 5.5,我们引入了“开发中测试”的平台,能够让多种不同工具与测试工作流集成。目前我们还不能专门与 xUnit 集成在一起,但是我们的客户现在能够很方便地把他们使用的测试工具与 Coverity Development Testing 平台集成。举个例子:Coverity 5.5.1 版本包括与常用 Java 静态分析工具 FindBugs 的集成。这样的集成让管理人员能够降低维护多个测试工具的成本,并通过统一的工具来推行策略。开发人员也有统一的界面来查看缺陷,并排定解决的优先级。

InfoQ:你们的产品是否能与持续交付流程集成?

Ezi:Coverity Static Analysis 可以与多个构建系统集成,包括 Jenkins 这个常用的持续集成系统。一般来说,与 Jenkins 和持续集成系统的集成是为了确保所有的持续构建都能运行自动化代码测试工具。如果分析中发现了新的缺陷,一个构建版本就是失败的。这确保新的缺陷不会引入到交付的软件的主干代码中,而交付过程是持续交付流程的一部分。这也能保证失败的构建版本不会进入流程的下一个阶段,一般来说是 QA 阶段。Coverity 就像是交付过程中的一道闸门。

InfoQ:除了使用你们的产品,您是否还能为开发人员和架构师提供一些其他的原则与实践?

Ezi:确保软件的质量,防止安全漏洞,这需要良好协作、工具和开发流程管理这几方面的结合。从清晰的需求文档开始,这是开发任何新功能的基础。需求文档之后,就是功能和系统架构师完成的功能和需求设计。代码开发完成后,“开发中测试”应该是这个流程的有机部分。不仅仅是一个产品,而应该是流程和技术的组合,帮助开发组织在开发周期早期、撰写代码的时候,就能修复软件的问题,确保代价高昂的缺陷不会进入后续阶段和生产环境。

架构师要确保软件的架构良好。这需要人工复审和架构分析,此外还要有经过考验的软件开发方法论。与之类似,开发人员也要保证,除了使用静态和动态分析的自动化测试之外,也要使用代码复审和单元测试。质量保证(QA)是任何软件开发过程中都很重要的阶段,以确保功能测试和性能测试顺利通过。最后,安全审核也很重要,保证在识别、修复、移除代码缺陷时不会带入新的安全漏洞。

InfoQ:根据 Coverity 收集的数据,您能否列举一些开发人员最常犯的错误?

Ezi:开源项目 SCAN(scan.coverity.com)能够很好地发现开发人员常犯的错误。从 2006 年开始,Coverity 与美国国土安全部一起,研发了 Coverity SCAN 项目,来保证开源软件的安全性和完整性。Coverity SCAN 分析了超过 290 个开源项目,包括 Linux、Apache、PHP 和 Android,识别出 49,654 个缺陷,开源软件开发人员已经修复了超过 15,000 个缺陷。下面的表格就展示出了开源软件中最常出现的缺陷,商业软件也与之类似。

SCAN 项目中的出现频率 风险程度 NULL 指针引用 27.60% 中 资源泄露 23.19% 高 非原意图表达式 9.76% 中 读未初始化的值 8.41% 高 释放后使用 5.91% 高 缓冲区溢出 5.52% 高很重要的一点要指出:像 NULL 指针引用、内存泄露和缓冲区溢出常常会带来很严重的质量和安全风险。很多这样的缺陷,使用传统的测试方法,有时难以找到。使用 Coverity 的工具会更易于发现类似问题。

要想了解更多关于 SCAN 项目的信息,可以访问 2010 SCAN 报告,其中包括对于 Android 核心代码的分析结果。

InfoQ:对于代码分析可视化的重要性,程序员们认识得越来越明白了。您能否列出 3 个最重要的相关分析图?

Ezi:Coverity 的 Development Testing 平台能以代码可视化形式让开发人员和管理层看到代码的质量。可视化能够在几个方面起到帮助作用:它有助于标识代码的所有者和缺陷,能帮助展示出软件代码的整体可读性,以及质量和安全风险较高的代码区域,还能有助于推行代码完整性的检查策略。

只谈 3 个图很困难,但我想选的是:未解决的缺陷与已解决的缺陷的对比、每个软件组件中的缺陷个数、新的 Integrity Control 热度图。可以访问 http://www.coverity.com/products/integrity-control.html 来获得更多有关 Integrity Control 热度图的信息,其中还能看到演示。

2011-11-21 01:003376
用户头像

发布了 479 篇内容, 共 158.0 次阅读, 收获喜欢 49 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 | 测试方法的基于活动的测试手段

测吧(北京)科技有限公司

测试

全景剖析阿里云容器网络数据链路(六):ASM Istio

阿里巴巴中间件

阿里云 容器 云原生

车企数据分类分级的实践指南出炉!“数据安全推进计划”发布,奇点云参编

奇点云

数据安全 奇点云 数据分类分级 车企

基于人形检测的划区域客流统计

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜 人形检测

从原生迈向混合,小而美团队如何搞定APP高效定制

华为云开发者联盟

App 华为云 定制开发 华为云开发者联盟 企业号 3 月 PK 榜

ChatGPT 仅仅是一款工具而已 | 社区征文

小鑫同学

ChatGPT

Nydus 在约苗平台的容器镜像加速实践

SOFAStack

开源 互联网 开发

干货演讲!龙蜥自动化运维平台SysOM 2.0调度、内存相关诊断功能介绍 | 第 70-71 期

OpenAnolis小助手

内存 系统运维 sig 龙蜥大讲堂 SysOM

从资源弹性到数据弹性,乾象如何将云上量化研究效率提升 40%?

阿里巴巴云原生

阿里云 云原生

转型调研 | “鼎新汇•企业行”第一站:走进中国联通软件研究院

信通院IOMM数字化转型团队

数字化转型 IOMM 鼎新汇•企业行 鼎新杯

详解神经网络中反向传播和梯度下降

华为云开发者联盟

人工智能 神经网络 华为云 华为云开发者联盟 企业号 3 月 PK 榜

openEuler用户软件仓(EUR)介绍

openEuler

Linux 操作系统 虚拟机 openEuler 软件包

BI工具数据看板哪个好,瓴羊Quick BI整不错!

流量猫猫头

云快充研发中心平台架构师谈云原生稳定性建设之路

阿里巴巴中间件

阿里云 容器 云原生

软件测试/测试开发 | 测试平台开发-前端开发之Vue.js 框架

测试人

软件测试 测试开发 测试平台

软件测试 | 什么是Logstach

测吧(北京)科技有限公司

测试

软件测试 | Elasticsearch+Kibana

测吧(北京)科技有限公司

测试

Wasm 原生时代已经来到

SOFAStack

开源 互联网 Wasm

阿里云函数计算助力高德RTA广告投放系统架构升级

阿里巴巴中间件

阿里云 云原生 函数计算

大国重器用友BIP,助力贸易行业数智化转型

用友BIP

数智化

软件测试 | 质量控制

测吧(北京)科技有限公司

测试

文档资料多?官方文档怎么找?openEuler文档地图帮你搞定

openEuler

Linux 操作系统 文档 openEuler

软件测试 | 针对看起来很小的代码错误执行后续测试

测吧(北京)科技有限公司

测试

软件测试 | 使用冒烟测试检验版本

测吧(北京)科技有限公司

测试

Nacos+ThreadPoolExecutor构建动态线程池

小小怪下士

Java 程序员 线程池

60% 程序员大呼:我要远程办公!

引迈信息

敏捷开发 低代码 远程办公

软件测试 | 不要把手工测试与自动化测试等同起来

测吧(北京)科技有限公司

测试

科技大势怎么看 2023怎么干?

加入高科技仿生人

人工智能 低代码 科技 数字孪生 6G

技术专家云集,OpenHarmony技术峰会分论坛聚焦内核及视窗创新

Geek_2d6073

搞定预设,让你的 ChatGPT 不受限制 | 社区征文

极客飞兔

人工智能 聊天机器人 openai ChatGPT

如何基于 Antmove 将小程序快速迁移至 FinClip 环境

FN0

小程序 支付宝小程序 finclip

InfoQ专访:Coverity谈“开发中测试”与程序员最常犯的编码错误_语言 & 开发_郑柯_InfoQ精选文章