• 14
  • 15
分享
  • 软件测试杂谈:测试设计、bug漏测、探索测试、能测出好软件吗?
  • 北极 2021-02-09 11:51:02 字数 2670 阅读 2596 收藏 15

      和也是做软件测试的朋友聊了下软件测试的一些话题,有感所以写了点东西。

关于bug漏测:

       非测试人员最喜欢问的就是,为什么会有漏测?其实这和开发写的代码中有bug是一个道理。开发不能保证自己的思路一定正确,也无法保证程序各种路径、环境、状态下都工作正常。测试人员也一样。有了测试人员只是增加了一层扑捉bug的网,但是总有漏网的。因为测试人员是最后一道防线,所以任何漏了的,测试人员都有责任。要分析遗漏的原因,思考改进的方法。虽然漏测总是有,但是只有这样,才能让测试人员有足够的质量意识,不断减少漏测。减少漏测是一个系统的工程。

       首先要测试要清楚开发所有的修改(由于沟通的问题,或者开发偷偷修改,测试不清楚有些特性被修改了,这种事情并不少见),接下来测试点的全面性、测试方法的有效性、测试用例的正确性,再之后还有执行测试时策略的合理性。但是只做好上面的工作仍然不够。最终执行测试者的作用是不可替代的,包括结果检查的充分性、尽量变化的取值、顺序与组合(这方面主要看执行者个人意识和经验),另外更重要的就是要做探索测试。

关于探索测试:

       探索测试是无法通过前面的工作完全替代的。之所以探索测试很有价值,是因为前面的内容主要是通过对需求和设计的分析,得到需要测试的内容和对应的测试方法、步骤。但是软件测试的目标不是验证软件应该做的事情,而是发现bug。上面关注的是正确性,而探索测试更多的关注的是错误,关注软件在什么情况下可能会发生什么样的错误。

       正确的事情是可预期的,错误的事情却不可预期,可以出现各种出乎意料的错误。比如基本的有效等价类、无效等价类这些会列入案例测试点。但是无效到有效的切换呢?有效到无效的切换呢?甚至无意义的无效到无效的切换是否要测试?是否有效A、B、C,无效A、B、C之间的切换是否要进行组合呢?另外切换的行为组成一个事件流组合成不同的路径,可以切换无限次,也就有无限种路径,需要如何进行路径覆盖呢?这些不是单纯的设计能够回答的问题。

关于测试设计:

       概念上讲测试设计是比测试执行要更有难度。但这并不是绝对的。测试执行也是很有价值和挑战性的。

       因为杀虫剂效应,优秀的测试设计,也会很快失去效力。如果测试执行者主要的bug来源都不是源自测试设计,那么测试设计也就失去了作用。所以要不断的重新设计,但是最佳的理念在第一次优秀设计中已经都体现了。重新设计无法是本质性的变化。如果有很多项目,那么可以独立出单独的测试设计职位。但是一个测试设计师长期在一个项目中,恐怕这个职位将难以专职。开发的架构和设计则不同,设计的好,使得软件长期来看都是稳定的状态。外人长期看来这设计都很有价值。

能测出好软件吗?

       好的软件是写出来的,不是测出来的。差的软件,再怎么测,再怎么改,也是不可能成为好软件的。因为架构和编码的质量不仅决定了软件的质量,还决定了会有哪种类型的bug。如果是架构和编码风格好的软件就不容易出现那么多奇奇怪怪匪夷所思难以发现的bug。

       比如架构时各模块耦合性太大,那么就会出现各种难以预期的影响传递。最常见的恐怖编码方式就是复制、粘贴大法,这种代码可能忘记修改任何地方,所以会产生各种匪夷所思的bug。比如两段代码逻辑类似,但是在被复制的另一段代码中8972是特殊值,新逻辑中忘记修改了,结果突然有一天发现8972竟然被特殊处理了。比如变量名缺乏意义,结果用错变量。如果从需求覆盖上就可以暴露,那就好说。如果是需求覆盖时覆盖不到,那只能听天由命了,因为错误猜测也猜不到呀。错误猜测也要讲逻辑呀。比如密码是123456,那么我输入12345,输入1234567,这叫错误猜测。如果密码是123456,输入877aa认为密码错误,但是如果输入877ab,软件也认为是密码正确,这种bug,测试人员也无能为力。另外差的软件,因为耦合性大,修改一个bug,往往引入更多bug。Bug永远无法收敛。

再说探索测试:

       上面的密码的例子比较极端。更多的其实是顺序和组合类、还有环境变化的问题。如果能够提取出有限的因素数目,即使全组合排列,自动化几千种情况也不是什么大问题。虽然几千种全覆盖,通常没有什么意义。但是问题域的边界是可以变化的,问题域又相互交叉,覆盖率很难保证。更致命的是因素总数是惊人的。这导致数字上的不可能。但是其实有经验、意识好的测试执行人员,可以做有效的探索测试来发现这些问题。如果发现这方面的问题,他就会继续加强探索。好的开发人员也会好好去检查相关代码。如果用户填一个订单有五个步骤,每个步骤有5项内容需要填写,每项要填写的内容有2个有效等价类,这样有效等价类是50个。很容易覆盖。但是有效等价类的全组合是2的25次方,显然不能完全覆盖。另外考虑回退操作,第二个页面可以回退到第一个页面...第五个页面可以回退到第四、三、二、一个页面。每回退到一个页面,可以修改任何项内容的值,可以修改为同一有效等价类的另一个值,也可以修改为另一个有效等价类。

       这个路径还可以很长,操作到第四个页面,回退到第三个页面,修改两项内容,然后回退到第二个页面修改一项内容,然后前进到第五个页面修改3项内容,然后退回到第二个页面再次修改刚刚被修改过的内容,然后修改另一项内容...。这些路径怎么覆盖?所以有经验的测试人员他会考虑项目之间的可能的耦合性,比如有几项内容都和地址有关系,那么这几项内容是否会有相互干扰,尝试让这几项有出现相同、不同、重叠、包含、相似等等关系。至于回退可以使用一些有思路的探索,比如最后一步再回退、第二步就会退、回退一步、回退多步、回退后修改所有内容、回退后只修改一项内容、只回退不修改内容、逐页回退并且修改、一直回退到第一步然后前进着修改每一步的内容等等。

       但是如果代码写的很乱,平铺直续,结构化很差,各种特殊情况满天飞,各种逻辑交叉。存在第四步退回到第二步修改第二项和第三项内容,之后提交出现故障。这种毫无征兆的,毫无逻辑耦合预示的bug,是只能偶遇不能相请的。常见可见的耦合性有后面某一项的可选内容,由前面的某一项的值决定。更复杂一些的,就是由前面几项内容的值共同决定。围绕这种耦合性来做探索才是有价值的。


作者:jxzdsw

原文链接:https://blog.csdn.net/jxzdsw/article/details/113546909#comments_14936400


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在项目管理中,建立一套规范的缺陷管理流程,可以大幅降低缺陷出现的几率,加快缺陷修复效率,保障团队研发质量。对缺陷管理的投资是提高项目管理效率的重要手段,不仅可以减少因为标准流程缺失带来的人力、财力、和时间的浪费,还能助力团队持续过程改进,提升团队效能。下面将给大家分享缺陷管理的完整流程,助力研发团队高效管理项目。  1. 预防缺陷  通常情况下,缺陷越早发现风险就越低,越晚发现定位原因和修改的成本就越高,也容易在修改时引入新的问题。在需求分析阶段和研发过程中都有相应的方法预防缺陷:  需求分析阶段:准确识别需求本身是否存在风险或疏漏、是否存在描述不清等情况,还要保证开发团队和测试团队对需求...
            0 0 926
            分享
          •   应届生,没有实际项目经验怎么破?  面试的过程并不为为了显示面试官技术有多牛,也不是为了体现他们公司有多么难进而是考察你的能力和招聘需求是否相匹配,进而评估你能否满足工作需求,甚至实现更多的岗位期待。  弄清楚了这个核心,那么就只需要把控好两方面的内容:  1、自己的技能水平可以满足招聘需求  2、表达能力OK  围绕上面的核心,咱们来具体的聊一下:  首先来说,目前的行业招聘现状是:  ·测试行业底层在不断洗牌  · 初级人员薪资一直维持不变(相当于降薪)  · 已经不再是公司疯狂招人的阶段  所以就导致了明显的两极分化,大厂倾向于直接招测试开发,测试团队进一步精简,...
            0 0 985
            分享
          •   在江湖行走,尤其混迹于职场这片广阔天地时,总会有那么几句话飘荡在耳畔,如同魔咒般挥之不去,直戳心窝子。就像是下面这些金句,不论是在和学生们扯皮,还是在IT圈子里闲聊,甚至在饭桌上跟朋友们推杯换盏之间,它们都会时不时地冒出来刷一波存在感:  “哎呀,那家伙一天天划水摸鱼,正事没见干多少,结果一打听,人家工资竟然比我这个累死累活的老黄牛还高!”  “我们部门新来的毕业生愣头青一枚,啥都不会,全靠我手把手教,可笑的是他领的薪水几乎和我不相上下,这也忒不公平了吧!”  “我就纳闷了,我这儿拼死拼活干,职位比她还高,结果人家凭一张嘴皮子就把工资和绩效拿得比我漂亮多了,真让人憋屈得不行!”  乍一听,...
            0 0 392
            分享
          •   宝子们,现在是不是还在观望呢?有没有考虑转行?有没有了解过软件测试呢?现在软件测试的风口很大,但是并不是什么人都能学软件测试,我不建议大家盲目跟风。  1、学历大专以上,最好本科。  2、逻辑能力强,沟通能力强(不要社恐)。  3、计算机专业的最好,别的专业也无所谓。  4、有抗压能力。  一、性格测试  总共是有一百道题目左右,不能够返回答题,因为部分题是考察考生的回答题目的一致性。  现在想起来感觉第二次和第一次填写的答案差不多,就感觉emmm。。。很迷。  这里建议大家在答题的时候要保持一颗要努力拼搏,不怕困难以及积极向上的心态。  二、技术一面  其实之前也有了解过今年的华为面试比...
            0 0 624
            分享
          •   质量控制过程确保产品的制造标准得到维持和改进。 质量控制过程使公司能够满足客户的期望,同时确保产品质量的一致水平。 采用这些标准创造了一种公司文化,鼓励所有员工追求高质量的生产标准。 对于希望将数据和分析数字化的质量控制团队来说,低代码和无代码软件可以改变游戏规则。  为什么要实施质量控制?  质量控制的主要目的是在制造过程中寻找任何纠正措施来改进产品。质量控制的一个重要组成部分是建立一个检查系统,概述可接受的产品参数并标准化生产过程。在整个生产线上建立和评估标准,员工在生产线上组装原材料并生产成品。在其开发的不同阶段测试每个产品有助于识别生产问题并快速修复它们。  公司通常会雇用专业人员...
            0 0 660
            分享
      • 51testing软件测试圈微信