《软件工程软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程软件测试.ppt(64页珍藏版)》请在优知文库上搜索。
1、软件工程软件工程第第7章章 软件实现软件实现编码与测试编码与测试o 编码n 设计-程序o 编码风格软件存在错误是必然的软件存在错误是必然的o 软件产品存在错误,是必然的软件产品存在错误,是必然的n 软件本身是复杂的、知识密集的逻辑产品软件本身是复杂的、知识密集的逻辑产品n 人类自身能力的局限性人类自身能力的局限性n 软件开发全过程由人来完成,人在工作中难免软件开发全过程由人来完成,人在工作中难免有错误有错误1.软件测试软件测试 定义定义o 为了发现错误而审查文档和执行程序的过程为了发现错误而审查文档和执行程序的过程n 根据软件的规格说明及程序内部结构根据软件的规格说明及程序内部结构n 设计一批
2、测试用例设计一批测试用例n 并利用这些测试用例去运行程序,以发现软件并利用这些测试用例去运行程序,以发现软件错误的过程错误的过程?o 测试是为了表明程序是正确的?o 成功的测试是没有发现错误的测试?o 程序员最熟悉程序所以最好由程序员自己进行测试?经过测试经过测试无错?无错?o 软件测试,查找错误的过程,只能证明错误软件测试,查找错误的过程,只能证明错误的存在,不能证明无错的存在,不能证明无错o 不可能发现所有错误,只能在有限的时间与不可能发现所有错误,只能在有限的时间与经济条件下,尽可能发现错误经济条件下,尽可能发现错误o 软件测试是手段,根本目的是为了纠错软件测试是手段,根本目的是为了纠错
3、软件测试软件测试 目的目的o 以最少的人力、物力和时间投入,尽可能多以最少的人力、物力和时间投入,尽可能多地发现软件中的错误地发现软件中的错误n 测试是为了发现错误而执行程序的过程测试是为了发现错误而执行程序的过程n 一个好的测试用例是很可能找到之前尚未发现一个好的测试用例是很可能找到之前尚未发现的错误的用例的错误的用例n 成功的测试是指发出了之前尚未发现的错误成功的测试是指发出了之前尚未发现的错误软件测试软件测试 原则原则o 追溯到用户需求追溯到用户需求n 不能满足用户需求的错误是严重错误不能满足用户需求的错误是严重错误o 尽早地、不断地尽早地、不断地n 不是一个独立阶段,应贯穿到整个软件开
4、发过程不是一个独立阶段,应贯穿到整个软件开发过程o 由第三方进行测试工作由第三方进行测试工作o 选择测试选择测试o 错误的群集现象,错误的群集现象,80/20法则法则o 从从“小规模小规模”到到“大规模大规模”软件测试软件测试 对象对象o 软件测试贯穿于整个软件开发过程软件测试贯穿于整个软件开发过程o 测试对象包括需求分析与设计与编码等所获测试对象包括需求分析与设计与编码等所获得的一切文档和程序得的一切文档和程序2.软件测试软件测试 方法方法o 静态测试静态测试,不在计算机上实际执行程序,不在计算机上实际执行程序n 人工测试,人工阅读分析评审人工测试,人工阅读分析评审n 计算机辅助静态分析,分
5、析工具计算机辅助静态分析,分析工具n 程序正确性证明程序正确性证明o 动态测试动态测试,机器测试,机器测试n 白盒法白盒法n 黑盒法黑盒法1.设计测试用例2.执行被测程序3.分析执行后的结果并发现错误测试用例测试用例o 定义:为了测试软件而设计的一组数据,包定义:为了测试软件而设计的一组数据,包括输入的数据和预期输出的结果。括输入的数据和预期输出的结果。o 测试用例输入数据测试用例输入数据+预期结果预期结果o 好的测试用例好的测试用例n 最有可能发现最多错误但花费最小时间和最小最有可能发现最多错误但花费最小时间和最小代价的测试用例代价的测试用例白盒法测试白盒法测试o 又称结构测试又称结构测试o
6、 完全了解程序的内部结构和处理过程完全了解程序的内部结构和处理过程o 按照程序内部逻辑结构,设计测试用例按照程序内部逻辑结构,设计测试用例n 逻辑覆盖逻辑覆盖n 循环测试循环测试n 基本路径测试基本路径测试 设设计计测测试试用用例例 黑盒测试法黑盒测试法o 又称功能测试又称功能测试o 根据已知程序的功能和性能,只从程序接口根据已知程序的功能和性能,只从程序接口进行测试进行测试完成规定功能,可操作性完成规定功能,可操作性很好地接收数据,产生正确的结果很好地接收数据,产生正确的结果是否做了不该做的事情是否做了不该做的事情n 等价分类法等价分类法n 边界值分析法边界值分析法n 错误猜测法错误猜测法
7、功能功能: 求二个数中较大者求二个数中较大者 测测试试用用例例 白盒法逻辑覆盖(选择结构)白盒法逻辑覆盖(选择结构)o 语句覆盖语句覆盖n每条语句至少执行一次每条语句至少执行一次o 判定覆盖,分支覆盖判定覆盖,分支覆盖n每个判定至少获得一次真假每个判定至少获得一次真假o 条件覆盖条件覆盖n每个条件获得各种不同的结果每个条件获得各种不同的结果o 判定判定-条件覆盖条件覆盖n每个条件每个条件+每个判定每个判定o 条件组合覆盖条件组合覆盖n条件的各种可能组合条件的各种可能组合A1andB=0X=X/AA=2orX1X=X+1返回入口TTFFsdbaec白盒法逻辑覆盖白盒法逻辑覆盖 用例格式用例格式(
8、A,B,X;X)o 语句覆盖语句覆盖nsabcde(2,0,3;2.5)o 判定覆盖,分支覆盖判定覆盖,分支覆盖nTFTFn(2,0,3;2.5)TTn(1,1,1;1)FFA1andB=0X=X/AA=2orX1X=X+1返回入口TTFFsdbaec白盒法逻辑覆盖白盒法逻辑覆盖 用例格式用例格式(A,B,X;X)o 条件覆盖条件覆盖nA1 A1 X1andB=0X=X/AA=2orX1X=X+1返回入口TTFFsdbaec白盒法逻辑覆盖白盒法逻辑覆盖 用例格式用例格式(A,B,X;X)o 条件组合覆盖条件组合覆盖条件组合:nA1 B=0nA1 B!=0nA=1B=0nA1nA=2 X1nA!
9、=2 X1andB=0X=X/AA=2orX1X=X+1返回入口TTFFsdbaec用例:用例:(2,0,4;3) (2,1,1;2) (1,0,2;3) (1,1,1;1) 语句覆盖语句覆盖 指设计足够的测试用例,使被测试程序中每个语句每个语句至少执行一次。判定覆盖,也称判定覆盖,也称分支覆盖分支覆盖: 指设计足够的测试用例,使得被测程序中每个判定每个判定表达式表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。条件覆盖条件覆盖: 指设计足够的测试用例,使得判定表达式中每个条判定表达式中每个条件的各种可能的值件的各种可能的值至少出现一次。判定判定/条件覆盖条件覆盖 指
10、设计足够的测试用例,使得判定表达式的每个条判定表达式的每个条件的所有可能取值件的所有可能取值至少出现一次,并使每个判定表达式每个判定表达式所有可能的结果所有可能的结果也至少出现一次。条件组合覆盖条件组合覆盖 指设计足够的测试用例,使得每个判定表达式中条每个判定表达式中条件的各种可能的值的组合件的各种可能的值的组合都至少出现一次。路径覆盖路径覆盖 指设计足够的测试用例,覆盖被测程序中所有可能所有可能的路径的路径。逻辑覆盖标准逻辑覆盖标准 举例:下图为一个被测程序流程图,试用条件举例:下图为一个被测程序流程图,试用条件组合覆盖方法为它设计足够的测试用例组合覆盖方法为它设计足够的测试用例2)选择并确
11、定测试用例)选择并确定测试用例测试用例格式:测试用例格式:(x,y)测试用例测试用例 覆盖组合覆盖组合 执行路径执行路径( 1.5 , 9.5 ) abhi( 1 , 2sin1-1 ) acdhi ( 2 , 2sin2-1) acdhi( 3 , sqrt(10) acefhi( 4 , 29 ) acegi1)列出满足条件组合覆)列出满足条件组合覆盖标准的所有情况:盖标准的所有情况:x1, x2 x 1, x1, x 2 x 1, x 2x3x 3x 0) int nSum = nPosX + nPosY;if (nSum 1) nPosX-; nPosY-; else if (nSum
12、 0)AND(B0)THEN3:X=A+BELSE4:X=A-B5:END6:IF(CA)OR(D0)AND(B0)X=A+BX=A-B(CA)OR(D0X=A+BX=A-BY=C-DY=C+DPRINT(X,Y)B0CADB13576421098复杂度13-10+2=5黑盒测试法黑盒测试法o 又称功能测试又称功能测试o 只从程序接口进行测试只从程序接口进行测试n 检查程序是否完成所规定的功能检查程序是否完成所规定的功能很好地接收数据,产生正确的结果很好地接收数据,产生正确的结果n 验证程序是否做了不该做的事情验证程序是否做了不该做的事情模块外部信息的完整性模块外部信息的完整性n 输入全部有效
13、数据和全部无效数据?输入全部有效数据和全部无效数据?o 等价分类法等价分类法o 边界值分析法边界值分析法o 错误猜测法错误猜测法 功能功能: 求二个数中较大者求二个数中较大者 测测试试用用例例 黑盒测试法黑盒测试法-等价分类法等价分类法o 思想思想n 把程序所有可能的输入数据按输入条件划分为把程序所有可能的输入数据按输入条件划分为若干个等价类若干个等价类n 每个类中一个典型值在测试中的作用等价于这每个类中一个典型值在测试中的作用等价于这一类中的其他值一类中的其他值n 然后为每一个等价类设计一个测试用例然后为每一个等价类设计一个测试用例o 优点优点n 减少测试次数,不丢失发现错误的机会减少测试次
14、数,不丢失发现错误的机会o 方法:等价类划分、选择测试用例方法:等价类划分、选择测试用例等价分类法等价分类法-等价类划分等价类划分1. 输入条件为一范围输入条件为一范围划分出三个等价类:划分出三个等价类:1有效有效(在范围内在范围内),2无效(大于输入无效(大于输入最大值,小于输入最少值)最大值,小于输入最少值)2. 输入条件为一组值输入条件为一组值(集合集合)划分为划分为2个等价类个等价类: 1有效有效(在集合内在集合内),1无效无效(在集合外在集合外)3. 输入条件为一个布尔量输入条件为一个布尔量划分二个等价类,划分二个等价类,1有效有效(布尔量的是布尔量的是),1无效无效(布尔量的非布尔
15、量的非)4. 输入条件是规则输入条件是规则划分为若干,划分为若干,1有效(符合规则),若干无效(不同角度违有效(符合规则),若干无效(不同角度违反规则)反规则)5. 已划分的等价类在程序中的处理不同,则将此等价已划分的等价类在程序中的处理不同,则将此等价类划分为更小的等价类类划分为更小的等价类等价分类法等价分类法选择测试用例选择测试用例o 有效有效n 设计一个新的测试用例,尽可能多地覆盖还末设计一个新的测试用例,尽可能多地覆盖还末被覆盖的有效等价类被覆盖的有效等价类n 重复,直到所有有效等价类都被覆盖重复,直到所有有效等价类都被覆盖o 无效无效n 设计一个析的测试用例,只覆盖一个还末被覆设计一
16、个析的测试用例,只覆盖一个还末被覆盖的无效等价类盖的无效等价类n 重复,直到所有无效等价类都被覆盖重复,直到所有无效等价类都被覆盖例:黑盒法设计测试用例测试内容有效等价类 无效等价类输入个数输入个数输入三个输入三个少于三个少于三个数数数字数字其它字符其它字符整数整数整数整数非整数非整数三角形三角形构成三角形构成三角形 不构成不构成任意任意等腰等腰等边等边为一个程序设计一个测试用例,该程序的功能是读入三角形的三条边长(a,b,c),三条边都取整数,判断并输出由这三条边能否构成三角形,而且识别输出该三角形是什么三角形的信息(等边、等腰、任意)。黑盒测试法黑盒测试法-边界值分析法边界值分析法o 软件常在它的边界上出错,边界值和邻近数据都软件常在它的边界上出错,边界值和邻近数据都属于最有效区属于最有效区o 在边界上选到测试用例,用得最多的方法之一在边界上选到测试用例,用得最多的方法之一n 输入条件是一范围输入条件是一范围(a,b)o a,b以及紧挨以及紧挨a,b左右的值应作为测试用例左右的值应作为测试用例n 输入条件规定了个数输入条件规定了个数o 选择最大、最小,次大和次小个数作为测试用例选择