210 likes | 442 Vues
第 27 讲 系统测试的 方法和策略. 27 系统测试的方法和策略. 本节内容提要: 27.1 系统测试的方法 27.2 系统测试的策略. 个人复查. 人工测试. 走查. 会审. 软件测试. 黑盒测试. 机器测试. 白盒测试. 27.1 系统测试的方法 (1). 图 软件测试主要方法. 27.1 系统测试的方法 (2). 27.1 . 1 人工测试 人工测试又称代码复审,主要有下列三种方法: ( 1 )个人复查:
E N D
27 系统测试的方法和策略 • 本节内容提要: • 27.1 系统测试的方法 • 27.2 系统测试的策略 《管理信息系统》
个人复查 人工测试 走查 会审 软件测试 黑盒测试 机器测试 白盒测试 27.1 系统测试的方法(1) • 图 软件测试主要方法 《管理信息系统》
27.1 系统测试的方法(2) • 27.1.1 人工测试 • 人工测试又称代码复审,主要有下列三种方法: • (1)个人复查: • 指源程序编完以后,直接由程序员自己进行检查。由于心理上对自己程序的偏爱,因此有些习惯性的错误自己不易发现,如果对功能理解有误,自己也不易纠正。所以这是针对小规模程序常用的方法,效率不很高。 《管理信息系统》
27.1 系统测试的方法(3) • (2)走查: • 一般由3~5人组成测试小组,测试小组成员应是从未介入过该软件的设计工作的有经验的程序设计人员。测试在预先阅读过该软件资料和源程序的前提下,由测试人员扮演计算机的角色,用人工方法将测试数据输入被测程序,并在纸上跟踪监视程序的执行情况,让人代替机器沿着程序的逻辑走一遍,以发现程序中的错误。由于人工运行很慢,因此走查只能使用少量简单的测试用例,实际上走查只是个手段,随着“走”的进程中不断从程序中发现错误。 《管理信息系统》
27.1 系统测试的方法(4) • (3)会审: • 测试小组的成员与走查相似,要求测试成员在会审前仔细阅读软件有关资料,根据错误类型清单(从以往经验看一般容易发生的错误),填写检测表,列出根据错误类型要提问的问题。会审时,由程序作者直接逐个阅读和讲解程序,测试人员逐个审查、提问,讨论可能产生的错误。会审对程序的功能、结构及风格等都要进行审定。 《管理信息系统》
27.1 系统测试的方法(5) • 27.1.2 机器测试 • 通过在计算机上直接运行被测程序来发现程序中的错误。机器测试有黑盒测试和白盒测试两种方法。 • (1)黑盒测试:也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性上测试是否满足设定的功能。 • (2)白盒测试:也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。 《管理信息系统》
27.2 系统测试的策略(1) • 软件测试工作分模块测试(单调),子系统测试(分调),系统测试(联调),如图所示。软件测试成功后,还有用户的验收测试。到目前为此,人们还无法证明一个大型复杂软件的正确性,只能依靠一定的测试手段来说明该软件在某些特定条件下没有发现错误。 《管理信息系统》
Y Y Y 通过否? 系统测试 通过否? 子系统测试 通过否? 模块测试 N N N 修改 修改 修改 27.2 系统测试的策略(2) • 图 系统测试过程 《管理信息系统》
27.2 系统测试的策略(3) • 1.模块测试(单调) • 模块测试是独立地对单个模块进行测试,是整个系统测试的基础。模块测试比系统测试更容易发现错误之所在,也能更有效地进行排错处理。模块测试前必须先通过编译检查并改正所有语法错误。 • 模块测试主要从下述五个方面去检验模块: • (1)模块接口:测试信息能否正确无误地流入、流出模块。 • (2)模块内部之数据结构:测试内部数据的完整性,包括内容、形式及相互关系。 • (3)逻辑路径:测试应覆盖模块中关键的逻辑路径。 《管理信息系统》
27.2 系统测试的策略(4) • (4)出错处理:测试模块对错误及产生错误的条件的预见能力,并且检测其出错处理是否适当。 • (5)边界条件:软件往往容易在边界条件上发生问题,如循环的第一次和最后一次执行,判断选择的边界值等。 • 模块测试方法还是分人工态测试和机器测试两种。 • 对于机器测试的黑盒法和白盒法有以下几个具体典型方法。 《管理信息系统》
27.2 系统测试的策略(5) • (1)等价分类法 • 根据选择测试思想,在所有可能的输入数据中取一个有限的子集,作为测试用数据。通常在黑盒测试中将模块的输入域划分成有效等价类(模块中符合规范的输入)和无效等价类(模块中非法的输入)两种。例如,某模块的合理输入是0一100,则大于等于0且小于等于100的数据属于有效等价数据;小于0或大于100的数据为无效等价类,测试数据可以从这两个等价类中抽取。 《管理信息系统》
27.2 系统测试的策略(6) • (2)边缘分析法 • 这也是一个黑盒测试法。在编写程序时,人们往往只注意正常情况,忽视了边界条件下的程序运行状态。因此,在测试过程中边缘值常被用来作为测试数据。如模块的有效值是0一100,则可以取-0.1,0.1,99.9,100.1作为测试数据。 • (3)逻辑覆盖法 • 用白箱法测试模块时,要执行程序中的每一条路径,当程序中有循环存在时,要测试程序中的每一条路径是不可能的。而用逻辑覆盖法测试模块,只要模块中的每一个分支方向都至少测试一次即可。对模块中的循环语句,只需测试循环语句是否执行,而不必去测试每次循环情况。 《管理信息系统》
27.2 系统测试的策略(7) • 逻辑覆盖测试常用的方法有: • l)判断覆盖 即让程序中每个判断语句至少获得一次“真”值和“假”值。以图为例,如果一次两组测试数据,使它们能够通过路径ace和abd,或者通过路径acd和abe,就可以达到“判断覆盖”的标准。为 • 2)条件覆盖 通常一个判断语句中往往含多个条件,能使这些条件的各种可能取值出现的测试方法称之为条件覆盖,它比判断覆盖在测错能力上强些。 《管理信息系统》
a Y A>1 And B=0 c X=X/A b N Y A=2 OR X>1 e X=X+1 d N 27.2 系统测试的策略(8) • 如图所示,它共有四个条件: 图 测试用例设计的参考例子 《管理信息系统》
27.2 系统测试的策略(9) • A>1,B=0,A=2,X>1 • 所以要选择测试数据能使在a点有: • A>1,A<=1,B=0,B<>0四种情况出现,可选择以下两组测试用例: • ①A=1,B=0,X=3(沿路径abe) • ②A=2,B=1,X=1(沿路径abe) • 3)判断/条件覆盖 一般讲,条件覆盖比判断覆盖所取得的测试结果要好些。但有时并非如此,即条件覆盖的测试用例未能使判断语句中的“真”、“假”情况都出现。对此,可采用判断/条件覆盖方法。它所采用的测试数据使每个条件都取得各种可能值,并使每个判断也取得“真”和“假”。例如,下面的两个测试用例就能满足图6-8的判断/条件覆盖。 • ①A=2,B=0,X=4(沿路径ace) • ②A=l,B=1,X=1(沿路径abd) 《管理信息系统》
27.2 系统测试的策略(10) • 4)条件组合覆盖 上面的判断/条件覆盖看起来似乎能使每个条件取得所有可能的结果,但实际上并不一定能做到这一步。因为在多条件判断中,逻辑运算符AND或OR在某些条件下会屏蔽其它条件。例如在(A.OR.B)的逻辑表达式中,若A为真,则程序通常不会去检查B,B中可能隐含的错误也发现不了。采用条件组合覆盖可解决这一问题。条件组合覆盖使每个判断中的各种条件组合至少出现一次。显然满足条件组合覆盖的测试用例是一定能满足判断覆盖,条件覆盖及判断/条件覆盖的。 《管理信息系统》
27.2 系统测试的策略(11) • 对于图6-8的程序来说,可以选择这样的四个测试用例,使它的八种条件组合都至少出现一次: • ①A=2,B=0,X=4使A>1,B=0和A=2,X>1两种情况出现(沿路径ace); • ②A=2,B=l,X=1使A>l,B<>0和A=2,X<=1两种情况出现(沿路径abe); • ③A=l,B=0,X=2使A<=1,B=0和A<>2,X>l两种情况出现(沿路径abe); • ④A=l,B=1,X=1使A<=1,B<>0和A<>2,X<=1两种情况出现(路径abd); • 尽管条件组合覆盖要求很严格,但它还没有将程序中的每一条路径都覆盖到,例如路径acd就没有执行到。由此可见,在模块测试中,单独依靠某一种测试方法,并不是很理想的。通常是将两种方法结合起来使用。 《管理信息系统》
27.2 系统测试的策略(12) • 2.子系统测试(分调) • 子系统测试是在模块测试的基础上,解决模块间相互调用的问题。子系统测试,通常可以采用自顶向下测试和自底向上测试两种方法。 • (1)自顶向下测试: • 先用主控模块作为测试驱动模块,然后将其所有下属模块用桩模块代替。桩模块中只保留所代替模块的名字,输入输出参数,而没有具体的处理功能。在子系统测试过程中再逐步将桩模块用实际模块替换。在替换时,可以按数据流动的方向:输入模块,处理模块,输出模块的顺序逐步替换。在替换桩模块时,通常是在完成一组测试后,用一个实际模块替换一个桩模块,然后再进行下一组测试,这样依次结合构成一个完整的子系统。为保证模块替换后没有引入新的错误,可以在模块替换后先进行回归测试即重复以前已进行过的部分或全部测试,然后再进行新的测试。 《管理信息系统》
27.2 系统测试的策略(13) • (2)自底向上测试: • 从系统结构的最低一层模块开始,进行组装和测试。这种测试方法需要设计一些测试驱动模块而不是桩模块。测试驱动模块主要是用来接受不同测试用例的数据,并把这些数据传递给被测试模块,最后打印测试结果。采用自底向上方法测试子系统时,要先将一些低层模块组合成实现某一特定功能的模块群。然后为这些模块设计一个驱动模块,作为测试的控制模块,以协调测试用例的输入输出。在完成这一模块群的测试后,按照系统的层次结构从底向上用实际模块替换驱动模块,组合成一个新的规模更大的模块群,然后再进行新的一轮测试。 《管理信息系统》
27.2 系统测试的策略(14) • 3.系统测试(总调) • 所有子系统都测试成功以后,就可以进行系统整体测试。它主要解决各子系统之间的数据通信和数据共享(公用数据库)问题以及满足用户要求的程度。 • 系统测试的依据是系统分析报告,要全面考核系统是否达到了系统分析的目标。在系统测试中可以发现系统分析中所遗留下来的未解决的问题。 《管理信息系统》