1
Coverity Development Testing
刘记明
北京奥索
2013年6月
Logo area
2
Coverity Development Testing
通过持续集成和开发测试,快速降低风险
3
“这是一个由软件主宰的世界”
软件
- Marc Andreessen
Health
Financial
Communications
SCM / Logistics
Enterprise
Mobile
81%的业务领导人物科技是企业经营模
式的关键要素
到2012年底, 工作场所将会使用超过6千万平板电脑和1亿7千5百万台智能手
机
到2016年,全球2千家企业中的99%会在任务关键应用中选用开源软件
Automotive
4
Toyota:软件导致普锐斯刹车问
题
纳斯达克高管抱怨软件致使Facebook 上线延迟
Knight 软件故障耗资4亿4千万美元
5
Coverity的价值
开发通过以下方式促进软件软件开发行业转型:
降低运营成本
加快开发和投放市场时间
保护品牌免受灾难性故障损害
6
为何风险重重?
软件发展的速度和复杂程度远远超出了原有测试方法的能力范围
开发测试 软件复杂性
投放市场时间
测试方法 安全测试
功能测试
性能测试
手动测试
7
很少在开发阶段发生缺陷漏报
设计 开发 质量和安全保证 部署
我们的任务和目标:
在左侧两个阶段完成安全和质量测试
5倍成本 10倍成本 30倍成本
8
转型成熟度模型
Level 1 自动检测缺陷
在软件构建流程中
检测关键质量和安
全缺陷 不会引入新缺陷
Level 3 优化开发者工作流
利用常见缺陷工作
流,整合入现有工
作流并测试效力
Level 4 代码管理
建立并执行一致的
源代码质量和安全
政策 建立源代码验收标
准
Complete 企业代码保证
如果引入新的缺陷,所有旧代码被清除,
构建失败 所有受变更影响的
代码和关键代码都
经过测试
同S
DL
C整合
高
开发测试采用 高
Level 2 识别残余风险
识别由于不充分自
动测试所导致的风
险区域 确保关键代码经过
测试并且按优先级
排序
9
Coverity Static Analysis 原理
模拟多个编辑器行为
同现有创建系统集成
静态测试所有 执行路径
找出缺陷和不一致的编码模式
分析 构建
找出缺陷位置和根本原因
在整个团队中共享和管理缺陷分类
展示 & 管理
10
真实、重要的结果 关注发现真实缺陷而不是风格违规或其他表面问题。
拥有超过12年的开源代码和商业代码分析经验
行业领先的 低误报率/漏报率 误报率明显低于 15%
误报浪费时间、阻碍采用、降低结果可信度
最广泛的检查库+ 最深厚的算法 在大代码库实现深度、广度、可扩展性三者之间的最优平衡
高质量成果
11
找出关键缺陷
• Tomcat Webserver 5.5.17
• 用于web应用的开源服务器
• 在成千上百的缺陷当中, 我们发现了可能导致整个服务器死锁的 “reverse lock bug”
• 小概率事件-传统测试很难发现
12
单元测试有效性
High Risk Code
高风险 代码
13
降低风险
13
在我们的关键代码中,所有行为被
修改的组件必须100%经过测试
(除去错误-处理)
自定义测试政
策
Test Advisor 评
估测试政策
开发者获得可
行工作项目
现有 Coverity 静态分析引
擎 +
我们构建的新工具
一致UI
14
降低风险架构
测试建议
解决由于不充分测试所导致的风险问题
测试策略评估 • 关键代码分析 • 变更影响分析 • 测试执行分析
测试监测 代码所有权和变更
历史 静态代码分析
定制
测试策略
15
将质量纳入整个开发内循环
代码
构建
测试 逐日构建 持续集成
发现并修复质量缺陷
16
工作流
16
• 安全审计 • 产品发布管理
(此处仅用于展示– 还可能有其它工作流)
QA
每日/持续构建 • 桌面分析 • 检查缺陷 • 动作优先排序 • 进行修复 • 跟踪进程
代码检入
静态分析测试
• 功能测试 • 性能测试 • 压力测试 • 集成测试
开发 产品发布& 管理
静态分析测试
17
Issue Responsibility Is Critical
17
18
成功的关键要素
18
代码
构建
测试 每日构建 持续集成
高保真编译
高性能分析
低误报率
侦测关键缺陷
简单缺陷导航,
便于理解
综合分类与修复
管理可视性和管
控
团队合作
19
成功的关键要素
19
代码
构建
测试 每日构建 持续集成
高保真编译
高性能分析
低误报率
侦测关键缺陷
简单缺陷导航,
便于理解
综合分类与修复
管理可视性和管
控
团队合作
开发者采用
工作流集成
管理监督
20
按指标管控
每天进行
自动高保真分析
20
快速将结果分类,以便对
问题进行分类和优先级排
序 精确数据
根据综合数据分析,制
定精确行动 可靠数据
21
机构 ‘热图’
Confidential: For Coverity and Partner use only. Copyright Coverity, Inc., 2013 21
22
转型成熟度模型
Level 1 自动检测缺陷
在软件构建流程中
检测关键质量和安
全缺陷 不会引入新缺陷
Level 3 优化开发者工作流
利用常见缺陷工作
流,整合入现有工
作流并测试效力
Level 4 代码管理
建立并执行一致的
源代码质量和安全
政策 建立源代码验收标
准
Complete 企业代码保证
如果引入新的缺陷,所有旧代码被清除,
构建失败 所有受变更影响的
代码和关键代码都
经过测试
同S
DL
C整合
高
开发测试采用 高
Level 2 识别残余风险
识别由于不充分自
动测试所导致的风
险区域 确保关键代码经过
测试并且按优先级
排序
23
Coverity Development Testing Platform
Security Advisor
Test Advisor
Analysis Packs
Coverity SAVE™ Static Analysis Verification Engine
SDLC Integrations Policy Manager
Quality Advisor
Architecture Analysis
Dynamic Analysis
FindBugs™ Analysis
Analysis Integration
Toolkit
Coverity Connect
Test Execution
Third Party Metrics
Build/ Continuous Integration
HP ALM
IDE
Code Coverage
Defect Tracking
SCM
Confidential: For Coverity and Partner use only. Copyright 2012 Coverity, Inc.
24
经证实运营成本显著降低
实现在案和离岸代码管理度量可视化
能够找出由于崩溃或突发行为所导致的缺陷
强化了应用生命周期管理流程
Coverity 总结