- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05白盒测试方法综述
白盒测试方法
代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、控制结构测试法等
其中最常用的是逻辑覆盖法,此方法又有其使用的原则及其设计具体测试用例的方法。
1.逻辑覆盖法
1.1逻辑覆盖法的原则
保证在一个模块中的所有独立路径至少被使用一次;
对多有逻辑值均需测试true和false;
在上下边界及可操作范围内运行所有循环;
检查内部数据结构以确保其有效性。
1.2逻辑覆盖法的方法
语句覆盖
判定覆盖
条件覆盖
条件判定组合覆盖
多条件覆盖
修正条件判定覆盖
示例程序:
Int function(bool a,bool b,bool c)
{ int x;
X=0;
if(a(b||c))
x=1;
return x;
}
根据这段程序所画出的流程图如下:
设计具体测试用例的方法如下:
1.2.1语句覆盖
含义:程序中的每条语句至少应该执行一次。即选择足够多的测试数据,使被测程序中每条语句至少执行一次。
特点:语句覆盖是很弱??逻辑覆盖率
上例中所用的语句覆盖率测试用例:a=T,b=T,c=T
1.2.2判定覆盖
含义:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖;
特点:比语句覆盖稍强的覆盖标准
上例中所用的判定覆盖的测试用例,如下表:
序号abca(b||c)a||(b||c)判定覆盖%1TTTTT50%2FFFFF50%假如:该程序中判定的第一个运算符””错写成运算符”||”或第二个运算符”||”错写成运算符””,这时使用上述的测试用例可以达到100%的判定覆盖,但是仍然无法发现上述的逻辑错误。
1.2.3条件覆盖
含义:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次;
特点:满足条件覆盖的测试用例不一定能覆盖分支;
上例中所用的条件覆盖的测试用例,如下表:
序号abca(b||c)条件覆盖/%判定覆盖/%1FTTF100%50%2TFFF50%1.2.4条件判定组合覆盖
含义:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次;
特点:满足条件判定组合覆盖的测试用例不一定能覆盖判定和条件语句中的逻辑错误;
上例中所用的条件判定组合覆盖的测试用例,如下表:
序号abca(b||c)a(bc)条件判定组合覆盖率/%1TTTTT50%2FFFFF50%假如:该程序中判定的第一个运算符””错写成运算符”||”或第二个运算符”||”错写成运算符””,这时使用上述的测试用例可以达到100%的判定覆盖,但是仍然无法发现上述的逻辑错误。
1.2.5多条件覆盖
含义:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。
特点:满足多条件覆盖的测试用例一定满足判定覆盖,条件覆盖和条件判定覆盖的.当一个程序中判定语句较多时,其条件取值的组合数目是非常大的;
上例中所用的多条件覆盖的测试用例,如下表:
序号abca(b||c)1TTTT2TTFT3TFTT4TFFF5FTTF6FTFF7FFTF8FFFF1.2.6修正条件判定覆盖
含义:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and ,or)连接的bool条件,每个条件对于判定的结果值是独立的。
上例中所用的修正条件判定覆盖的测试用例,如下表:
序号abca(b||c)abc1TTTT52TTFT643TFTT744TFFF235FTTF16FTFF27FFTF 38FFFF以上为常用的白盒测试的测试方法编写测试用例的例子,当一种测试方法不能覆盖到整个程序时,可以多种方法混合使用来达到覆盖到整个程序的效果。白盒测试主要用在单元测试中使用,但是在集成、系统测试中也会用到。
2.代码检查法
主要检查代码与设计的一致性,代码对标准的遵循,可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全,不明确和模糊的部分,找出程序中不可移植部分,违背程序编程风格的问题,包括 变量检查,命名和类型审查,程序逻辑审查,程序
文档评论(0)