收藏 分享(赏)

ch14_软件测试_v2.0.ppt

上传人:dzzj200808 文档编号:4052293 上传时间:2018-12-06 格式:PPT 页数:134 大小:823.50KB
下载 相关 举报
ch14_软件测试_v2.0.ppt_第1页
第1页 / 共134页
ch14_软件测试_v2.0.ppt_第2页
第2页 / 共134页
ch14_软件测试_v2.0.ppt_第3页
第3页 / 共134页
ch14_软件测试_v2.0.ppt_第4页
第4页 / 共134页
ch14_软件测试_v2.0.ppt_第5页
第5页 / 共134页
点击查看更多>>
资源描述

1、安徽工程大学计算机与信息学院,1,2018/12/6,软件工程 第十四章 软件测试,安徽工程大学计算机与信息学院,2,2018/12/6,NEWS,安徽工程大学计算机与信息学院,3,2018/12/6,软件测试工程师职业具有以下的特点: 工作起点高,发展空间大 职业寿命长,越老越吃香 工作更稳定,不用频繁“跳” 性别无偏好,没有就业歧视,安徽工程大学计算机与信息学院,4,2018/12/6,What 什么是软件测试?软件测试?程序测试? Why为什么软件测试对于软件质量保证如此重要? How怎样进行软件测试?软件测试有哪些常用技术和工具 When何时进行软件测试? Who谁来做软件测试?,安徽

2、工程大学计算机与信息学院,5,2018/12/6,14.1 基本概念,1 What ,how ,who.什么是软件测试?何时进行软件测试?谁来做软件测试?2.软件测试的目的和原则3.软件测试的对象4.测试阶段的信息流程,14.1 基本概念,安徽工程大学计算机与信息学院,6,2018/12/6,1.What 什么是软件测试?,软件测试是为了发现程序中的错误。软件的测试过程也是程序的运行过程,错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。 这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。软件工程思想,14.

3、1 基本概念,安徽工程大学计算机与信息学院,7,2018/12/6,1.什么是软件测试?,定义:软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。测试用例(test case):为测试设计的数据,即输入数据及其预期的输出结果,14.1 基本概念,安徽工程大学计算机与信息学院,8,2018/12/6,1.When 何时进行软件测试?,软件测试在软件生存期中横跨两个阶段: 通常在编写出一个模块之后就对它做必要的测试(称为单元测试)。编码与单元测试属于软件生存期中的同一个阶段。在结束这个阶段之后,对软件系统还要进行各种

4、综合测试,这是软件生存期的另一个独立的阶段,即测试阶段。,14.1 基本概念,安徽工程大学计算机与信息学院,9,2018/12/6,1.Who谁来做软件测试?,测试需要开发人员参与吗? 测试需要独立的测试小组吗? 测试需要用户参与吗? 多数场合,设计者与测试者共同完成单元测试任务;专门机构负责软件产品的综合测试。有时设计人员也加入这个机构。,14.1 基本概念,安徽工程大学计算机与信息学院,10,2018/12/6,1.Who谁来做软件测试? Microsoft公司的经验教训,1.在80年代初期,Microsoft公司的许多软件产品出现了“Bug”。 2Microsoft公司的经理们发觉很有必

5、要引进内部测试与质量控制方法。但是 3.在1984年推出Mac机的Multiplan(电子表格软件)之前,Microsoft曾特地请Arthur Anderson咨询公司进行测试,但是 4痛定思痛后,Microsoft公司的经理们得出一个结论:成立独立的测试部门 5但是有了独立的测试小组后,并不等于万事大吉了。Microsoft公司历史上第二次大灾难降临了,14.1 基本概念,安徽工程大学计算机与信息学院,11,2018/12/6,1.Who谁来做软件测试? Microsoft公司的经验教训,原定于1986年月发行的Mac机的Word 3.0,千呼万唤方于1987年2月问世。这套软件竟然有70

6、0多处错误,有的错误可以破坏数据甚至摧毁程序。一下子就使Microsoft名声扫地。公司不得不为用户免费提供升级版本,费用超过了100万美元。,14.1 基本概念,安徽工程大学计算机与信息学院,12,2018/12/6,1.Who谁来做软件测试? Microsoft公司的经验教训,从Microsoft公司的教训中可知,公司内部对产品的测试(称为测试),需要开发人员与独立的测试小组共同参与. 开发人员应该执行“白盒”测试,即测试源程序的逻辑结构以及实现细节(“白盒”是指看得见程序的内部结构)。而独立测试小组应该执行“黑盒”测试,,14.1 基本概念,安徽工程大学计算机与信息学院,13,2018/

7、12/6,2.软件测试的目的和原则,两种完全不同的测试目的用户角度: 普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。 开发者的角度 :希望测试成为表明软件产品中不存在错误的过程,验证产品已正确地实现了用户的要求,确立人们对软件质量的信心。,14.1 基本概念,安徽工程大学计算机与信息学院,14,2018/12/6,Myers软件测试目的观,测试是程序的执行过程,目的是在于发现错误; 一个好的测试用例在于能够发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。,14.1 基本概念,安徽工程大学计算机与信息学院,15,2018/12/6,软件的测试原则

8、,1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 2)测试用例应该由测试输入数据和与之对应的预期输出结果这两部分组成。 3)程序员应该避免检查自己的程序。 4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 5)充分注意测试中的群集现象。 6)严格执行测试计划,排除测试的随意性。 7)应当对每一条测试结果做全面检查,14.1 基本概念,安徽工程大学计算机与信息学院,16,2018/12/6,3.软件测试的对象,软件测试并不等于程序测试! 软件测试应该贯穿于软件定义和开发的整个期间。因此,需求分析、概要设计、详细设计以及程序编码等各个阶段得到的文档,包括需求规格说

9、明、概要设计规格说明、详细设计规格说明以及源程序,都应该成为软件测试对象。,14.1 基本概念,安徽工程大学计算机与信息学院,17,2018/12/6,4.测试阶段的信息流程,14.1基本概念,安徽工程大学计算机与信息学院,18,2018/12/6,14.1.3 测试用例和场景的设计,黑盒测试 : 已知产品应该具有的功能,通过测试检验每个功能是否都能正常使用(功能测试) 白盒测试: 已知产品内部工作过程,通过测试检验产品内部动作是否按照产品规格说明的规定正常进行(结构测试)无论采用黑盒法还是白盒法,设计测试用例时总是期望用尽可能少的时间和代价发现尽可能多的错误。,14.1基本概念,安徽工程大学

10、计算机与信息学院,19,2018/12/6,14.1.4 软件测试的步骤,单元测试(Unit Testing)模块测试 综合测试(Integrated Testing)集成测试, 组装测试,联合测试 确认测试(Validation Testing)有效性测试 系统测试(System Testing),14.1基本概念,安徽工程大学计算机与信息学院,20,2018/12/6,测试过程是依相反顺序安排的自底向上,逐步集成的过程。,返,安徽工程大学计算机与信息学院,21,2018/12/6,14.2 软件测试技术,两种常用的测试方法黑盒测试白盒测试 测试用例设计,14.2 软件测试技术,安徽工程大学

11、计算机与信息学院,22,2018/12/6,测试的方法与技术,安徽工程大学计算机与信息学院,23,2018/12/6,动态白盒测试 带上X光眼镜测试,安徽工程大学计算机与信息学院,24,2018/12/6,14.2.1 白盒测试,白盒测试应该根据程序的控制结构设计测试用例,原则是: 保证模块中每一独立的路径至少执行一次; 保证所有判断的每一分枝至少执行一次; 保证每一循环都在边界条件和一般条件下至少各执行一次; 验证所有内部数据结构的有效性。,14.2软件测试技术,安徽工程大学计算机与信息学院,25,2018/12/6,1.基本路径测试,基本路径测试的主要思想是,根据软件过程性描述(详细设计或

12、代码)中的控制流程确定复杂性度量,然后用此度量定义基本路径集合,由此导出一组测试用例,它们能保证每个语句至少执行一次。 为了使用图论的知识和术语,引入流图的概念,流图即把流程图中结构化构件改用一般有向图的表示形式。,14.2软件测试技术,安徽工程大学计算机与信息学院,26,2018/12/6,流图:仅仅描述程序内部的控制流程,完全不表现对数据的具体操作及分支或循环的具体条件。“退化的程序流程图”,将程序流程图中的每一个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧。,安徽工程大学计算机与信息学院,27,2018/12/6,结构化构件在流图中的表示,14.2软件测试技术

13、,安徽工程大学计算机与信息学院,28,2018/12/6,例:流程图,14.2软件测试技术,安徽工程大学计算机与信息学院,29,2018/12/6,例:对应的流图,14.2软件测试技术,安徽工程大学计算机与信息学院,30,2018/12/6,条件处理,若判断中含复合条件,则需增加谓词结点。如OR运算的处理。,14.2软件测试技术,安徽工程大学计算机与信息学院,31,2018/12/6,基本路径测试的思想,基本路径 至少引入一个新语句或者新判断的程序执行通道 测试用例的设计方法 流程图 = 流图 = 基本路径 = 测试用例,14.2软件测试技术,安徽工程大学计算机与信息学院,32,2018/12

14、/6,Step1 根据程序的逻辑结构画出流程图,void Func(int nPosX, int nPosY) while (nPosX 0) int nSum = nPosX + nPosY;if (nSum 1) nPosX-;nPosY-;else if (nSum -1) nPosX -= 2; else nPosX -= 4; / end of while ,14.2软件测试技术,安徽工程大学计算机与信息学院,33,2018/12/6,Step1 根据程序的逻辑结构画出流程图,14.2软件测试技术,安徽工程大学计算机与信息学院,34,2018/12/6,Step2 根据流程图画出流图

15、,14.2软件测试技术,安徽工程大学计算机与信息学院,35,2018/12/6,Step3 确定基本路径的集合,基本路径 流图的Cyclomatic复杂度正好是基本路径的数目 V(G) = E N + 2 V(G) = 11 - 9 + 2 = 4,14.2软件测试技术,安徽工程大学计算机与信息学院,36,2018/12/6,Step3 确定基本路径的集合,1 - 11 1 - 2, 3 - 4, 5 - 10 - 1 - 11 1 - 2, 3 - 6 - 7 - 9 - 10 - 1 - 11 1 - 2, 3 - 6 - 8 - 9 - 10 - 1 - 11,14.2软件测试技术,安徽

16、工程大学计算机与信息学院,37,2018/12/6,Step4 对每条基本路径设计测试用例,对于路径1 11 nPosX 取-1, nPosY取任意值 1 - 2, 3 - 4, 5 - 10 - 1 - 11 nPosX 取1, nPosY取1 对于路径1 - 2, 3 - 6 - 7 - 9 - 10 - 1 11 nPosX 取1, nPosY取-1 1 - 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 nPosX 取1, nPosY取-3,14.2软件测试技术,安徽工程大学计算机与信息学院,38,2018/12/6,2. 控制结构测试,基本路径测试是控制结构测试技术的一

17、种, 还有其他形式的控制结构测试,它们比基本路径测试法覆盖程度更大,进一步提高了白盒测试的质量。,14.2软件测试技术,安徽工程大学计算机与信息学院,39,2018/12/6,补充:逻辑覆盖,语句覆盖判定覆盖条件覆盖,判定条件覆盖条件组合覆盖路径覆盖。,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。,安徽工程大学计算机与信息学院,40,2018/12/6,例,(A1) and (B=0),(A=2) or (X1),X=X/A,X=X+1,T,T,F,F,a,b,d,c,e,安徽工程大学计算机与信息学院,41,2018/12/6,语句覆盖,语句覆盖”是一个比较弱的测试

18、标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。,安徽工程大学计算机与信息学院,42,2018/12/6,判定覆盖,比“语句覆盖”稍强的覆盖标准是“判定覆盖”(或称分支覆盖)标准。含义是:执行足够的测试用例,使得程序中的每一个分支至少都通过一次。,安徽工程大学计算机与信息学院,43,2018/12/6,条件覆盖,“条件覆盖”的含义是:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。上图的程序有四个条件: A1、 B=0、A=2、X1 为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有: A1、A1、B=0、B0 等各种结果出现,以及在b点有:

19、A=2、A2、X1、X1,安徽工程大学计算机与信息学院,44,2018/12/6,14.2.2 黑盒测试,黑盒测试旨在测试软件是否满足功能要求,它主要诊断下列几类错误: (1)不正确或遗漏的功能; (2)界面错误; (3)数据结构或外部数据库访问错误; (4)性能错误; (5)初始化和终止条件错误。,14.2软件测试技术,安徽工程大学计算机与信息学院,45,2018/12/6,黑盒测试法与白盒测试法不能互相替代,相反两者应互为补充,在测试的不同阶段为发现不同类型的错误而灵活选用。,安徽工程大学计算机与信息学院,46,2018/12/6,动态黑盒测试 闭着眼睛测试软件,安徽工程大学计算机与信息学

20、院,47,2018/12/6,黑盒测试的测试用例设计,等价类划分边界值分析 因果图,安徽工程大学计算机与信息学院,48,2018/12/6,1 等价类划分,等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。 等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。,安徽工程大学计算机与信息学院,49,2018/12/6,使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。 划分等价类 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭

21、露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。,安徽工程大学计算机与信息学院,50,2018/12/6,等价类的划分有两种不同的情况: 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。 在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。,安徽工程大学计算机与信息学院,51,2018/12/6,划分等价类等价类的原则。 (1) 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。,安徽工程大学计算机与信息学院,52,2

22、018/12/6,例如,在程序的规格说明中,对输入条件有一句话:“ 项数可以从1到999 ” 则有效等价类是“1项数999” 两个无效等价类是“项数1”或“项 数999”。在数轴上表示成:,安徽工程大学计算机与信息学院,53,2018/12/6,(2) 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为“以字母打头的串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。,安徽工程大学计算机与信息学院,54,2018/12/6,(3) 如果输入条件是一个布尔量,

23、则可以确定一个有效等价类和一个无效等价类。(4) 如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。,安徽工程大学计算机与信息学院,55,2018/12/6,例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。,安徽工程大学计算机与信息学院,56,2018/12/6,(5) 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符

24、合规则)和若干个无效等价类(从不同角度违反规则)。 例如,Pascal语言规定 “一个语句必须以分号;结束”。这时,可以确定一个有效等价类 “以;结束”,若干个无效等价类 “以:结束”、“以,结束”、“以 结束”、“以LF结束”等。,安徽工程大学计算机与信息学院,57,2018/12/6,确立测试用例 在确立了等价类之后,建立等价类表,列出所有划分出的等价类。,安徽工程大学计算机与信息学院,58,2018/12/6,再从划分出的等价类中按以下原则选择测试用例: (1) 为每一个等价类规定一个唯一编号; (2) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有

25、的有效等价类都被覆盖为止; (3) 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。,安徽工程大学计算机与信息学院,59,2018/12/6,用等价类划分法设计测试用例的实例 在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”并且规定:“标识符必须先说明,再使用。” “在同一说明语句中,标识符至少必须有一个。”,安徽工程大学计算机与信息学院,60,2018/12/6,用等价类划分方法,建立输入等价类表:,安徽工程大学计算机与信息学院,61,2018/12/6,下

26、面选取了9个测试用例,它们覆盖了所有的等价类。 VAR x,T1234567:REAL;BEGIN x := 3.414;T1234567 := 2.732;.(1), (2), (4), (8), (9), (12), (14) VAR :REAL; (3) VAR x,:REAL; (5),安徽工程大学计算机与信息学院,62,2018/12/6, VAR T12345678:REAL; (6) VAR T12345:REAL; (7) 多于80个字符 VAR T$:CHAR; (10) VAR GOTO:INTEGER; (11) VAR 2T:REAL; (13) VAR PAR:REA

27、L; (15) BEGIN PAP := SIN (3.14 * 0.8) / 6;,安徽工程大学计算机与信息学院,63,2018/12/6,2 边界值分析,边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。 人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。,安徽工程大学计算机与信息学院,64,2018/12/6,比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。 我们应注意到这三个数值应当满足A0、B0、C0、ABC、ACB、BCA,才能构成三角形。但如果把六个不等式中的任

28、何一个大于号“”错写成大于等于号“”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。,安徽工程大学计算机与信息学院,65,2018/12/6,这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。 使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。,黑盒测试与白盒测试优缺点比较,黑盒测试 白盒测试,优 点,缺 点,性 质,适用于各阶段测试 从产品功能角度测试 容易入手生成测试数 据,可构成测试数据使特定程序部分得到测试 有一定的充分

29、性度量手段 可或较多工具支持,某些代码得不到测试 如果规格说明有误,则无法发现 不易进行充分性测试,不易生成测试数据(通常) 无法对未实现规格说明的部分进行测试 工作量大,通常只用于单元测试,有应用局限,是一种确认技术,回答 “我们在构造一个正确的系统吗?”,是一种验证技术,回答 “我们在正确 地构造一个系统吗?”,安徽工程大学计算机与信息学院,67,2018/12/6,黑盒测试与白盒测试,不论黑盒还是白盒测试都不能 进行穷尽测试, 所以软件测试不可 能发现程序中存在的所有错误, 因 此需精心设计测试方案, 力争尽可 能少的次数,测出尽可能多的错误.,安徽工程大学计算机与信息学院,68,201

30、8/12/6,14.3 软件测试策略,软件测试策略主要考虑,如何把设计测试用例的技术组织成一个系统的、有计划的测试步骤。 从模块测试开始,一级一级向外扩展,直至整个系统测试完毕。 在测试的各个阶段应选择适宜的白盒测试和黑盒测试方法,由软件开发人员和一个独立的测试小组(对大项目而言)共同完成测试任务。 测试策略应包含测试规划、测试用例设计、测试实施和测试结果收集评估等。其中测试规划包括:测试的步骤、工作量、进度和资源等,第十四章 软件测试,安徽工程大学计算机与信息学院,69,2018/12/6,安徽工程大学计算机与信息学院,70,2018/12/6,14.3.1 单元测试,单元测试的对象是软件设

31、计的最小单位模块。 单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。 单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。,14.3软件测试策略,安徽工程大学计算机与信息学院,71,2018/12/6,1. 单元测试任务,单元测试从5个方面对所测的模块进行检查模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义,14.3软件测试策略,安徽工程大学计算机与信息学院,72,2018/12/6,2. 单元测试的步骤,模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去

32、模拟与被测模块相联系的其它模块。驱动模块 (driver) 桩模块 (stub) 存根模块,14.3软件测试策略,安徽工程大学计算机与信息学院,73,2018/12/6,单元测试过程,驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。 若驱动模块和桩模块比较简单,实际开销相对低些。 提高模块的内聚度可简化单元测试,如果每个模块只完成一个功能,所需测试用例数目将显著减少,模块中的错误也更容易发现。,14.3软件测试策略,安徽工程大学计算机与信息学院,74,2018/12/6,单元测试环境,14.3软件测试策略,安徽工程大学计算机与信息学院,75,2018/12/

33、6,14.3.2 综合测试,组装测试 (集成测试、联合测试) 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:,14.3软件测试策略,安徽工程大学计算机与信息学院,76,2018/12/6,在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响; 各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度,安徽工程大学计算机与信息学院,77,2018/12/6,在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,

34、最终构成要求的软件系统。 通常,把模块组装成为系统的方式有两种一次性组装方式增殖式组装方式,14.3软件测试策略,安徽工程大学计算机与信息学院,78,2018/12/6,1. 一次性组装方式,它是一种非增殖式组装方式。也叫做整体拼装。 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。,安徽工程大学计算机与信息学院,79,2018/12/6,安徽工程大学计算机与信息学院,80,2018/12/6,2. 增殖式组装方式,这种组装方式又称渐增式组装 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 在组装的过程中边连接边测试,

35、以发现连接过程中产生的问题 通过增殖逐步组装成为要求的软件系统。,安徽工程大学计算机与信息学院,81,2018/12/6,(1) 自顶向下的增殖方式,这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。,安徽工程大学计算机与信息学院,82,2018/12/6,安徽工程大学计算机与信息学院,83,2018/12/6,安徽工程大学计算机与信息学院,84,2018/12/6,步骤,1) 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际

36、模块替代; 2) 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块; 3)每集成一个模块立即测试一遍; 4)只有每组测试完成后,才着手替换下一个桩模块; 5) 为避免引入新错误,须不断进行回归测试(即全部或部分地重复已做过的测试)。 从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。,14.3软件测试策略,安徽工程大学计算机与信息学院,85,2018/12/6,优缺点,自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。 缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。

37、,14.3软件测试策略,安徽工程大学计算机与信息学院,86,2018/12/6,(2) 自底向上的增殖方式,这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。,安徽工程大学计算机与信息学院,87,2018/12/6,安徽工程大学计算机与信息学院,88,2018/12/6,安徽工程大学计算机与信息学院,89,2018/12/6,自底向上综合测试的步骤,1)把低层模块组织成实现某个子功能的模块群

38、(cluster); 2)开发一个测试用驱动模块,控制测试数据的输入和测试结果的输出; 3)对每个模块群进行测试; 4)删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群;从第一步开始循环执行上述各步骤,直至整个程序构造完毕。,14.3软件测试策略,安徽工程大学计算机与信息学院,90,2018/12/6,优缺点,自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。 它与自顶向下综合测试方法的优缺点正好相反。 因此,在测试软件系统时,应根据软件的特点及工程的进度,选用适当的测试策略,有时混合使用两种策略更为有效,上层模块用自

39、顶向下的方法,下层模块用自底向上的方法。,14.3软件测试策略,安徽工程大学计算机与信息学院,91,2018/12/6,关键模块,在综合测试过程中尤其要注意关键模块,所谓关键模块一般都具有下述一或多个特征: 对应几条需求; 具有高层控制功能; 复杂易出错; 有特殊的性能要求。 关键模块应尽早测试,并反复进行回归测试。 回归测试 全部的或者部分的重复以前做过的测试,软件或环境的修复或更正后的“再测试”,14.3软件测试策略,安徽工程大学计算机与信息学院,92,2018/12/6,3. 综合测试文档,测试说明书(Test Specifications)应给出软件集成的总体规划和某些特殊测试的描述。

40、 综合测试文档将作为软件配置的一部分交给用户。,14.3软件测试策略,安徽工程大学计算机与信息学院,93,2018/12/6,计算机软件产品开发文件编制指南 GB 8567-88 测试计划 主要是指整个程序系统的组装测试和确认测试。本文件的编制是为了提供一个对该软件的测试计划,包括对每项测试活动的内容、进度安排、设计考虑、测试数据的整理方法及评价准则。 测试分析报告 测试分析报告的编写是为了把组装测试和确认测试的结果、发现及分析写成文件加以记载。,安徽工程大学计算机与信息学院,94,2018/12/6,14.3.3 确认测试(有效性测试),通过综合测试之后,软件已完全组装起来,接口方面的错误也

41、已排除,软件测试的最后一步确认测试即可开始。 确认测试应检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。,14.3软件测试策略,安徽工程大学计算机与信息学院,95,2018/12/6,1. 确认测试标准,实现软件确认要通过一系列黑盒测试。 确认测试同样需要制订测试计划和过程,测试计划应规定测试的种类和测试进度,测试过程则定义一些特殊的测试用例,旨在说明软件与需求是否一致。 无论是计划还是过程,都应该着重考虑软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确,人机界面和其他方面(例如,可移植性、兼容性、错误恢复能力和可维护性等等)是否令用户满意。,14.3软件测试

42、策略,安徽工程大学计算机与信息学院,96,2018/12/6,2. 配置复审,确认测试的另一个重要环节是配置复审。复审的目的在于保证软件配置齐全、分类有序,并且包括软件维护所必需的细节。,14.3软件测试策略,安徽工程大学计算机与信息学院,97,2018/12/6,3. 、测试,软件是否真正满足最终用户的要求应由用户进行一系列“验收测试”。 验收测试既可以是非正式的测试,也可以是有计划、有系统的测试。 有时,验收测试长达数周甚至数月,不断暴露错误,导致开发延期。 一个软件产品,将有众多用户,不可能由每个用户验收,此时多采用称为、测试的过程,以期发现那些似乎只有最终用户才能发现的问题。,14.3

43、软件测试策略,安徽工程大学计算机与信息学院,98,2018/12/6,、测试,测试是指软件开发公司组织内部人员模拟各类用户行为对即将面市的软件产品(称为版本)进行测试,试图发现错误并修正。 测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。 经过测试调整的软件产品称为版本。紧随其后的测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对版本进行改错和完善。,14.3软件测试策略,安徽工程大学计算机与信息学院,99,2018/12/6,14.3.4 系统测试,计算机软件是

44、基于计算机系统的一个重要组成部分,软件开发完毕后应与系统中其他成份集成在一起,此时需要进行一系列系统集成和确认测试。 系统测试不可能仅由软件开发人员完成.,14.3软件测试策略,安徽工程大学计算机与信息学院,100,2018/12/6,1. 恢复测试,恢复测试主要检查系统的容错能力。当系统出错时,能否在指定的时间间隔内修正错误并重新启动系统。,14.3软件测试策略,安徽工程大学计算机与信息学院,101,2018/12/6,2. 安全测试,安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。 理论上讲,只要有足够的时间和资源,没有不可进入的系统。

45、因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。,14.3软件测试策略,安徽工程大学计算机与信息学院,102,2018/12/6,3. 强度测试,强度测试检查程序对异常情况的抵抗能力。 强度测试总是迫使系统在异常的资源配置下运行。 导致间隔中断,系统崩溃的测试用例,14.3软件测试策略,安徽工程大学计算机与信息学院,103,2018/12/6,4. 性能测试,对于那些实时和嵌入式系统,软件部分既使满足功能要求,也未必能够满足性能要求。 当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能。 性能测试有时与强度测试相结合,经常需要其他软、硬件的配

46、套支持。,14.3软件测试策略,安徽工程大学计算机与信息学院,104,2018/12/6,14.3.5 排错(DEBUG),排错与成功的测试形影相随。 测试成功的标志是发现了错误。 根据错误迹象确定错误的原因和准确位置,并加以改正的任务主要依靠排错技术。,14.3软件测试策略,安徽工程大学计算机与信息学院,105,2018/12/6,1. 排错过程,排错过程开始于一个测试用例的执行,若测试结果与期望结果有出入,即出现了错误征兆,排错过程首先要找出错误原因,然后对错误进行修正。 因此排错过程有两种可能,一是找到了错误原因并纠正了错误,另一种可能是错误原因不明,排错人员只得作某种推测,然后再设计测

47、试用例证实这种推测,若一次推测失败,再作第二次推测,直至发现并纠正了错误。,14.3软件测试策略,安徽工程大学计算机与信息学院,106,2018/12/6,排错过程,14.3软件测试策略,安徽工程大学计算机与信息学院,107,2018/12/6,排错过程,排错是一个相当艰苦的过程,究其原因除了开发人员心理方面的障碍外,还因为隐藏在程序中的错误具有一些特殊的性质(PAGE 327) 艺术,14.3软件测试策略,安徽工程大学计算机与信息学院,108,2018/12/6,2. 排错方法,无论采用那种排错方法,目标只有一个,即发现并排除引起错误的原因,这要求排错人员能把直观想象与系统评估很好地结合起来

48、。 常用的排错策略分为三类: 原始类(brute force) 回溯类(backtracking) 排除类(cause eliminations),14.3软件测试策略,安徽工程大学计算机与信息学院,109,2018/12/6,排错方法,每一类方法均可辅以排错工具。 目前,调试编译器、动态调试器(“追踪器”)、测试用例自动生成器、存储器映象及交叉访问示图等一系列工具已广为使用。然而,无论什么工具也替代不了一个开发人员在对完整的设计文档和清晰的源代码进行认真审阅和推敲之后所起的作用。,14.3软件测试策略,安徽工程大学计算机与信息学院,110,2018/12/6,排错方法,修改一处老问题可能引入

49、几处新问题,有时程序越改越乱,但若能做到每次纠错前都扪心自问三个问题,情况将大为改观: 导致这个错误的原因在程序其他部分还可能存在吗? 本次修改可能对程序中相关的逻辑和数据造成什么影响?引起什么问题? 上次遇到的类似问题是如何排除的?,14.3软件测试策略,安徽工程大学计算机与信息学院,111,2018/12/6,14.4基于CASE 工具的软件测试和排错,针对不同语言的单元测试工具JUnit(java)CppUnit(C+)DUnit (Delphi )NUnit(.net)PhpUnit(Php )该测试框架最早来自SmallTalk的SUnit,而最杰出的应用则是由Erich Gamma (设计模式的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报