1、测试总体流程图测试总体流程图F F验收测试验收测试B B单元测试单元测试C C整合测试整合测试D D系统测试系统测试E E性能测试性能测试A A测试计划、测试测试计划、测试设计设计立项立项结束结束测试分类测试分类.黑盒测试黑盒测试.白盒测试白盒测试.灰盒测试灰盒测试软件中的难题软件中的难题1.开发的不是客户需要的开发的不是客户需要的2.计划赶不上变化,进度无法按期完成计划赶不上变化,进度无法按期完成3.挖坑还是开渠?永远的资源不足挖坑还是开渠?永远的资源不足4.不能正确实现功能不能正确实现功能5.如何维护大量的已有软件?如何维护大量的已有软件?软件与硬件的区别软件与硬件的区别软件软件硬件硬件易
2、变易变确定,需求和产物确定,需求和产物非组件化非组件化组件化,由构建组成组件化,由构建组成随时间而消退随时间而消退随时间而磨损随时间而磨损成本在研发上,成本在研发上,copy过程过程几乎没有成本几乎没有成本生产工程成本高生产工程成本高软件工程软件工程1.软件工程是为创造高质量软件提供的一个框架软件工程是为创造高质量软件提供的一个框架2.将系统化,规范化,可度量的方法应用于软件的开发,将系统化,规范化,可度量的方法应用于软件的开发,运行和维护,即将工程化应用于软件中运行和维护,即将工程化应用于软件中3.包括过程,方法和工具三个层面包括过程,方法和工具三个层面4.过程,方法和人对质量的影响过程,方
3、法和人对质量的影响过过 程程1.过程是项目管理的基础过程是项目管理的基础2.定义关键过程区域框架定义关键过程区域框架3.CMM中的中的KPA方方 法法1.技术上需要如何做?技术上需要如何做?2.方法涵盖一系列的任务:需求,设计,编方法涵盖一系列的任务:需求,设计,编码,测试,维护码,测试,维护工工 具具1.为工程,方法提供自动,半自动化的支持为工程,方法提供自动,半自动化的支持2.组建起来被另外一个工具使用组建起来被另外一个工具使用3.组成软件工程环境组成软件工程环境过程篇过程篇关于关于CMMCMM(Capability Maturity Model)能力成熟度模型能力成熟度模型用于软件开发过
4、程和开发能力的改进与评估的模型用于软件开发过程和开发能力的改进与评估的模型对软件工程的全过程进行考察和评估对软件工程的全过程进行考察和评估不告诉你怎么做,但告诉你不用成熟度应该关注的关键过程不告诉你怎么做,但告诉你不用成熟度应该关注的关键过程何为何为CMM/CMMICMMI,目标:第一个是质量,第二个是时间表,第三就是,目标:第一个是质量,第二个是时间表,第三就是要用最低的成本。要用最低的成本。与原有的能力成熟度模型与原有的能力成熟度模型CMM相比,相比,CMMI涉及面更广,涉及面更广,专业领域覆盖软件工程、系统工程、集成产品开发和系统采专业领域覆盖软件工程、系统工程、集成产品开发和系统采购购
5、 CMMI即即CMM集成,是系统工程和软件工程的集成成熟度集成,是系统工程和软件工程的集成成熟度模型,模型,CMMI更适合于信息系统集成企业。更适合于信息系统集成企业。CMMI是在是在CMM基础上发展起来的,它继承并发扬了基础上发展起来的,它继承并发扬了CMM的优良特的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成性,借鉴了其他模型的优点,融入了新的理论和实际研究成果。它不仅能够应用在软件工程领域,而且可以用于系统工果。它不仅能够应用在软件工程领域,而且可以用于系统工程及其他工程领域。程及其他工程领域。CMMI阶段模型阶段模型5.优化级优化级:持续过程改进,组织性快速重新:持续过程
6、改进,组织性快速重新配置配置4.量化管理级:量化管理级:过程和产品被量化度量并控过程和产品被量化度量并控制,组织性能提升制,组织性能提升3.已定义级:组织内项目改进和执行已定义级:组织内项目改进和执行2.已管理级:能重复以前的成功,有纪律性已管理级:能重复以前的成功,有纪律性1.初始级:过程能力不可预测,无秩序初始级:过程能力不可预测,无秩序 Level 1在级别在级别1:过程是随机,混乱和无序的。这种通常没有一个稳过程是随机,混乱和无序的。这种通常没有一个稳定的环境,它的成功依赖于组织中个人的能力和定的环境,它的成功依赖于组织中个人的能力和英雄主意,而不是依赖使用经过验证的过程。尽英雄主意,
7、而不是依赖使用经过验证的过程。尽管这种混乱,无序的环境,对成熟度管这种混乱,无序的环境,对成熟度1的组织也的组织也经常能制造出能工作的产品和服务,但是,他们经常能制造出能工作的产品和服务,但是,他们的项目经常是超成本和进度的。的项目经常是超成本和进度的。它们有过度承诺的趋势,在危机时放弃过程,不能它们有过度承诺的趋势,在危机时放弃过程,不能重复他们过去的成功。重复他们过去的成功。Level 21.组织中的项目确保需求得到管理,过程已经计划,执行,组织中的项目确保需求得到管理,过程已经计划,执行,度量和控制。度量和控制。2.即使在时间压力下,依然能够保留现有的实践。即使在时间压力下,依然能够保留
8、现有的实践。3.管理层在某些已定义点上对工作产品的状态和提交的服务管理层在某些已定义点上对工作产品的状态和提交的服务具有可视性。具有可视性。4.在干系人(风险承担者)之间建立了承诺,在必要的时候在干系人(风险承担者)之间建立了承诺,在必要的时候进行修正。进行修正。Level 3工程得到很好地表现和理解,被描述成标准,工程得到很好地表现和理解,被描述成标准,规程,关键和方法。规程,关键和方法。作为作为3级基础的组织标准过程集已经简历和不级基础的组织标准过程集已经简历和不断改进。断改进。2,3级的区别在于标准,过程和规程的范围级的区别在于标准,过程和规程的范围3级比级比2级的描述更具体和更严格级的
9、描述更具体和更严格Level 4使用统计和量化技术进行控制使用统计和量化技术进行控制建立了质量和过程性能的量化目标,作为过程管理建立了质量和过程性能的量化目标,作为过程管理的准则的准则收集了过程性能的详细度量,进行统计分析收集了过程性能的详细度量,进行统计分析质量和过程性能度量数据组成组织的度量库,来支质量和过程性能度量数据组成组织的度量库,来支持将来的基于事实的决策持将来的基于事实的决策3,4级的区别在于过程性能的可预测性。级的区别在于过程性能的可预测性。Level 5基于对过程中的固有偏差的一般原因的定量理解,基于对过程中的固有偏差的一般原因的定量理解,持续的进行过程改进持续的进行过程改进
10、通过渐进的和革新的技术改进,集中在持续地过程通过渐进的和革新的技术改进,集中在持续地过程性能改进上性能改进上指出过程偏差的一般原因和可测地改进组织过程的指出过程偏差的一般原因和可测地改进组织过程的过程改进得到识别,评估和实施过程改进得到识别,评估和实施敏捷和创新的过程优化依赖于授权员工的参与,他敏捷和创新的过程优化依赖于授权员工的参与,他们与业务价值和组织目标保持一致们与业务价值和组织目标保持一致Level 2CMM2:可重复性可重复性KPA:软件配置管理软件配置管理 软件质量保证软件质量保证 子合同管理子合同管理Level 2软件项目跟踪和监控软件项目跟踪和监控软件项目计划软件项目计划需求管
11、理需求管理配置管理配置管理1.定义并文档化配置项的功能和物理属性定义并文档化配置项的功能和物理属性2.控制这些属性的变更控制这些属性的变更3.记录和报告变更处理结果和实施状态记录和报告变更处理结果和实施状态4.遵从制定的需求进行验证遵从制定的需求进行验证同行评审同行评审为什么进行评审?为什么进行评审?.促进文档化,提升可读性,易理解性等促进文档化,提升可读性,易理解性等.查找错误,收集建议查找错误,收集建议.扩散知识,产生后备力量扩散知识,产生后备力量评审什么?评审什么?.项目中的一系列计划项目中的一系列计划.项目各阶段的输出:文档,代码等项目各阶段的输出:文档,代码等谁来评审?谁来评审?项目
12、组成员,项目组成员,PPQA,上级领导,客户等,上级领导,客户等同行评审同行评审.评审的输入评审的输入-待评审的文档,代码待评审的文档,代码-XXX评审检查表评审检查表.评审的输出评审的输出-评审报告评审报告-评审过程检查表评审过程检查表正确看待文档正确看待文档.文档是所有事情能够继承的保证文档是所有事情能够继承的保证.如果认为不必要,多一分也是多,如果认为如果认为不必要,多一分也是多,如果认为必要,多少都不够必要,多少都不够.文档是一个人水平高低的体现文档是一个人水平高低的体现.需要提高每个人的写作能力,练好内功需要提高每个人的写作能力,练好内功软件开发模型软件开发模型瀑布型瀑布型1.需求需
13、求2.设计设计3.代码代码4.测试测试5.运行运行/维护维护软件开发模型软件开发模型原型原型1.用户需求不明确是采用用户需求不明确是采用2.快速设计,快速开发快速设计,快速开发3.迭代的过程迭代的过程4.与用户一起明确需求与用户一起明确需求5.最终会被抛弃最终会被抛弃软件开发模型软件开发模型演化模型演化模型.线性迭代线性迭代.每个线性过程产生一个版本每个线性过程产生一个版本.分阶段提供给用户分阶段提供给用户敏捷式开发敏捷式开发1.是一种以人为核心、迭代、循序渐是一种以人为核心、迭代、循序渐进的开发方法。进的开发方法。2.在敏捷开发中,软件项目的构建被在敏捷开发中,软件项目的构建被切分成多个子项
14、目,各个子项目的成切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的果都经过测试,具备集成和可运行的特征。特征。决定软件质量的因素决定软件质量的因素1.过程过程2.方法方法3.工具工具4.人人测试目的测试目的 在产品投入使用前,通过综合的智力活动在产品投入使用前,通过综合的智力活动,发现程序中的显性和隐形的错误和缺陷,发现程序中的显性和隐形的错误和缺陷。控制发布产品的质量,提升客户满意度。控制发布产品的质量,提升客户满意度测试目的测试目的测试的目的是发现和确认系统有问题,而不是测试的目的是发现和确认系统有问题,而不是验证系统没有问题验证系统没有问题确认软件生命周期中的各个阶段的产
15、品是否正确认软件生命周期中的各个阶段的产品是否正确确确认最终交付的产品是否符合用户需求确认最终交付的产品是否符合用户需求使用测试数据检验系统运行的行为是否是按照使用测试数据检验系统运行的行为是否是按照预期目标执行的预期目标执行的测试原则测试原则所有测试都应该追溯到用户需求所有测试都应该追溯到用户需求应该在测试工作真正开始的较长时应该在测试工作真正开始的较长时间内就进行测试间内就进行测试测试中发现的测试中发现的80%的问题可能集中的问题可能集中在模块的在模块的20%中中测试原则测试原则测试顺序应从简单到复杂,从模块到集成测试顺序应从简单到复杂,从模块到集成,从白到黑,从白到黑穷举测试是不可能的穷
16、举测试是不可能的Bug不可避免不可避免常用的测试技术常用的测试技术1.在产品成型前,对规约,设计,代码进行在产品成型前,对规约,设计,代码进行Review,确认与需求是否一致,确认与需求是否一致-静态测试静态测试2.了解产品内部结构,确认内部逻辑是否符了解产品内部结构,确认内部逻辑是否符合需求,且内部构件被充分利用合需求,且内部构件被充分利用-白盒测试白盒测试3.如果了解特定的功能,在各种功能中寻找如果了解特定的功能,在各种功能中寻找错误错误黑盒测试黑盒测试静态测试和动态测试静态测试和动态测试1.静态测试:指不用执行程序的测试。主要静态测试:指不用执行程序的测试。主要采用采用Review,代码
17、走查,同级评审,代码走查,同级评审,check list 检查单的方法对软件产品进行测试。检查单的方法对软件产品进行测试。2.动态测试:通过执行程序,找出产品问题动态测试:通过执行程序,找出产品问题的测试过程。黑盒,白盒都是动态测试。的测试过程。黑盒,白盒都是动态测试。白白 盒盒 测测 试试白盒测试发现的错误类型:白盒测试发现的错误类型:1.语法错误语法错误2.编译错误编译错误3.逻辑错误逻辑错误4.判定条件问题判定条件问题5.编程规范编程规范6.Memory Leak7.Performance Problem白白 盒盒 测测 试试逻辑驱动测试逻辑驱动测试基本路径测试基本路径测试逻辑驱动测试逻
18、辑驱动测试逻辑驱动测试:逻辑驱动测试:主要是测试覆盖率,以程序内在逻辑结构为基础的测主要是测试覆盖率,以程序内在逻辑结构为基础的测试。包括以下试。包括以下6种类型:种类型:1.语句覆盖语句覆盖2.判断覆盖判断覆盖3.条件覆盖条件覆盖4.判定判定-条件覆盖条件覆盖5.条件组合覆盖条件组合覆盖6.路径覆盖路径覆盖逻辑驱动测试逻辑驱动测试主要是测试覆盖率,以程序内在逻辑结构为基础的测试。包括主要是测试覆盖率,以程序内在逻辑结构为基础的测试。包括以下以下6种类型:种类型:1.语句覆盖:语句覆盖:语句覆盖就是设计若干个测试用例,运行测试程序,使得每一条可执行语句至语句覆盖就是设计若干个测试用例,运行测试
19、程序,使得每一条可执行语句至少执行一次少执行一次2.判断覆盖:判断覆盖:也叫分支覆盖设计若干个测试用例,运行测试程序,使得每个判断的取真分支也叫分支覆盖设计若干个测试用例,运行测试程序,使得每个判断的取真分支和取假分支至少执行一次和取假分支至少执行一次3.条件覆盖:条件覆盖:设计足够多的测试用例,运行测试程序,使得每个判断的每个条件的每个可能设计足够多的测试用例,运行测试程序,使得每个判断的每个条件的每个可能取值至少执行一次取值至少执行一次4.判定判定-条件覆盖:条件覆盖:设计足够多的测试用例,运行测试程序,使得每个判断的所有可能的条设计足够多的测试用例,运行测试程序,使得每个判断的所有可能的
20、条件取值组合至少执行一次件取值组合至少执行一次5.条件组合覆盖:条件组合覆盖:设计足够多的测试用例,运行测试程序,使得程序中每个判断的所有可能设计足够多的测试用例,运行测试程序,使得程序中每个判断的所有可能的条件取值组合至少执行一次的条件取值组合至少执行一次6.路径覆盖:路径覆盖:设计足够多的测试用例,运行测试程序,要覆盖程序中所有可能的路径设计足够多的测试用例,运行测试程序,要覆盖程序中所有可能的路径For ExampleVoid DoWork(int x,int y,int z)int k=0,j=0;if(x3)&(z5)j=x*y+10;/语句块语句块2 j=j%3;/语句块语句块3流
21、程图如下:流程图如下:语语 句句 覆覆 盖盖为了说明简略,分别对各个判断的取真,取假分支编号为为了说明简略,分别对各个判断的取真,取假分支编号为 b,c,d,e为了测试语句覆盖率只要设计一个测试用例就可以把三个执为了测试语句覆盖率只要设计一个测试用例就可以把三个执行语句块中的语句覆盖。行语句块中的语句覆盖。测试用例输入为:测试用例输入为:x=4,y=5,z=5程序执行的路径是:程序执行的路径是:a b d该测试用例虽然覆盖了可执行语句,但是并不能检查判断逻该测试用例虽然覆盖了可执行语句,但是并不能检查判断逻辑是否有问题,例如在第一个判断中把辑是否有问题,例如在第一个判断中把&错误的写成错误的写
22、成|,上,上面的测试用例仍然可以覆盖所有的执行语句。可以说语句覆面的测试用例仍然可以覆盖所有的执行语句。可以说语句覆盖率是最弱的逻辑覆盖准则盖率是最弱的逻辑覆盖准则判判 定定 覆覆 盖盖如果设计两个测试用例则可以满足分支覆盖的如果设计两个测试用例则可以满足分支覆盖的要求:要求:测试用例的输入为:测试用例的输入为:x=4,y=5,z=5x=2,y=5,z=5虽然可以满足分支覆盖的要求,但是也不能对虽然可以满足分支覆盖的要求,但是也不能对判断条件做完整的检查判断条件做完整的检查条条 件件 覆覆 盖盖对于这个简单例子的所有条件取值加以标记。对于这个简单例子的所有条件取值加以标记。如:如:对于第一个判
23、断:对于第一个判断:条件条件x3,取真值为取真值为T1,取假值为,取假值为-T1条件条件z5,取真值为取真值为T4,取假值为,取假值为-T4设计测试用例如下:设计测试用例如下:测试用例通过路径条件取值覆盖方式x=4,y=6,z=5a b dT1,T2,T3,T4b dx=2,y=5,z=5a c e-T1,T2,-T3,-T4c ex=4,y=5,z=15 a c dT1,-T2,T3,-T4c d上面的测试用例不但覆盖了所有分支的真假两个分支,上面的测试用例不但覆盖了所有分支的真假两个分支,而且覆盖了判断中的所有条件的可能值而且覆盖了判断中的所有条件的可能值测试用例如下:测试用例如下:但是如
24、果设计了下面的测试用例,则虽然满足但是如果设计了下面的测试用例,则虽然满足了条件覆盖,但是只覆盖了第一个条件的取假了条件覆盖,但是只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆分支和第二个条件的取真分支,不满足分支覆盖的要求盖的要求测试用例通过路径条件取值覆盖分支x=2,y=6,z=5 a c d-T1,T2,-T3,T4c dx=4,y=5,z=5 a c dT1,-T2,T3,-T4c d分支条件覆盖分支条件覆盖根据定义只需要设计以下两个测试用例便可以根据定义只需要设计以下两个测试用例便可以覆盖覆盖8个条件值以及个条件值以及4个判断分支个判断分支测试用例通过路径条件取值覆
25、盖分支x=4,y=6,z=5a b dT1,T2,T3,T4b dx=2,y=5,z=11 a c e-T1,-T2,-T3,-T4c e分支条件覆盖分支条件覆盖条件分支覆盖从表面上看,它测试了所有条件的取条件分支覆盖从表面上看,它测试了所有条件的取值,但是实际上某些条件掩盖了另外的一些条件,值,但是实际上某些条件掩盖了另外的一些条件,例如对于条件表达式(例如对于条件表达式(x3)&(z10)来说,)来说,必须两个条件都满足才能确定表达式为真。如果(必须两个条件都满足才能确定表达式为真。如果(x3)为假,则一般的编译器不再判断是否()为假,则一般的编译器不再判断是否(z5)来说,)来说,若若x
26、=4测试结果为真,就认为表达式的结果为真测试结果为真,就认为表达式的结果为真,这是不在检查(,这是不在检查(y5)的条件了。因此,采用分)的条件了。因此,采用分支条件覆盖,逻辑表达式的错误不一定能够查出来支条件覆盖,逻辑表达式的错误不一定能够查出来了。了。条件组合覆盖条件组合覆盖设计足够多的测试用例,运行测试程序,使得程序中每个设计足够多的测试用例,运行测试程序,使得程序中每个判断的所有可能的条件取值组合至少执行一次。判断的所有可能的条件取值组合至少执行一次。现在对例子中的各个判断的条件取值组合加以标记如下:现在对例子中的各个判断的条件取值组合加以标记如下:x3,z3,z=10 记做记做T1,
27、-T2,第一个判断的取假分支第一个判断的取假分支x=3,z0 记做记做-T1,T2,第一个判断的取假分支第一个判断的取假分支x=10 记做记做-T1,-T2,第一个判断的取假分支第一个判断的取假分支x=4,y5 记做记做T3,T4,第一个判断的取真分支第一个判断的取真分支x=4,y5 记做记做-T3,T4,第一个判断的取真分支第一个判断的取真分支x!=4,y=5 记做记做-T3,-T4,第一个判断的取假分支,第一个判断的取假分支条件组合覆盖条件组合覆盖测试用例通过路径条件取值覆盖组合号x=4,y=6,z=5a b dT1,T2,T3,T41和5x=4,y=5,z=15a c dT1,-T2,T
28、3,-T42和6x=2,y=6,z=5a c d-T1,T2,-T3,T43和7x=2,y=5,z=15a c e-T1,-T2,-T3,-T44和8上面的测试用例覆盖了所有条件的可能取值的组合,覆盖了所有上面的测试用例覆盖了所有条件的可能取值的组合,覆盖了所有判断的可取分支,但是却丢失了一条路径判断的可取分支,但是却丢失了一条路径abe。基本路径测试基本路径测试1.根据源代码导出流程图根据源代码导出流程图2.分析程序逻辑复杂度分析程序逻辑复杂度3.导出测试导出测试Case基本路径测试举例基本路径测试举例-PDL分析分析计算不超过计算不超过100个数字的平均值,使用个数字的平均值,使用PDL语
29、言语言INTEFACE RETURNS average,total.input,total.valid;INTEFACE RETURNS value,minimum,maxium,sum;TYPE value(1:100)IS SCALAR ARRAY;TYPE i IS INTEGER;i=1;Total.input=total.valid=0;1Sum=0DO WHILE value(i)-999 2 and total.input=minimum 5 and value(i)0;10THEN average=sum/total.valid;11ELSE average=-999;12EN
30、DIF 13END average数数 据据 流流 分分 析析环形复杂度环形复杂度V(G)=判定节点判定节点+1=5+1基本测试路径:基本测试路径:1.1-2-10-11-132.1-2-10-12-133.1-2-3-10-11-134.1-2-3-4-5-8-9-25.1-2-3-4-5-6-8-9-26.1-2-3-4-5-6-7-8-9-2基本路径测试用例基本路径测试用例测试路径输入预计输出条件1Value(k)=有效输入Value(i)=-999KI,2100个的值前100个被正确处理4Value(i)=有效输入Value(k)minimumi100,kmaxmumi=j基于k的正确
31、平均值和总数6Value(i)=有效输入i100基于k的正确平均值和总数 从基本路径测试想到的从基本路径测试想到的穷举测试是不可能的穷举测试是不可能的尽量选择有代表性的主要路径,更易尽量选择有代表性的主要路径,更易发现问题,且对质量的贡献很大发现问题,且对质量的贡献很大环形复杂度的方法也可以应用到黑盒环形复杂度的方法也可以应用到黑盒测试中测试中单元测试单元测试单元测试是对最小软件开发单元的测试单元测试是对最小软件开发单元的测试单元测试重点测试程序的内部结构单元测试重点测试程序的内部结构主要使用白盒测试方法主要使用白盒测试方法由开发人员负责由开发人员负责单元测试中的常见错误单元测试中的常见错误不
32、正确的算法不正确的算法混合情况下的条件判断错误混合情况下的条件判断错误不正确的初始化不正确的初始化计算结果的精度不精确计算结果的精度不精确语法错误语法错误不正确的逻辑优先级不正确的逻辑优先级需求实现上的偏差需求实现上的偏差单元测试中的常见错误单元测试中的常见错误不正确的循环处理不正确的循环处理缺少对错误输入的有效处理缺少对错误输入的有效处理对错误输入的处理提示不准确对错误输入的处理提示不准确接口协议错误接口协议错误接口处理逻辑错误接口处理逻辑错误内存溢出内存溢出语句处理效率低语句处理效率低单元测试的方法单元测试的方法确定测试的基本路径确定测试的基本路径进行边界测试进行边界测试进行接口测试进行接
33、口测试通过打桩的方法,确认关键路径中的功能通过打桩的方法,确认关键路径中的功能通过通过DEBUG工具,内存检查工具,代码覆盖工具,内存检查工具,代码覆盖率工具率工具探探 针针设置探针值设置探针值在程序中增加在程序中增加DEBUG信息,跟踪探针结果信息,跟踪探针结果主要用于程序调试主要用于程序调试单元测试中实践问题单元测试中实践问题问题:问题:1.开发工程师习惯认为代码完成后,就可以提开发工程师习惯认为代码完成后,就可以提交了,而省略了单元测试过程交了,而省略了单元测试过程2.开发时间紧,没有时间做开发时间紧,没有时间做3.没有规范化的要求,质量不一没有规范化的要求,质量不一上述问题对开发的影响
34、上述问题对开发的影响1.在正式的测试环节,延长测试时间在正式的测试环节,延长测试时间2.降低测试效率降低测试效率3.增加了问题逃逸几率增加了问题逃逸几率对大家的要求和建议对大家的要求和建议1.开发中增加单元测试规范开发中增加单元测试规范2.制定测试程序标准制定测试程序标准3.开发在提交程序时,提交单元测试开发在提交程序时,提交单元测试CaseJunit使用步骤使用步骤1.覆盖覆盖setUp()()和和tearDown()方法()方法2.使用使用 Assert.assert()单元测试的工具单元测试的工具Rational Purify Plus包括三个工具包括三个工具1.测试测试VC和和java代码编写的程序代码编写的程序2.Purify检查内存泄露检查内存泄露3.Purecoverage检查代码覆盖率检查代码覆盖率态度决定一切态度决定一切细节影响成败细节影响成败