嵌入式软件白盒测试技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

企业不做单元测试的原因
企业不做白盒测试的主要原因
6% 7%
10% 28%
11% 12% 26%
缺少有效的测试工具 老产品很难做白盒测试 代码量不大就用代码审查代替了 其它原因
投入大产出少 白盒测试不重要 几个牛人在编码,不必做白盒测试
一个游戏:将小车开出谜宫
语录
在恰当的时间以恰当的方法 做恰当的事情!
有序状态:
1. 2. 已有多个项目成功推行单元测试,已成可拷贝的活动 有一批人对白盒测试具有清晰认识,领导层对实践的前景既不悲观,也不盲目乐观
3.
4.
设立专门机构推动UT与IT,白盒测试活动也有流程保障
少数项目有显著效果,多数项目稍有成效,个别项目是失败的
自组织状态:
1. 2. 3. 时时测试、持续测试已成风气 白盒测试已成员工的普遍行为与自发行为 有所为有所不为
验收测试 系统测试 集成测试
单元测试
实施白盒测试的差异性验证
两个性质接近的项目(项目A与项目B),项目A没做正规白盒测试, 仅拿调试当测试,项目B实施规范的白盒测试,这两项目结束时分 别按问题根源对全部BUG作统计。
项目A:缺少规范的白盒测试
从“白盒测试问题比例” 与“逻辑问题比例”可 看出: 不做白盒测试必然导致 大量问题漏测
领测技术(EzTester)简介 嵌入式软件白盒测试技术
—— 第4代白盒测试方法的理论与实践
Approved by WAYNE Work Studio At 2007/05/18
讲师介绍
讲师:Wayne Chan (wayne@ezTester.com) 任职经历


曾在HW公司工作8年(1997~2004),先后担任测试技术经理、公司测试系统工程师、公司测试技 术总架构师等职务,是HW公司白盒测试技术体系的缔造者。 2005年~2007年,担任测试技术咨询专家,为众多公司提供测试技术专项咨询服务,帮助企业构建和 推广测试技术体系。


广义“软件测试”由验证、确认、测试3个方面组成
验证:检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软 件开发各阶段的要求或期望的结果相一致。验证意味着确保软件会正确无误 地实现软件的需求,开发过程是沿着正确的方向进行的。 确认:评估将要开发的软件产品是否正确无误、可行和有价值的。确认意味 着确保一个待开发软件是正确无误的,是对软件开发构想的检测。 测试:与狭义“软件测试”概念一致。

嵌入式白盒测试遵循的理念 嵌入式软件测试设计技术 嵌入式软件测试评估技术 第4代白盒测试方法 如何组织嵌入式软件白盒测试
什么是白盒测试?

白盒测试是一种“软件测试” 狭义“软件测试”的定义
1990年的IEEE/ANSI标准(IEEE/ANSI, 1990 [Std 610.12-1990]): 在既定的状况条件下,运行一个系统或组件,观察记录结果,并对其某些方 面进行评价的过程。 1979年Glenford J.Myers在《The Art of Software Testing》中定义: 软件测试是为了发现错误而运行程序的过程。
为什么持续测试

持续集成的典型特征是:写一点测一点
时时可测试 时时做测试
Object Mentor:我们在做任何事情时(无论
是写测试、写产品代码还是重构),都要保 证系统能够一直运行。运行测试的间隔时间 是秒或者分钟级的。即使是10分钟都太长了。

反映了一种质量优先的策略


微软的“每日构建”与“冒烟测试” IBM的“渐增Build测试” XP的持续集成、测试先行等实践
项目B:规范测试
案例:问题根源分析
案例:ODC问题根源分析
ODC来源于 IBM,Orthogonal Defect Classification
白盒测试抽象模型
嵌入式软件的白盒测试特点
开发语言以C语言为主体 运行环境比较复杂(驻留于各式单板, 与各种IO设备打交道) 实时、多任务 对于通信软件:代码量大、复杂程度高 环境敏感 效率苛刻

单元测试:

针对程序中基本组成部件的测试 关注的被测单元应是分隔开的、独立的 被测单元不只是函数对象 也可是手工的、不可重复的测试

单元测试不是:

源码不可见的测试 被测范围不确定的测试

集成测试:
比单元测试处于更高级别 某些情况下,被测对象与单元测试无明显界限 集成测试区别于单元测试主要是:被测对象的表现特征不同,及由此带来 测试方法有所不同。
嵌入式软件测试设计技术 嵌入式软件测试评估技术 第4代白盒测试方法 如何组织嵌入式软件白盒测试

为什么尽早测试?
越早测试付出代价就越低
阶段 纠正费用
需求
设计
编码
单元测试
验收测试
交付后维护
1
5
10
20
50
200
案例:什么是持续测试?
案例:一次测试 与 持续测试 某通信产品在V1版本编码完成时,进行过规范的单元测试 活动,之后V2、V3要不断增加功能、修改功能,就放弃单 元测试了。 当V3最后市场交付时统计发现,相对V1版本,代码修改量 已达到40%。QA从其中两个模块随机抽取100个问题单做 缺陷分析,结果发现:第一个模块有50%的问题是在V1版 本单元测试结束后引入的,而另一模块也有30%问题是单 元测试后引入的。
概念
计划
开发
验证
发布
生命周期
项目管理 完整的依赖关系管理 关键路径分析/恢复方法
流程度量 早期警告指示 完美的行评审点执行 阶段性的时间和投资等
单元测试与集成测试是什么?不是什么?

IPL对单元测试的描述
单元测试是针对与其它部分隔的、独立的单元所展开的测试。在不同编程环境下单元的 含义有所不同,比如在C语言中,被测单元是常规函数或子过程,在C++语言中,单元是 指一个类,在Ada语言中单元是指函数或过程,或者是Ada Package,而在4GL语言(如 Delphi)中,单元还可以是一个菜单、按钮、某个显示单元等。
代码检视(代码审查)属不属于白盒测试? 软件编译报错后修改代码,属不属于白盒测试活动? 白盒测试活动最早出现在哪个开发阶段?


“白盒测试”是与“黑盒测试”相对的一个概念

黑盒测试是被测代码不可见的测试,包括功能测试、验证测试等 白盒测试是被测代码可见的测试,包括单元测试、集成测试、部分协议测试等
产品设计要为测试环境构造提供条件 要挖掘所有潜力来提高测试设计的效率 对于通信软件:测试体系要开放,与其 它工具配合使用
目录

白盒测试基本概念 嵌入式白盒测试遵循的理念




为什么尽早测试? 为什么持续测试? 在线测试驱动与在线测试桩 在线测试设计、运行及改进 白盒测试的粒度与可见性 白盒、黑盒,抑或灰盒 调试是不是测试? 检视器的概念

V模型

软件验证与确认 (Verification and Validation,简称V&V ) 验证针对各步骤的产品设计,确认针对预设的产品构想
W模型

W模型:全过程的、同步的、全方位的测试模型
案例:SVVP计划任务
什么是白盒测试?

狭义的“白盒测试”包括:单元测试与集成测试

广义的 “白盒测试”包括:从设计、编码,再到单元测试、集成测试各阶 段中针对可见源码的V&V活动
白盒测试三种境界
子曰:吾十有五,而志于学,三十而立,四十而不 惑,五十而知天命,六十而耳顺,七十从心所欲, 不逾矩。 处于混沌状态贵在 尝试!
处于有序状态贵在 坚持!
处自组织状态贵在自知!
为什么要做白盒测试?
案例公司(ABC) 遗留缺陷率:1~4BUG/KLOC
USA国防部(DOD) 遗留缺陷率:0.01BUG/KLOC

目录
课程介绍 单元一:白盒测试基本概念 单元二:嵌入式白盒测试遵循的理念 ---------------------------------------- 单元三:嵌入式软件测试设计技术 单元四:嵌入式软件测试评估技术 单元五:第4代白盒测试方法 单元六:如何组织嵌入式软件白盒测试

<课后材料清单,选讲内容>
学习目标
本课程目标:
• • • • • • • • • • 理解白盒测试技术的演进过程与发展趋势 深入理解嵌入式软件白盒测试的主要困难与解决对策 掌握第四代白盒测试方法论,包括3个关键域、9个关键特征 掌握如何实施嵌入式软件在线白盒测试?包括在线测试驱动、在线脚本桩、在线测 试改进等 掌握如何开展嵌入式软件的持续集成测试? 掌握如何有效设计白盒测试用例,如何评价白盒测试的完备性? 掌握如何对白盒测试问题进行分析,找出问题根源? 掌握如何进行嵌入式软件白盒自动化测试规划和设计,确保测试脚本的持续重用 了解业界都有哪些主流的嵌入式白盒测试工具,掌握如何选型? 了解业界优秀公司嵌入式软件白盒测试的方法和经验

白盒测试基本过程
编写测试用例:查看修改变量,调用函数,验证测试结果 查看代码覆盖率,改进测试设计 生成正式的测试报告

案例:D项目集成测试的困惑
某固网产品D项目主要负责话务统计的实现,该项目在头 脑灵活、精明强干的明星经理肖某带领下,各项工作都很 出色,需求调研很深入,还借鉴了业界优秀的话统模型, 正当D项目一帆风顺的运行到模块集成测试,肖经理突然 发现:精心构造话统模型却难以测试。 这种多业务分解,基于事务处理,又是多线索的统计模型 很难按常规方法(甚至是调试方式)去测试,而略过集成 测试直接做系统测试,就意味着要消耗大量精力在各种组 合条件的测试用例设计,以及手工测试操作上。 肖经理犯愁了,总觉得前面的项目运作缺了点什么…
白盒测试在研发全流程中的位置
白盒测试在研发全流程中的位置
投资组合管理 确认市场机会/产品竞争力(可选)
GBM(Global Brand Manager
客户$APPEALS 确定用户采购标准 确认所有市场混合因素 设计渠道
概念决策 评审点
计划决策 评审点
IPMT
PDT
可获得性决 策评审点
寿命终止 决策评审 点
为什么要做白盒测试?
一个比喻:清洗面包机
为什么要做白盒测试?
由Capers Jones与McGraw-Hill的统计表明:若将问题发现、定位与 解决都计算进去,单元测试效率最高,是集成测试的2倍,是系统 测试的3倍。
为什么要做白盒测试?
白盒测试能较彻底解决编码阶段引入的问题
需求分析 概要设计 详细设计 编码
课程风格 课程难度偏高
High
Middle
Low
注重实践性
两个重点
做正确的事!
正确的做事!
目录

白盒测试基Fra Baidu bibliotek概念


什么是白盒测试? 白盒测试在研发全流程中的位置 单元测试与集成测试是什么?不是什么? 企业不做白盒测试的主要原因 白盒测试三种境界 为什么要做白盒测试? 实施白盒测试的差异性验证 白盒测试抽象模型 嵌入式软件的白盒测试特点
孔夫子语录: I hear and I forget. I see and I remember. I do and I understand.
讨论:白盒测试的问题与难题 大家在做单元测试与集成测试过程中,都遇 到过哪些问题?按重要性排序列出前10条。
白盒测试三种境界
混沌状态:
1. 2. 3. 只有零星白盒测试实践,缺少成功案例 各成员对白盒测试普遍认识模糊 大家都忙于救火,系统测试的投入尚无保障,代码级测试无投入
专业背景
在嵌入式软件白盒测试领域拥有15年从业经验,具备丰富的测试技术背景和测试技术管理经验。 从1997年开始主导HW公司交换机产品实践白盒测试,是国内较早在测试技术领域有研究的专家。 主导HW公司白盒测试平台体系的研发,历经五年最终在全公司形成规模应用(超过5000人使用) 业界第四代白盒测试方法的主要倡导者,该方法论已被维普资讯纳入科技文献检索,所涉及数项核心 技术已申请美国专利。 主导规划了CSE测试脚本语言和VcTester嵌入式软件白盒测试体系,其中CSE是中国第一个具备世界 水平的脚本语言体系。 2000年被派往印度主管测试工具合作项目,与印度infosys、BFL等公司开展合作,深入学习了印度软 件业的测试技术和方法。

持续集成对“软件稳定性”实现重用


查错、改错的效率提高了 被测系统随时可运行,可展现功能,降低风险
案例:Joel测试
案例:Joel测试——改进代码的12个步骤
相关文档
最新文档