嵌入式软件白盒测试技术.ppt
《嵌入式软件白盒测试技术.ppt》由会员分享,可在线阅读,更多相关《嵌入式软件白盒测试技术.ppt(104页珍藏版)》请在三一办公上搜索。
1、领测技术(EzTester)简介,嵌入式软件白盒测试技术,第4代白盒测试方法的理论与实践,Approved by WAYNE Work StudioAt 2007/05/18,讲师介绍,讲师:Wayne Chan(wayneezT)任职经历曾在HW公司工作8年(19972004),先后担任测试技术经理、公司测试系统工程师、公司测试技术总架构师等职务,是HW公司白盒测试技术体系的缔造者。2005年2007年,担任测试技术咨询专家,为众多公司提供测试技术专项咨询服务,帮助企业构建和推广测试技术体系。专业背景在嵌入式软件白盒测试领域拥有15年从业经验,具备丰富的测试技术背景和测试技术管理经验。从19
2、97年开始主导HW公司交换机产品实践白盒测试,是国内较早在测试技术领域有研究的专家。主导HW公司白盒测试平台体系的研发,历经五年最终在全公司形成规模应用(超过5000人使用)业界第四代白盒测试方法的主要倡导者,该方法论已被维普资讯纳入科技文献检索,所涉及数项核心技术已申请美国专利。主导规划了CSE测试脚本语言和VcTester嵌入式软件白盒测试体系,其中CSE是中国第一个具备世界水平的脚本语言体系。2000年被派往印度主管测试工具合作项目,与印度infosys、BFL等公司开展合作,深入学习了印度软件业的测试技术和方法。,目录,课程介绍单元一:白盒测试基本概念单元二:嵌入式白盒测试遵循的理念-
3、单元三:嵌入式软件测试设计技术单元四:嵌入式软件测试评估技术单元五:第4代白盒测试方法单元六:如何组织嵌入式软件白盒测试,本课程目标:理解白盒测试技术的演进过程与发展趋势深入理解嵌入式软件白盒测试的主要困难与解决对策掌握第四代白盒测试方法论,包括3个关键域、9个关键特征掌握如何实施嵌入式软件在线白盒测试?包括在线测试驱动、在线脚本桩、在线测试改进等掌握如何开展嵌入式软件的持续集成测试?掌握如何有效设计白盒测试用例,如何评价白盒测试的完备性?掌握如何对白盒测试问题进行分析,找出问题根源?掌握如何进行嵌入式软件白盒自动化测试规划和设计,确保测试脚本的持续重用了解业界都有哪些主流的嵌入式白盒测试工具
4、,掌握如何选型?了解业界优秀公司嵌入式软件白盒测试的方法和经验,学习目标,课程难度偏高,课程风格,HighMiddleLow,注重实践性,两个重点,做正确的事!,正确的做事!,目录,白盒测试基本概念什么是白盒测试?白盒测试在研发全流程中的位置单元测试与集成测试是什么?不是什么?企业不做白盒测试的主要原因白盒测试三种境界为什么要做白盒测试?实施白盒测试的差异性验证白盒测试抽象模型嵌入式软件的白盒测试特点嵌入式白盒测试遵循的理念嵌入式软件测试设计技术嵌入式软件测试评估技术第4代白盒测试方法如何组织嵌入式软件白盒测试,什么是白盒测试?,白盒测试是一种“软件测试”狭义“软件测试”的定义1990年的IE
5、EE/ANSI标准(IEEE/ANSI,1990 Std 610.12-1990):在既定的状况条件下,运行一个系统或组件,观察记录结果,并对其某些方面进行评价的过程。1979年Glenford J.Myers在The Art of Software Testing中定义:软件测试是为了发现错误而运行程序的过程。广义“软件测试”由验证、确认、测试3个方面组成验证:检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的。确认:评估将要开发的软件产品是否正确无误、可行和有价值的。
6、确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。测试:与狭义“软件测试”概念一致。,V模型,软件验证与确认(Verification and Validation,简称V&V)验证针对各步骤的产品设计,确认针对预设的产品构想,W模型,W模型:全过程的、同步的、全方位的测试模型,案例:SVVP计划任务,什么是白盒测试?,狭义的“白盒测试”包括:单元测试与集成测试广义的“白盒测试”包括:从设计、编码,再到单元测试、集成测试各阶段中针对可见源码的V&V活动代码检视(代码审查)属不属于白盒测试?软件编译报错后修改代码,属不属于白盒测试活动?白盒测试活动最早出现在哪个开发阶段?“白盒测
7、试”是与“黑盒测试”相对的一个概念黑盒测试是被测代码不可见的测试,包括功能测试、验证测试等白盒测试是被测代码可见的测试,包括单元测试、集成测试、部分协议测试等白盒测试基本过程编写测试用例:查看修改变量,调用函数,验证测试结果查看代码覆盖率,改进测试设计生成正式的测试报告,案例:D项目集成测试的困惑,某固网产品D项目主要负责话务统计的实现,该项目在头脑灵活、精明强干的明星经理肖某带领下,各项工作都很出色,需求调研很深入,还借鉴了业界优秀的话统模型,正当D项目一帆风顺的运行到模块集成测试,肖经理突然发现:精心构造话统模型却难以测试。这种多业务分解,基于事务处理,又是多线索的统计模型很难按常规方法(
8、甚至是调试方式)去测试,而略过集成测试直接做系统测试,就意味着要消耗大量精力在各种组合条件的测试用例设计,以及手工测试操作上。肖经理犯愁了,总觉得前面的项目运作缺了点什么,白盒测试在研发全流程中的位置,白盒测试在研发全流程中的位置,单元测试与集成测试是什么?不是什么?,IPL对单元测试的描述 单元测试是针对与其它部分隔的、独立的单元所展开的测试。在不同编程环境下单元的含义有所不同,比如在C语言中,被测单元是常规函数或子过程,在C+语言中,单元是指一个类,在Ada语言中单元是指函数或过程,或者是Ada Package,而在4GL语言(如Delphi)中,单元还可以是一个菜单、按钮、某个显示单元等
9、。单元测试:针对程序中基本组成部件的测试关注的被测单元应是分隔开的、独立的被测单元不只是函数对象也可是手工的、不可重复的测试单元测试不是:源码不可见的测试被测范围不确定的测试集成测试:比单元测试处于更高级别某些情况下,被测对象与单元测试无明显界限集成测试区别于单元测试主要是:被测对象的表现特征不同,及由此带来测试方法有所不同。,企业不做单元测试的原因,一个游戏:将小车开出谜宫,语录,在恰当的时间以恰当的方法做恰当的事情!,孔夫子语录:I hear and I forget.I see and I remember.I do and I understand.,讨论:白盒测试的问题与难题,大家在
10、做单元测试与集成测试过程中,都遇到过哪些问题?按重要性排序列出前10条。,白盒测试三种境界,混沌状态:只有零星白盒测试实践,缺少成功案例各成员对白盒测试普遍认识模糊大家都忙于救火,系统测试的投入尚无保障,代码级测试无投入有序状态:已有多个项目成功推行单元测试,已成可拷贝的活动有一批人对白盒测试具有清晰认识,领导层对实践的前景既不悲观,也不盲目乐观设立专门机构推动UT与IT,白盒测试活动也有流程保障少数项目有显著效果,多数项目稍有成效,个别项目是失败的自组织状态:时时测试、持续测试已成风气白盒测试已成员工的普遍行为与自发行为有所为有所不为,白盒测试三种境界,处于混沌状态贵在 尝试!处于有序状态贵
11、在 坚持!处自组织状态贵在自知!,子曰:吾十有五,而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十从心所欲,不逾矩。,为什么要做白盒测试?,案例公司(ABC)遗留缺陷率:14BUG/KLOC,USA国防部(DOD)遗留缺陷率:0.01BUG/KLOC,为什么要做白盒测试?,一个比喻:清洗面包机,为什么要做白盒测试?,由Capers Jones与McGraw-Hill的统计表明:若将问题发现、定位与解决都计算进去,单元测试效率最高,是集成测试的2倍,是系统测试的3倍。,为什么要做白盒测试?,白盒测试能较彻底解决编码阶段引入的问题,实施白盒测试的差异性验证,两个性质接近的项目(项目A
12、与项目B),项目A没做正规白盒测试,仅拿调试当测试,项目B实施规范的白盒测试,这两项目结束时分别按问题根源对全部BUG作统计。,从“白盒测试问题比例”与“逻辑问题比例”可看出:不做白盒测试必然导致大量问题漏测,项目A:缺少规范的白盒测试,项目B:规范测试,案例:问题根源分析,案例:ODC问题根源分析 ODC来源于 IBM,Orthogonal Defect Classification,白盒测试抽象模型,嵌入式软件的白盒测试特点,开发语言以C语言为主体运行环境比较复杂(驻留于各式单板,与各种IO设备打交道)实时、多任务对于通信软件:代码量大、复杂程度高产品设计要为测试环境构造提供条件要挖掘所有
13、潜力来提高测试设计的效率对于通信软件:测试体系要开放,与其它工具配合使用,环境敏感效率苛刻,目录,白盒测试基本概念嵌入式白盒测试遵循的理念为什么尽早测试?为什么持续测试?在线测试驱动与在线测试桩在线测试设计、运行及改进白盒测试的粒度与可见性白盒、黑盒,抑或灰盒调试是不是测试?检视器的概念嵌入式软件测试设计技术嵌入式软件测试评估技术第4代白盒测试方法如何组织嵌入式软件白盒测试,为什么尽早测试?,越早测试付出代价就越低,案例:什么是持续测试?,案例:一次测试 与 持续测试某通信产品在V1版本编码完成时,进行过规范的单元测试活动,之后V2、V3要不断增加功能、修改功能,就放弃单元测试了。当V3最后市
14、场交付时统计发现,相对V1版本,代码修改量已达到40%。QA从其中两个模块随机抽取100个问题单做缺陷分析,结果发现:第一个模块有50%的问题是在V1版本单元测试结束后引入的,而另一模块也有30%问题是单元测试后引入的。,为什么持续测试,持续集成的典型特征是:写一点测一点 Object Mentor:我们在做任何事情时(无论 是写测试、写产品代码还是重构),都要保 证系统能够一直运行。运行测试的间隔时间 是秒或者分钟级的。即使是10分钟都太长了。反映了一种质量优先的策略微软的“每日构建”与“冒烟测试”IBM的“渐增Build测试”XP的持续集成、测试先行等实践持续集成对“软件稳定性”实现重用查
15、错、改错的效率提高了被测系统随时可运行,可展现功能,降低风险,时时可测试时时做测试,案例:Joel测试,案例:Joel测试改进代码的12个步骤,演示:在线测试,演示:在线测试设计(在线测试驱动、在线测试桩)在线测试调试 在线测试执行 在线测试评估改进,全局变量/函数:vd.xx 类型定义:/,拉通测试小循环,白盒测试的粒度与可见性,关注函数接口还是关注函数内部代码行?考虑因素:测试设计的工作量用例维护的工作量是否必须基于接口做测试设计,还是基于代码行做设计?,白盒、黑盒,抑或灰盒,白盒测试设计形式对照源码编写测试用例看到哪行覆盖,哪行未覆盖,来优化测试用例对照源码调试测试用例,并定位测试问题依
16、照源码维护测试用例黑盒测试操作方式依据设计规格用例脚本只关注测试运行环境与输入输出接口一键运行,没有单步跟踪,调试是不是测试?,调试与测试的共性目的:查错或确认无错构造运行环境:配置数据、修改变量、模拟桩判别是否预期:过程表现、结果表现调试与测试的差异可重复性粒度与可维护性3个概念:调试、检视、测试,检视器,检视器介于调试器与测试器之间是一种提供脚本化控制的调试器也是一种提供调试功能的测试脚本生成器观察控制点(Points of Control and Observation,PCO)位于被测单元的上下层之间具有调试断点的功能支持调试操作自动生成测试脚本,演示:检视器,演示:检视器的主要功能,
17、目录,白盒测试基本概念嵌入式白盒测试遵循的理念嵌入式软件测试设计技术白盒测试的3类形式化表述语言映射技术三种测试设计模式一次性集成与增殖集成测试设计与产品设计的耦合关系测试脚本如何自动生成为什么要TDD?TDD三原则嵌入式软件测试评估技术第4代白盒测试方法如何组织嵌入式软件白盒测试,白盒测试的3类形式化表述,原生表述(CppUnit、JUnit、CodeTest)转化表述(Parasoft C+Test、RTRT、Cantata+)映射表述(VcTester),案例:CppUnit与RTRT的测试用例,案例:CppUnit与RTRT的测试用例,案例:TCL命令字注册,案例:使用TCL命令字注册
18、 发起单元测试使用Tcl_CreateCommand注册被测C函数,使用Tcl_GetVar与Tcl_SetVar存取变量。比如将C函数MyFunc注册为TCL的扩展命令TCL_MyFunc:Tcl_CreateCommand(interp,“TCL_Myfunc,Myfunc,NULL,NULL);,语言映射技术,全局变量/函数:vd.xx 类型定义:/,语言映射技术,A函数,B函数,C函数,脚本桩函数,B函数,A函数,B函数,C函数,A函数,B函数,C函数,脚本桩函数,打脚本桩之前 替代模式打桩 插入模式打桩,演示:C语言映射到CSE脚本,演示:C语言映射到CSE脚本,演示:3种测试设计模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 测试 技术
链接地址:https://www.31ppt.com/p-5346988.html