0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从软件测试白盒测试实例分析

数字芯片实验室 来源:数字芯片实验室 2023-08-20 14:44 次阅读

White-Box Testing

白盒测试是关注测试用例覆盖程序逻辑(源代码)的程度。最终的白盒测试是执行程序中的每个路径。但对于大多数的程序(例如带有循环的程序),完全意义上的全路径覆盖是不现实的。

Logic Coverage Testing

你可能会觉得一个值得追求的目标是至少执行程序中的每一条语句。不幸的是,这是一个很弱的标准。假设下面这个图表示一个要测试的小程序。相应的Java代码片段如下:

59a5e8c0-3f14-11ee-ac96-dac502259ad0.png

59c9e7ac-3f14-11ee-ac96-dac502259ad0.png

你可以通过编写一条单独的测试用例来执行到路径ace。也就是说,在a点设置A=2,B=0和X=3,每个语句将被执行一次。

不幸的是,这个标准相当差。

第一个条件可能是而不是。如果是这样,这个bug将不会被检测到。

第二个条件如果是是X>0,这个bug也不会被检测到。

此外,程序中有一条路径,X没有改变(路径abd)。如果这里存在一个错误,也不会被检测到。

更强的逻辑覆盖标准称为条件覆盖或分支覆盖。这个标准规定,你必须编写足够的测试用例,使每个条件至少有一个true和一个false。以及每个分支方向必须至少遍历一次。分支或条件语句的例子包括switch-case、do-while和if-else语句,以及在某些编程语言(如Fortran)中的多路径GOTO语句。

在上图中,分支覆盖可以用两个测试用例覆盖路径ace和abd,或者覆盖路径acd和abe。如果我们选择后者,那么两个测试用例的输入分别是A=3, B=0, X=3和A=2, B=1, X=1。条件覆盖是比语句覆盖更强的标准,但它仍然很弱。因为,此时我们仍然没有探索到x没有改变的路径(abd)。

如果第二个判断有误(写成X<1而不是X>1),那么这个bug就不会被前面的测试用例(A=2, B=1, X=1)检测到。

有时比分支覆盖更强的标准是条件覆盖。在这种情况下,你需要编写足够的测试用例来确保每个条件至少有一次取得所有可能的结果。上图中有四个条件:A>1, B=0, A=2, 和X>1。因此,需要足够多的测试用例来覆盖以下情况:

在点a处A>1, A<=1, B=0, 和B!=0;

在点b处A=2, A!=2, X>1, 和X<=1。

尽管条件覆盖标准乍一看似乎满足分支覆盖标准,但并不总是如此。例如,两个测试用例 A = 1,B = 0,X = 3 和A = 2,B = 1,X = 1 涵盖了所有条件结果,但只涵盖了四个分支中的两个(它们都涵盖了路径abe,因此不会执行第一个分支的true结果和第二个分支的false结果)。

摆脱这种困境的明显方法是一种称为分支+条件覆盖的标准。它需要足够的测试用例,以便每个分支判断中的每个条件至少有一次取得所有可能的结果。

最后,大家再思考下,现有的仿真验证的代码覆盖率有哪些类型的代码覆盖率,其实是会考虑所有分支里面的所有条件的输入和输出结果的组合的

另外请再思考下,功能覆盖率能够覆盖哪些代码覆盖率无法描述的场景组合呢?

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件测试
    +关注

    关注

    2

    文章

    229

    浏览量

    18586
  • 白盒测试
    +关注

    关注

    1

    文章

    14

    浏览量

    10613
  • 芯片验证
    +关注

    关注

    5

    文章

    34

    浏览量

    47222

原文标题:从软件测试看芯片验证-白盒测试

文章出处:【微信号:数字芯片实验室,微信公众号:数字芯片实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    系统测试、验收测试、黑盒测试测试、单元测试、集成测试的区别

    正确的接受?能否输出正确的结果?  3、是否有数据结构错误或外部信息(例如数据文件)访问错误?  4、性能上是否能够满足要求?  5、是否有初始化或终止性错误?  软件测试是对
    发表于 10-22 12:42

    测试有什么优缺点?

    测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
    发表于 10-23 09:01

    【YOXIOS X3开发板(基于Linux的GUI)试用连载】基于网络的软件测试系统

    项目名称:基于网络的软件测试系统试用计划:目的:开发基于网络的图形界面的
    发表于 07-27 15:02

    测试教程ppt

    测试测试概念测试覆盖标准逻辑驱动
    发表于 09-19 09:39 0次下载

    测试

      测试的英文全称:White-box Testing     
    发表于 10-22 12:36 3649次阅读

    黑盒测试测试区别

    黑盒测试测试区别   黑盒测试  黑盒测试也称功能
    发表于 10-22 12:40 9370次阅读

    黑盒测试测试、单元测试、集成测试、系统测试、验收测试

    黑盒测试测试、单元测试、集成测试、系统测试、验
    发表于 10-22 12:43 2562次阅读

    测试中源代码变更管理方法的研究与实现

    在大型软件测试项目中,源代码的频繁变化给测试工作增加了很大难度,对源代码进行管理和控制是对白
    发表于 04-03 23:20 30次下载

    PRQA测试软件使用说明书

    PRQA测试软件使用说明书
    发表于 05-05 11:17 7次下载

    测试和黑盒测试的优缺点

    测试和黑盒测试软件测试的两种基本方法。
    发表于 11-02 11:18 1.9w次阅读
    <b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>测试</b>和黑盒<b class='flag-5'>测试</b>的优缺点

    详谈黑盒测试测试的异同及用例

    详谈黑盒测试测试的异同及用例
    的头像 发表于 08-19 17:07 6807次阅读
    详谈黑盒<b class='flag-5'>测试</b>与<b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>测试</b>的异同及用例

    VectorCAST/QA如何在LiteOS-A内核上实现系统测试

    本文将通过演示实例介绍VectorCAST/QA如何在LiteOS-A内核上实现系统测试,获取被测程序的代码覆盖信息。具体实现在支持sudo超级用户模式的Ubuntu 18.04(
    的头像 发表于 06-26 16:21 9435次阅读
    VectorCAST/QA如何在LiteOS-A内核上实现系统<b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>测试</b>

    4G终端主板测试报告

    4G终端主板测试报告
    发表于 09-30 16:35 17次下载

    渗透测试的优势是什么

    渗透测试是一项重要的进攻性安全演习或操作。如果执行得当,它会极大地提高您组织的安全性。渗透测试分为三种类型,根据渗透测试人员或道德黑客可获得的信息量分类,其中一种是
    的头像 发表于 09-19 10:04 1218次阅读

    功能测试还是黑盒测试

    功能测试软件测试的一种方法,主要用于验证软件的功能是否满足需求规格说明书中的要求。功能测试可以采用
    的头像 发表于 05-30 14:53 834次阅读