软件测试自学吧 关注:23,383贴子:18,132
  • 4回复贴,共1

软件测试人员需要懂哪些常见的心理学?

只看楼主收藏回复

大部分程序员都由于不能使自己进入必要的精神状态,因而不能有效地测试自己的程序。 除了这个心理学问题之外,还有一个重要的问题:程序中可能包含由于程序员对问题的叙述或说明的误解而产生的错误。如果是这种情况,当程序员测试自己的程序时,往往还会带着同样的误解致使问题难以发现。在自已的工作中找出缺陷往往是人的心理状态所不容的。


1楼2019-09-05 11:50回复
    以上看法并不意味着程序员不可能测试自已的程序。不过相比之下如果由另外—些人来进行程序测试,就会更有效、更成功。注意:这个论断并不适用于纠错(改正已知错误),由原来程序的作者纠错肯定效率更高。
    在许多意义上来说,一项工程或一程序设计机构是个有生命的有机体,它同样有心理学问题。
    本文着重讨论一下在测试过程中的一些心理学的体现和如何将心理学运用到测试工作中。
    其实,心理学在测试中主要用于猜测用户的操作行为。猜测用户行为并不是一件简单的事情,毕竟子非鱼焉知鱼之所想。对于一个刚刚入行的测试人员来说,做到准确的猜测用户行为的确是非常的困难的。那需要有丰富的经验和积累,加上一些无法解释的直觉。根据这些年的工作经验,总结了一些用户的操作行为,这些行为准则对于大多数的用户还是适用的。


    2楼2019-09-05 11:50
    回复
      一、心态上面,明确自己的角色
      一般来说,在理想情况下,软件测试人员会测试程序所有的可能执行情况;但在大多数情况下,这几乎是不可能的。即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。对一个复杂的应用程序进行完全的测试,将耗费大量的时间和人力资源,这样在经济上是不可行的。
      心理学研究告诉我们,当人们在干一件已经知道是不合适的或不可能做到的事时,往往他们的表现就相当糟糕。但如果把程序测试定义为在程序中找出错误的过程,就使测试成了可以做到的任务,从而克服了心理上存在的问题。虽然这看起来像是个微妙的文字游戏,但对成功地进行软件测试有很大的影响。
      因此,不要只是为了证明程序能够正确运行而去测试程序,相反,应该一开始就假设程序中隐藏着错误(这种假设对于几乎所有的程序都是成立的),然后测试程序,发现尽可能多的错误。
      总之,软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然,最终人们还是要通过软件测试来建立某种程度的信心:软件做了其应该做的,而没有做其不应该做的。
      二、不要过于遵循规则
      对于一个新到手的东西,很多人都不会去阅读用户使用手册,这是因为产品对于用户而言已经很熟悉了或者用户使用过同类的产品,还有的用户压根就不喜欢按套路出牌。这样就给测试增加了难度,测试人员需要模拟那些用户可能操作的步骤和使用场景来保证产品的良好性。
      分析一下这个用户行为其实很好理解,使用这个功能的人员可能不是专业的美工人员,他对于文件的了解仅仅停留在表面,可能是为了工作方便就简单的将文件改成他认为的正确文件传了上去。当然这也算是一个bug,最后bug修复。
      总结下来,就是不要严格的遵守规则,因为用户并不会那么做。他们还会用一些方法来规避规则,测试的时候要尽量都考虑到。


      3楼2019-09-05 11:51
      回复
        五、懂得处理和开发人员之间的人际关系
        开发和测试存在目的是什么?开发是为了实现客户的需求,测试是为了保证软件的质量。两者应该是合作共赢的关系,不是零和博弈,不是此消彼长,不是你胜我败。开发和测试之间是既对立又统一的。是矛和盾的共同体。
        软件开发人员比较清楚软件的架构,可以事先判断出bug容易出现的地方,对出现的问题会很快定位;而测试人员作为软件的使用者,可以很快地反馈出自己对于软件使用的感受,让开发人员了解测试,帮助开发人员更清楚用户的要求,对软件如何被使用有了深刻的认识。好的测试人员,应该更多和开发人员交朋友,和他们一起努力,把工作做得更好。

        不过需要注意的是,软件测试工程师主要是提出错误报告,但不能主动提出改进软件过程的具体改进措施,更不要直接干涉程序员的工作方式,以免出力不讨好,影响今后的愉快合作。记住,软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作。
        六、软件测试应该避免由设计软件的程序员来担当
        开发和测试生来就是不同的活动:开发是创造或者建立一个模块或者整个系统;而测试的目的是证明一个模块或者系统工作不正常。这两个活动之间有着本质的矛盾,如果一个人同时扮演建设者和破坏者,是不太可能把两个截然对立的角色扮演好的。
        首先,当一个程序员在完成了设计,要一夜之间要他突然改变观点,设法对自己的程序持否定的态度,那是非常困难的。
        其次,程序中可能包含由于程序员对问题的叙述或说明的误解而产生的错误。如果是这种情况,当程序员测试自己的程序时,往往还会带着同样的误解致使问题难以发现。基于以上心理因素,应该限制开发者参与到测试中去。
        新梦想总结:软件测试是一项技术性的工作,也涉及到一些人类心理学,测试有时候不仅仅只是测试。测试是一项极富创造性、极具智力挑战性的工作,默默循规蹈矩未必能让自己发挥出最大的价值。 测试的最终目的是为了用户,多站在用户的角度灵活测试,得出有效结果并加以改进完善产品,才是一个合格专业的测试人员。


        5楼2019-09-05 11:54
        回复


          IP属地:河北6楼2019-09-05 12:48
          回复