51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1547|回复: 8
打印 上一主题 下一主题

单元测试定位Bug问题求解

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:20
  • 签到天数: 403 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-9-19 10:34:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    使用Cppunit进行单元测试,但是在写测试用例的过程中遇到了麻烦:

    描述:
      有类A,成员函数有f1和f2,还有成员变量等等,现在要测试函数f1和f2.

    条件:
      f1和f2是相关联的,无法找到(理论上也没有)一种验证方法可以单独确定这两个函数的逻辑是否正确。

      假设情况一:f1的正确性严格依赖f2。那么导致的结果就是cppunit跑出的结果若显示f2失败,那么必然也会导致f1失败,这种情况下我们无法判断是f1存在bug还是f2存在bug,或是都存在bug,唯一能确定的是bug存在f1和f2中;

      假设情况二:f1的正确性严格依赖f2,而f2的正确性又严格依赖f1。如果cppunit在f1中失败,必然也使得f2失败,这个时候,我们更无法判断到底是f1存在bug还是f2存在bug,或是都存在bug,唯一能确定的是bug存在f1和f2中。

      得出结论,在以上两种情况下,唯一能确定的就是bug肯定存在于由f1和f2组成的这个关系体中,这是一个范围;更极端的情况可能是这个关系体中函数的数量为N,并且两两之间存在依赖关系,那么定位bug的工作就更加艰难。

    问题讨论:
      1.有没有方法可以在不改变待测试代码的基础上,完成对单个函数的精准定位,而不是范围上的定位?
      2.这种待测试代码是否可以在设计上完全避免(个人倾向于无法避免)?如果可以,是否会引进不必要的开销?例如,一个set方法的验证可以通过相应的get方法来验证,但是这个get方法可能是根本不需要的,而是为了迎合测试的顺利而额外添加的(虽然说set的正确性依赖get的正确性,但由于get一般过于简单,bug滋生率近乎零,所以用此例;事实上,如果连get方法都怀疑的话,测试基本就无法进行了,因为没什么验证是可信的)。
      3.本人(菜鸟)是在实际中遇到了这种情况,不知道各位是否遇到过,又是如何处理的?

    补充:
      出于测试的初衷考虑,一般get方法是不用测试的,否则那就是为了测试而测试了(花20%时间足以),而不是出于效率的考虑,当然有个原则是说所有的代码都应该被测试,但开发人员的精力是有限的,如果把80%的时间放在了80%无用的地方,就太不值了,这似乎是个矛盾。。。
      其实,本人手头的项目已经运行良久,经过大量的实际运行测试,没出什么问题(有点小自信,嘿嘿),但出于boss的要求,不得不编写单元测试代码,真是无奈,不过恰好借此机会向各位大侠取点经。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:57
  • 签到天数: 1386 天

    连续签到: 5 天

    [LV.10]测试总司令

    2#
    发表于 2019-9-20 10:32:57 | 只看该作者
    多场景验证
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2019-9-23 16:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
    发表于 2019-9-20 11:18:00 | 只看该作者
    多场景验证
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:27
  • 签到天数: 2660 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2019-9-20 12:12:00 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:27
  • 签到天数: 2660 天

    连续签到: 5 天

    [LV.Master]测试大本营

    5#
    发表于 2019-9-20 12:12:31 | 只看该作者
    只能按照分析设计了
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 10:20
  • 签到天数: 881 天

    连续签到: 4 天

    [LV.10]测试总司令

    6#
    发表于 2019-9-20 14:09:40 | 只看该作者
    多场景验证
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-7-15 13:32
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    7#
    发表于 2019-9-20 16:34:01 | 只看该作者
    尽量把 f1  f2 解耦
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2020-7-15 13:32
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    8#
    发表于 2019-9-20 16:35:11 | 只看该作者
    尽量把f1 和 f2 解耦 ,然后再写测试用例
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 318 天

    连续签到: 2 天

    [LV.8]测试军长

    9#
    发表于 2019-9-20 16:37:02 | 只看该作者
    多场景测试
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-27 13:15 , Processed in 0.069593 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表