首页 > 知识点讲解
       测试覆盖准则
知识路径: > 测试技术的分类 > 白盒测试技术 > 白盒测试综合策略 > 
考试要求:掌握      相关知识点:2个      
               Foster的ESTCA覆盖准则
               前面介绍的逻辑覆盖,其出发点似乎是合理的。所谓“覆盖”,就是想要做到全面而无遗漏。但事实表明,它并不能真的做到无遗漏。甚至对于像前面提到的,将程序段:
               
               错写成:
               
               这样的小问题都无能为力。
               我们分析出现这一情况的原因在于,错误区域仅仅在I=0这个点上,即仅当I取0时,测试才能发现错误。它的确是在我们力图通过全面覆盖来查找错误的测试的“网上”钻了空子,并且恰恰在容易发生问题的条件判断那里未被发现。面对这类情况,我们应该从中吸取的教训是测试工作要有重点,要多针对容易发生问题的地方设计测试用例。
               K.A.Foster从测试工作实践的教训出发,吸收了计算机硬件的测试原理,提出了一种经验型的测试覆盖准则,较好地解决了上述问题。
               Foster的经验型覆盖准则是从硬件的早期测试方法中得到启发的。我们知道,硬件测试中,对每一个门电路的输入、输出测试都是有额定标准的。通常,电路中一个门的错误常常是“输出总是0”,或是“输出总是1”。与硬件测试中的这一情况类似,我们常常要重视程序中谓词的取值,但实际上它可能比硬件测试更加复杂。Foster通过大量的实验确定了程序中谓词最容易出错的部分,得出了一套错误敏感测试用例分析ESTCA(Error Sensitive Test Cases Analysis)规则。事实上,规则十分简单。
               . [规则1]对于A rel B(rel可以是<,=和>)型的分支谓词,应适当地选择A与B的值,使得测试执行到该分支语句时,AB的情况分别出现一次。
               . [规则2]对于A rel1 C(rel1可以是“>”或是“<”,A是变量,C是常量)型的分支谓词,当rel1为“<”时,应适当地选择A的值,使:
               A=C-M。
               (M是距C最小的容器容许的正数,若A和C均为整型时,M=1)。同样,当rel1为“>”时,应适当地选择A,使:
               A=C+M。
               . [规则3]对外部输入变量赋值,使其在每一测试用例中均有不同的值和符号,并与同一组测试用例中其他变量的值和符号不一致。
               显然,上述规则1是为了检测rel的错误,规则2是为了检测“差1”之类的错误(如本应是“IF A>1”而错成“IF A>0”),而规则3则是为了检测程序语句中的错误(如应引用一变量而错成引用一常量)。
               上述三个规则并不完备,但在普通程序的测试中确是有效的。原因在于规则本身针对着程序编写人员容易发生的错误,或是围绕着发生错误的频繁区域,从而提高了发现错误的命中率。
               根据这里提供的规则来检验上述小程序段错误。应用规则1,对它测试时,应选择I的值为0,使I=0的情况出现一次。这样一来就立即找出了隐藏的错误。
               当然,ESTCA规则也有很多缺陷。一方面是,有时不容易找到输入数据使得规则所指的变量值满足要求。另一方面是,仍有很多缺陷发现不了。对于查找错误的广度问题在变异测试中得到了较好的解决。
               Woodward等人的层次LCSAJ覆盖准则
               Woodward等人曾经指出结构覆盖的一些准则,如分支覆盖或路径覆盖,都不足以保证测试数据的有效性。为此,他们提出了一种层次LCSAJ覆盖准则。
               LCSAJ(Linear Code Sequence and Jump)的意思是线性代码序列与跳转。一个LCSAJ是一组顺序执行的代码,以控制流跳转为其结束点。它不同于判断—判断路径。判断—判断路径是根据程序有向图决定的。一个判断—判断路径是指两个判断之间的路径,但其中不再有判断。程序的入口、出口和分支结点都可以是判断点。而LCSAJ的起点是根据程序本身决定的。它的起点是程序第一行或转移语句的入口点,或是控制流可以跳达的点。几个首尾相接,且第一个LCSAJ起点为程序起点,最后一个LCSAJ终点为程序终点的LCSAJ串就组成了程序的一条路径。一条程序路径可能是由两个、三个或多个LCSAJ组成的。基于LCSAJ与路径的这一关系,Woodward提出了LCSAJ覆盖准则。这是一个分层的覆盖准则,具体如下。
               . [第一层]:语句覆盖。
               . [第二层]:分支覆盖。
               . [第三层]:LCSAJ覆盖。即程序中的每一个LCSAJ都至少在测试中经历过一次。
               . [第四层]:两两LCSAJ覆盖。即程序中每两个首尾相连的LCSAJ组合起来在测试中都要经历一次。
               . …
               . [第n+2层]:每n个首尾相连的LCSAJ组合在测试中都要经历一次。
               它们说明了,越是高层的覆盖准则越难满足。
               在实施测试时,若要实现上述的Woodward层次LCSAJ覆盖,需要产生被测程序的所有LCSAJ。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有