[键入文字]控制流分析数据流分析信息流分析逻辑覆盖程序插装白黑盒盒等边输输因判正流价界入出果定交程类值域域图法试分覆覆验析盖盖法状态迁移异常分析错误猜测静态分析动态分析内部实现整体特性输入输出条件组合处理过程其他SRSHLDLLDGUIDB编码调试白盒灰盒黑盒分析设计编码UTITST开发技术技术测试技术流程软件质量组织质量体系螺旋模模模模型型型型瀑布模型织常结见构的项目组RUPIPDV&VISO9001CMM6西格玛需求管理配置管理同行评审缺陷管理[键入文字][键入文字][键入文字]需求分析SRS评审SRS基线化系统测试的计划设计和实现ST计划ST方案ST用例ST执行概要设计HLD评审HLD基线化集成测试的计划设计和实现IT计划IT方案IT用例IT执行详细设计LLD评审LLD基线化单元测试的计划设计和实现UT计划UT方案UT用例UT执行编码代码走查[键入文字]需求分析SRS评审SRS基线化系统测试的计划设计和实现ST计划ST方案ST用例ST执行概要设计HLD评审HLD基线化集成测试的计划设计和实现IT计划IT方案IT用例IT执行详细设计LLD评审LLD基线化单元测试的计划设计和实现UT计划UT方案UT用例UT执行编码代码走查[键入文字]测试基础软件质量测试方法
V&V模型(测试过程)单元测试集成测试系统测试测试覆盖率测试用例举例同行评审
配置&需求管理缺陷管理SQLSERVER测试工具总结第一阶段英语单词总结复习问题总结
8111821232937485052555760668286
[键入文字]测试基础
1、软件测试的目的:证明(表达软件能够工作)→检测(发现错误)→预防(管理质量)2、测试执行:单元测试(UT执行):一个测试用例的测试执行;集成测试(IT执行):一个测试用例集的测试执行;系统测试(ST执行):不同测试阶段的测试执行。这几句话是什么意思,觉得不是很有针对性?3、回归测试的目的:a.验证错误是否修复;b.检测对代码的修改是否引入了新的错误。5、软件测试的主要工作:a.检视代码,评审开发文档;b.进行测试设计,写作测试文档(测试计划、测试方案、测试用例等);c.执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正;d.通过测试度量软件质量。6、软件危机的出现主要表现在:a.由于缺乏大型软件开发经验和软件开发数据积累,开发工作计划很难制定;b.开发早期需求分析不够明确,造成开发后期矛盾集中暴露;c.不遵循开发规范,开发文档不完整,软件难以维护;d.缺乏严密有效的软件质量检测手段,交付给用户的[键入文字]软件质量差。7、软件危机的后果:a.软件质量不高,很难稳定;b.软件项目延期,进度无法控制;c.成本增加,无法控制预算。8、软件危机的根源:a.根据摩尔定律,硬件发展很快,相应对软件系统的期望越来越高;b.软件系统复杂性提高,需多人合作;c.软件开发是人的智力活动,无法用已有的产业工程方法来组织管理。9、软件生命周期的各个阶段:计划→需求分析→设计→编码→测试→运行→评价10、设计:概要设计(HLD):在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块;详细设计(LLD):对每个模块要完成的工作进行具体的描述。11、软件研发相关要素:人员、过程、工具。12、软件项目组人员组成:分析人员、设计人员、开发人员、测试人员、配置管理人员、SQA(质量保证人员);13、软件研发流程类型:瀑布模型、螺旋模型、RVPRUP流程、IPD流程。14、软件研发中几个重要的过程:需求管理;配置管理;缺陷管理;同行评审。15、常见的引入缺陷的原因:a.开发过程缺乏有效的沟通,或者没有进行沟通;b.软件复杂度越来越高;[键入文字]c.编程中产生错误;d.需求不断变更;e.项目进度的压力;f.不重视开发文档;g.软件开发工具本身隐藏的问题。等等……[键入文字]软件质量
软件质量管理体系:软件质量管理体系:ISO9000(2000版)CMM六西格玛ISO9000ISO9001ISO9004核心ISO9000:2000版标准ISO9000:制定管理理念和原则ISO9001:标准对组织质量管理体系必须履行的要求做了明确的规定,是对产品要求的进一进补充。(梳心)ISO9004:是组织进行持续改进的指南标准。八项质量管理原则:一.以顾客为中心:组织依存于其顾客,因此,组织应理解顾客当前的和未来的需求,满足顾客要求并争取赶超顾客期望。[键入文字]二.领导作用:领导者将本组织的宗旨.方向和内部环境编统一起来,并创造使员工能够充参与实现组织目标的环境。三.全员参与:各级人员是组织之本,只有他们的充分参与,才能使他们的才干为组织带来最大的收益。四.过程方法:将相关的资源和活动作为过程进行管理,可以更高效地得到期望的结果。五.管理系统方法:针对设定的目标,识别.理解并管理一个由相互关联的过程的过程所组成的体系,有助于提高组织的有效性和效率。六.持续改进:持续改进是组织的一个永恒的目标。七.基于事实的决策方法:对数据和信息的逻辑分析或直觉判断是有效决策的基础。八.互利的供方关系:通过互利的关系,增强组织及其供方创造价值的能力。其中与软件产品产品优其相关有:(一.三.六.七项)1、软件质量的定义:一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于这些特性满足需求的程度。2、软件质量的三个层次:a.符合需求规格;b.符合用户显示需求;c.符合用户实际需求。3、影响软件质量的因素:流程、技术、组织。流程:一组活动(活动是否都是必须的;活动角色之间的关系)过程:一组将输入转化为输出的相关联或相互作用的活动。4、八项质量管理原则的意义:a.是质量管理的理论基础;b.用高度概括易于理解的语言所表述的质量管理的最基本,最通用的一般性规律;c.为组织建立质量管理体系提供了理论依据;d.是组织的领导者有效的实施质量管理工作必须遵循[键入文字]的原则。5、CMM软件质量成熟度模型CMM(capabilltyMaturityMoelel)由于美国软件工程研究所(SEI)受美国国防部委托立项。开发人:WattsHumphrey.1991年推出CMM1.0版,1993年提出CMM1.1版现在开发CMMI(CMMIntegration)软件能力成熟度模型CMM(提唱过程决定质量)持续改进过程5优化级关注过程改进4已管理级Managed可预测的过程更过程被描述,并得到良好理解管理变标准.一致的过程3已定义级Definded过程被描述,并得到良好理解产品过程质量纪律的过程2可重复级Repeatable可重复以前的主要经验集成工程过程1初始级initial不可预测并且缺控制项目管理CMM1级特点:(个人英雄主义)A项目的成功依赖于一个非常优秀的项目经理的团队。B无法重复以往成功的实践。C缺乏基本配置管理可视度:[键入文字]整个过程不可预测,不可见,不可控。(过程管理非常混乱)CMM2级特点:(有纪律)能够重复以前成功的经验和实践。引入合理需求变更(需求管理)测试与开发分离,整个过程能力可概为有纪律的。可视度原始需求——需求分析——设计——编码——测试——产品CMM3级特点:(有过程,经过同行评审)组织中有一个专门负责组织的标准软件过程。(SEPG)可视度同CMM2但整个过程是标准和一致的。CMM4级特点特点:(量化管理)过程能力是可预防的,因为过程是已测量的并在可测的范围内运行。组织能定量地预测过程和产品质量方面趋势。软件产品具有可预测的高质量。可视度同CMM3但整个过程是可预测的。CMM5级特点特点:(改进过程本身)通过缺陷来发现过程的不足。新的开发技术触使改进过程。可视度同CMM¥级整个是以改进的。CMM1:初始级,Inltial,不可预测并且缺乏控制;CMM2:可重复级:Repeatable,可重复以前的主要经验;(关键过程区域:需求管理;软件项目计划;软件项目跟踪和监督;软件子[键入文字]合同管理;软件质量保证;软件配置管理。)CMM3:已定义级:Defined,过程被描述,并得到良好理解;(关键过程区域:组织过程定义;组织过程焦点;培训大纲;集成软件管理;软件产品工程;组际协调;同行评审。)CMM4:已管理级:Managed,过程被测量并受控;(关键过程区域:定量的过程管理;软件质量管理。)CMM5:优化级,Optimizing,关注过程改进。(关键过程区域:缺陷预防;技术变更管理;过程变更管理。)7、CMM的用途:a.评估组用来识别组织中的强处和弱处;b.评价组用来识别选择不同的业务承包商的风险和监督合同;c.管理者用来了解其组织的能力,并了解为了提高其能力成熟度而进行软件过程改进所需进行的活动;d.技术人员和过程改进组用来作为指南,指导他们在组织中定义和改进软件过程。8、ISO9001和CMM的关系:相似点:强调管理、过程、规范化和文档化;不同点:CMM把焦点对准软件;ISO9001的范围包括:硬件、软件、流程性材料和服务;两者关系:CMM2级与ISO9001强相关;CMM的每个关键过程域至少按某种解释与ISO9001弱相关。六西格玛管理法(强调组织能力)本质:全面质量管理,而不仅仅是质量提高手段六西格玛实施方式:DMAIC过程[键入文字]5控制cororol推行控制系统4改进Improre优化解决方案3分析Anslyse研究资料,确定原因2测量Measure收集资料,寻找原因1定义Define提出问题,确定目标9、软件质量模型:功能性:当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力。包括:适合性;准确性;互操作性;保密安全性;功能性的依从性。可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。包括:成熟性;容错性;易恢复性;可靠性的依从性。易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。包括:易理解性;易学性;易操作性;吸引性;易用性的依从性。效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。包括:时间特性;资源利用性;效率依从性。维护性:软件产品可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应。包括:易分析性;易改变性;稳定性;易测试性;维护性的依从性。[键入文字]可移植性:软件产品从一种环境迁移到另外一种环境的能力。包括:适应性;易安装性;共存性;易替换性;可移植性的依从性。10、软件质量活动:软件质量保证(SQA)和测试;SQA从流程方面保证软件的质量、测试从技术方面保证软件的质量、只进行SQA或者只进行测试活动不一定能产生好的软件质量。11、SQA的主要工作范围:·指导并监督项目按照过程实施;·对项目进行度量、分析,增加项目的可视性;·审核工作产品,评价工作产品和过程质量目标的复合度;·进行缺陷分析,缺陷预防活动,发现过程的缺陷,提供决策参考,促进过程改进。12、度量:对事物属性的量化表示;软件度量:是指计算机软件中范围广泛的测度,包括对软件系统、构建或生命周期过程具有的某个给定属性的度的一个定量测量。目的:·提高软件生产率,缩短产品研发周期,降低研发成本、维护成本;·提高软件产品质量,提高用户满意度;·为组织持续改进提供量化的指标和反馈。13、软件度量的作用:理解;预测;评估;改进。分类:规模;工作量;进度;质量如何将度量的知识应用于实际工作中:建立测试工作的度量数据,目的是作为预测和改进的基础(a.熟悉需求:进度、工作量、规模;b.设计用例:工作效率、覆盖率;c.执行用例:工作效率、缺陷密度;)[键入文字]测试方法
1、什么是白盒测试:·白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体共能实现情况;·白盒测试是基于程序结构的逻辑驱动测试;·白盒测试又可以被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试。2、为什么进行白盒测试:·一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问难题能基本得到消除;·能保证内部逻辑结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;·发现问题后解决问题的成本较低。3、白盒测试的常用技术:·静态分析:控制流分析、数据流分析、信息流分析等;·动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等。4、*控制流相关概念:程序元素、控制流关系、控制流图、控制流矩阵。(步骤:5)5、*控制流分析能发现的问题:转向并不存在的标号;没有用的语句标号;从程序入口进入后无法达到的语句;不能达到停机语句的语句。6、*数据流相关概念:数据的定义;数据的引用。(步骤:3)7、*数据流分析的左右:分析代码中关于数据定义和引用方面的错误;进行代码优化。(赋值语句运算效率高)8、*信息流分析:输入变量和语句关系;语句和输出变量关系;输入和输出变量管[键入文字]理。(步骤:4)9、覆盖率工具的作用:·分析被测试代码控制结构,决定插装位置;·实施插装;·将插装代码重新编译;·执行被测对象,根据插装的监控哨信息统计覆盖率。10、白盒测试的特点:·测试人员需要了解软件的实现;·可以检测代码中的每条分支和路径;·解释隐藏在代码中的错误;·对代码的测试比较彻底;·实现代码结构上的优化;·白盒测试投入较大,成本高;·白盒测试不验证规格的正确性。11、什么是黑盒测试:·黑盒测试把被测对象看成一个黑盒,只考虑其整体特性,不考虑其内部具体实现;·黑盒测试针对的被测对象可以是一个系统、一个子系统、一个模块、一个子模块、一个函数等。·黑盒测试又可以被称为基于规格的测试。12、13、常见的黑盒测试类型:功能性测试;容量测试;负载测试;恢复性测试。*系统测试的时候,如果没有SRS时,有两类BUG无法发现:需求遗漏;需求偏差。14、黑盒测试的优点:·对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高;·测试人员不需要了解实现的细节,包括特定的编程语言;·从用户的视角进行测试,很容易被大家理解和接受;·有助于暴露任何规格不一致或有歧义的问题。[键入文字]15、黑盒测试的缺点:·没有清晰的和简明的规格,测试用例是很难设计的;·不能控制内部执行路径,会有很多内部程序路径没有被测试到;不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)。16、17、动态和静态测试的分类依据在于:被测对象是否运行起来。手工静态分析——同行评审:正规检视;技术评审;走查。评审对象:计划、需求文档、设计图、代码等。18、自动化静态分析:静态验证;语法分析器;符号执行器。自动化测试的限制(板书):·自动化测试不具备想象力,不能够检查脚本中给定的观察点之外的错误;·自动化测试只能提高测试效率,不能提高测试效果,不能发现比人工测试更多的问题;如被测对象不稳定,存在变动性的话不适合开展自动化测试,否则脚本的编写和维护所耗费的时间可能远大于人工测试;·只有手工测试积累到一定程度(提供更多的观察点),才能做好自动化测试。[键入文字]V&V模型(测试过程)
1、验证与确认V&V:验证(VERIFICATION)强调过程;确认(VALIDATION)强调结果。2、V&V告诉我们:·尽早测试(尽早准备、尽早执行);·全面测试(文档、代码)·全过程测试(测试参与到开发过程中、对测试过程全称跟踪)·测试是独立的、迭代的。需求分析SRS评审SRS基线化概要设计HLD评审HLD基线化详细设计LLD评审LLD基线化系统测试计划系统测试方案设计系统测试用例设计集成测试计划集成测试方案设计集成测试用例设计单元测试计划单元测试方案设计单元测试用例设计系统测试执行集成测试执行单元测试执行代码审查CODE3、单元、集成、系统测试的比较:测试方法不同;考察范围不同;评估基准不同。4、回归测试策略:完全重复测试;选择性重复测试(覆盖修改法;周边影响法;指标达成方法;选择重要级别高的测试用例)5、其他测试阶段:验收测试;a(ALPHA)测试;B(BETA)测试。[键入文字]6、主要的测试文档:测试计划;测试方案;测试用例;测试规程;测试报告;测试日报。[键入文字]单元测试
1、单元测试的目的:
在于发现各模块内部可能存在的各种错误主要是基于白盒测试。·验证代码是与设计相符合的;·发现设计和需求中存在的错误;·发现在编码过程中引入的错误。(和设计不相符/和设计相符,但是由于编码疏漏引起)2、孤立的测试策略:
·方法:不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和驱动模块。每个模块进行独立的单元测试。·优点:该方法是最简单,最容易操作的。可以达到高的结构覆盖率。该方法是纯粹的单元测试。·缺点:桩函数和驱动函数工作量很大,效率低。3、自顶向下的单元测试策略:
·方法:先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。其次对第二层进行测试,使用上面已测试的单元做驱动模块。如此类推直到测试完所有模块。·优点:可以节省驱动函数的开发工作量,测试效率较高。·缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。4、自底向上的单元测试策略:
·方法:先对模块调用层次图上最低层的模块进行单元测试,模拟调用该模块的模块做驱动模块。然后再对上面一层做单元测试,用下面已被测试过的模块做桩模块。以此类推,直到测试完所有模块。·优点:可以节省桩函数的开发工作量,测试效率较高。·缺点:不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产生很大的影响。5、·测试计划:完成单元测试计划;单元测试的四个阶段:
·测试设计:完成单元测试方案;[键入文字]·测试实现:完成单元测试用例、单元测试规程、单元测试脚本及数据文件;·测试执行:执行单元测试用例,修改发现的问题并进行回归测试,提交单元测试报告。单元测试:桩&驱动举例:
无论是单元测试还是集成测试都涉及到以下三个函数:主控函数:intctrl(intx,inty)加法函数:intadd(intx,inty)减法函数:intsub(intx,inty)注意:进行单元测试时,设计用例时依据的是LLD;进行集成测试时,设计测试用例依据的是HLD。下面给出来的是需要测试的实际的代码。intctrl(intx,inty){inttemp=0;if(x>=y)temp=add(x,y);elsetemp=sub(x,y);returntemp;}intadd(intx,inty){return(x+y);}intsub(intx,inty){return(x-y);}自顶向下单元测试策略不同测试步骤中的驱动可以写到一起,也可以分开写,这里是写到一起了。测试ctrl函数
需要写一个驱动和两个桩。驱动函数voiddriver(){intret=0;ret=ctrl(2,1);if(ret==3)//x>y[键入文字]printf(“testcaseJISUAN_UT_CTRL_001pass”);elseprintf(“testcaseJISUAN_UT_CTRL_001fail”);ret=ctrl(1,1);//x=yif(ret==2)printf(“testcaseJISUAN_UT_CTRL_002pass”);elseprintf(“testcaseJISUAN_UT_CTRL_002fail”);ret=ctrl(1,2);//x 桩函数同测试ctrl函数时sub函数对应的桩驱动函数同测试ctrl函数时的驱动修改代码intctrl(intx,inty){inttemp=0;if(x>=y){temp=add(x,y);if(x==2&&y==1&&temp==3)printf(“testcaseJISUAN_UT_ADD_001pass”);elseprintf(“testcaseJISUAN_UT_ADD_001fail”);if(x==1&&y==1&&temp==2)printf(“testcaseJISUAN_UT_ADD_002pass”);elseprintf(“testcaseJISUAN_UT_ADD_002fail”);}elsetemp=stub_sub(x,y);returntemp;}测试sub函数 驱动函数同测试ctrl函数时的驱动[键入文字]桩函数无[键入文字]修改代码intctrl(intx,inty){inttemp=0;if(x>=y)temp=add(x,y);else{temp=sub(x,y);if(x==1&&y==2&&temp==-1)printf(“testcaseJISUAN_UT_SUB_001pass”);elseprintf(“testcaseJISUAN_UT_SUB_001fail”);}returntemp;}28[键入文字]集成测试 一.What:什么是集成测试•集成测试(IntegrationTesting)集成测试也叫组装测试、联合测试、部件测试、子系统测试•集成测试测什么1.外部接口:各件呐在一起后表现的功能2.内部接口:各件间的接口是否正确Ä•集成苏的目的验证软件的组建对概要设计说明书的符合度•集成测试的评估基准:接口覆盖率A.接口被测试到的百分比B.接口的等价类、边界值的覆盖率二.Why:为什么要做集成测试•••••一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。虽然已经有了IT和ST,但IT和UT、ST关注点不一样,它们互为补充反分解性公理:为一个被测模块获得的覆盖并不能覆盖他所调用的模块。反组合性公理:对于一个模块中的对各子模块分别合适的测试包并不一定对作为一个整体的模块合适三.Who:谁做集成测试•开发人员做A优势:一般来说,编程能力稍强29[键入文字]B劣势:Protect(就像变形金刚的汽车人),心理上不愿意否定自己的劳动成果,职责是保护程序•测试人员做A优势:Destroy(就像变形金刚的霸天虎),心理上追求完美,职责是挑刺、破坏程序B劣势:目前的现状,大部分tester编程能力不够四.When:什么时候做集成测试4.1集成测试所处的测试过程•集成测试所处的测试过程A.测试准备活动在开发活动时可以并行开展,如开始做HLD设计时就可以开始做ITP了B.测试执行活动在单元测试的基础上进行五.Where:对什么部分做集成测试•••子系统间集成(系统内集成)模块间集成(子系统内集成)函数间集成(模块内集成)六.How:怎么做集成测试6.1测试过程的制定6.1.1计划根据SVVP制定ITP6.1.2设计根据ITP制定IT方案6.1.3实现根据IT方案制定IT用例30[键入文字]6.1.4执行根据IT用例进行集成测试,提交BugReport,……,回归测试6.2采用的测试方法6.2.1灰盒测试随集成层次不同,灰度随之相应变化6.3制定集成测试策略TestStrategy6.3.1根据被测对象(层次)选择合适的策略1>大爆炸集成BigBang优点方法简单、效率高缺点•\"急于求成\",成功率不高•\"大海捞针\",导致即使发现问题也难以定位(无法故障隔离)•\"囫囵吞枣\",许多内部接口的错误被漏测适用范围•小项目、维护型项目•软件结构不清晰的系统2>自顶向下集成Top-Down子策略•深度优先(Depth-First)•广度优先(Broadth-First)优点A.主控模块(高层组件)得到较早验证31[键入文字]B.深度优先策略能够较早验证一个完整的功能,增强了开发信心C.基本不需要开发驱动,减少了这部分的工作量D.和高层设计顺序一致,方便并行开展E.定位问题容易,支持故障隔离缺点A.需要开发大量的桩,工作量、成本太大B.底层变更可能导致测试推倒重来C.底层组件的验证较晚,测试不充分适用范围A.软件结构清晰的系统B.高层接口变化小,底层接口变化大C.主控模块风险大,需尽早验证D.希望尽早看到系统一部分功能3>自底向上集成Bottom-Up优点A.底层组件得到较早验证B.测试初期可以并行集成,效率高C.由于驱动模块是额外编写的,对被测模块的可测试性要求较低D.减少了开发桩的工作量E.定位问题容易,支持故障隔离缺点A.需要开发大量的驱动,工作量、成本同样很高B.对高层的验证太晚了,设计上的缺陷不能被及早发现C.集成到顶层后,对于底层异常将难以覆盖。而使用桩将简单得多32[键入文字]适用范围A.软件结构清晰的系统B.底层接口稳定、或先被开发出来C.高层接口变化较频繁4>三明治集成(分而治之策略)又分为传统型和改进型Sandwich优点融合了自顶向下和自底向上两种策略的优点缺点中间层测试要么不充分,要么测的充分但开发驱动和桩的工作量大适用范围软件结构清晰的系统基本都适合采用5>基干集成(内核耦合度高)Backbone结构与策略:内核(大爆炸)-应用子系统(自底向上)-控制子系统(自顶向下)优点具有三明治集成的优点缺点A.对系统结构的分析存在一定难度B.由于被测系统复杂,驱动和桩的开发工作量较大C.局部采用了大爆炸策略,存在大爆炸所有的缺点适用范围嵌入式系统6>分层集成(线性关系)Layers集成方式A.层内集成33[键入文字]策略非常灵活,可以是各种其他策略优缺点根据策略而变B.层间集成策略和优缺点同\"层内集成\"使用范围有明显线性层次关系的系统7>基于功能集成Function-Based优点A.可以尽早验证关键组件的功能B.可能同时加入多个模块,与大爆炸类似,效率较高C.和自顶向下一样,驱动模块的开发工作量不多缺点A.兼具大爆炸和自顶向下的缺点,比如对有些接口测试不充分,可能导致漏测B.可能会有较多的冗余测试适用范围对功能的实现没把握的产品8>持续集成(高频集成、每日集成)Continuous/High-frequency优点A.错误能被较早发现,且容易定位B.开发和集成可以并行,效率高缺点测试针对性不强,不容易发现有价值的问题适用范围迭代开发、增量开发的产品34[键入文字]9>基于进度集成Schedule-Based优点并行度高,能缩短项目进度缺点组件间缺乏整体性,无法有效集成开发驱动和桩的工作量难以估计由于进度原因,集成效果不好适用范围进度很紧的项目10>基于风险集成Risk-Based优点风险大的模块得到较早验证,有助于系统的快速稳定缺点风险分析偏差导致集成重点的偏离适用范围有些组件有较大的风险,需及早验证以增强信心11>基于消息(事件)集成Message-Based/Event-Based优缺点与\"基于功能集成\"类似,适用面向对象系统12>基于使用集成Use-Based优缺点与\"自底向上\"类似,适用面向对象系统13>基于C/S、B/S的集成适用C/S、B/S结构的系统14>分布式集成DistributedServices适用分布式系统35[键入文字]36[键入文字]系统测试 •定义SystemTesting--是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行使用的环境下,对计算机系统进行系列的测试活动;•对象37[键入文字]1.产品级--软件+硬件2.项目级--软件(也可能包含硬件)•完备性如何保证系统测试的完备性?1.尽可能所有需求都有对应的TestCase;2.依据软件的质量特性,以不同的角度,测试需求;3.依据不同的TestCase、方法,构造不同的测试数据及处理过程;常用测试方法1.1功能测试(功能)•定义:functionTesting--依据SRS和测试需求列表验证产品的功能是否实现和是否符合产品需求规格•目标:1.是否有不正确或遗漏了的功能?2.功能是实现是否满足用户需求,和系统设计的隐式需求?3.输入能否正确接受?能否正确输出结果?1.2性能测试(效率)•定义:PerformanceTesting--测试该软件在集成系统中的运行性能。(大多使用工具测试)•目标:度量系统相对与预定义目标的差距。•实施:1.性能指标定义明确。2.构造性能测试研究数据。38[键入文字]3.构造不同的性能测试场景。4.执行性能测试(一般>90%就通过)。5.性能分析。6.性能故障定位。7.性能优化。•依据1.资源占用性。2.CPU响应时间。•区别:1.压力测试--不强调施压量,只检查施压的状况。2.容量测试--强调施压,施了多少压。3.性能测试--施压后检验性能指标是否达到规定资源使用和响应时间的要求。1.2.1资源方面(资源占用情况)•CPU使用情况。•IO使用情况。•内存使用情况。•信道使用事情。1.2.2时间方面(CPU响应时间)•每个模块执行时间百分比。•一个模块等待IO完成的百分比。•指令随时间的跟踪路径。•每一组指令页换入和换出的次数。•系统反映时间。•系统吞吐量,即每个单元的处理数量。39[键入文字]•所有主要指令的单元执行时间。1.3压力测试/极限测试(可靠性)•定义:StressTesting--系统在其资源超符合的情况下表现。•目标:在极限或者恶劣的环境下,系统的自我保护能力。主要验证系统的可靠性。•实施:1.同一时间,大量的用户登陆。2.引入大量的操作。•目的:1.是否存在内存泄露。2.验证系统可靠性。3.测试后给予用户一个明确的界定。•区别:1.压力测试--不强调施压量,只检查施压的状况。2.容量测试--强调施压,施了多少压。3.性能测试--施压后检验性能指标是否达到规定资源使用和响应时间的要求。1.4容量测试•定义:volumeTesting--使系统能够承受超额的数据容量来发现它是否能够正确处理。•目标:1.测试系统容量是否满足需求规定系统容量。2.若无规定系统容量可以通过此测试给出明确容量界定。•实施:40[键入文字]1.构造一批大容量的测试数据输入到系统。2.对系统整体构造不同业务场景,反复执行。•区别:1.压力测试--不强调施压量,只检查施压的状况。2.容量测试--强调施压,施了多少压。3.性能测试--施压后检验性能指标是否达到规定资源使用和响应时间的要求。1.5安全性测试(功能)•定义:SecurityTesting--验证集成在系统内的保护机制能否在实际应用中保护系统不受到非法的侵入。•目的:保证系统安全性,数据的完整性、保密性。1.5.1数据完整性••数据存储的完整性。数据保密的完整性。保密性••数据存储的保密性。数据访问的保密性。1.5.2权限••权限的分配权限的使用1.5.3协议多在手机测试用到。41[键入文字]1.5.4其他如LOG..1.6GUI测试(易用)•定义:GraphicalUserInterfaceTesting--针对软件系统的界面进行的测试。•目标:1.界面实现与界面设计的吻合情况。(界面设计)2.确认界面处理的正确性。(针对不同的控件分析)•相关自动化测试工具1.WinRunner2.SilkTest3.QaRun1.6.1简单界面元素•定义:指功能和属性相对比较单一的界面区域,即通常所指的各种控件。•方法:主要关注他们的外观、表现行为。1.6.2组合类界面元素•定义:一些复杂的界面元素,比如表格、各种文本编辑器等。•方法:先将其分解为简单的界面元素,然后再进行处理。1.6.3完整界面(窗口)•定义:42[键入文字]由一系列界面元素通过适当的形式组合而成的界面形式,最为常见的为各种窗口。包括各种对话框、单文档窗口、多文档窗口,多文档子窗口等。•方法:外观、布局、行为。1.输入类界面元素:与要考虑其外观、输入时的特性比如回显、对齐原则、滚动原则等内容。2.输出类界面元素:外观。1.7可用性测试(易用)•定义:UsabilityTesting--为检测用户在理解和使用系统方面到底有多好。•目标:1.考虑产品是否符合实际应用情况。2.是否符合用户习惯或特殊要求。3.操作方式是否方便合理、设备和用户见交互信息是否准确易于理解、是否遵从行业习惯、外观/界面是否美观等。•一般关注的可用性问题:1.过分复杂的功能或指令。2.困难的安装过程。3.错误信息过于简单。4.用户被迫去记太多信息。5.语法、格式和定义不一致。1.8安装测试43[键入文字]•定义:根据软件测试特性列表、软件安装、配置文档,设计安装过程的测试用例,发现软件在安装过程中的错误。•被测对象:1.软件本身。2.软件安装文档。1.8.1安装测试前要检查的工作1.安装文档是否齐全。2.安装软件的程序文件是否齐全。3.被测软件的安装文件是否齐全。4.软件的安装说明文档是否齐全。5.检查软件的文件格式是否与安装说明文档中要求的文件格式相符。1.8.2安装测试过程中的工作1.所有的预置数据是齐全。2.软件环境配置是否合理。3.硬件环境配置是否合理。4.用户选择的一套任选方案是相容。¦5.安装过程中:A.系统提供的缺省参数值进行安装测试。B.指定由人工完成安装过程,列出每一步安装步骤所需的工作,并仔细检查每一安装步骤所完成工作的正确性。C.安装测试过程中要设计异常的安装测试用例,包括配置参数的异常、安装选项和安装路径的异常。6.安装文档的测试。44[键入文字]1.8.3安装后要做的检查工作1.所有文件是否都已产生并确有所需的内容。A.程序文件的目录是否正确产生。B.各目录及子目录下的程序文件是否都正确产生。C.是否存在无用的目录、子目录、程序文件以及无用的子目录。D.目录、子目录、以及程序文件本身的权限是否正确。E.对于Windows还要检查与应用软件相配套的动态链接库文件齐全。2.安装日志的检查。3.安装完成后,要进行程序的运行,联结验证。4.软件的卸载测试。1.8.4安装测试中软件的升级测试1.软件通过重新安装来达到升级的目的。2.通过Patch的方式实现软件的升级。3.在线升级。1.9配置测试•定义:系统在各种软硬件配置、不同参数配置下系统具有的功能和性能。•目标:验证全部配置的可操作性,有效性。1.10异常测试/恢复性测试(可靠)•定义:容错性测试。通过人工干预手段产生异常,能检验系统的容错、恢复能力,是系统可靠45[键入文字]性评价的重要手段。•异常处理1.系统自动处理。2.人工干预处理。•注意1.系统的异常还与系统的指标测试有关,当系统的服务能力大于系统的设计指标时,也属于系统的异常情况。2.系统的可靠性是设计出来的,而不是测试出来的。测试出的数据有助于为我们进一步的系统优化设计积累经验,设计和测试是一个相互反馈的过程。1.11备份测试(可靠)恢复性测试的一个补充,验证软件或硬件失败中备份他数据的能力。1.12健壮性测试(可靠)RobustnessTesting用于测试系统在故障时,是否能够自动恢复或者忽略故障继续运行。1.13文档测试DocumentationTesting测试文档的正确性,保证操作手册的过程能够正常工作。1.14在线帮助测试OnlineHelpTesting检测时实在线帮助的可靠性和正确性。1.15网络测试网络环境下和其他设备对接,进行系统功能、性能与指标方面的测试,保证对接的正确性。1.16稳定性测试在一定负荷情况下能持续运行的时间。46[键入文字]2系统测试测试过程 2.1计划阶段明确what目标、why测试目的、when可控时间、where测试范围、how如何开展.主要活动有:参与开发人员软件需求的分析,SRS评审,通过后写ST计划,进行ST计划评审。••••入口准则:SRS完成并确定需求规格基线输入:SRS|SDP|SVVP出口准则:ST计划评审通过输出:2.2设计阶段主要活动有:组织人员依据测试计划编写测试方案,并进行系统方案的评审••••入口准则:输入:出口准则:输出:ST计划评审通过ST计划|SRSST方案评审通过ST方案2.3实现阶段主要活动有:组织人员依据ST方案编写测试用例、测试规程及预测试项,并对其进行评审••••入口准则:输入:出口准则:输出:ST方案评审通过ST计划|SRS|ST方案测试用例、测试规程及预测试项评审通过测试用例、测试规程及预测试项47[键入文字]2.4执行阶段主要活动有:组织测试执行活动、负责缺陷报告返回给开发部门修改、组织进行测试报告的编写、组织进行测试报告的评审••••入口准则:输入:出口准则:输出:测试用例、测试规程及预测试项的评审通过ST计划|ST方案|ST用例|ST规程|ST预测试项ST报告评审并通过ST预测试报告|ST测试报告|缺陷报告测试覆盖率 1、覆盖率概念:·覆盖率是用来度量测试完整性的一个手段。覆盖率是测试技术有效性的一个度量。覆盖率=(至少被执行一次的item数)/item的总数;·覆盖率大体可以划分为两大类:逻辑覆盖和功能覆盖;·测试用例设计不能一味追求覆盖率,因为测试成本虽覆盖率的增加而增加。2、逻辑覆盖主要类型:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、路径覆盖。3、语句覆盖率:(StatementCoverage),在测试时运行被测程序后,程序中被执行到的可执行语句的比率;语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数)4、分支覆盖率:(BranchCoverage)也叫判定覆盖(DecisionCoverage),它的含义是:在测试时运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率;48[键入文字]判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)5、条件覆盖率:(ConditionCoverage)的含义是,在测试时运行被测程序后,所有判断语句中每个条件的可能取值(真值和假值)出现过的比率;条件覆盖率=(条件操作数值至少被评价一次的数量)/(条件操作数值的总数)6、分支-条件覆盖率:(BranchConditionCoverage)也叫判定条件覆盖(DecisionConditionCoverage),它的含义是,在测试时运行被测程序后,所有判断语句中每个条件的所有可能值(为真为假)和每个判断本身的判定结果(为真为假)出现的比率;分支条件覆盖率=(条件操作树枝或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)7、路径覆盖率:(PathCoverage)的含义是,在测试时运行被测程序后,程序中所有可能的路径被执行过的比率;路径覆盖率=(至少被执行到一次的路径数)/(总的路径数)8、其他覆盖率:功能覆盖率;面向对象的覆盖率;函数覆盖;指令块覆盖;判定路径覆盖。49[键入文字]测试用例举例 测试用例编号BOSS_ST_MARKETING_NEW_01P重要级别高(还有“较高、中、较低、低”几个等级)测试项目新增营销记录测试标题新增10元的营销记录用例类型基本事件(对应还有“备选事件”、“异常事件”)用例设计者songfun设计日期2005-04-25对应需求编号REQ_MARKETING_NEW_01对应UIMarketing.htm对应UCUC_MARKETING_NEW_01版本号Buildv0.1对应开发人员Frank预置条件操作员登录营销管理系统测试方法等价类划分(对应还有“错误猜测法”、“边界值分析”等)输入用户名:51testing性别:男金额:10元描述:aaaaaaa操作步骤1.进入【营销下发】页面;2.点击『增加』按钮;3.输入相应数据;4.点击『确定』按钮;5.在后台数据库(test/test@testDB)输入查询语句验证:select*fromMarketingTabwhereID='1001'预期输出㈠.执行步骤④后,页面弹出添加成功提示信息框;50[键入文字]㈡.执行步骤⑤后查询数据库,记录确实添加成功且数据无误51[键入文字]同行评审 1、同行评审:(PeerReview)是一种通过作者的同行来确认缺陷和需要变更区域的检查方法。需要进行同行评审的特定产品在定义项目软件过程的时候被确定并且作为软件开发计划的一部分被安排了进度。·需要前期准备、计划和时间进度表·越早越好3、同行评审的作用:·早期发现缺陷;·去除缺陷;·降低成本;·提高质量。4、同行评审的类型:·正规检视:(Inspection)最严格,要求有规范的流程,参加者经过正式培训;·技术评审:(TechniqueReview)以技术方案的比较、裁决为目的,严格程度介于正规检视和走读之间;·走读:(WalkThrough)最(自由)松散的形式,无流程要求,有评审团队,评审流程无要求。5、通用评审流程步骤(正规检视流程):入口准则1.计划阶段5.第三小时会议Y第三小时会议?介绍会议?N6.返工阶段YN2.介绍会议7.跟踪阶段3.准备阶段4.Review会议出口6、计划阶段:·项目负责人指定组织者;·作者自检工作产品;·组织者规划本次评审;·检查入口准则:是否符合文档标准?是否已用工具检查?代码<=500行;文档<=40页;……52[键入文字]·准备评审包:工作产品(HLD);参考资料(SRS-检查一致性);评审表(ReviewForm);查检表(Checklist)。·指定评审专家(3-6人);·组织者将评审包、评审通知单发给相关人员。7、介绍会议:·被评审对象采用新技术、新方法;·被评审对象第一次被评审(作者介绍被审对象以及相关技术)·评审专家第一次参加评审(评审者介绍评审流程)·介绍会议的召开距接到评审通知的时间大于5小时;·介绍会议的时间不超过1小时,30-60间为宜,关注讲解。8、准备阶段:(最重要、发现缺陷最多)·评审专家个人独立完成工作产品的审视,提出缺陷;·准备时间大于会议时间,且应于会议前2天开始;·评审者:收到组织者发来的评审包;审核工作产品、发现缺陷;填写评审表单;反馈评审表单给组织者;组织者:检查评审表单;裁决是否需要增加评审评审投入(增加准备时间;增加评审专家人数;更换评审专家)9、会议阶段(2小时内;只提出问题,不关注解决):·组织者召开评审会议;·讲解员讲解工作产品;(尽量不要由作者兼任)·大家共同确认问题(评审表单中记录的问题;会上发现的问题;当争执不下时组织者应做出裁决)·对已确认的问题进行分类;·作者决定是否召开第三小时会议;·记录员记录所有的问题及分类,并发给组织者;(记录员尽量不要由作者和组织者担任)·组织者更新评审表单。10、第三小时会议·有争议的问题继续讨论,给出决议;·讨论解决问题方案;·组织者更新评审表单。工:发回作者修改;11、返53[键入文字]12、跟····踪:汇总所有需要的数据到评审表单发给相关评审专家;(2组织者)组织评审专家确认各缺陷得到了修改,并且没有引入新的缺陷;协助组织者确认相关问题得到了正确修改并且没有引入新的缺陷;确认评审表单中各相关度量数据正确(发现缺陷数;评审投入时间;评审专家人数等)(评审专家2)54[键入文字]配置&需求管理 1、配置管理的目的和意义:目的:a.可视性:用户/买方/卖方详细知道工作内容;b.管理层能够知道产品特性;c.所有的项目参与者在同一平台下交流;d.了解现在和计划的配置;e.管理层可看到变更的影响;f.管理层可选择参与的节点;目标:意义:项目:减少返工,减少工作量;公司:节约成本,积累项目财富;可视性提高;项目可跟踪性高;2、配置、基线、版本各自定义及关系:配置:是软件生命周期个阶段产生的程序、数据、文件、环境的集合;配置项:是软件生命周期个阶段产生的程序、数据、文件、环境基线:配置项在其生命周期的不同时间点上通过评审而进入正式受控的一种状态,而这个过程被称为“基线化”;版本:是表示一个配置项具有一组定义的功能的一种标识;3、变更控制的流程(各种角色、职责输出):·项目成员、客户代表、市场人员提交CR·CMO将CR状态表示为已提交,并将CR根据条件进行判断,把不需要CCB进行审核的、决定采纳的CR直接进行签发;把不需要CCB进行审核的、不决定采纳的CR直接关闭(4CMO将CR状态标识为已拒绝);将需要CCB评审的CR提交给CCB进行评估;·CCB召开会议对CR进行评估·CMO将CR状态标识为已接受,将CR于要修改的配置项发给项目组成员并开55[键入文字]放CI的配置库权限·项目组成员执行更改并进行验证·CCB召开会议对修改进行审核,如果通过将CR状态表示为已验证,发给CMO,否则直接关闭,并给出提交人反馈信息4、配置管理中测试工程师的职责:·测试工程师将自己创建的与测试相关配置项(比如软件测试计划、软件测试方案、软件测试用例、软件测试日报、软件测试报告等)加入配置库中;·测试工程师根据变更请求,对已经基线化的配置项进行Check-Out、修改、Check-In操作。比如,在测试执行之前,需要更新测试用例,此时需要经过CMO的授权,然后由测试人员对相应的配置项(测试用例文件)Check-Out、修改、Check-In5、需求跟踪涉及到的配置项分配需求SRSHLDLLDCODEST文档IT文档UT文档6、配置项的跟踪矩阵Input————————————Task————————————OutputSOWorARRTMForm初始化RTM初始的RTM准备基线化的文档、代码更新RTM对于已经基线化的SRS、设计文档、代码、测试文档等的CRS更新后的RTM56[键入文字]缺陷管理 1、缺陷管理的目的:·保证信息的一致性;保证缺陷得到有效跟踪,解决;·获取正确的Bug信息,用作缺陷分析和产品度量。2、缺陷的相关属性:·缺陷发现人(DefectReporter);·缺陷发现时间(DefectedonDate);·缺陷状态(Status);·缺陷严重程度(Sewrity);·缺陷所属版本(DefectedinVersion);·优先级(Priority)·缺陷修改日期(FixedonDate);·再现性(Reproducible);·回归测试(Regression);3、缺陷管理流程:(参考缺陷管理作业)57[键入文字]4、缺陷跟踪单写作准则(5C)·Correct(准确),每个组成部分的描述准确,不会引起误会;·Clear(清晰),每个组成部分的描述清晰,易于理解;·Concise(简洁),只包含必不可少的信息,不包括任何多余的内容;·Complete(完整),包含复现该缺陷的完整步骤和其他本质信息;·Consistent(一致),按照一致的格式书写全部缺陷报告。5、缺陷跟踪单基本内容:(其他相关属性);简单描述;详细描述;相关附件。6、QC中缺陷管理流程:(实际流程应参考各公司内部流程或者书本)1.Qatester提交一个状态为new的新缺陷后assignedtoPM2.PM查看该缺陷,并判断是否为缺陷需要修改:n在comments中记录否决意见后closed;y在comments中记录相关意见后将该缺陷指派给相关开发人员,并将status置为open/reopen3.Developer打开缺陷模块,看到指派给自己的缺陷后确定是否修改:n在comments中记录意见后rejectedtoPM2y修改该缺陷,并将status置为fixed指给PM4.PM将该缺陷指派给Qatester进行回归测试5.Qatester看到指派给自己的fixed的缺陷后,进行回归测试,通过?yclosed;nrejected给PM27、缺陷度量—评价软件技术/流程/组织指标的公式分析指标1.反映产品质量的指标缺陷密度=缺陷数量/软件规模(千行代码数)潜在缺陷概数=(100%-发布前缺陷的缺陷去除率)*缺陷密度2.反映产品可靠性的指标平均实效时间=软件持续运行时间/缺陷数量3.反映缺陷发现及修复效率的指标缺陷检出率=某阶段发现的缺陷/属于该阶段的全部缺陷*100%发布前缺陷去除率=发布前发现的缺陷/(发布前发现的缺陷+软件运行前三个月)*100%58[键入文字]缺陷修正率=修复过程中未引发其他问题的缺陷数/被修复缺陷的总数*100%4.反映缺陷修复成本的指标平均修复时间=∑缺陷修复时间/缺陷数量平均修复成本=开发人员的平均人力成本*平均修复时间相对返回成本=返工的工作量/项目总工作量*100%汇总统计1.缺陷发生的日期统计(缺陷发现趋势图)2.缺陷性质统计(缺陷变更,需求变更)3.缺陷状态分布(关闭,修复中,挂起等)4.缺陷按子系统(模块)分类统计5.缺陷引发原因分类统计6.缺陷来源统计(缺陷提交人或提交方)59[键入文字]SQLSERVER(需搭建SQLSERVER环境) 数据定义语言(DDL) •Createtable创建数据库的表•Createindex创建数据库表的索引•Droptable删除数据库表•Dropindex删除数据库表的索引•Truncatetable删除表的所有行•Altertable修改表:增加表列、重定义表列、更改存储分配等•Altertableaddconstraint在已有的表上增加约束数据操作语言DML •Insert增加数据行•Delete从表里删除行•Update更改表中数据•Select从表或视图中检索数据行数据控制语言DCL•Grant将权限或角色授予用户或其他角色•Revoke从用户或数据库角色回收权限•Setrole禁止或允许一个角色数据库事务控制•Commitwork把当前事务所作的更改永久化(写入磁盘)•Rollback作废上次提交以来的所有更改Where语句中的通配符:Select*fromobjectswhereobject_namelike‘sql#_m_il’escape‘#’字符类型转换:例:convert(varchar(5),@varage)汇总函数 ••••平均值avg总和sum最小值min最大值max60[键入文字]•计数count•Count(*)和count(distinct)Insert语句 •Insertinto表名(列名1,n)value(值1,n)•Insertintostudentvalues(20051115,’黄飞鸿’,’男’,21,’cs’)•Insertintostudent(sname,sno,sdept)value(‘刘德华’,20055567,’cs’)•未指明的字段内容为null•Insertinto表名(列名1,n)select语句;如:•Insertintostudent2(sno,sname,sdept)selectsno,sname,sdeptfromstudent1•前提是两个表的结构相同Update语句 •Update表名set列名1=表达式1,列名2=表达式2..Where条件•Updatestudentsetsdept=‘MA’wheresno=‘95001’•所有学生年龄加1•Updatestudentsetsage=sage+1•该语句只对单个表操作,不能同时对多表操作•该语句仅当事务提交(commit)后才生效;也可通过事务回滚rollback来作废操作在SQLServer2000中有5种约束: 主键约束(primarykeyconstraint)唯一性约束(uniqueconstraint)检查约束(checkconstraint)缺省约束(defaultconstraint)外部键约束(foreignkeyconstraint)课程实例:---创建表\"订单A\"createtable订单A(订单编号intnotnull,下单日期datetimenotnull,客户编号intnotnull)select*from订单A61[键入文字]---首先添加订单名称,varchar(20),nullaltertable订单Aadd订单名称varchar(20)nullselect*from订单A---之后删除订单名称字段altertable订单Adropcolumn订单名称select*from订单A---然后同时添加订单名称,varchar(20),null和定购数量,int,nullaltertable订单Aadd订单名称varchar(20)null,订购数量intnullselect*from订单A---然后尝试同时修改订单名称的字段长度为50,定购数量数据类型为numeric*能同时修改*altertable订单Aaltercolumn订单名称varchar(50)nullselect*from订单Aaltercolumn订单名称varchar(50)null订购数量numeric---最后同时删除订单名称和定购数量altertable订单Adropcolumn订单名称,订购数量select*from订单A---向已有表\"订单A\"的订单编号字段添加主键约束altertable订单Aaddconstraint订单编号_kprimarykey(订单编号)select*from订单A不62[键入文字]---创建\"定购项目\"表,并同时添加项目编号字段为主键createtable订购项目(订单编号intnotnull,项目编号intnotnull,书籍编号intnotnull,数量intnotnull,primarykey(项目编号))select*from订购项目---向已有表\"定购项目\"添加新字段\"项目名称\"和\"客户名称\并设置项目名称字段为唯一键altertable订购项目add项目名称varchar(20),客户名称varchar(20)constraint项目名称_uunique(项目名称)select*from订购项目---在现有表\"定购项目\"上设置\"客户名称\"为唯一键altertable订购项目addconstraint客户名称_uunique(客户名称)---设置数量字段必须在10到100之间altertable订购项目addconstraintchk_数量check(数量between10and100)insertinto订购项目values(1,2,3,4,'张三','李四')---检测数量字段的约束条件是否成立createtablesincky(myidintidentity(10,1)notnull,---通过函数实现自动增量youridvarchar(10))---添加\"定购地点\"字段,默认值是\"上海\"altertable订购项目63[键入文字]add订购地点varchar(50)nulldefault'上海'---设置缺省约束createtable书籍(书籍编号intnotnullprimarykey,书籍名称varchar(50)null,价格smallmoneynull,出版公司char(20))altertable订购项目addconstraint订单项目_fforeignkey(书籍编号)references书籍(书籍编号)64[键入文字]存储过程:ifexists(select*fromsysobjectswherename='sinckypro'andtype='p')dropproceduresinckyprogocreateproceduresinckypro@varnamevarchar(50),@varageintasdeclare@innamevarchar(50)set@inname='sincky_'+@varnamecreatetabletesttable(myidintnotnullprimarykey,mynamevarchar(50)notnull,mypasswdvarchar(20)notnull,myageintdefault25)insertintotesttablevalues(1,@inname,'zhang',@varage)select*fromtesttabledroptabletesttablegoexecsinckypro'51testing',5565[键入文字]测试工具总结 测试工具大全工具类别WinrunnerQuicktestproXrunnerQARunTestPartnerWebKingRobotVisualTest通用功能自动化测试工具FunctionalTesterSilkTestSilkTestInternationale-TesterWebFTTestCompleteQAWizardSoftwareEggPlantTestEditionPureTestAutotesterTestbench400TestExpertTestRunnerTTCNsuiteQC/ReplayWebMercuryMercuryMercuryCompuwareCompuwareParasoftIBMRationalIBMRationalIBMRationalSegueSegueEmpirixRadviewAutomatedQASeapineRedStoneMicrosoftVisualStudioMinqAutotesterOriginalSoftwareVEReCOMMQronusTelelogicCenterlineAutoTesterhttp://www.telelogic.com.cnhttp://www.parasoft.comhttp://www.ibm.com/cnhttp://www.ibm.com/cnhttp://www.ibm.com/cn工具名称生产厂商相关网站66[键入文字]eValidWebARTMaxQWebInjectMarathonLoadRunnerSiteScopeTopazQaLoadPerformaSure/benchmarkSilkperformerSilkperformerLiteSilkCentralTMPerformance性能测试/监控工具Managere-LoadRobotPerformanceTesterWebLoadWebapplicatonstresstoolApplicationcentertestPureLoadAtheneAPRForeCastImpact/ImpactforCBTBerkeleyLaboratorysnifferJmeteropenSTASiegeStressMarkDBMonster白VcTesterSoftwareResearchOCLC开源开源开源MercuryMercuryMercuryCompuwareQuestSegueSegueSegueEmpirixIBMRationalIBMRationalRadViewMicrosoftMicrosoftMinqMetronFacilitaCyranoLawrence开源开源开源开源开源ezTesterhttp://www.eztester.comhttp://www.ibm.com/cnhttp://www.ibm.com/cn67[键入文字]盒测试/代码分析工具JtestC++testSOAtest.testCodewizardInsure++DataReconNumegadevpartnerstudioDevPartnerJavaEditionBoundsCheckerSmartCheckDBPartnerBean-testAqtimeQESatJavaVisualUnitPC-lintMacabeOptimizeitSuiteJProbeSuiteApplicationassurancesuiteSqloptimizerJprofilerworkbenchLogiscoperulecheckSilkPerformerComponentTestEditionPurifyplusRationalTestRealtimejunitParasoftParasoftParasoftParasoftParasoftParasoftParasoftCompuwareCompuwareCompuwareCompuwareCompuwareEmpirixAutomatedQAAutomatedQAUnitwareGimpelSoftwareMacabeBorlandQuestSoftwareQuestSoftwareQuestSoftwareej-technologiesCyranoTeleLogicTeleLogicSegueIBMrationalIBMrational开源http://www.parasoft.comhttp://www.parasoft.comhttp://www.parasoft.comhttp://www.parasoft.comhttp://www.parasoft.comhttp://www.parasoft.comhttp://www.parasoft.comhttp://www.telelogic.com.cnhttp://www.telelogic.com.cnhttp://www.ibm.com/cnhttp://www.ibm.com/cn68[键入文字]cactusHanselTestNGStrutsTestCaseJFCUnitHttpunitDunitcppunitNunitXunitJTRMallocDebugValgrindKcachegrinddmallocElectricFenceLeakTracermemprofccmallocmprofyamdnjamdmpatrolVcTestercodetest嵌入式测试工具Cantata/cantana++IceMasterSystemtestscorecastTestquestUniTextvectorcast开源开源开源开源开源开源开源开源开源开源开源Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具Linux平台工具ezTesterMetrowerksIPLReflexTechnologyReflexTechnologyDDC-ITestquestATTOLVectorhttp://www.eztester.comhttp://sourceforge.net/project69[键入文字]softwaretestrunnerLogiscopeTestDirector(QualityCenter)QADirector测试管理工具certifyProductmanagerSilkCentralTestManagerDoorse-managertestmanagerTestViewManagerProfessionalTestDirector(QualityCenter)ClearQuestTrackRecordTestTrackproTrueTrack缺陷管理工具DevtrackNotesSilkCentralIssueManagerPVCSTrackerARSystemURTrackButterflyBugzillaMantisJIRABugFree配置ClearCasePVCSVersionManagerQronusTelelogicMercuryCompuwareWorksoftAimwareSegueTelelogicEmpirixIBMRationalRadViewT-PlanMercuryIBMRationalCompuwareSeapineMcCabeTechexcelIBMLotusSegueMerantRemedyLealSoftHansky开源开源开源开源IBMRationalMeranthttp://www.ibm.com/cnhttp://www.ibm.com/cnhttp://www.ibm.com/cnhttp://www.telelogic.com.cnhttp://www.telelogic.com.cn70[键入文字]管理工具VCSStarTeamPerforceTRUEchangeSYNERGYCMVSSFireflyCVSSCCSCCC/HarvestDiamondBorlandPerforceMcCabeTelelogicMicrosoftHanskySubversionRCSComputerAssociateshttp://www.telelogic.com.cn测试工具部分详解随着软件测试的地位逐步提高,测试的重要性逐步显现,测试工具的应用已经成为了普遍的趋势。目前用于测试的工具已经比较多了,这些测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具。总的来说,测试工具的应用可以提高测试的质量、测试的效率。但是在选择和使用测试工具的时候,我们也应该看到,在测试过程中,并不是所有的测试工具都适合我们使用,同时,有了测试工具、会使用测试工具并不等于测试工具真正能在测试中发挥作用。WinRunner1.简介WinRunner:强大的企业级自动化测试工具MercuryInteractive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何71[键入文字]有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。如果时间或资源有限,这个问题会更加棘手。人工测试的工作量太大,还要额外的时间来培训新的测试人员等等。为了确保那些复杂的企业级应用在不同环境下都能正常可靠地运行,你需要一个能简单操作的测试工具来自动完成应用程序的功能性测试。2.特征:1)轻松创建测试用WinRuuner创建一个测试,只需点击鼠标和键盘,完成一个标准的业务操作流程,WinRunner自动记录你的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。你还可以直接修改测试脚本以满足各种复杂测试的需求。WinRunner提供这两种测试创建方式,满足测试团队中业务用户和专业技术人员的不同需求。2)插入检查点在记录一个测试的过程中,可以插入检查点,检查在某个时刻/状态下,应用程序是否运行正常。在插入检查点后,WinRunner会收集一套数据指标,在测试运行时对其一一验证。WinRunner提供几种不同类型的检查点,包括文本的、GUI、位图和数据库。例如,用一个位图检查点,你可以检查公司的图标是否出现于指定位置。3)检验数据除了创建并运行测试,WinRunner还能验证数据库的数值,从而确保业务交易的准确性。例如,在创建测试时,可以设定哪些数据库表和记录需要检测;在测试运行时,测试程序就会自动核对数据库内的实际数值和预期的数值。WinRunner自动显示检测结果,在有更新/删除/插入的记录上突出显示以引起注意。4)增强测试为了彻底全面地测试一个应用程序,需要使用不同类型的数据来测试。WinRunner的数据驱动向导(DataDriverWizard)可以让你简单地点击几下鼠标,就可以把一个业务流程测试转化为数据驱动测试,从而反映多个用户各自独特且真实的行为。72[键入文字]以一个订单输入的流程为例,你可能希望把订单号或客户名称作为可变栏,用多套数据进行测试。使用DataDriverWizard,你可以选择订单号或客户名称用数据表格文件中的哪个栏目的数据替换。你可以把订单号或客户名称输入数据表格文件,或从其它表格和数据库中导入。数据驱动测试不仅节省了时间和资源,又提高了应用的测试覆盖率。WinRunner还可以通过FunctionGenerator增加测试的功能。使用FunctionGenerator可以从目录列表中选择一个功能增加到你的测试中以提高测试能力。例如,你可以选择”calendar”,然后从日历功能的下属目录中选择,如Calendar_select_date(),然后你可以直观地输入参数,把这个功能插入到你的测试中。针对相当数量的企业应用里非标准对象,WinRunner提供了VirtualObjectWizard来识别以前未知的对象。使用VirtualObjectWizard,你可以选择未知对象的类型,设定标识和命名。在录制使用该对象的测试时,WinRunner会自动对应它的名字,从而提高测试脚本的可读性和测试质量。5)运行测试创建好测试脚本,并插入检查点和必要的添加功能后,你就可以开始运行测试。运行测试时,WinRunner会自动操作应用程序,就象一个真实的用户根据业务流程执行着每一步的操作。测试运行过程中,如有网络消息窗口出现或其它意外事件出现,WinRunner也会根据预先的设定排除这些干扰。6)分析结果测试运行结束后,你需要分析测试结果。WinRunner通过交互式的报告工具来提供详尽的、易读的报告。报告中会列出测试中发现的错误内容、位置、检查点和其它重要事件,帮助你对测试结果进行分析。这些测试结果还可以通过MercuryInteractive的测试管理工具TestDirector来查阅。7)维护测试随着时间的推移,开发人员会对应用程序做进一步的修改,并需要增加另外的测试。使用WinRunner,你不必对程序的每一次改动都重新创建你的测试。WinRunner可以创建在整个应用程序生命周期内都可以重复使用的测试,从而大大地节省时间和73[键入文字]资源,充分利用你的测试投资。每次记录测试时,WinRunner会自动创建一个GUIMap文件以保存应用对象。这些对象分层次组织,既可以总览所有的对象,也可以查询某个对象的详细信息。一般而言,对应用程序的任何改动都会影响到成百上千个测试。通过修改一个GUIMap文件而非无数个测试,WinRunner可以方便地实现测试重用。8)帮助你的应用程序为无线应用作准备随着无线设备种类和数量的增加,你的应用程序测试计划需要同时满足传统的基于浏览器的用户和无线浏览设备,如移动电话、传呼机和个人数字助理(PDA)。无线应用协议是一种公开的、全球性的网络协议,用来支持标准数据格式化和无线设备信号的传输。使用WinRunner,测试人员可以利用微型浏览模拟器来记录业务流程操作,然后回放和检查这些业务流程功能的正确性。LoadRunner1.简介:LoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。MercuryInteractive的LoadRunner能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的74[键入文字]操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。2.1)特征:轻松创建虚拟用户使用LoadRunner的VirtualUserGenerator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在Windows,UNIX或Linux机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。另外,LoadRunner的TurboLoad专利技术能。提供很高的适应性。TurboLoad使您可以产生每天几十万名在线用户和数以百万计的点击数的负载。用VirtualUserGenerator建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。LoadRunner通过它的DataWizard来自动实现其测试数据的参数化。DataWizard直接连于数据库服务器,从中您可以获取所需的数据(如定单号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据的需要,DataWizard为您节省了大量的时间。为了进一步确定您的Virtualuser能够模拟真实用户,您可利用LoadRunner控制某些行为特性。例如,只需要点击一下鼠标,您就能轻易控制交易的数量,交易频率,用户的思考时间和连接速度等。2)创建真实的负载Virtualusers建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。75[键入文字]用LoadRunner的Controller,您能很快组织起多用户的测试方案。Controller的Rendezvous功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用Controller来限定您的负载方案,在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序----来模拟峰值负载的情况。另外,您还能监测系统架构中各个组件的性能----包括服务器,数据库,网络设备等----来帮助客户决定系统的配置。LoadRunner通过它的AutoLoad技术,为您提供更多的测试灵活性。使用AutoLoad,您可以根据目前的用户人数事先设定测试目标,优化测试流程。例如,您的目标可以是确定您的应用系统承受的每秒点击数或每秒的交易量。3)定位性能问题LoadRunner内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间)和其它系统组件包括applicationserver,webserver,网路设备和数据库等的实时性能。这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。再者,利用LoadRunner的ContentCheckTM,您可以判断负载下的应用程序功能正常与否。ContentCheck在Virtualusers运行时,检测应用程序的网络数据包内容,从中确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状况。4)分析结果以精确定位问题所在一旦测试完毕后,LoadRunner收集汇总所有的测试数据,并为您提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner的Web交易细节监测器,您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速76[键入文字]度减慢。另外,Web交易细节监测器分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断DNS解析时间,连接服务器或SSL认证所花费的时间。通过使用LoadRunner的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。5)重复测试保证系统发布的高性能负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。6)EnterpriseJavaBeans的测试LoadRunner完全支持EJB的负载测试。这些基于Java的组件运行在应用服务器上,提供广泛的应用服务。通过测试这些组件,您可以在应用程序开发的早期就确认并解决可能产生的问题。利用LoadRunner,您可以很方便地了解系统的性能。它的Controller允许您重复执行与出错修改前相同的测试方案。它的基于HTML的报告为您提供一个比较性能结果所需的基准,以此衡量在一段时间内,有多大程度的改进并确保应用成功。由于这些报告是基于HTML的文本,您可以将其公布于您公司的内部网上,便于随时查阅。7)最大化投资回报所有MercuryInteractive的产品和服务都是集成设计的,能完全相容地一起运作。由于它们具有相同的核心技术,来自于LoadRunner和ActiveTestTM的测试脚本,在MercuryInteractive的负载测试服务项目中,可以被重复用于性能监测。借助MercuryInteractive的监测功能--TopazTM和ActiveWatchTM,测试脚本可重复使用从而平衡投资收益。更重要的是,您能为测试的前期布署和生产系统的监测提供一个完整的应用性能管理解决方案。8)支持无线应用协议随着无线设备数量和种类的增多,您的测试计划需要同时满足传统的基于浏览器的用户和无线互联网设备,如手机和PDA。LoadRunner支持2项最广泛使用的协议:77[键入文字]WAP和I-mode。此外,通过负载测试系统整体架构,LoadRunner能让您只需要通过记录一次脚本,就可完全检测上述这些无线互联网系统。9)支持MediaStream应用LoadRunner还能支持MediaStream应用。为了保证终端用户得到良好的操作体验和高质量MediaStream,您需要检测您的MediaStream应用程序。使用LoadRunner,您可以记录和重放任何流行的多媒体数据流格式来诊断系统的性能问题,查找原由,分析数据的质量。10)完整的企业应用环境的支持LoadRunner支持广泛的协议,可以测试各种IT基础架构。WAS1.简介:MicrosoftWebApplicationStressTool是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。2特征:1)可以数种不同的方式建立测试指令:包含以手动、录制浏览器操作步骤、或直接录入IIS的记录文件、录入网站的内容及录入其它测试程序的指令等方式。2)支持多种客户端接口:标准的网站应用程序C++的客户端,使用ActiveServerPage客户端,或是使用WebApplicationStress对象模型建立您自定的接口。3)支持多用户:利用多种不同的认证方式仿真实际的情况,包含了DPA,NTLM及SSL等。JTEST1、简介:78[键入文字]jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(DesignbyContract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。2、优势:1)使预防代码错误成为可能,从而大大节约成本,提高软件质量和开发效率2)使单元测试——包括白盒、黑盒以及回归测试成为可能3)使代码规范检查和自动纠正成为可能4)鼓励开发团队横向协作来预防代码错误3、特征:1)通过简单的点击,自动实现代码基本错误的预防,这包括单元测试和代码规范的检查2)生成并执行junit单元测试用例,对代码进行即时检查3)提供了进行黑盒测试、模型测试和系统测试的快速途径4)确认并阻止代码中不可捕获的异常、函数错误、内存泄漏、性能问题、安全弱点的问题5)监视测试的覆盖范围6)自动执行回归测试7)支持DbC编码规范8)检验超过350个来自java专家的开发规范9)自动纠正违反超过160个编码规范的错误10)允许用户通过图形方式或自动创建方式来自定义编码规范11)支持大型团队开发中测试设置和测试文件的共享12)实现和IBMWebsphereStudio/EclipseIDE的安全集成4、价格:昂贵JMETER79[键入文字]1、简介:JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。使用JMeter进行性能测试2、特征:JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。3、价格:未知JUNIT1、简介:JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。在JUnit单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。2、优势:2.1)junit是完全Free的。2.2)使用方便。在你提升程序代码的品质时JUnit测试仍允许你更快速的撰写程序2.3)JUnit非常简单撰写测试应该很简单--这是重点!如果撰写测试太复杂或太耗时间,便无法要求程序设计师撰写测试。使用JUnit你可以快速的撰写测试并检测你的程序代码并逐步随着程序代码的成长增加测试。只要你写了一些测试,你想要快速并频繁的执行测试而不至于中断建立设计及开发程序。使用JUnit执行测试就像编译你的程序代码那么容易。事实上,你应该执行编译时也执行测试。编译是检测程序代码的语法而测试是检查程序代码的完整性(integrity)。如果你是以人工比对测试的期望与实际结果那么测试是很不好玩的,而且让你的速度慢下来。JUnit测试可以自动执行并且检查他们自己的结果。当你执行测试,你获得简单且立即的回馈;比80[键入文字]如测试是通过或失败。而不再需要人工检查测试结果的报告。JUnit可以把测试组织成测试系列;这个测试系列可以包含其它的测试或测试系列。JUnit测试的合成行为允许你组合多个测试并自动的回归(regression)从头到尾测试整个测试系列。你也可以执行测试系列层级架构中任何一层的测试。使用Junit测试框架,你可以很便宜的撰写测试并享受由测试框架所提供的信心。撰写一个测试就像写一个方法一样简单;测试是检验要测试的程序代码并定义期望的结果。这个测试框架提供自动执行测试的背景;这个背景并成为其它测试集合的一部份。在测试少量的投资将持续让你从时间及品质中获得回收。你写的测试愈少;你的程序代码变的愈不稳定。测试使得软件稳定并逐步累积信心;因为任何变动不会造成涟漪效应而漫及整个软件。测试可以形成软件的完整结构的胶结。2.8)JUnit测试是开发者测试。JUnit测试是高度区域性(localized)测试;用以改善开发者的生产力及程序代码品质。不像功能测试(functiontest)视系统为一个黑箱以确认软件整体的工作性为主,单元测试是由内而外测试系统基础的建构区块。开发者撰写并拥有JUnit测试。每当一个开发反复(iteration)完成,这个测试便包裹成为交付软件的一部份提供一种沟通的方式,「这是我交付的软件并且是通过测试的。使用Java测试Java软件形成一个介于测试及程序代码间的无缝(seamless)边界。在测试的控制下测试变成整个软件的扩充同时程序代码可以被重整。Java编译器的单元测试静态语法检查可已帮助测试程序并且确认遵守软件接口的约定。一段测试的程序代码无法单独的执行,它需要是执行环境的一部份。同时,它需要自动执行的单元测试--譬如在系统中周期性的执行所有的测试以证明没有任何东西被破坏。由于单元测试需要符合特定的准则:一个成功的测试不应该是人工检查的(那可要到天荒地老了啊),一个未通过测试的失败应可以产出文件以供诊断修改。而Junit可以提供给我们这些便利.。这样所有测试开发者所需撰写的只是测试码本身了。跟optimizeit、Jtest那些昂贵而又超级麻烦的tool比较起来,其利昭然可见!2.9)JUnit测试是以Java写成的。2.7)JUnit测试提升软件的稳定性。2.6)撰写JUnit测试所费不多。2.5)JUnit测试可以合成一个测试系列的层级架构。2.4)JUnit测试检验其结果并提供立即的回馈。那听起来似乎不是很直觉,但那是事实。当你使用JUnit撰写测试,你将花更少的时间除虫,同时对你程序代码的改变更俱有信心。这个信心让你更积极重整程序代码并增加新的功能。没有测试,对于重整及增加新功能你会变得没有信心;因为你不知道有甚么东西会破坏产出的结果。采用一个综合的测试系列,你可以在改变程序代码之后快速的执行多个测试并对于你的变动并未破坏任何东西感到有信心。在执行测试时如果发现臭虫,原始码仍然清楚的在你脑中,因此很容易找到臭虫。在JUnit中撰写的测试帮助你以一种极大81[键入文字](extreme)的步伐撰写程序及快速的找出缺点。3、价格:免费WEBLODE1、简介:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。2、特征:1)用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能2)如有需要可以在做负载测试的同时,使用服务器监控工具对服务器端的内容进行记录那样使负载测试更加全面。第一阶段英语单词总结 一、Abbreviation缩写0、RTMrequirementtracematrix需求跟踪距阵1、SRSsoftwarerequirementspecification软件需求规格说明书2、HLDhighleveldesign概要设计3、LLDlowleveldesign详细设计4、IPOinputprocessoutput输入输出过程5、SQAsoftwarequalityassurance软件质量保证6、CMOconfigurationmanagementoperator配置管理员7、RUPrationalunifiedprocess通用业务流程8、IPDintegratedproductdevelopment集成产品开发过程82[键入文字]9、PDCAplan,do,check,act质量管理PDCA循环10、SMART原则specification具体的,related相关性,measurable可度量的,time-based时限性,achievable可达到性11、DMAC原则define定义,measure度量,analysis分析,check检查12、SEPGsoftwareengineerprocessgroup13、SEIsoftwareengineerinstitute14、CCBchangecontrolboard15、MTBFmeantimebetweenfailure16、MTTRmeantimetorepair17、SDPsoftwaredevelopmentplan二、常用术语1、Debug调试2、Testcase测试用例3、Siralmodel螺旋模型4、Softwarelifecycle软件生命周期5、Initial初始级6、Repeatable可重复级7、Defined已定义级8、Managed已管理级9、Optimizing优化级10、Suitability适合性11、Accuracy准确性12、Interoperability互操作性13、Security安全性14、Functionalitycompliance功能性依从性15、Maturity成熟性16、Faulttolerance容错性17、Recoverability易恢复性18、Reliabilitycompliance可靠性的依从性19、Understandability易理解性20、Learnability易学性21、Operability易操作性22、Attractiveness吸引性软件工程过程组美国软件工程研究所变更控制委员会平均失效时间平均故障恢复时间软件开发计划83[键入文字]23、Timebehavior时间特性24、Resourceutilization资源利用性25、Efficiencycompliance效率依从性26、Analyzability易分析性27、Changeability易改变性28、Stability稳定性29、Testability易测试性30、Maintainabilitycompliance维护行依从性31、Adaptability适应性32、installability安装性33、co-existence共存行34、replaceability易替换性35、portabilitycompliance可移植性的依从性36、unittesting单元测试37、integrationtesting集成测试38、systemtesting系统测试39、regressiontesting回归测试40、verification验证41、validation确认42、alphatestingα测试43、betatestingβ测试44、top-downtesting自顶向下测试45、bottom-uptesting自底向上测试46、isolationtesting孤立测试47、automatestesting自动测试48、artificiallytesting人工测试49、whiteboxtesting白盒测试50、blackboxtesting黑盒测试51、entrycriteria入口准则52、exitcriteria出口准则53、reviewsandaudits评审和审计54、workproductsmanagedandcontrolled可管理和受控的工作产品55、documentedprocedures书面规程56、stub桩单元57、performancetesting性能测试84[键入文字]58、stresstesting压力测试59、volumetesting容量测试60、securitytesting安全性测试61、usabilitytesting可用性测试62、backuptesting备份测试63、robustnesstesting健壮性测试64、documentationtesting文档测试65、onlinehelptesting在线帮助测试66、statementcoverage语句覆盖67、branchcoverage分支覆盖68、decisioncoverage判断覆盖69、conditioncoverage条件覆盖70、branchconditoncoverage分支条件覆盖71、decisionconditioncoverage判断条件覆盖72、pathcoverage路径覆盖73、functioncoverage功能覆盖74、inheritancecontextcoverage继承上下文覆盖75、state-basedcontextcoverage基于状态的上下文覆盖76、User-definedcontextcoverage已定义用户上下文覆盖77、InstructionblockscoverageIBcoverage指令块覆盖78、Decision-to-decisionpathscoverageDDPcoverage判定路径覆盖79、Peerreview同行评审80、Walkthrough走读81、Defect缺陷82、Error错误83、Syntaxerror语法错误84、Logicalerror逻辑错误85、Fault故障86、Failure失效补充中……85[键入文字]复习问题总结 一、测试基础:1、测试目的是什么证明:证明软件的可用性检测:发现软件中存在的错误预防:管理软件的质量,可维护性能2、软件生命周期中的各个模型及其优缺点瀑布模型:应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。•优点:–强调开发的阶段性–强调早期计划及需求调查–强调产品测试•缺点:–依赖于早期进行的需求调查,不能适应需求变化–由于是单一流程,开发中的经验教训不能应用于本产品过程–测试在后期才参与,前期质量无法保证86[键入文字]螺旋模型:综合了基本的瀑布式模型和演化/渐增原型方法。•优点:–强调全过程风险管理–强调各开发阶段的质量–提供机会检讨项目是否有价值继续下去•缺点:–每个阶段都要提出多个备选方案,并进行充分的风险分析,研发周期长,效率低。–需要有专门的风险分析人员参与RUP流程:所有工作流在各个阶段都有体现。•优点:–任何功能一经开发就能进入测试以便验证是否符合产品需求–在早期对风险进行识别,采取预防措施–尽早得到用户的验证•缺点:–如果需求一开始并不完全弄清楚,会给总体设计带来困难及削弱产品设计的完整性。–如果缺乏严格的过程管理,就可能退化为原始的无计划的“试—错—改”模试。–不加控制地让用户接触开发并尚未测试稳定的功能,可能对开发和用户都会产生负面的影响IPD流程:从整个产品角度出发,不仅仅针对研发。–流程是由IBM提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目。从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等,制造、财务到市场、采购、技术支援等所有流程。是一个阶段性模型,具有瀑布模型的影子。–通过复杂的流程把一个庞大而又复杂的系统进行分解并降低风险。通过流程成本来提高整个产品的质量并获得市场的占有。此模式不适合经常变动的需求,若用此模式开发小型项目,成本消耗非常大。3、软件研发中几个重要的过程是什么,每个过程中的主要内容是什么?87[键入文字]需求管理:对软件开发中的需求进行管理,包括需求分配、需求评审、建立需求基线、需求跟踪、变更控制。配置管理:配置管理是通过对在软件生命周期的不同的时间点上的软件配置进行标识,并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程。缺陷跟踪:对软件开发过程缺陷的发现、确认、定位、修改、评审、关闭等过程进行跟踪管理的流程。同行评审:对于软件工作产品(包括文档、代码、用户手册等),组织工作产品作者的同行来确认是否存在缺陷、是否需要变更的检查方法。4、引入缺陷的原因都有哪些?缺陷引入的原因:⑴开发过程缺乏有效的沟通,或者没有进行沟通⑵软件复杂度越来越高⑶编程中产生错误⑷需求不断变更⑸项目进度的压力⑹不重视开发文档⑺软件开发工具本身隐藏的问题二、软件质量:1、软件质量分哪几个层次,分别是什么?1.符合需求的规格:符合开发者明确定义的目标,即产品是不是符合需求规格。2.符合用户显示需求:符合用户所明确说明的目标。3.符合用户实际需求:符合用户明确说明的和隐含的目标。2、影响软件质量的因素有哪些?为什么?影响软件质量因素主要有:流程:针对不同的需求选用不同的软件流程模型图。技术:包括开发技术、测试技术以及美工工艺的技术。组织:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础。流程:从计划到策略的实现,流程就是按照这种思维方式指导软件开发的,并且流程来源于成功的经验,可以指导项目少走弯路,从而提高软件质量,不仅如此,流程还对项目的成本和进度控制有很大的帮助技术:包括了分析技术、设计技术、编码技术、测试技术,需求是项目的灵魂,良好的需求分析便是项目成功的关键所在,若是需求分析做不好不88[键入文字]可避免的要出现返工;设计,软件的质量是设计出来的,良好的设计基本上决定了软件产品的最终质量;编码技术产生正确高效的代码;测试是保证软件的一道防线。所以各种技术对质量来说都是很重要的组织:好的组织可以有效的促进流程的实施,同时提供员工的发展通道以吸引更多的人(技术的载体)总结:质量铁三角互相促进,缺一不可3、CMM是什么?CMM各级的特点CMM(capabilltyMaturityMoelel)由于美国软件工程研究所(SEI)受美国国防部委托立项。开发人:WattsHumphrey.1991年推出CMM1.0版,1993年提出CMM1.1版现在开发CMMI(CMMIntegration)软件能力成熟度模型CMM(提唱过程决定质量)持续改进过程5优化级关注过程改进4已管理级Managed可预测的过程更量化管理,过程能力可预防性管理变标准.一致的过程3已定义级Definded过程被描述,并得到良好理解产品过程质量纪律的过程2可重复级Repeatable可重复以前的主要经验集成工程过程1初始级initial不可预测并且缺控制89[键入文字]项目管理CMM1级特点:(个人英雄主义)A项目的成功依赖于一个非常优秀的项目经理的团队。B无法重复以往成功的实践。C缺乏基本配置管理可视度:整个过程不可预测,不可见,不可控。(过程管理非常混乱)CMM2级特点:(有纪律)能够重复以前成功的经验和实践。引入合理需求变更(需求管理)测试与开发分离,整个过程能力可概为有纪律的。可视度原始需求——需求分析——设计——编码——测试——产品CMM3级特点:(有过程,经过同行评审)组织中有一个专门负责组织的标准软件过程。(SEPG)可视度同CMM2但整个过程是标准和一致的。CMM4级特点特点:(量化管理)过程能力是可预防的,因为过程是已测量的并在可测的范围内运行。组织能定量地预测过程和产品质量方面趋势。软件产品具有可预测的高质量。可视度同CMM3但整个过程是可预测的。CMM5级特点特点:(改进过程本身)通过缺陷来发现过程的不足。新的开发技术触使改进过程。可视度90[键入文字]同CMM¥级整个是以改进的。CMM的用途:1评估供用商的能力;2企业的过程改进指南;3评估组用来识别组织中的强处和弱点;4管理者用来了解其组织的能力,并了解为了提高其能力成熟度而进行软件过程改进所需要进行的活动;5评价组用来识别选择不同的业务承包商的风险和监督合同。4、软件质量模型是什么?软件质量模型可分为6大模块27子模块功能性1.适合性2.准确性3.互操作性4.保密安全性5.功能性的依从性可靠性1.成熟性2.容错性3.易恢复性4.可靠性的依从性易用性1.易理解性2.易学性3.易操作性4.吸引性5.易用性的依从性效率1.时间性2.资源利用性3.效率依从性维护性1.易分析性91[键入文字]2.易改变性3.稳定性4.易测试性5.维护性的依从性可移植性1.适应性2.易安装性3.共存性4.易替换性5.可移植性的依从性5、SQA和测试的关系是什么?SQA从过程上保证软件质量测试从技术上保证软件质量。6、SQA的主要工作范围是什么?1.保障制度体系顺利执行。2.促进过程改进。3.指导项目实施。4.增强项目的可视度(进度、质量、过程)。5.评审工作产品。6.审核工作产品。(核心工作)。7.协助问题解决。8.提供决策支持。9.缺陷预防(提高产品质量,降低缺陷发现修复成本)。10.实现质量目标7、质量管理的PDCA循环是什么?1.Plan计划(计划设计)2.Do执行(实施执行)3.Check检查(检查检测)4.Act改进(纠正措施)8、软件度量的手段是什么?1.规模(size)2.工作量(effort)3.进度(schedule)4.质量-缺陷(quality-defect)三、测试方法:92[键入文字]1、黑盒测试和白盒测试的区别?黑盒:被测对象当作一个黑盒子,参考与SRS,站在用户立场上进行测试,方便与功能测试、验收测试、易用性测试等。白盒:玻璃盒,基与代码测试,参考与LLD,HLD在了解程序的内部数据结构和逻辑结构的基础上展开的更适合于单元测试、集成测试等。2、常用的黑盒测试技术有哪些?输入输出:等甲类边界之输入域覆盖输出域覆盖条件组合:因果图正交试验判定法过程处理:流程分析状态迁移其他:错误猜测异常分析3、常用的白盒测试技术有哪些?静态分析:信息流分析、数据流分析、控制流分析。动态分析:逻辑覆盖、程序插装。4、静态测试和动态测试的区别静态和动态测试的区别是:是否运行被测软件。5、静态测试的方法有哪些?上题6、动态测试的方法有哪些?上题7、手工测试和自动化测试的区别?手工测试:测试活动以及执行由人工来完成。自动化测试:通过工具模拟人的测试执行,由计算机自动执行。8、手工测试和自动化测试的优缺点是什么?手工测试:自动化测试:四:测试过程:1、系统测试、集成测试和单元测试的区别?用三种不同角度比较如下表:阶段系统测试集成测试考察范围整个系统相对与需求的符合度黑盒测试方法评估基准测试用例对需求规格的覆盖率接口覆盖率模块间的接口和接灰盒口的数据传递关系,以及模块组合后的整体功能测试单元内部数据结构、逻辑控制、异白盒单元测试逻辑覆盖率93[键入文字]常处理等2、为什么测试要分阶段进行虽然在表面看来分阶段测试在成本和进度比不分阶段测试大,但实际测试分阶段进行原因是各个阶段都有它不同的关注点,这样可以尽早发现缺陷,不会导致因为局部缺陷导致全局瘫痪。如果不分阶段,那么缺陷的放大效应导致修复成本将变的异常庞大,修复进度将不可预测。除此之外分阶段测试因为分工明确也会很大程度上提高产品的质量。3、回归测试的策略如何选择?回归测试的策略主要有:完全重复测试和选择性重复测试。完全重复测试:重新执行所有在前期测试阶段建立的测试用例选择重复测试:即有选择地重新执行部分在前期测试阶段建立的测试用例,主要测被修改的程序。选择重复测试可分为:覆盖修改法、周遍影响法、指标达成法。根据产品进度、缺陷的严重性以及缺陷发现的阶段性进行选择。4、回归测试的自动化什么情况下使用?a)重复率高。b)相对稳定的版本。c)手工无法达到的场景模拟。5、V&V模型的特点是什么?与瀑布模型和H模型相比有什么优势a)实现了测试设计与执行的分离。b)测试与开发同步进行,各阶段相对应。c)揭示了测试过程分阶段分层的本质瀑布模型没有实现测试的分阶段和分层,而H模型虽然是开发测试同步进行却没有标明测试与开发各个阶段的对应关系6、主要的测试文档有哪些,分别都是什么内容,作用和读者都是什么?作者测试计划测试经理测试计划人员内容测试策略测试方法测试项时间、进度安排读者项目经理开发人员测试人员作用了解测试安排,掌控项目进度评审评审、设计测试方案及用例的依据、执行时参考度量SQA94[键入文字]测试方案测试经理测试工程师测试设计人员测试子项具体测试方法测试经理开发人员测试人员评审评审评审、设计用例的依据、执行时参考度量评审评审测试执行的依据度量提高测试执行的效率了解测试结果掌握软件的质量水平确认缺陷、修改的依据判断是否重复分配缺陷SQA测试用例测试工程师测试实现人员编号、标题、输测试经理入、处理过程、开发人员预期输出等测试人员SQA测试规程测试报告测试工程师测试实现人员测试工程师测试执行人员测试工程师测试执行人员测试用例的执行先后顺序测试执行情况记录测试执行人员测试经理项目经理开发人员测试经理项目经理缺陷报告7、系统测试过程各阶段的输入、输出是什么?系统测试计划阶段输入:软件需求规格说明书、软件测试计划、软件开发计划输出:系统测试计划系统测试设计阶段输入:软件需求规格说明书、系统测试计划输出:系统测试方案系统测试实现阶段输入:软件需求规格说明书、系统测试计划、系统测试方案输出:系统测试用例、系统测试规程系统测试执行阶段输入:系统测试计划、系统测试方案、系统测试用例、系统测试规程输出:系统测试报告、缺陷报告单8、集成测试过程各阶段的输入、输出是什么?集成测试计划阶段输入:概要设计说明书、软件测试计划输出:集成测试计划95[键入文字]集成测试设计阶段输入:概要设计说明书、集成测试计划输出:集成测试方案集成测试实现阶段输入:概要设计说明书、集成测试计划、集成测试方案输出:集成测试用例、集成测试规程集成测试执行阶段输入:集成测试计划、集成测试方案、集成测试用例、集成测试规程输出:集成测试报告、缺陷报告单9、单元测试过程各阶段的输入、输出是什么?单元测试计划阶段输入:详细设计说明书、软件测试计划输出:单元测试计划单元测试设计阶段输入:详细设计说明书、单元测试计划输出:单元测试方案单元测试实现阶段输入:详细设计说明书、单元测试计划、单元测试方案输出:单元测试用例、单元测试规程单元测试执行阶段输入:单元测试计划、单元测试方案、单元测试用例、单元测试规程输出:单元测试报告、缺陷报告单10、需求分析阶段主要的任务是什么?把用户的需求,包括显式需求和隐式需求转换为规格化的描述确切的说明文档,形成SRS11、概要设计阶段主要的任务是什么?把SRS中的需求转化为模块化的体系结构,每个模块具有明确的功能12、详细设计阶段主要的任务是什么?对每个模块要完成的功能的实现给出具体的描述13、编码阶段主要的任务是什么?将设计转换成程序代码14、单元测试执行阶段阶段主要的任务是什么?检验被测单元与LLD的符合程度15、集成测试执行阶段主要的任务是什么?检验被测单元与HLD的符合程度16、系统测试执行阶段主要的任务是什么?检验被测单元与SRS的符合程度五、系统测试:1、系统测试的目的是什么?2、系统测试的类型有哪些?1)功能测试96[键入文字]2)性能测试3)压力测试4)容量测试5)安全性测试6)可用性测试7)GUI测试8)安装测试9)配置测试10)异常测试11)备份测试12)健壮性测试13)稳定性测试14)文档测试15)在线帮助测试16)网络测试3、系统测试的用例设计思路是什么?4、如何保证系统测试用例的完备性?a)附盖SRS中功能来设计用例b)从质量模型的不同特性来设计用例c)每个测试项目从不同的角度来设计测试数据六、通用测试用例1、测试用例模板的要素分别是什么?a)用例编号b)测试项目c)测试标题d)重要级别e)预置条件f)输入参数g)操作步骤h)预期输出七、同行评审1、什么叫同行评审?通过作者的同行来确认产品的缺陷以及变更区域的检查方法97[键入文字]2、同行评审的目的?发现和排除产品中的缺陷和不足3、同行评审的流程?入口准则计划阶段出口准则跟踪阶段介绍会议?NY介绍会议N返工阶段准备阶段评审会议第三小时会议?Y第三小时会议八、配置管理1、什么叫配置管理?对软件生命周期的各个阶段的成果物进行版本控制2、配置管理的相关术语是什么?a)配置98[键入文字]b)配置项c)基线d)版本3、配置管理的目标?a)保证各个阶段成果物的完整性b)保证成果物的可溯性c)保证成果物的一致性d)使成果物处于受控状态4、配置管理的流程?九、需求管理1、什么叫需求管理?在项目的研发过程中对需求的跟踪和控制等方面的流程2、进行需求管理的作用是什么?3、如何控制需求的变更?4、如何进行需求跟踪?八、缺陷管理1、什么叫缺陷管理?2、缺陷管理的作用?3、缺陷管理的流程?4、如何可以保证缺陷报告的编写质量?99 因篇幅问题不能全部显示,请点此查看更多更全内容