- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
测试用例设计-白盒
测试用例设计 白盒测试用例设计 白盒测试作为结构测试方法 按照程序内部的结构测试程序,对软件的过程性细节做细致的检查 测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例 常见的程序逻辑结构 白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。 白盒法举例 /*Description:…………………………………… 首先,判断A大于1而且B等于0,那么X缩小A倍; 然后,判断A等于2或者X大于1,那么X递增;*/ float fn_compare(float A,float B,float X) { if ((A1) (0==B)) { X=X/A ; } if ((2==A) || (X1)) { X=X+1; } } 1、语句覆盖 使得程序中每个语句至少都能被执行一次。 自己试着写一个用例看看! 【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。 【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。 2、判定覆盖 使得程序中每个判定至少为TRUE 或FALSE各一次。 【缺点】:忽略每个条件的取值情况,必然会遗漏部分测试路径。大部分的判定语句是由多个逻辑条件组合而成,仅仅判断其整个最终结果,判定覆盖仍是弱的逻辑覆盖。 【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。 3、条件覆盖 【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。 【优点】:增加了对条件判定情况的测试,增加了测试路径。 4、判定/条件覆盖 同时满足判断覆盖和条件覆盖 【优点】 :能同时满足判定、条件两种覆盖标准。 【缺点】 :判定/条件覆盖准则的缺点是未考虑条件的组合情况。 5、条件组合覆盖 使得每个判定中条件的各种可能组合都至少出现一次。 【优点】 :条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。 【缺点】 :线性地增加了测试用例的数量。 6、路径覆盖 覆盖程序中所有可能的路径 【优点】 :这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。 【缺点】 :需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。 白盒法步骤: 问题:实际应用中采用何种逻辑覆盖方式呢? 根据实际项目中代码逻辑的复杂性 建议设计人员编码时,考虑模块或者方法功能的单一性、高内聚性 提高测试用例设计的容易度、覆盖程度 辅助工具(覆盖率统计) TrueCoverage(C/C++/JAVA/VB) SmartCheck(VB) PureCoverage(C/C++/JAVA) 课堂练习:请设计测试用例分别实现语句覆盖、条件覆盖、分支覆盖 void TestFunction(int iSrcA, int iSrcB, int iSrcC) { if( (iSrcA150) || (iSrcB200)) { if(iSrcC100) printf(“iSrcC”); } else { printf(“iSrcA iSrcB”); } } 实验:单元测试过程实践 测试对象: 1,老师提供的代码 2,或者自己编写的一段代码(至少有两个条件语句) 电子版的部分 1、? 单元测试计划Excel文件 2、? Visual C++工程(完成单元测试工作) 3 、 单元覆盖率统计tcs文件(要求条件覆盖) 实验结果: * * 学习目标: 了解测试用例(test case) 了解白盒测试用例方法 对应书中第3章p67 分析:测试如下程序该如何选择测试数据 /*Description:………………………………………………… 首先,判断A大于1而且B等于0,那么X缩小A倍; 然后,判断A等于2或者X大于1,那么X递增;…………………*/ float fn_compare(float A,float B,float X) { if ((A1) (0==B)) { X=X/A ; } if ((2==A) || (X1)) { X=X+1; } } 问题:常见的程序逻辑结构有哪些? 顺序结构、分支结构、循环结构 白盒测试用例设计方法 语 句 覆 盖 判 定 覆 盖 条 件 覆 盖 条 件 组 合 覆 盖 弱 强 判 定 条 件 覆 盖 路 径 覆 盖 A1 0==B X=X/A 2==A || X1 X=X
文档评论(0)