版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 八八 章章88.1 8.1 软件测试的基本概念软件测试的基本概念一、软件测试的目的和重要性一、软件测试的目的和重要性因为开发工作的前期不可避免地会引入错误,测试因为开发工作的前期不可避免地会引入错误,测试的的目的是为了发现和改正错误目的是为了发现和改正错误,这对于某些涉及人的生,这对于某些涉及人的生命安全或重要的军事、经济目标的项目显得尤其重要。命安全或重要的军事、经济目标的项目显得尤其重要。19631963年美国飞往火星的火箭爆炸,原因是年美国飞往火星的火箭爆炸,原因是FORTRANFORTRAN程序:程序: DO 5 I=1DO 5 I=1,3 3 误写为:误写为: DO 5 I=1
2、. 3 DO 5 I=1. 3 损失损失10001000万美元。万美元。19671967年苏联年苏联“联盟一号联盟一号”宇宙飞船返回时因忽略一宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而烧毁。个小数点,在进入大气层时打不开降落伞而烧毁。二、软件测试的二、软件测试的特点特点1. 软件测试的开销大软件测试的开销大 按照按照Boehm的统计,软件测试的开销大约占总的统计,软件测试的开销大约占总成本的成本的30%-50%。例如:阿波罗登月计划中,。例如:阿波罗登月计划中,80%的经费用于软件测试。的经费用于软件测试。2. 不能进行不能进行“穷举穷举”测试测试 只有将所有可能的情况都测试
3、到,才有可能检只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的:查出所有的错误。但这是不可能的: 例:程序例:程序P有两个整型输入量有两个整型输入量 X、Y,输出量为输出量为Z,在在32位机上运行。所有的测试数据组(位机上运行。所有的测试数据组(Xi,Yi)的数目为:的数目为:232232 =264 1毫秒执行毫秒执行1次,共需次,共需5亿亿年。年。PXYZ3、软件测试难度大、软件测试难度大 根据上述分析,既然不能进行根据上述分析,既然不能进行 “穷举穷举”测试,测试,又要查出尽可能多的错误,软件测试工作的难度又要查出尽可能多的错误,软件测试工作的难度大。只有选择大。只有
4、选择 “高效的测试用例高效的测试用例”什么是什么是 “高效的测试用例高效的测试用例”?如何选择如何选择“高效的测试用例高效的测试用例”?这就是本章讨论的主要问题!这就是本章讨论的主要问题!三、软件测试的基本原则三、软件测试的基本原则3 3. .充分注意测试中的群集现象。充分注意测试中的群集现象。1 1. .尽量不由程序设计者进行测试。尽量不由程序设计者进行测试。2 2. .关键是注重测试用例的选择。关键是注重测试用例的选择。 输入数据的组成(输入数据、预期的输出结果)输入数据的组成(输入数据、预期的输出结果) 既有合理输入数据,也有不合理的输入数据。既有合理输入数据,也有不合理的输入数据。 用
5、例既能检查应完成的任务,也能够检查不应该用例既能检查应完成的任务,也能够检查不应该 完成的任务。完成的任务。 长期保存测试用例。长期保存测试用例。四、测试的基本步骤四、测试的基本步骤模块测试模块测试整体测试整体测试功能测试功能测试预测试预测试系统测试系统测试验收测试验收测试安装测试安装测试概要设计审查概要设计审查详细设计审查详细设计审查代码审查代码审查 测试测试 (单元测试)单元测试)(组装测试)(组装测试)(有效性测试)(有效性测试)(确认测试)(确认测试)8.2 8.2 软件测试方法软件测试方法软件测试方法分为两类:静态分析和动态测试软件测试方法分为两类:静态分析和动态测试 指以人工的、非
6、形式化的方法对程序进行分析指以人工的、非形式化的方法对程序进行分析和测试。和测试。 桌前检查桌前检查 代码会审代码会审 步行检查步行检查步行检查时,还常使用以下分析方法:步行检查时,还常使用以下分析方法:调用图从语义的角度考察程序的控制路线。调用图从语义的角度考察程序的控制路线。数据流分析图检查分析变量的定义和引用情况。数据流分析图检查分析变量的定义和引用情况。(1 1) 调用图调用图 无论无论Y 为何值,都不为何值,都不能够调用子程序能够调用子程序。即即执行执行ABC后,是不可后,是不可能执行路径能执行路径CDE的。的。READYY0NX:=YX1) AND (B=0) THEN X=X/A
7、 ; IF (A=2) OR (X1) THEN X=X+1(1)(1)选择一种合适的逻辑覆盖标准。选择一种合适的逻辑覆盖标准。(2)(2)按照覆盖标准列出所有情况。按照覆盖标准列出所有情况。(3)(3)选择确定测试用例。选择确定测试用例。(4)(4)验证分析运行结果与预期结果。验证分析运行结果与预期结果。逻辑结构逻辑结构白盒法举例白盒法举例 IF(A1) AND (B=0) THEN X=X/A IF (A=2) OR (X1) THEN X=X+1A1ANDB=0X=X/AA=2OR X1X=X+1YNYN逻辑结构逻辑结构对各种覆盖标准进行的用例选择。对各种覆盖标准进行的用例选择。1. 语
8、句覆盖语句覆盖使得程序中每个语句至少使得程序中每个语句至少都能被执行一次。都能被执行一次。满足语句覆盖的情况:满足语句覆盖的情况: 执行路径:执行路径:aceace选择用例:选择用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3) 用例格式:用例格式: 输入输入(A,B,X)(A,B,X),输出,输出(A,B,X)(A,B,X)A1ANDB=0X=X/AA=2OR X1X=X+1abcdeYNYN2. 判定覆盖判定覆盖使得程序中每个判定至少为使得程序中每个判定至少为TRUE 或或FALSE各各一次。一次。覆盖情况:覆盖情况:应执行路径应执行路径ace abd 或:或: acd a
9、be选择用例选择用例(其一):其一): (2,0,4),(2,0,3) ace (2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd (1,1,1),(1,1,1) abd (2,1,1),(2,1,2) abe (2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd (3,0,3),(3,1,1) acdA1ANDB=0X=X/AA=2OR X1X=X+1abcdeYNYN即执行即执行ABC后,是不可能执后,是不可能执行路径行路径CDE的。的。3. 条件覆盖条件覆盖使得判定中的每个条件获得使得判定中的每个条件获得各种可能的结果。各种可能的结果
10、。应满足以下覆盖情况:应满足以下覆盖情况:判定一判定一: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1选择用例:选择用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3) (1,1,1),(1,1,1) (1,1,1),(1,1,1) 2 2A1A20 0B=04 4X11 1A1A=21 1B01 1X1注意注意:(1,0,3),(1,0,4):(1,0,3),(1,0,4)(2,1,1),(2,1,2)(2,1,1),(2,1,2)满足条件覆盖,但不满足判断满足条件覆盖,但不满足判断覆盖。覆盖。A1ANDB=0X=X/AA=2OR X1X=X+
11、1abcdeYNYN4. 判定判定/条件覆盖条件覆盖同时满足判断覆盖和条同时满足判断覆盖和条件覆盖。件覆盖。应满足以下覆盖情况:应满足以下覆盖情况: 条件条件: A1, A1, B=0, B0 A=2, A2, X1, X1 应执行路径应执行路径ace abd 或:或: acd abe选择用例:选择用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd) (1,1,1),(1,1,1) (abd)A1ANDB=0X=X/AA=2OR X1X=X+1abcdeYNYN5. 组合覆盖组合覆盖使得每个判定中条件的各种使得每个判
12、定中条件的各种可能组合都至少出现一次。可能组合都至少出现一次。A1X=X/AA=2X=X+1abcdeB=0X1YNYNYNYN编译系统下的执行情况:编译系统下的执行情况:部分路径未被执行。部分路径未被执行。满足以下覆盖情况:满足以下覆盖情况: A1, B =0 A1, B0 A1, B =0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1选择用例:选择用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) (2,1,1),(2,1,2) (2,1,1),(2,1,2) (1,0,3),(1,0,4) (1,0,3),(1,0,4) (1,1,1),(1
13、,1,1) (1,1,1),(1,1,1) 等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法因因果果图图法法黑盒法黑盒法 不考虑程序的内部结构与特性,不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性只根据程序功能或程序的外部特性设计测试用例。设计测试用例。1. 等价分类法等价分类法基本思想:基本思想:根据程序的根据程序的I/O特性,将程序的定义特性,将程序的定义域划分为有限个等价区段域划分为有限个等价区段 “等价类等价类”,从,从等价类中选择出的用例,具有等价类中选择出的用例,具有“代表性代表性”。等价类分为:等价类分为:有效等价类有效等价类 对于程序的规格说明,是合对于
14、程序的规格说明,是合理的、有意义的输入数据构成的集合。理的、有意义的输入数据构成的集合。无效等价类无效等价类 对于程序的规格说明,是不合对于程序的规格说明,是不合理的、没有意义的输入数据构成的集合。理的、没有意义的输入数据构成的集合。 应按照输入条件(如输入值的范围,值的个数,值应按照输入条件(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效的集合,输入条件必须如何)划分为有效等价类和无效等价类。等价类。例如:每个学生可选修例如:每个学生可选修1-31-3门课程门课程可以划分一个有效等价类:选修可以划分一个有效等价类:选修1-31-3门课程。门课程。可以划分两个无效
15、等价类:未选修课,选修课超过可以划分两个无效等价类:未选修课,选修课超过3 3门。门。 显然,关键是显然,关键是如何划分等价类如何划分等价类A A 为每个等价类编号;为每个等价类编号;B B 使一个测试用例尽可能覆盖多个有效等价类使一个测试用例尽可能覆盖多个有效等价类C C 特别要注意特别要注意: :一个测试用例只能覆盖一个无效等价类。一个测试用例只能覆盖一个无效等价类。2. 边值分析法边值分析法 基本思想:基本思想: 选择等价类的边缘值作为测试用例,选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用让每个等价类的边界都得到测试,选择测试用例既考虑例既考虑输入输入又考虑又
16、考虑输出输出。 分析步骤:分析步骤: A A 先划分等价类。先划分等价类。B B 选择测试用例,测试等价类边界。选择测试用例,测试等价类边界。 边界边界选择原则:选择原则: A A 按照输入值范围的边界。按照输入值范围的边界。B B 按照输入按照输入/ /输出值个数的边界。输出值个数的边界。C C 输出值域的边界。输出值域的边界。D D 输入输入/ /输出有序集的边界。输出有序集的边界。按照输入值范围的边界。按照输入值范围的边界。 例如:输入值的范围是例如:输入值的范围是-1.0-1.01.01.0,则可选择用例,则可选择用例: : 1.01.0、1.01.0、-1.001-1.001、1.0
17、011.001。按照输入按照输入/ /输出值个数的边界。输出值个数的边界。 例如:输入文件可有例如:输入文件可有1 1255255个记录,则个记录,则 设计用例:设计用例:文件的记录数为文件的记录数为 0 0个、个、1 1个、个、255255个、个、256256个。个。输出值域的边界。输出值域的边界。 例如:检索文献摘要,最多例如:检索文献摘要,最多4 4篇。设计用例:可检索篇。设计用例:可检索0 0篇、篇、1 1篇、篇、4 4篇,和篇,和5 5篇(错误)。篇(错误)。 D D 输入输入/ /输出有序集(输出有序集(如顺序文件、线性表)如顺序文件、线性表)的边界。的边界。 应选择第一个元素和最
18、后一个元素。应选择第一个元素和最后一个元素。边值分析法举例边值分析法举例黑盒法应用实例黑盒法应用实例 对对FORTRAN编译系统中的编译系统中的DIMENSION语句进语句进行测试。行测试。 语句格式为:语句格式为:DIMENSION ad ,ad 其中:其中: ad为数组描述符,形式为为数组描述符,形式为 n(d, ) 其中:其中:n数组名,字母打头的字母数字串,长度数组名,字母打头的字母数字串,长度不超过不超过6个字符。个字符。 d为界偶(为界偶(1-7个):个):ld:nd ld 和和 nd 的值为的值为165535, ld默认为默认为1。输入条件输入条件合理的等价类合理的等价类不合理的
19、等价类不合理的等价类数组描述的个数数组描述的个数1 1个(个(1 1)、多于)、多于1 1个(个(2 2)没有数组描述(没有数组描述(3 3)数组名的字符数数组名的字符数1 16 6个(个(4 4)0 0(5 5),),66(6 6)数组名数组名有字母(有字母(7 7)有数字()有数字(8 8)有其他字符(有其他字符(9 9)数组名的第数组名的第1 1个字符个字符为字母为字母是(是(1010)不是(不是(1111)维数维数1 17 7(1212)0 0(1313),), 7 7(1414)上界上界常数(常数(1515)数组元素名(数组元素名(1616共共40 个等价类个等价类 对上述语法进行分
20、析,划分等价类。对上述语法进行分析,划分等价类。3 3. .错误推测法错误推测法 凭经验或直觉推测可能的错误,列出程序中可凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试能有的错误和容易发生错误的特殊情况,选择测试用例。用例。把输入条件视为把输入条件视为“因因”,把输出条件视为,把输出条件视为“果果”,将黑盒看成是从因到果的网络图,采用逻,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试合与输出的关系。根据这种关系可选择高效的测试用例。用例
21、。4 4. .因果图法因果图法4.因果图法因果图法 0 - 0 - 表示表示“不出现不出现”1 - 1 - 表示表示“出现出现” 恒等恒等若若a a为为1 1,则,则b b为为1 1,否则,否则b b为为0 0。 “非非”函数函数 若若a a为为1 1,则,则b b为为0 0,否则,否则b b为为1 1。 “或或”函数函数 若若a a或或b b为为1 1,则,则d d为为1 1,否则,否则d d为为0 0。 “与与”函数函数 若若a a与与b b同为同为1 1,则,则d d为为1 1,否则,否则d d为为0 0。abababd dabd d4.因果图法因果图法对对“与与”、“或或”函数的限制符
22、号函数的限制符号E E约束(异)约束(异) 排斥排斥即即a a、b b不能同时为不能同时为1 1。I I约束(或)约束(或) 包容包容a a、b b、c c不能同时为不能同时为0 0。O O约束(唯一约束(唯一) 选一选一 a a、b b中仅有一个为中仅有一个为1 1。R R约束(要求约束(要求) 需要需要 a a为为1 1时,时,b b必须为必须为1 1M M约束(强制约束(强制) 屏蔽屏蔽 若若a a为为1 1时,则时,则b b强制为强制为0 0。abEabcIabRabO OabM 因果图法的步骤因果图法的步骤分析规范,即将问题分为若干个工作的步骤。分析规范,即将问题分为若干个工作的步骤
23、。标识出规范中的原因与结果。标识出规范中的原因与结果。原因原因输入条件输入条件 结果结果输出或系统变换输出或系统变换将因果图转换为有限项判断表。将因果图转换为有限项判断表。将判断表的每一列,转换为一个测试用例。将判断表的每一列,转换为一个测试用例。分析规范语义、内容,转换为因果图。分析规范语义、内容,转换为因果图。 因果图法应用举例因果图法应用举例规范:文件名第一列字符必须为规范:文件名第一列字符必须为A A或或B B,第二列字第二列字符必须为数字。满足则修改文件。第一字符不正符必须为数字。满足则修改文件。第一字符不正确发出信息确发出信息X X1212,第二个字符不正确发出信息第二个字符不正确
24、发出信息X X1313。 分析规范分析规范原原 因因 结结 果果1 1 第一列字符为第一列字符为5050修改文件修改文件2 2 第一列字符为第一列字符为5151发信息发信息X X12123 3 第二列字符为数字第二列字符为数字5252发信息发信息X X1313 画出因果图画出因果图中间结点中间结点 是导出结果的进一步原因。是导出结果的进一步原因。考虑到原因考虑到原因1 1、2 2不可能同时为不可能同时为1 1,加上,加上E E约束。约束。1111515035212E发发 X 12发发 X 13 修改文件修改文件 将因果图转换为判断表将因果图转换为判断表12345678条条件件原原因因11110
25、0001100110010101010111100动动作作结结果果000011101000010101测试用例测试用例A3A8AA?B5B4BNB!C2X6DYPI115150528.3 8.3 软件测试的步骤软件测试的步骤测试步骤及策略测试步骤及策略 所有测试过程都应采用综合测试策略;即先作静态分所有测试过程都应采用综合测试策略;即先作静态分析,再作动态测试。并事先制订测试计划。测试过程通析,再作动态测试。并事先制订测试计划。测试过程通常可分常可分4 4步进行:步进行:单元单元测试测试单元单元测试测试单元单元测试测试被测被测模块模块被测被测模块模块集成集成测试测试设计设计信息信息已测试已测试
26、的模块的模块确认确认测试测试已集成已集成的模块的模块软件软件需求需求系统系统测试测试已确认已确认的软件的软件可交付可交付的软件的软件系统其系统其他元素他元素一、模块测试一、模块测试(Module TestingModule Testing)模块模块模块接口测试模块接口测试局部数据结构测试局部数据结构测试重要路径测试重要路径测试错误处理测试错误处理测试边界条件测试边界条件测试I/O I/O 参数值的个数、类参数值的个数、类型、次序、格式是否正型、次序、格式是否正确,确,I/OI/O文件属性、操作文件属性、操作是否正确等。是否正确等。数据说明是否正确、数据说明是否正确、一致,变量及其初值一致,变量
27、及其初值定义是否正确等。定义是否正确等。检查检查“错误错误处理程序处理程序”本身的错误。本身的错误。边界条件常包括循环边边界条件常包括循环边界,最大最小值、控制界,最大最小值、控制流中等于、大于、小于流中等于、大于、小于的比较值等。的比较值等。重要重要路径通常是指完成路径通常是指完成模块功能的主要路径,模块功能的主要路径,一般是控制结构。一般是控制结构。也称单元测试(也称单元测试(unit testingunit testing ) )2 2. .模块测试步骤模块测试步骤 考虑到被测模块与其他模块的联系,因此测试时需考虑到被测模块与其他模块的联系,因此测试时需要使用两类要使用两类辅助模块辅助模
28、块来模拟其他模块。来模拟其他模块。 驱动模块驱动模块(driverdriver) 模拟主程模拟主程序功能,用于向被测模块传递数据,序功能,用于向被测模块传递数据,接收、打印从被测模块返回的数据。接收、打印从被测模块返回的数据。桩模块(桩模块(stubstub) 又称为假模块,又称为假模块,用于模拟那些由被测模块所调用的用于模拟那些由被测模块所调用的下属模块功能。下属模块功能。一般驱动模块比桩模块容易设计。但都是额外开销。测一般驱动模块比桩模块容易设计。但都是额外开销。测试方法以白盒法为主。试方法以白盒法为主。被测模块被测模块驱动模块驱动模块桩模块桩模块桩模块桩模块桩模块桩模块二、组装测试(二、
29、组装测试(Integration TestingIntegration Testing)确定模块组装方案,将经过测试的模块组装为一确定模块组装方案,将经过测试的模块组装为一个完整的系统。组装方案分为个完整的系统。组装方案分为渐增式渐增式及及非渐增式非渐增式。测试方法以黑盒法为主,按照组装方案进行测试方法以黑盒法为主,按照组装方案进行测试。测试。 也称为也称为联合测试联合测试或或集成测试集成测试,重点测试模块的接重点测试模块的接口部分,需设计测试过程使用的驱动模块或桩模块。口部分,需设计测试过程使用的驱动模块或桩模块。问题问题:渐增式与非渐增式各有何优、缺点?为什渐增式与非渐增式各有何优、缺点?
30、为什么通常采用渐增式?么通常采用渐增式?2 2. .渐增式组装测试渐增式组装测试渐增式是先进行模块测试,然后将这些模块逐渐增式是先进行模块测试,然后将这些模块逐步组装成较大的系统,每连接一个模块进行一次测步组装成较大的系统,每连接一个模块进行一次测试试。两种方案:两种方案:设计驱动模块或桩模块,对每一个新组装的子系设计驱动模块或桩模块,对每一个新组装的子系统进行测试,对发现问题较多的子系统或模块应该用统进行测试,对发现问题较多的子系统或模块应该用白盒法作回归测试。白盒法作回归测试。自顶而下增值自顶而下增值增值增值自顶而下增值自顶而下增值M1M4M3M2M6M5程序模块示意图程序模块示意图S5M
31、1S1S1S1S2S2S2S3S3S3第一步,测试主控模块第一步,测试主控模块M1设设计桩模块计桩模块S1、S2、S3,模拟模拟被被M1调用的调用的M2、M3、M4。M2M3M4第二步,依次用第二步,依次用M2、M3、M4替代桩模块替代桩模块S1、S2、S3,每替代一次进行一次测试。每替代一次进行一次测试。S4S4S4S5S5第三步,对由主控模块第三步,对由主控模块M1和和模块模块M2、M3、M4构成的子构成的子系统进行测试,设计桩模块系统进行测试,设计桩模块S4、S5。M5M6第四步,依次用模块第四步,依次用模块M5和和M6替代桩模块替代桩模块S4、S5,并同时并同时进行新的测试。组装测试完
32、进行新的测试。组装测试完毕。毕。自底而上增值自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已测试的子系第四步,把已测试的子系统按程序结构连接起来完统按程序结构连接起来完成程序整体的组装测试。成程序整体的组装测试。D4D4D4D5D5D5M1M4M3M2M6M5程序模块示意图程序模块示意图第一步,对最底层的模块第一步,对最底层的模块M3、M5、M6进行测试进行测试,设计驱动模设计驱动模块块D1、D2、D3来模拟调用。来模拟调用。第三步,设计驱动模块第三步,设计驱动模块D4、D5 和和D6模拟调用,分别对新子系模拟调用,分别对新子系统进行测试。统进行测试。第二步
33、,用实际模块第二步,用实际模块M2、M1和和M4替换驱动模块替换驱动模块D1、D2、D3。D6深度优先与宽度优先深度优先与宽度优先 无论是无论是自顶而下增值还是自底而上增值,还可选择自顶而下增值还是自底而上增值,还可选择深度优先深度优先或者或者宽度优先宽度优先增值。增值。 举例:按自顶而下增值法,写出下图中分别按照深举例:按自顶而下增值法,写出下图中分别按照深度优先或者宽度优先增值的模块组装次序。度优先或者宽度优先增值的模块组装次序。ABCDHGJEFIKLMN问问 题题(1 1)自顶而下增值与)自顶而下增值与增值各有何优、增值各有何优、缺点?缺点?(2 2)为什么在实际的组装测试中,都应该采
34、用)为什么在实际的组装测试中,都应该采用混合增值的方法?混合增值的方法?(3 3)请自己设计)请自己设计 2 23 3个混合增值的测试方法。个混合增值的测试方法。确定集成过程的原则确定集成过程的原则 自顶而下增值自顶而下增值优点:能够尽早发现系统主控方面的问题。优点:能够尽早发现系统主控方面的问题。缺点:无法验证桩模块是否完全模拟了下属模块的缺点:无法验证桩模块是否完全模拟了下属模块的功能。功能。增值增值优点:驱动模块较容易编写桩模块,能够尽早查出优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及较复杂的算法和实际的底层涉及较复杂的算法和实际的I/OI/O模块中的错误。模块中的错误。缺点:最
35、后才能发现系统主控方面的问题。缺点:最后才能发现系统主控方面的问题。 尽早测试关键模块。尽早测试关键模块。 尽早测试包含尽早测试包含I/OI/O的模块。的模块。3 3. .混合增值混合增值常见的常见的混合增值方案:混合增值方案:衍变的自顶而下衍变的自顶而下先自底而上集成子系统,再自顶而下集成总系统。先自底而上集成子系统,再自顶而下集成总系统。自底而上自底而上自顶而下增值自顶而下增值对含有读操作的子系统采用自底而上。对含有读操作的子系统采用自底而上。对含有写操作的子系统采用自顶而下。对含有写操作的子系统采用自顶而下。回归测试回归测试在回归测试中自底而上,对其余部分(尤其是对在回归测试中自底而上,
36、对其余部分(尤其是对修改过的子系统)采用自顶而下。修改过的子系统)采用自顶而下。三、确认测试三、确认测试( (validation testingvalidation testing) ) 又称为有效性测试或功能测试。其任务是验证系又称为有效性测试或功能测试。其任务是验证系统的功能、性能等特性是否符合需求规格说明。统的功能、性能等特性是否符合需求规格说明。选择测试人员选择测试人员选择测试用例选择测试用例实际运行测试实际运行测试软件计划软件计划用户文档用户文档开发文档开发文档源程序文本源程序文本支持环境支持环境有效性有效性测试测试软件软件配置配置审查审查管理管理机构机构裁决裁决专家专家鉴定会鉴定
37、会交用户交用户运行维护运行维护测试报告测试报告软件配置软件配置2 2. .确认测试步骤确认测试步骤(1 1)有效性测试)有效性测试 制定测试计划,运用黑盒法,验证软件特性是制定测试计划,运用黑盒法,验证软件特性是否与需求符合。否与需求符合。(2 2)软件配置复查)软件配置复查 软件配置软件配置指软件工程过程中所产生的所有指软件工程过程中所产生的所有信息项:文档、报告、程序、表格、数据。信息项:文档、报告、程序、表格、数据。 随着软件工程过程的进展软件配置项(随着软件工程过程的进展软件配置项(SCI software Configuration Item)快速增加和变化。应快速增加和变化。应复查
38、复查SCI是否齐全。是否齐全。(3 3) 测试和测试和 测试测试 测试测试 是在开发机构的监督下,由个别用户在确是在开发机构的监督下,由个别用户在确认测试阶段后期对软件进行测试,目的是评价软认测试阶段后期对软件进行测试,目的是评价软件的件的FLURPS(功能、局域化、可使用性、可靠功能、局域化、可使用性、可靠性、性能和支持)性、性能和支持),注重界面和特色。注重界面和特色。 测试测试 由支持软件预发行的客户对由支持软件预发行的客户对FLURPS进行进行测试,主要目的是测试系统的可支持性。测试,主要目的是测试系统的可支持性。unction Testing 功能测试功能测试 ocal Area T
39、esting 局域化测试局域化测试sability Testing 可使用性测试可使用性测试egression Testing 回归测试回归测试erformance Testing 性能测试性能测试upportability Testing 可支持性测试可支持性测试四、系统测试四、系统测试(system testing system testing ) 将经过确认测试的软件,与计算机硬件、外设、将经过确认测试的软件,与计算机硬件、外设、支持软件等一起,在实际运行环境下测试。支持软件等一起,在实际运行环境下测试。 验收测试是以用户为主的测试。软件工程课程验收测试是以用户为主的测试。软件工程课程设
40、计的验收测试安排在第设计的验收测试安排在第1 18 8周进行。周进行。1 1. .步骤步骤(1 1)由课题组根据测试用例,自己演示系统所有)由课题组根据测试用例,自己演示系统所有功能。功能。(2 2)由教师进行测试。)由教师进行测试。软件工程课程设计验收表文文档档文档数量文档数量文档质量文档质量文档与系文档与系统一致性统一致性创新性创新性总体总体(5 5分)分)(5 5分)分)(3 3分)分)(2 2分)分)(1515分)分)系系统统运运行行系统运行系统运行功能、性能功能、性能系统结构系统结构总体设计总体设计合理性合理性用户界面用户界面操作简便、操作简便、帮助信息帮助信息有无创新有无创新系统特
41、色系统特色总体总体(1010分)分)(4 4分)分)(4 4分)分)(2分)分)(20分)分)其其他他个人工作量个人工作量验收操作验收操作独立分析解独立分析解决问题能力决问题能力 团结协作团结协作精精 神神爱护公物爱护公物遵守纪律遵守纪律 总体总体(2 2分)分)(2 2分)分)(0.50.5分)分) (0.50.5分)分)(5(5分分) )8.3.6 8.3.6 综合测试策略综合测试策略 软件测试是保证软件可靠性的主要手段,也是软件开软件测试是保证软件可靠性的主要手段,也是软件开发过程中最艰巨、最繁杂的任务。发过程中最艰巨、最繁杂的任务。 软件测试方案是测试阶段的关键技术问题,基本目软件测试
42、方案是测试阶段的关键技术问题,基本目标是选择最少量的高效测试用例,从而尽可能多地发现标是选择最少量的高效测试用例,从而尽可能多地发现软件中的问题。因此,无论哪一个测试阶段,都应该采软件中的问题。因此,无论哪一个测试阶段,都应该采用综合测试策略,才能够实现测试的目标。用综合测试策略,才能够实现测试的目标。 验收测试验收测试(Acceptance Testing),是以用户为主的是以用户为主的测试,测试过程、方法和测试内容与系统测试基本相同。测试,测试过程、方法和测试内容与系统测试基本相同。有时也将验收测试与系统测试合二为一,此时,参有时也将验收测试与系统测试合二为一,此时,参加测试的人员最好包括
43、:有经验的系统测试专家,用户加测试的人员最好包括:有经验的系统测试专家,用户代表,软件开发人员及代表,软件开发人员及QA(质量保证)人员也应参加。(质量保证)人员也应参加。8.4 8.4 面向对象的测试面向对象的测试 面向对象的测试,既要使用许多传统的成熟面向对象的测试,既要使用许多传统的成熟的软件测试方法和技术,也有其不同的特点;主的软件测试方法和技术,也有其不同的特点;主要反映在测试对象和内容的不同。要反映在测试对象和内容的不同。 ,主要测试的对象是程序代码。主要测试的对象是程序代码。8.4.1 8.4.1 面向对象测试的特点面向对象测试的特点 8.4.2 8.4.2 面向对象测试类型面向
44、对象测试类型采用正式技术评审的方法,检采用正式技术评审的方法,检查分析与设计模型的正确性、完整查分析与设计模型的正确性、完整性和一致性。性和一致性。模型测试方法包括:模型测试方法包括: 用例场景测试;用例场景测试; 系统原型走查;系统原型走查; 需求模型一致性检查需求模型一致性检查; 分析模型的检查和走查。分析模型的检查和走查。8.4.2 8.4.2 面向对象测试类型面向对象测试类型类测试即传统测试中的单类测试即传统测试中的单元测试,即验证类的实现与类元测试,即验证类的实现与类的规约是否一致的活动。的规约是否一致的活动。完整的类测试包括:完整的类测试包括: 类属性的测试类属性的测试 类操作的测
45、试类操作的测试 可能状态下的对象测试可能状态下的对象测试 注意:注意:不能不能“孤立孤立”进行测试进行测试,操作测试应该包括其可能被调用操作测试应该包括其可能被调用的各种情况。的各种情况。8.4.2 8.4.2 面向对象测试类型面向对象测试类型交互测试用于代替传统测交互测试用于代替传统测试方法中的集成测试。试方法中的集成测试。将类进行联合测试,以将类进行联合测试,以确定它们能否在一起共同确定它们能否在一起共同工作。工作。交互测试的方法有:交互测试的方法有: 用例或基于场景的测试用例或基于场景的测试 线程测试线程测试 对象的测试对象的测试8.4.2 8.4.2 面向对象测试类型面向对象测试类型测
46、试系统或独立子系统,测试系统或独立子系统,确保系统无明显故障,并满确保系统无明显故障,并满足用户需求。足用户需求。 系统测试包括:系统测试包括: 功能测试功能测试 压力测试压力测试 安全测试安全测试 兼容性测试兼容性测试 安装测试安装测试 恢复测试恢复测试8.4.2 8.4.2 面向对象测试类型面向对象测试类型 验收测试:交付用户验收测试:交付用户前的系统测试。前的系统测试。 发布测试:为了确保发布测试:为了确保系统安装软件包能够正常系统安装软件包能够正常交付使用。交付使用。8.4.3 8.4.3 分析模型测试分析模型测试错误地理解了用户需求的项目等问错误地理解了用户需求的项目等问题,避免对于
47、成本和资源的消耗。题,避免对于成本和资源的消耗。 在软件开发过程模型中,需求、设计和编码总是有一定的在软件开发过程模型中,需求、设计和编码总是有一定的时序特性。而且,需求模型、设计模型和实现代码之间还具备时序特性。而且,需求模型、设计模型和实现代码之间还具备解释特性。解释特性。用户需求是用户对待实现的系统的要求,通常以一种非正用户需求是用户对待实现的系统的要求,通常以一种非正规的形式给出,具有一定的模糊性。这种模糊性带入设计甚至规的形式给出,具有一定的模糊性。这种模糊性带入设计甚至代码中,将可能引发几倍甚至几十倍的错误,这必将极大地消代码中,将可能引发几倍甚至几十倍的错误,这必将极大地消耗系统
48、的资源和成本。耗系统的资源和成本。 测试实际上也是一个项目。测试实际上也是一个项目。 测试也有需求、设计和实现,并且测试本身也会有测试测试也有需求、设计和实现,并且测试本身也会有测试( (测测试中的测试试中的测试) )。 测试作为项目开发活动中的一部分,在时间上应该有明确测试作为项目开发活动中的一部分,在时间上应该有明确的要求,测试计划对于测试来说也是至关重要的。的要求,测试计划对于测试来说也是至关重要的。 UML分析模型的每个模式,从严格意义上说都应该经过测分析模型的每个模式,从严格意义上说都应该经过测试。实际上,通常对用例模型、类对象模型以及用例中典型场试。实际上,通常对用例模型、类对象模
49、型以及用例中典型场景进行测试。景进行测试。二、测试过程二、测试过程 单个用例测试采取典型应用场景的测试方法,用例单个用例测试采取典型应用场景的测试方法,用例模型的测试相当于系统测试,测试的主要目标是用例模模型的测试相当于系统测试,测试的主要目标是用例模型对于用户需求的可跟踪性。型对于用户需求的可跟踪性。 以系统的用户为主要的出发点设计测试用例,通过以系统的用户为主要的出发点设计测试用例,通过模拟某个系统用户的行为来测试整个系统,对于该用户模拟某个系统用户的行为来测试整个系统,对于该用户的服务提供情况,从而检查系统功能的完整性,用户需的服务提供情况,从而检查系统功能的完整性,用户需求可跟踪性等情
50、况。求可跟踪性等情况。 用例模型的测试从系统用户的角度测试系统的服务,用例模型的测试从系统用户的角度测试系统的服务,并不关心每个测试用例所实现的功能如何,所以应该是并不关心每个测试用例所实现的功能如何,所以应该是黑盒测试。黑盒测试。三、三、 用例模型的测试用例模型的测试 ( (Manager) )、( (Shipper) ) ( (Toll collector) )、( (Customer) ) ( (Creditcard) ) 角色要求系统提供的功能有哪些?系统在提供这些功角色要求系统提供的功能有哪些?系统在提供这些功能的时候该角色需要做什么?能的时候该角色需要做什么? 角色需要创建、阅读、
51、销毁或存储系统的哪些信息?角色需要创建、阅读、销毁或存储系统的哪些信息? 系统中的哪些事件需要通知该角色?系统中的哪些事件需要通知该角色? (2)管理者需要阅读创建、销毁、更新或者存储系管理者需要阅读创建、销毁、更新或者存储系统哪些信息?统哪些信息?答:信息包括:订单、职员答:信息包括:订单、职员( (仓库人员、收费人员仓库人员、收费人员等等) )信息、顾客信息、物品条目及价格信息、仓库信息信息、顾客信息、物品条目及价格信息、仓库信息和税务信息和税务信息。(3)系统中的事件一定要告诉管理者吗?系统中的事件一定要告诉管理者吗?答:是。这些事件包括:仓库有关物品短缺以致无答:是。这些事件包括:仓库
52、有关物品短缺以致无法满足某订单;订单数据出现错误;顾客超过期限未法满足某订单;订单数据出现错误;顾客超过期限未付款。付款。可见,管理者要使用系统的可见,管理者要使用系统的10十个功能,因此至少十个功能,因此至少可以设计出可以设计出10个测试用例。个测试用例。 以第三条功能以第三条功能为例,说明用例的选择。为例,说明用例的选择。 假设订货中心共有三个仓库,管理者要决定应该选择哪个假设订货中心共有三个仓库,管理者要决定应该选择哪个仓库处理订单。仓库处理订单。 (1)(1)首先仓库必须能够满足订单上的货物要求;首先仓库必须能够满足订单上的货物要求; (2)(2)选择地理位置与发货点较近的仓库发货;选
53、择地理位置与发货点较近的仓库发货; (3)(3)信誉满意度越高的客户就越应该以较高的服务质量来回报。信誉满意度越高的客户就越应该以较高的服务质量来回报。 结合考虑上面三个因素,以最少的成本取得最好的收益,三结合考虑上面三个因素,以最少的成本取得最好的收益,三个订单信息如下:个订单信息如下:订单号订单号送货地点送货地点货物名称及数量货物名称及数量客户信誉客户信誉订单订单1 1北城某集团公司北城某集团公司G1(200)G1(200), G5(100)G5(100), G10(40)G10(40)9595订单订单2 2东城某街道东城某街道 G5(10)G5(10), G6(5)G6(5)8080订单
54、订单3 3北城某街道北城某街道 G4(10)G4(10)8585仓库名称仓库名称仓库位置仓库位置存货品名及数量存货品名及数量订单处理订单处理客户信誉度客户信誉度A A东城东城G1(200)G1(200), G5(100)G5(100), G6(1000)G6(1000), G10(70)G10(70), G11(90)G11(90)8585B B西城西城G1(1000)G1(1000), G2(100)G2(100), G5(550)G5(550), G8(150)G8(150), G10(980)G10(980)9595C C北城北城G1(220)G1(220), G4(300)G4(300
55、), G5(350)G5(350), G7(400)G7(400), G10(700)G10(700)8080订单号订单号送货地点送货地点货物名称及数量货物名称及数量客户信誉客户信誉订单订单1 1北城某集团公司北城某集团公司G1(200)G1(200), G5(100)G5(100), G10(40)G10(40)9595订单订单2 2东城某街道东城某街道 G5(10)G5(10), G6(5)G6(5)8080订单订单3 3北城某街道北城某街道 G4(10)G4(10)8585 8.4.4 8.4.4 类的测试类的测试 8.4.4 8.4.4 类的测试类的测试datedd:Daymm:Mon
56、thyy:YersDate(pDay:integer,pMonth:integer,pYers:integer)decrease(argname)printDate()calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Integer)decrease()DayMonthYers图8.16 calendarUnit类的继承关系calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Integer)decrease():Boo
57、leanDaymm:MonthDay(pDay:integer, pMonth:Month)setDay(pDay:integer, pMonth:Month)getDay ():integerdecrease( ):BooleanYersYear(pYear: Integer)getYear():Intgerdecrease():BooleanisLeap():BooleanMonthyy:Yearsizeindex:integer=31,28,31,30,31,30,3131,30,31,30,31Month(pMonth:integer,pYear:Year)get(Month():in
58、tegergetMonthSize():Integerdecrease():Boolean例如:对例如:对datedate类中的类中的decreasedecrease方法进行测试方法进行测试, ,在设计测试用例时,在设计测试用例时,采用等价分类法。划分等价类时要考虑边界及闰年等情况。采用等价分类法。划分等价类时要考虑边界及闰年等情况。用例用例ID月月日日年年预期结果预期结果171919981998年年7月月18日日291920042004年年9月月18日日331920002000年年3月月18日日47119981998年年6月月30日日59120042004年年8月月31日日631199819
59、98年年2月月28日日73120042004年年2月月29日日81119981997年年12月月31日日91120042003年年12月月31日日101120001999年年12月月31日日11701998无效输入无效输入127322004无效输入无效输入 类模型是分析模型中的核心,它抽象出了问题域中的对象和类模型是分析模型中的核心,它抽象出了问题域中的对象和实体,以及它们在问题域中的职责。实体,以及它们在问题域中的职责。 类图实际上由类和类之间的关系组成,评审会的检查单可从类图实际上由类和类之间的关系组成,评审会的检查单可从以下两个方面制定。以下两个方面制定。8.4.5 类模型的测试 (1)(1)该类在问题域中对应的实体该类在问题域中对应的实体( (或对象或对象) )是什么?是什么? (2)(2)履行什么职责?履行什么职责? (3)(3)在类图中被赋予了哪些职责?在类图中被赋予了哪些职责? (4)(4)该类在问题域中的职责和在类图中的职责能匹配吗?该类在问题域中的职责和在类图中的职责能匹配吗? (5)(5)该类的每个数据属性都是问题域所关心的吗?该类的每个数据属性都是问题域所关心的吗? (1)(1)这种类关系是反映了问题域本质的关系还是为这种类关系是反映了问题域本质的关系还是为管理类模型而引入的关系?管理类模型而引入的关系?( (如果类之间的关系并非如果类之间的关系并非反映问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国石化校园招聘超1万人高频重点提升(共500题)附带答案详解
- 2025中国电信股份限公司保山分公司(保山电信)招聘16人(云南)高频重点提升(共500题)附带答案详解
- 2025中国电信国际限公司校园招聘高频重点提升(共500题)附带答案详解
- 2025中国储备粮管理集团限公司招聘700人高频重点提升(共500题)附带答案详解
- 2024中央国家机关办公耗材统一采购合同样本3篇
- 2024年知识产权保护担保协议3篇
- 2025下半年贵州省六盘水市事业单位及国企业招聘应征入伍大学毕业生164人高频重点提升(共500题)附带答案详解
- 2025下半年湖南岳阳市城市建设投资集团限公司招聘15人高频重点提升(共500题)附带答案详解
- 2025下半年浙江温州市瓯海区事业单位招聘工作人员23人高频重点提升(共500题)附带答案详解
- 2025下半年四川绵阳平武县招聘事业单位专业技术人员6人历年高频重点提升(共500题)附带答案详解
- 中建施工电梯安拆专项施工方案
- 湖北省武汉市青山区2022-2023学年五年级上学期数学期末试卷(含答案)
- 《一年级乐考方案》
- 客运公司企业年度安全培训计划
- 安全行车知识培训
- 浙江省杭州市2023-2024学年高一上学期期末考试物理试题(含答案)5
- 《入侵检测与防御原理及实践(微课版)》全套教学课件
- 2024年物业管理师(中级四级)考试题库大全-下(判断、简答题)
- 小学生心理健康讲座5
- 宗教签约合同模板
- 员工三级安全培训试题带答案(达标题)
评论
0/150
提交评论