版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称:白盒测试用例设计(shj)主讲(zhjing)教师:王红亮第一页,共73页。章节(zhngji)内容 覆盖测试2 最少测试用例数计算4 白盒测试的基本概念3 1 路径测试3 3第二页,共73页。为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题(wnt)就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。 假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有一个潜在的被 0 除的错误(cuw)。若测试组采用的测试用例的执行路径没有同时经过x=0和y=5/x进行测试,显然测试工作似乎非常完善,测试用例覆盖了所有执行语句,也没有
2、被 0 除的错误(cuw)发生。第三页,共73页。 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何(rh)进行工作的测试。 它根据程序的控制结构设计测试用例,主要用于软件或程序验证。第四页,共73页。 白盒测试法检查程序(chngx)内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条路径都测试过了,仍然可能存在错误。因为: 穷举路径测试无法检查出程序(chngx)本身是否违反了设计规范,即程序(chngx)是否是一个错误的程序(chngx)。 穷举路径测试不可能查出程序(chngx)因为遗漏路径而出错。 穷举路径测试发现不了一些与数据相关的错误。第五页,共
3、73页。 采用白盒测试方法必须遵循(zn xn)以下几条原则,才能达到测试的目的: 保证一个模块中的所有独立路径至少被测试一次。 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。 检查程序的内部数据结构,保证其结构的有效性。 在上下边界及可操作范围内运行所有循环。第六页,共73页。 白盒测试主要是检查程序的内部结构、逻辑、循环和路径(ljng)。常用测试用例设计方法有: 逻辑覆盖法(逻辑驱动测试) 基本路径(ljng)测试方法第七页,共73页。n由于测试路径可能非常(fichng)多,由于时间和资源问题,选出足够多的路径测试n由于深入到程序编码,通常开发人员协助测试人员书写
4、白盒测试用例第八页,共73页。n在进行白盒测试之前,一定要根据说明书建立黑盒测试用例。用这种方式(fngsh)可以真正测试模块的用意。n如果先从模块的白盒子角度建立测试用例,就会受到代码和注释的影响,而忽略模块的真正意图。n白盒测试的局限第九页,共73页。测试(csh)覆盖率逻辑覆盖法测试(csh)覆盖准则第十页,共73页。 测试覆盖率:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。 测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是(b shi)目标,只是一种手段。 第十
5、一页,共73页。 测试覆盖率包括功能点覆盖率和结构覆盖率: 功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。 结构覆盖率包括语句覆盖率、分支(fnzh)覆盖率、循环覆盖率、路径覆盖率等等。第十二页,共73页。 根据(gnj)覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。 语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。 判定覆盖:通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值, 也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。
6、 条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。第十三页,共73页。判定判定/条件覆盖:设计足够多的测试用例,使得程序中每个条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真判定包含的每个条件的所有情况(真/假)至少出现一次,假)至少出现一次,并且每个判定本身的判定结果(真并且每个判定本身的判定结果(真/假)也至少出现一次。假)也至少出现一次。 满足判定满足判定/条件覆盖的测试用例一定同时满足判定覆条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。盖和条件覆盖。组合组合(zh)覆盖:通过执行足够的测试用例,使得程
7、序中覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合每个判定的所有可能的条件取值组合(zh)都至少出现一都至少出现一次。次。 满足组合满足组合(zh)覆盖的测试用例一定满足判定覆盖、覆盖的测试用例一定满足判定覆盖、条件覆盖和判定条件覆盖和判定/条件覆盖。条件覆盖。路径覆盖:设计足够多的测试用例,要求覆盖程序中所有路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。可能的路径。 第十四页,共73页。组合覆盖判断/条件覆盖判断覆盖条件覆盖语句覆盖第十五页,共73页。 Console.WriteLine(Hello World!); if (System.DateT
8、ime.Today.Day = 1 & System.DateTime.Today.Month = 1) Console.WriteLine(Happy New Year!); Console.WriteLine(System.DateTime.Today.ToShortDateString(); Console.ReadLine(); 语句覆盖是否(sh fu)完善?第十六页,共73页。void DoWork (int x,int y,int z) int k=0,j=0; if ( (x3)&(z5) ) j=x*y+10; /语句(yj)块2 j=j%3; /语句(yj)
9、块3下面(xi mian)画出流程图。第十七页,共73页。X3 & z3 & z5X=4 | y5执行语句块执行语句块3 3F FF FT TT Ta ab bd dc ce e第十八页,共73页。 要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以(ky)覆盖程序中的所有可执行语句。 测试用例输入为: x=4、y=5、z=5 程序执行的路径是:abd 这样就够了吗?第十九页,共73页。测试用例输入为: x=4、y=5、z=5 程序执行的路径是:abd分析: 语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。例如
10、在第一个判定(x3)&(z5错误写为y3)&(z3 取真值记为T1,取假值记为-T1 条件z5) ): 条件x=4 取真值记为T3,取假值记为-T3 条件y5 取真值记为T4,取假值记为-T4第二十四页,共73页。根据条件覆盖的基本思想,要使上述4个条件可能产生(chnshng)的8种情况至少满足一次,设计测试用例如下: 测试用例 执行路径 覆盖条件 覆盖分支 x=4、y=6、z=5 abd T1、T2、T3、T4 bd x=2、y=5、 z=15 ace -T1、-T2、 -T3、-T4 cen分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个判定的4个分支b
11、、c、d、e也同时(tngsh)覆盖了,即同时(tngsh)达到了条件覆盖和判定覆盖。第二十五页,共73页。 条件覆盖(fgi)是否能包括判定覆盖(fgi)?第二十六页,共73页。说明:虽然前面的一组测试用例同时达到了条件覆盖和判定覆盖,但是,并不是说满足条件覆盖就一定能满足判定覆盖。如果设计了下表中的这组测试用例,则虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支(fnzh)c 和第二个判定的取真分支(fnzh)d,不满足判定覆盖的要求。 测试用例 执行路径 覆盖条件覆盖分支x=2、y=6、z=5 acd-T1、T2、 -T3、T4 cdx=4、y=5、z=15 acdT1、-T2
12、、 T3、-T4 cd第二十七页,共73页。判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来(q li)的一种方法,即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。 测试用例 执行路径 覆盖条件覆盖分支x=4、y=6、z=5 abdT1、T2、 T3、T4 bdx=2、y=5、z=15ace-T1、-T2、 -T3、-T4 ce第二十八页,共73页。 是不是这样(zhyng)就够了?第二十九页,共73页。 分析:从表面上看,判定/条件
13、覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有(hn yu)多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能够完全检查出逻辑表达式中的错误。 例如:对于第一个判定(x3)&(z3和z3为假,则编译器将不再检查z5)来说,若条件x=4满足,就认为该判定为真,这时将不会再检查y5,那么同样也无法发现这个条件中的错误。第三十页,共73页。 组合覆盖(fgi)的目的是要使设计的测试用例能覆盖(fgi)每一个判定的所有可能的条件取值组合。 对DoWork函数中的各个判定的条件取值组合加以标记: 1、x3, z3, z=10 记做T
14、1 -T2, 第一个判定的取假分支 3、x=3, z10 记做-T1 T2, 第一个判定的取假分支 4、x=10 记做-T1 -T2,第一个判定的取假分支 5、x=4, y5 记做T3 T4, 第二个判定的取真分支 6、x=4, y5 记做-T3 T4, 第二个判定的取真分支 8、x!=4, y8 AND Y5X0 OR Y0引用语句1引用语句2NYNYX16 OR Y10引用语句3NY第三十七页,共73页。 逻辑覆盖的出发点是合理的、完善的。所谓“覆盖”,就是想要做到全面而无遗漏,但逻辑覆盖并不能真正做到无遗漏。 例如(lr):我们不小心将前面提到的程序段中的 if (x3 & Z=
15、3 & Z10) 按照我们前面设计的测试用例(x的值取2或4)来看,逻辑覆盖对这样的小问题都无能为力。分析出现这一情况的原因在于:错误区域仅仅在x=3这个点上,即仅当x的值取3时,测试才能发现错误。面对这类情况,我们应该从中吸取的教训是测试工作要有重点,要多针对容易发生问题的地方设计测试用例。第三十八页,共73页。 ESTCA覆盖准则:在容易发生问题的地方设计测试用例,即重视程序中谓词(条件判断(pndun))的取值。 ESTCA覆盖准则是一套错误敏感用例分析规则。这一规则虽然并不完备,但在普通程序中却是有效的。原因在于这是一种经验型的覆盖准则,规则本身针对了程序编写人员容易发生的错误
16、,或是围绕着发生错误的频繁区域,从而提高了发现错误的命中率。具体规则如下: 规则1 对于A rel B型 (rel可以是) 的分支谓词,应适当的选择A与B的值,使得测试执行到该分支语句时,AB的情况分别出现一次。 这是为了检测逻辑符号写错的情况,如将“AB”。第三十九页,共73页。规则2 对于A rel C型 (rel可以是或, A是变量(binling),C是常量)的分支谓词:当rel为时,应适当的选择A的值,使A=C+M。 这是为了检测“差1”之类的错误,如“A1”错写成“A0”。规则3 对外部输入变量(binling)赋值,使其在每一个测试用例中均有不同的值与符号,并与同一组测试用例中其
17、他变量(binling)的值与符号不同。 这是为了检测程序语句中的错误,如应该引用某一变量(binling)而错成引用另一个常量。第四十页,共73页。Goal: exercise each independent path at least once.Using the code, draw a corresponding flow graph (First drawing the activity diagram for the code may help, but is not required)Determine the cyclomatic complexitycyclomatic c
18、omplexity of the flow graph.Determine a basis setbasis set of linearly independent paths.Prepare test casestest cases that forceforce the execution of execution of each patheach path in the basis set.第四十一页,共73页。Procedure: process records1.Do While records remain2.Read record;3.If record field 1 = 0
19、Then4.store in buffer;5.increment counter;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11.End DoEnd第四十二页,共73页。1910112457836V(G) = 4V(G) = 4第四十三页,共73页。12,387694,51011第四十四页,共73页。 V(G) =number of regions (areas bounded by nodes and edgesarea outside the graph i
20、s also a region) V(G) = number of edges - the number of nodes + 2 V(G) = number of (simple) predicate nodes + 1 Cyclomatic complexity: Cyclomatic complexity: a quantitative measure of the logical complexity of code, provides an upper bound on the number of paths that need to be tested in the codeV(G
21、)V(G)modulesmodulesmodules in this range are more error pronemodules in this range are more error prone 第四十五页,共73页。V(G)=412,378694,51011Region 1Region 2Region 3Region 4第四十六页,共73页。 Independent pathIndependent path any path that introduces at least one new set of processing statements or a new conditi
22、on Basis setBasis set set of independent paths through the code Test casesTest cases derived from a basis set are guaranteed to execute every statement at least one time during testing Basis set is not uniquenot unique第四十七页,共73页。 Path1: 1-2-3-6-7-9-10-1-11 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5
23、-10-1-11Path4: 1-111910112458736第四十八页,共73页。Basis path testing does not test all possible combinations of all paths through the code; it just tests every path at least once. you do not need an activity diagram, but the picture will help when you trace component paths count each logical testcompound t
24、ests count as the number of Boolean operators + 1 (i.e., count each simple predicate) basis path testing should be applied to all components, if possible, and to critical components always第四十九页,共73页。实践 路径(ljng)覆盖第五十页,共73页。基本(jbn)路径测试方法void Sort ( int iRecordNum, int iType )1 2 int x=0;3 int y=0;4 wh
25、ile ( iRecordNum- 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 else12 x=y+20;13 14 第五十一页,共73页。基本(jbn)路径测试方法(续) 画出控制流图: 如右图所示 计算环形复杂度: 10(条边)- 8(个节点(ji din))+ 2 = 4 导出独立路径(用语句编号表示) 路径1:414 路径2:46714 路径3:4691013414 路径4:4691213414467910121314第五十二页,共73页。基本(jbn)路径测试方法(续) 设计(shj)测试用例:第五十三页,共73页。使用(shyng)基本路径测试方法,为以下程序段设计测试用例。 void Do (int X,int A,i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度二手房买卖合同标的物使用现状说明
- 2024年度茶叶独家代理经营合同
- 2024年度地材环保达标合同3篇
- 2024年度企业知识产权管理与许可合同3篇
- 2024年度地铁邻近餐饮店面独家租赁协议2篇
- 《ab培训课程》课件
- 2024年度影视作品定制创作合同
- 2024中国石油长庆油田分公司春季校园招聘(70人)易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信海口分公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国烟草郑州烟草研究院招聘4人易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 44831-2024皮肤芯片通用技术要求
- 2024年房地产开发建筑承包合同
- 2024年廉洁合作原则声明书
- 酒店客房清洁卫生培训制度
- 2024-2030年中国物业管理行业深度调研及发展模式分析报告
- 数学-湖北华中师范大学一附中2024高二上数学周测和解析(11月2)
- Unit 4 Section B(1a-2b)(同步课件)-2024-2025学年初中英语七年级上册同步课件(人教版2024)
- 叠栅:组件降本提效技术新变革
- 2024年江苏省港口集团招聘笔试参考题库含答案解析
- 国家开放大学电大本科《理工英语4》期末题库及答案(试卷号:1388)
- 信用管理师(三级)理论考试题库(300题)
评论
0/150
提交评论