版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件单元与集成测试软件单元与集成测试嵌入式软件测试第五部分软件单元与集成测试 单元测试 集成测试 单元与集成测试环境单元测试重要性 基于软件问题报告的分析结果v在嵌入式软件开发中,没有特定的缺在嵌入式软件开发中,没有特定的缺陷类型占据主导地位陷类型占据主导地位v需求问题及需求相关问题是主要缺陷需求问题及需求相关问题是主要缺陷原因原因(36%)v归结于缺乏系统化单元测试的问题是归结于缺乏系统化单元测试的问题是第二大原因第二大原因 (22%)单元测试对象 软件的独立单元软件的独立单元 例子例子v结构化程序设计语言中的函数或子程结构化程序设计语言中的函数或子程序序v面向对象语言中的类面向对象语言中的
2、类v4GL的菜单或画面的菜单或画面单元测试特点 实现实现串行或并行测试串行或并行测试 方法白盒为主方法白盒为主单元测试测试准备 要求的文档可提交要求的文档可提交v软件设计软件设计规格说明、软件接口设计规格说明、软件接口设计规规格说明格说明 源程序符合规范要求并已无错误地通源程序符合规范要求并已无错误地通过编译或汇编过编译或汇编 被测软件单元已纳入配置管理中被测软件单元已纳入配置管理中 具备了规定的单元测试环境和测试工具备了规定的单元测试环境和测试工具具单元测试通过准则1)命名符合规则2)控制流程正确3)变量使用无差错4)达到质量度量指标5)功能与设计说明一致6)性能达到软件设计指标7)覆盖测试
3、达到规定的覆盖率8)对发现的问题已进行修改并通过回归测试单元测试测试策略 测试内容测试内容v静态测试静态测试v动态测试动态测试 原则原则v静态和动态测试互补,不能相互替代静态和动态测试互补,不能相互替代v建议静态测试在动态测试前完成,实建议静态测试在动态测试前完成,实践中,部分动态测试可与静态测试并践中,部分动态测试可与静态测试并行行单元测试静态测试全面的静态分析全面的静态分析选择性代码检查选择性代码检查补充代码走查补充代码走查单元测试静态测试度量收集并分析收集并分析v每小时审查的代码行数每小时审查的代码行数(LOC)v每千行代码每千行代码(KLOC)生成的变更请求生成的变更请求数数(CR)v
4、每小时生成的变更请求数每小时生成的变更请求数(CR)v代码审查过程花费的总时间代码审查过程花费的总时间单元测试动态测试黑盒测试黑盒测试白盒测试白盒测试基于数据结构的测试基于数据结构的测试单元测试动态测试被被测单元测单元单元接口单元接口局部数据结构局部数据结构边界条件边界条件独立执行路径独立执行路径错误处理的路径错误处理的路径测试用例测试用例单元测试接口测试调用被测单元时的实际参数与该单元的调用被测单元时的实际参数与该单元的形式参数的一致性形式参数的一致性v个数、属性、量纲、顺序个数、属性、量纲、顺序被测单元调用子模块时,传递的实际参被测单元调用子模块时,传递的实际参数与子模块的形式参数的一致性
5、数与子模块的形式参数的一致性v个数、属性、量纲、顺序个数、属性、量纲、顺序是否修改了只作为输入值的形式参数是否修改了只作为输入值的形式参数调用其他模块时,检查其可用性和处理调用其他模块时,检查其可用性和处理结果结果单元测试接口测试被测单元调用内部函数时被测单元调用内部函数时,使用参数的使用参数的正确性正确性v个数、属性、量纲、顺序个数、属性、量纲、顺序被测单元使用全局变量被测单元使用全局变量/数据的合理性数据的合理性v是否与定义一致是否与定义一致在单元有多个入口的情况下,是否引用在单元有多个入口的情况下,是否引用了与当前入口无关的参数了与当前入口无关的参数常数是否当作变量来传递常数是否当作变量
6、来传递单元测试接口测试文件属性的正确性文件属性的正确性OPEN/CLOSE语句的正确性语句的正确性文件是否先打开后使用文件是否先打开后使用文件结束条件的判断和处理的正确性文件结束条件的判断和处理的正确性规定的规定的I/O格式说明与格式说明与I/O语句是否匹配语句是否匹配缓冲区容量与记录长度是否匹配缓冲区容量与记录长度是否匹配输入输入/输出错误是否检查并作了处理以输出错误是否检查并作了处理以及处理的正确性及处理的正确性单元测试接口测试输出时的文本错误输出时的文本错误v内容、格式、长度等内容、格式、长度等使用外部资源时,检查其可用性并及时使用外部资源时,检查其可用性并及时释放资源释放资源v内存、文
7、件、硬盘、端口等内存、文件、硬盘、端口等单元测试局部数据结构不正确或不一致的数据类型说明不正确或不一致的数据类型说明错误的变量名或函数名称错误的变量名或函数名称v变量名或函数名拼写错或缩写错误变量名或函数名拼写错或缩写错误v定义的变量从来没有被使用,就很可定义的变量从来没有被使用,就很可能使用了错误的变量名能使用了错误的变量名v使用了外部变量或函数使用了外部变量或函数变量没有变量没有初始化或未赋值就使用初始化或未赋值就使用初始值或缺省值错误初始值或缺省值错误单元测试局部数据结构错误的类型转换错误的类型转换不一致的数据类型不一致的数据类型数组越界数组越界非法指针非法指针下溢、上溢或是地址错误下溢
8、、上溢或是地址错误全局数据对软件单元的影响全局数据对软件单元的影响单元测试边界条件合法数据和非法数据的正确处理合法数据和非法数据的正确处理边界内点和边界外点的正确处理边界内点和边界外点的正确处理例如例如v测试处理测试处理n维数组的第维数组的第m个元素个元素v测试循环执行到最后一次循环体测试循环执行到最后一次循环体v测试取最大值或最小值测试取最大值或最小值v测试数据流、控制流中刚好等于、大测试数据流、控制流中刚好等于、大于或小于确定的比较值于或小于确定的比较值单元测试独立执行路径独立路径是指在程序中至少引进一个新独立路径是指在程序中至少引进一个新的处理语句集合或一个新条件的任一路的处理语句集合或
9、一个新条件的任一路径。在程序的控制流图中,一条独立路径。在程序的控制流图中,一条独立路径是至少包含有一条在其他路径中从未径是至少包含有一条在其他路径中从未有过的边的路径有过的边的路径通过对控制流圈复杂性的分析,可导出通过对控制流圈复杂性的分析,可导出基本的、可执行的独立路径集合基本的、可执行的独立路径集合单元测试独立执行路径不可达或冗余不可达或冗余代码代码错误的算法错误的算法混合型计算的优先级混合型计算的优先级错误错误精度错误精度错误v比较运算错误比较运算错误v赋值错误赋值错误表达式的不正确表达式的不正确符号表示符号表示v、=;=、=、!=循环错误循环错误单元测试错误处理路径错误自动检测机制错
10、误自动检测机制v资源使用前后资源使用前后v其他模块使用前后其他模块使用前后错误处理策略错误处理策略v抛出错误抛出错误v通知用户通知用户v进行记录进行记录错误处理的有效性错误处理的有效性v在系统干预前处理在系统干预前处理v报告和记录的错误真实报告和记录的错误真实详细详细单元测试动态测试步骤步骤步骤1冒烟测试冒烟测试步骤步骤2肯定测试肯定测试(Positive testing)步骤步骤3否定测试否定测试(Negative testing)步骤步骤4专用测试专用测试步骤步骤5覆盖测试覆盖测试(Coverage testing)步骤步骤6覆盖率评估覆盖率评估步骤步骤7覆盖率完善与实现覆盖率完善与实现单
11、元测试 冒烟测试目标目标v用最简单的方法执行被测单元用最简单的方法执行被测单元v考核最基本的能力考核最基本的能力方法方法v基于规格说明的测试基于规格说明的测试v等价类划分等价类划分单元测试 肯定测试目标目标v走查相关规格说明走查相关规格说明v每个测试用例测试一或多个设计陈述每个测试用例测试一或多个设计陈述v覆盖全部设计陈述覆盖全部设计陈述方法方法v基于规格说明的测试基于规格说明的测试v等价类划分等价类划分v因果图因果图v状态转换状态转换单元测试 否定测试目标目标v确认软件没有做规格说明未指定事情确认软件没有做规格说明未指定事情方法方法v边界值分析边界值分析v内部边界值测试内部边界值测试v错误猜
12、测错误猜测单元测试 专用测试目标目标v验证性能需求验证性能需求v验证安全性需求验证安全性需求v验证保密性需求验证保密性需求方法方法v基于规格说明的测试基于规格说明的测试单元测试 覆盖测试目标目标v验证程序控制流的正确性验证程序控制流的正确性v验证程序数据流的正确性验证程序数据流的正确性方法方法v语句覆盖语句覆盖v分支覆盖分支覆盖v条件覆盖条件覆盖v数据流覆盖数据流覆盖单元测试 覆盖率评估目标目标v测量覆盖率测量覆盖率v确定覆盖率目标是否实现确定覆盖率目标是否实现方法方法v覆盖率度量覆盖率度量v覆盖率分析覆盖率分析单元测试 覆盖率完善目标目标v找出无法执行测试的路径或条件找出无法执行测试的路径或
13、条件v发现不可达或冗余代码发现不可达或冗余代码v补充测试并达到覆盖率目标补充测试并达到覆盖率目标方法方法v覆盖率分析覆盖率分析v控制流覆盖控制流覆盖v数据流覆盖数据流覆盖单元测试实例1一一个个实数平方根的计算函数实数平方根的计算函数设计规格说明设计规格说明v输入输入实数实数v输出输出实数实数v当当输入输入0或大于或大于0的值时,返回输入值的值时,返回输入值的正数平方根的正数平方根v当输入小于当输入小于0的值时,显示错误信息的值时,显示错误信息Square root error - negative input并返回并返回0v使用库函数使用库函数Print_Line显示错误信息显示错误信息实例1
14、分析3个陈述个陈述2个约束个约束2个用例可实现覆盖个用例可实现覆盖实例1基于规格说明设计设计结果设计结果v用例用例1输入输入4; 返回返回2执行了第执行了第1个陈述个陈述v用例用例2输入输入-10, 返回返回0, 用用Print_Line输出输出 Square root error - illegal negative input执行了第执行了第2和和3个陈述个陈述实例1等价类划分设计分析分析v2个输入等价类个输入等价类v2个输出等价类个输出等价类v2个用例可实现覆盖个用例可实现覆盖输入划分输入划分 输出划分输出划分I 0 a 0 II 0 b Error 实例1等价类划分设计设计结果设计结果
15、v用例用例1输入输入4; 返回返回2执行了输入等价类执行了输入等价类I和输出等价类和输出等价类av用例用例2输入输入-10, 返回返回0, , 用用Print_Line输出输出 Square root error - illegal negative input执行了输入等价类执行了输入等价类II和输出等价类和输出等价类b实例1边界值分析设计分析分析v输入域有输入域有3个边界线个边界线v输出域的边界线受输入域影响输出域的边界线受输入域影响v5个用例可实现覆盖个用例可实现覆盖输入域边界线输入域边界线 (i) (ii)- 0 +|-|-|1 234 5 实例1边界值分析设计用例用例1v输入最大的负
16、数输入最大的负数, 返回返回0, 用用Print_Line输出输出 Square root error - illegal negative input“v执行了等价类执行了等价类I的下边界的下边界用例用例2v输 入 仅 比输 入 仅 比 0 小 的 数小 的 数 , 返 回返 回 0 , 用用Print_Line输出输出 Square root error - illegal negative input“v执行了等价类执行了等价类I的上边界的上边界实例1边界值分析设计用例用例3v输入输入0, 返回返回0v执行了等价类执行了等价类I的上边界外点的上边界外点,等价类等价类II的下边界的下边界,
17、等价类等价类a的下边界的下边界用例用例4v输入仅比输入仅比0大的数大的数, 返回输入值的正数返回输入值的正数平方根平方根v执行了等价类执行了等价类II下边界下边界内点内点实例1边界值分析设计用例用例5v输入最大的正数输入最大的正数, 返回输入值的正数返回输入值的正数平方根平方根v执行了等价类执行了等价类II上边界内点上边界内点,等价类等价类a的上边界的上边界实例1分支覆盖设计分析分析v根据规格说明根据规格说明, 通常会有通常会有2个分支个分支v2个用例可实现覆盖个用例可实现覆盖实例1分支覆盖设计设计结果设计结果v用例用例1输入输入4; 返回返回2执行了有效输入处理分支执行了有效输入处理分支v用
18、例用例2输入输入-10, 返回返回0, 用用Print_Line输出输出 Square root error - illegal negative input执行了无效输入处理分支执行了无效输入处理分支实例1实现方式1IF input0 THENCALL Print_Line Square root error - negative input“RETURN 0ELSEUse maths co-processor to calculate the answerRETURN the answerEND_IF实例1实现方式2IF input0 THENCALL Print_Line Square
19、root error - negative input“RETURN 0ELSEIF input=0 THENRETURN 0ELSEUse maths co-processor to calculate the answerRETURN the answerEND_IFEND_IF实例1实现方式3Use maths co-processor to calculate the answerExamine co-processor status registersIF status=error THENCALL Print_Line Square root error - negative in
20、put“RETURN 0ELSERETURN the answerEND_IF实例1实现方式4IF input0 THENCALL Print_Line Square root error - negative input“RETURN 0ELSE_IF input=0 THENRETURN 0ELSECalculate first approximationLOOPCalculate errorEXIT_LOOP WHEN errordesired accuracyAdjust approximationEND_LOOPRETURN the answerEND_IF实例1条件覆盖设计分析分析
21、v假定用实现方式假定用实现方式4的解决方案的解决方案v假定最多迭代假定最多迭代10次次v调整实现方案调整实现方案:EXIT_LOOP WHEN(errordesired accuracy v用例用例22 次 迭 代次 迭 代 , 第第 1 次 迭 代次 迭 代 : error=desired accuracy, 第第2次迭次迭代代: errordesired accuracy实例1条件覆盖设计设计结果设计结果(2/2)v其他用例其他用例2个条件都为个条件都为true 或或 false实例1数据流覆盖设计项目项目定义定义使用使用1Input to routine By the maths co-
22、processor 2Co-processor status Test for status=error 3Error message By Print_Line 4RETURN 0 By the calling unit 5Answer by co-processor RETURN the answer 6RETURN the answer By the calling unit 实例1数据流覆盖设计设计结果设计结果v用例用例1输入输入4; 返回返回2执行了定义执行了定义-使用对使用对1, 2, 5, 6 v用例用例2输入输入-10, 返回返回0, 用用Print_Line输出输出 Squa
23、re root error - illegal negative input执行了定义执行了定义-使用对使用对1, 2, 3, 4 实例1内部边界值分析分析分析v假定用实现方式假定用实现方式4的解决方案的解决方案: Calculate first approximation LOOP Calculate error EXIT_LOOP WHEN errordesired accuracy Adjust approximationEND_LOOP RETURN the answer :实例1内部边界值分析设计结果设计结果v用例用例1误差仅大于误差仅大于desired accuracyv用例用例2
24、误差等于误差等于desired accuracyv用例用例3误差仅小于误差仅小于desired accuracy单元测试困惑单元测试工作量大,发现问题少单元测试工作量大,发现问题少单元测试原则在可能且合理的情况下,充分测试边界在可能且合理的情况下,充分测试边界条件条件包括包括v大量负载情况大量负载情况单元测试原则不要为明显没有缺陷的代码编写测试用不要为明显没有缺陷的代码编写测试用例例例如例如v基于代码结构,完全出于实现覆盖目基于代码结构,完全出于实现覆盖目标的测试标的测试单元测试原则代码库 1代码库 2识别识别缺陷缺陷修复修复缺陷缺陷修补修补代码库代码库 1测试测试代码库代码库 1新的隐藏缺新
25、的隐藏缺陷陷 !相依关系相依关系单元测试原则代码库 1代码库 2识别识别缺陷缺陷修复修复缺陷缺陷所有测试通过后,所有测试通过后,修补所有代码库修补所有代码库测试所有测试所有代码库代码库相依关系相依关系集成测试对象a) 软件部件的组装过程;软件部件的组装过程;b) 组装得到的软件部件。组装得到的软件部件。集成测试目的检验软件单元和软件部件之间的接口关检验软件单元和软件部件之间的接口关系系验证软件部件是否符合设计要求验证软件部件是否符合设计要求集成测试图示Component #1Operations and Functions with I/OinputinterfaceoperationComp
26、onent #2Operations and Functions with I/Ooutputoperation集成测试技术要求(1/3)a) 应对软件部件进行必要的静态测试,并应对软件部件进行必要的静态测试,并先于动态测试;先于动态测试;b) 软件部件的每个特性应被至少一个正常软件部件的每个特性应被至少一个正常的测试用例和一个被认可的异常测试用的测试用例和一个被认可的异常测试用例覆盖;例覆盖;c) 测试用例的输入应至少包括有效等价类测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;值、无效等价类值和边界数据值;d) 应采用增量法,测试组装新的软件部件;应采用增量法,测试组装新的
27、软件部件;e) 应逐项测试软件设计文档规定的软件部应逐项测试软件设计文档规定的软件部件的功能、性能等特性;件的功能、性能等特性;集成测试技术要求(2/3)f) 应测试软件部件之间、软件部件和硬应测试软件部件之间、软件部件和硬件之间的所有接口;件之间的所有接口;g) 应测试软件单元和软件部件之间的所应测试软件单元和软件部件之间的所有调用,达到有调用,达到100%的测试覆盖率;的测试覆盖率;h) 应测试软件部件的输出数据及其格式;应测试软件部件的输出数据及其格式;i) 应测试运行条件应测试运行条件(如数据结构、输入如数据结构、输入/输输出通道容量、内存空间、调用频率等出通道容量、内存空间、调用频率
28、等)在边界状态下,进而在人为设定的状在边界状态下,进而在人为设定的状态下,软件部件的功能和性能;态下,软件部件的功能和性能;集成测试技术要求(3/3)j) 应按设计文档要求,对软件部件的功应按设计文档要求,对软件部件的功能、性能进行强度测试;能、性能进行强度测试;k) 对安全性关键的软件部件,应对其进对安全性关键的软件部件,应对其进行安全性分析,明确每一个危险状态行安全性分析,明确每一个危险状态和导致危险的可能原因,并对此进行和导致危险的可能原因,并对此进行针对性的测试。针对性的测试。可根据软件测试任务书可根据软件测试任务书(合同或项目合同或项目计划计划)及软件部件的重要性、安全性关键及软件部
29、件的重要性、安全性关键等级等要求对上述内容进行裁剪。等级等要求对上述内容进行裁剪。集成测试进入条件a) 具有软件需求规格说明具有软件需求规格说明(包含接口需求包含接口需求规格说明规格说明)、软件设计文档、软件设计文档(含接口设含接口设计文档计文档)、软件单元测试报告、被测软、软件单元测试报告、被测软件部件的源程序和可执行代码;件部件的源程序和可执行代码;b) 待测试的软件单元和部件已纳入软件待测试的软件单元和部件已纳入软件受控库;受控库;c) 待集成的软件单元已通过单元测试;待集成的软件单元已通过单元测试;d) 软件部件源代码通过编译或汇编;软件部件源代码通过编译或汇编;e) 具备了满足要求的
30、集成测试环境和测具备了满足要求的集成测试环境和测试工具。试工具。集成测试焦点1. 部件部件/模块间的接口测试模块间的接口测试2. 全局数据结构测试全局数据结构测试3. 软件功能模块的功能测试软件功能模块的功能测试4. 性能测试性能测试5. 边界和人为条件下的性能边界和人为条件下的性能集成测试重点寻找的缺陷软件系统结构的设计和构造软件系统结构的设计和构造在子系统层次上被集成的功能或操作在子系统层次上被集成的功能或操作组件组件/模块之间的接口和相互作用模块之间的接口和相互作用资源集成资源集成环境集成环境集成集成测试因交互问题快速单元快速单元(独立独立)慢下来慢下来(组合组合)误差放大误差放大(如,
31、舍入如,舍入)由于协调问题带来的接口错误由于协调问题带来的接口错误对于实时系统对于实时系统同步问题同步问题(死锁、活锁、资源竞争死锁、活锁、资源竞争)集成测试动态测试内容全局数据结构全局数据结构测试全局数据结构的完整性测试全局数据结构的完整性适合性方面适合性方面对软件设计文档分配给软件部件的每对软件设计文档分配给软件部件的每一项功能逐项进行测试。必要时,测一项功能逐项进行测试。必要时,测试组装成的中间功能模块的功能试组装成的中间功能模块的功能集成测试动态测试内容准确性方面准确性方面对软件部件中具有准确性要求的功能对软件部件中具有准确性要求的功能和精度要求的项和精度要求的项(如,数据处理精度、如
32、,数据处理精度、时间控制精度、时间测量精度时间控制精度、时间测量精度)进行进行测试。测试。集成测试动态测试内容互操作性方面互操作性方面(1/2)测试两种接口:测试两种接口:所加入的软件单元所加入的软件单元和部件与已存在的软件单元和部件之和部件与已存在的软件单元和部件之间的接口;间的接口;软件部件与支持其运行软件部件与支持其运行的其他软件部件、例行程序或硬件设的其他软件部件、例行程序或硬件设备件的接口。对接口的输入和输出数备件的接口。对接口的输入和输出数据的格式、内容、传递方式、接口协据的格式、内容、传递方式、接口协议等进行测试。议等进行测试。集成测试动态测试内容互操作性方面互操作性方面(2/2
33、)测试软件部件的控制信息,如,信号测试软件部件的控制信息,如,信号或中断的来源,信号或中断的目的,或中断的来源,信号或中断的目的,信号或中断的优先级,信号或中断的信号或中断的优先级,信号或中断的表示格式或表示值,信号或中断的最表示格式或表示值,信号或中断的最小、最大和平均频率,响应方式和响小、最大和平均频率,响应方式和响应时间等。应时间等。集成测试动态测试内容容错性方面容错性方面测试软件部件对错误输入、错误中断、测试软件部件对错误输入、错误中断、漏中断等情况的容错能力,并考虑通漏中断等情况的容错能力,并考虑通过仿真平台或硬件测试设备形成一些过仿真平台或硬件测试设备形成一些人为条件,测试软件部件
34、的功能、性人为条件,测试软件部件的功能、性能的降级情况。能的降级情况。集成测试动态测试内容时间特性方面时间特性方面测试软件部件的运行时间,算法的最测试软件部件的运行时间,算法的最长路径下的计算时间。必要时,可考长路径下的计算时间。必要时,可考虑测试组装成的中间功能部件的运行虑测试组装成的中间功能部件的运行时间。时间。资源利用性方面资源利用性方面测试软件部件运行占用的内存空间。测试软件部件运行占用的内存空间。必要时,可考虑测试组装成的中间功必要时,可考虑测试组装成的中间功能部件运行占用的内存空间。能部件运行占用的内存空间。集成测试结束条件(1/2)a) 已按要求完成了规定的测试任务;已按要求完成
35、了规定的测试任务;b) 实际测试过程遵循了原定的软件部件实际测试过程遵循了原定的软件部件测试计划和软件部件测试说明;测试计划和软件部件测试说明;c) 详细、客观地记录了测试过程和测试详细、客观地记录了测试过程和测试中发现的所有问题;中发现的所有问题;d) 测试文档齐全、符合规范;测试文档齐全、符合规范;e) 测试工作通过了软件部件测试评审;测试工作通过了软件部件测试评审;f) 测试的全过程自始至终在控制下进行;测试的全过程自始至终在控制下进行;集成测试结束条件(2/2)g) 测试中的异常有合理解释或正确有效测试中的异常有合理解释或正确有效的处理;的处理;h) 全部的测试文档、测试用例、测试软全
36、部的测试文档、测试用例、测试软件、被测软件部件和评审结果已纳入件、被测软件部件和评审结果已纳入配置管理。配置管理。集成测试策略非渐增式集成非渐增式集成(大爆炸集成大爆炸集成)渐增式集成渐增式集成自顶向下集成自顶向下集成自底向上集成自底向上集成 多层结构式测试多层结构式测试(三明治式测试三明治式测试)高频集成高频集成集成策略实例ABCDGFE层层 I层层II层层III集成策略大爆炸集成图示Test ATestA,B,C,D,E,F,GABCDGFE层层 I层层 II层层 IIITest BTest CTest GTest ETest FTest D集成策略大爆炸集成前提前提被测部件在通过部件范围
37、的测试后,被测部件在通过部件范围的测试后,只有少量单元加入或修改只有少量单元加入或修改被测部件较小并具有良好可测试性,被测部件较小并具有良好可测试性,每个单元都经过充分测试每个单元都经过充分测试被测部件中的单元紧密连接,无法被测部件中的单元紧密连接,无法分别测试分别测试测试不考虑单元之间的相依性或风测试不考虑单元之间的相依性或风险险集成策略大爆炸集成缺点缺点调试困难调试困难大量废弃代码大量废弃代码关键的与一般的外围模块没有区分关键的与一般的外围模块没有区分直到开发周期的很晚时间用户才能直到开发周期的很晚时间用户才能看到产品看到产品集成失败带来的风险较大集成失败带来的风险较大集成策略自顶向下集成
38、1) 首先开发和测试在最高控制层的单元,下层首先开发和测试在最高控制层的单元,下层单元用桩实现单元用桩实现2) 继续在每一层按宽度或深度优先进行,用真继续在每一层按宽度或深度优先进行,用真正的单元代替桩,并建立更下一层桩正的单元代替桩,并建立更下一层桩3) 每一个单元集成进来的时候都要进行测试每一个单元集成进来的时候都要进行测试4) 用回归测试保证没有引入新错误用回归测试保证没有引入新错误5) 以这种方式继续,直到被测部件中的所有桩以这种方式继续,直到被测部件中的所有桩已经被真正的实现替代并得到了测试已经被真正的实现替代并得到了测试集成策略广度优先Test ATest A, B, C, DTe
39、st A, B, C, D,E, F, GABCDGFE层层 I层层 II层层 IIITest BTest CTest DStubs 1Test ETest FTest GStubs 2集成策略深度优先Test ATest A, B, E, FTest A, B, C, D,E, F, GABCDGFE层层 I层层 II层层 IIITest A, B, E, F, CTest A, B, E, F, C, DTest A, BStubs 1Stubs 2Stubs 3Stubs 4Test BTest ETest FTest CTest DTest G集成策略自顶向下集成优点优点可以依据部件的
40、功能需求开始测试可以依据部件的功能需求开始测试不需要开发驱动器不需要开发驱动器缺点缺点需要建立和维护大量的桩,用桩模拟需要建立和维护大量的桩,用桩模拟所有的情况有时是困难的所有的情况有时是困难的底层单元的变化会影响上层已集成的底层单元的变化会影响上层已集成的单元单元集成策略自底向上集成1) 第一阶段对底层模块编码,并使用驱第一阶段对底层模块编码,并使用驱动模块对其测试;动模块对其测试;2) 底层模块组合成能够实现软件特定子底层模块组合成能够实现软件特定子功能的簇,写驱动模块对簇进行测试;功能的簇,写驱动模块对簇进行测试;3) 移走驱动模块,沿着程序结构的层次移走驱动模块,沿着程序结构的层次向上
41、对簇进行组合,使用驱动模块对向上对簇进行组合,使用驱动模块对其测试;其测试;4) 以这种方式继续集成直到整个部件使以这种方式继续集成直到整个部件使用真实的主控制模块进行测试。用真实的主控制模块进行测试。集成策略自底向上集成Test FTest ETest GTest CTest Cluster 2(D,G)Test Cluster 1(B, E, F)Test A, B, C, D,E, F, GABCDGFE层层 I层层 II层层 IIITest BTest DTest ADriver A1Driver A2集成策略自底向上集成优点优点不需要桩模块不需要桩模块可并行测试可并行测试缺点缺点需要
42、驱动模块需要驱动模块部件中处于顶层的重要簇或功能可能部件中处于顶层的重要簇或功能可能在较晚才得到测试,如在较晚才得到测试,如UI设计上问题往往到最终测试才能发现设计上问题往往到最终测试才能发现集成策略自底向上集成场景场景面向对象系统面向对象系统实时系统实时系统有严格性能要求的系统有严格性能要求的系统集成策略多层结构式测试自顶向下策略与自底向上策略相结合自顶向下策略与自底向上策略相结合以三层视角看待被测部件以三层视角看待被测部件处于中间的目标层处于中间的目标层目标层之上的层目标层之上的层目标层之下的层目标层之下的层测试在目标层会合测试在目标层会合集成策略多层结构式测试Test ETest D,G
43、Test B, E, FTest FTest GTest A底层测试Test A,B,C, DTest A, B, C, D,E, F, GABCDGFE层层 I层层 II层层 III顶层测试Test BTest DTest CDriver A1Driver A2Stubs 1Test A,B,C, D集成策略多层结构式测试当部件结构多于当部件结构多于3层时,如何选择目标层时,如何选择目标层层?探索法探索法尝试使桩和驱动器数量最小化尝试使桩和驱动器数量最小化集成策略多层结构式测试优点优点顶层和底层测试可以并行进行顶层和底层测试可以并行进行缺点缺点在没有完成集成之前无法测试完整的在没有完成集成之
44、前无法测试完整的部件部件在没有完成集成之前无法充分测试接在没有完成集成之前无法充分测试接口口需要同时使用桩和驱动器需要同时使用桩和驱动器集成策略改进多层结构式并行测试并行测试:用驱动器和桩测试中间层用驱动器和桩测试中间层用桩测试顶层用桩测试顶层用驱动器测试底层用驱动器测试底层并行测试并行测试:顶层访问中间层顶层访问中间层(用顶层单元代替驱用顶层单元代替驱动器动器)底层被中间层访问底层被中间层访问(用底层单元代替用底层单元代替桩桩)集成策略改进多层结构式Test FTest ETest BTest GTest DTest ATest CTest B, E, FTest D,GTest A,CTe
45、st A, B, C, D,E, F, GABCDGFE层层 I层层 II层层 III集成策略高频集成特征适用于时间紧且复杂度高的软件适用于时间紧且复杂度高的软件自底向上自底向上/自顶向下的集成方式自顶向下的集成方式每日构建与冒烟测试每日构建与冒烟测试(Daily Build and Smoke Testing)冒烟测试从头到尾检测整个系统冒烟测试从头到尾检测整个系统(当前状态下当前状态下)。它不一定必须是穷举的,但是应该能够暴露主要问它不一定必须是穷举的,但是应该能够暴露主要问题。冒烟测试应该是足够充分的,如果构件通过了题。冒烟测试应该是足够充分的,如果构件通过了冒烟测试,就可以假定该构件已
46、经足够稳定,可以冒烟测试,就可以假定该构件已经足够稳定,可以继续进行更加彻底的测试。继续进行更加彻底的测试。 McConnel, S.集成策略高频集成前提可得到一个稳定的增量可得到一个稳定的增量大多数有意义的增量可在频率间隔内产大多数有意义的增量可在频率间隔内产生生测试包和代码并行开发并保持当前有效测试包和代码并行开发并保持当前有效必须进行自动化测试必须进行自动化测试必须使用配置管理工具必须使用配置管理工具集成策略高频集成过程1. 开发者产生要集成的代码增量和相关测试包,开发者产生要集成的代码增量和相关测试包,运行测试包,构件通过所有测试后,将代码运行测试包,构件通过所有测试后,将代码和测试包移交集成部门;和测试包移交集成部门;2. 集成构件测试员将开发者的提交聚集起来并集成构件测试员将开发者的提交聚集起来并运行一个集成测试包。集成测试包包括冒烟运行一个集成测试包。集成测试包包括冒烟测试测试(Smoke Testing)、新开发的测试以及时、新开发的测试以及时间允许的尽可能多的测试;间允许的尽可能多的测试;3. 评价结果。集成构件的纠错拥有最高优先级。评价结果。集成构件的纠错拥有最高优先级。集成策略高频集成优点集成风险很小集成风险很小最终产品的质量得到改善最终产品的质量得到改善错误诊断和改正简单错误诊
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024东航物流客服岗面试高频题及服务类问题标准答案
- 2020山东医专单招押题卷试题及答案 押中率超80%
- 2020年幼儿养育照护语言启蒙考点试题及标准答案
- 2021年物业服务中心半结构化面试题库及满分答案
- 2021铁塔代维日常巡检考试真题及官方标准答案
- 2021铁塔代维电源系统维护考试专项试题及答案
- 2024上海事业单位考试历年真题+常识考点速记
- 2022年库伦分析法期末考试押题卷及官方参考答案
- 江苏泰州市姜堰区实验初级中学2025-2026学年下学期九年级数学第一次独立作业(含解析)
- 太阳能安装运维协议书
- 蔬果采购员管理制度
- 2026年广州市高三语文一模作文题目解析及范文:那些被遗忘的后半句
- 广东省广州市黄埔区第八十六中学2024-2025学年八年级下学期4月期中物理试题(含答案)
- 2026年及未来5年市场数据辽宁省环保行业市场行情动态分析及发展前景趋势预测报告
- 贵州省六盘水市英武水库工程环评报告
- JTGT F20-2015 公路路面基层施工技术细则
- 保洁礼节礼仪培训
- 土建劳动力计划表劳动力安排计划及劳动力计划表
- 天然气加工工程轻烃回收课件
- 英语四级长篇匹配阅读练习题
- 健康管理师资料:《健康管理师》 国家职业资格培训介绍
评论
0/150
提交评论