- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 软件测试基础 2.1 软件测试白箱法 2.1.1 逻辑覆盖法 语句覆盖 判断覆盖 条件覆盖 条件组合覆盖 判断/条件覆盖 路径覆盖 2.1.2 基本路径测试 第二章 软件测试基础 2.2 软件黑箱测试法 2.2.1 等价分类法 2.2.2 边界值分析法 小结 2.1 软件测试白箱法 定义: 白箱法是以程序的内部逻辑为依据。合理的白箱测试,就是要选取足够的测试用例,对源代码进行比较充分的覆盖,以便尽可能多地发现程序中的错误。 白箱法适用范围: 主要用于模块测试、?测试等。 两种方法: 逻辑覆盖法和基本路径法两种。 2.1.1 逻辑覆盖法 2.1.1 逻辑覆盖法 语句覆盖: 语句覆盖的含义是指在测试的过程中,软件测试者应选择足够多的测试用例,使被测试程序中每个语句至少执行一次。 例子: 在图2-1所示的流程图中,正好所有的可执行语句都在路径L1上,故选择路径L1设计测试用例,就可以覆盖所有的可执行语句。满足本例的测试用例是:[(2,0,4),(2,0,3)]覆盖ace[L1]。 问题: 本测试用例实际上只测试了条件为真的情况,如果条件为假,则使用本测试用例显然不能发现问题。此外,当第一个判断中的逻辑符“?”写成“?”,或者第二个判断中的逻辑符号“?” 写成“?”时,本测试用例也不能查出上述错误。所以,语句覆盖是最弱的逻辑覆盖准则。 判断覆盖: 在测试的过程中,软件测试者应设计若干测试用例,并运行所测程序,使被测试程序中每个判断的真分支和假分支至少经历一次。 例如 在图2-1所示的流程图中,如果选择路径L1,L2,则可满足判断覆盖,其测试用例如下: [(2,0,4),(2,0,3)]覆盖ace[L1] [(1,1,1),(1,1,1)]覆盖abd[L2]。 如果选择路径L3和L4,则可得另一组测试用例: [(2,1,1),(2,1,2)]覆盖abe[L3] [(3,0,3),(3,1,1)]覆盖acd[L4]。 问题: 由此看来,测试用例的取法并不是唯一的。此外,若把图2-1所示流程中的第二个判断中的条件X1错些成X1,那么利用上面两组测试用例,仍能得到同样的结果。这表明:只是判断覆盖不能确保一定能查出在判断的条件中存在的错误。 条件覆盖: 用条件覆盖所设计的测试用例可使得程序中的每一个判断的每一个条件的可能取值至少执行一次。 例如: 在图2-1所示的流程中,事先可对所有条件的取值加以标注,比如: 对第一个判断,若条件A1成立,则取真值为T1,反之,取假值为~T1;若条件B=0成立,则取真值为T2,反之,取假值为~T2。 对第二个判断,若条件A=2成立,则取真值为T3,反之,取假值为~T3;若条件X1成立,则取真值为T4,反之,取假值为~T4。 问题: 比较这两组测试用例可以发现,第一组测试用例不仅覆盖了所有判断的取真分支和取假分支,而且覆盖了判断中条件的可能取值;第二组测试用例虽然满足了条件覆盖,但由于只覆盖了第一个判断的取假分支和第二个判断的取真分支,不满足判定覆盖的要求。为此,必须引入更强的覆盖,即判定-条件覆盖。 判断-条件覆盖: 用判断-条件覆盖所设计的测试用例能够使得判断中每一个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。 例如: 问题: 从表面上看,它测试了所有条件的取值,但事实并非如此。这是由某些条件覆盖了另一些条件所致,比如对于条件表达式(A1)and (B=0)来说,若(A1)的测试结果为真,则还要测试(B=0),才能决定表达式的值;而若(A1)的测试结果为假,可以立刻确定表达式的结果为假。这时,往往就不再测试(B=0)的取值了,因此,条件(B=0)就没有检查。同样,对于条件表达式(A=2)or (X1)来说,若(A=2)的测试结果为真,就可以立刻确定表达式的结果为真。这时,条件(X1)就没有检查。因此,采用判断-条件覆盖,也不一定能查出逻辑表达式中的错误。 条件组合覆盖 能够使得每个判断的所有可能的条件取值组合至少执行一次。 测试用例: 问题: 这里并未要求第一个判断的4个组和与第二个判断的4个组和再进行组合。要是那样的话,就需要24=16个测试用例。 路径测试: 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。 测试用例: 测试用例逻辑分析法 L1(a→c→e) ={(A1) and (B=0)} and {(A=2) or (X/A1)} =(A1) and (B=0) and (A=2) or (A1) and (B=0) and (X/A1) =(A=2) and (B=0) or (A1) and B=0 and (X/A1) L2(a→b→d) ={(A1) and (B=0)} and {(A=2) or (X1)} ={(A1) or
文档评论(0)