李晶晶 李胜岚
摘要:软件测试是软件开发环节中的一个重要阶段,软件测试的好坏会直接影响软件的最终质量。而测试人员在测试程序时的态度和心理对测试工作又有着直接影响,尽管心理学的发展和应用都比较成熟了,但在软件测试方面的应用却较少。该文从测试人员应具备的心理要素入手,分析心理因素对软件测试的影响,从而引起对心理学在软件测试应用中的重视。
关键词:软件测试;测试目的;测试人员;测试心理;测试素质
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)31-0236-02
在人类的所有活动中,人的心理因素对活动行为都有着直接的、不可忽视的影响。所以,很多经济较发达的国家都非常重视心理学的研究。心理学经过几百年的发展,也已经形成了一个较为成熟的体系,其应用也逐步渗入到各个行业领域内。比如犯罪心理学、软件工程心理学、认知心理学、教育心理学等等。心理学的成功应用在各行各业逐步凸显出来。
但将心理学应用到软件测试领域中的研究是稀少的,在知网上搜索“软件测试心理学”关键词,从查询结果可以看出:近20年中,这方面的论文数量较之其他计算机专业方向的研究是少之又少,与关键词完全符合的论文仅有5篇。这也说明在国内对软件测试的心理研究还不够重视,软件测试中的心理问题容易被大家忽略。大多数程序员、产品经理都觉得只要软件能够通过测试找出bug,并对bug正确的处理,不影响使用即可。
其实,软件测试是软件系统开发中一个重要环节,测试人员在测试时的既定目标、心理因素对测试用例的选择和测试结果都有着重要影响,因此必须要重视软件测试中的心理学问题。
1 软件测试的目的
软件产品在交付使用或发布上线前,都必须经过大量的测试:单元测试、集成测试、系统测试等等。在梅尔斯所著的《软件测试的艺术》一书中对软件测试是这样定义的:所谓的软件测试,就是一个过程或者一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作[1]。
电气和电子工程师协会IEEE对软件测试的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别 [2]。
根据上述对软件测试的定义可知,测试的真正目的是:发现并修改缺陷、满足用户需求以及优化软件品质。其中bug只是这个过程中的产品而非目标。测试人员需要以滿足用户需求为依据去发现更多程序中隐藏的错误,以达到优化软件品质的目的。在心理学中认为,人们的行为特点是有目的性的行为。与无目的性的行为相比两种行为的结果是大不一样的。一般说来,没有目的性的行为无成果而言;而有目的性的行为,才可取得最大最满意的成果。在软件测试开始之前,只有抱着测试就是为了验证需求的心理,才能设计出好的和有价值的测试用例,发现更多的错误;如果测试是为了证明程序很强壮,没有错误,那么就会导致设计的测试用例较为简单,容易让程序通过测试,发现不了或者只能发现很少的错误。
但实际的情况是很多公司在开发软件中并不重视软件测试。一些小型的软件开发公司甚至没有专门的测试部门和测试人员。他们在软件交付客户或发布上线前,往往是由程序员完成测试工作的。这种做法弊端很多。从心理学角度分析,让程序员去测试自己编写的代码,就像让一个人对自己进行自我批评一样,虽然了解自身的缺点所在,但改正起来还是比较困难的。程序员对自己开发的代码,经过编程、调试之后,一般都认为代码无错或者错误不大,
在这种心理作用下,测试的目的就会朝着“证明程序完成了应有的功能”走偏,编写出的测试用例意义不大,甚至可能连一些常规错误都发现不了。
笔者曾参与过某公司开发的一款APP软件的测试。在使用真机测试软件的过程中发现:编辑框在输入时,如果输入内容超过50个字后,输入的内容便无法自动换行。类似这样的错误开发人员在测试时根本没有发现,他们只是简单输入几个字,觉得实现基本输入就认为这个模块没有bug了。可见在测试软件时,测试人员的既定目标有着很明显的导向作用。
2 测试人员的素质
从心理学角度分析,程序员的工作是一种创造性的工作,把一个软件产品从无到有创造出来,这样的工作总能给人以信心、希望。反观测试人员的工作,似乎总是在一件成品上到处找错误,把好好的一个产品测得处处是漏洞(当然,这些漏洞本来就存在,只是刚好被测试人员发现而已),这样的工作本身就具有破坏性,而人们对破坏性的事物心理上往往难以愿意接受。所以“勇敢”是测试人员应该具备的首要心理素质。敢于表达,敢于指正错误。因为错误确确实实地存在于软件中,如果测试人员找不到,那么最终交付给用户使用时,就会暴露问题,最终为企业带来损失。但测试人员在敢于找错的同时还要注重沟通方式。由于被测试人员找出的bug,通常会交付给研发人员去修复。因此,测试人员与研发人员是紧密联系的,从心理学角度来讲良好的沟通方式会让别人更易于接受错误。
3 软件测试中的“成功与不成功”
在软件公司有一个很有意思的现象,就是程序员和测试人员相处总不太融洽,尤其是在软件项目进入到测试阶段,这个现象就更加明显了!程序员编写好的、经过初步调试看似没有问题的代码,如果测试人员测出来bug,程序员就会郁闷,有时甚至会抱怨测试人员设计的测试用例不好!
那什么是好的测试用例,什么是坏的测试用例呢?
测试本身就是为了尽可能多的发现程序中隐藏的错误。一个好的测试用例能发现程序中包含的不易发现的错误,这样的测试用例才算是设计成功的测试用例。如果设计的测试用例查找不出程序的任何问题,这可能在程序员看来是个好现象,但对于软件测试而言,只能说明测试用例设计得很失败。要知道没有完全正确的程序,只是目前还没有测试出来问题而已。
4 把握软件测试中的“度”
文献[2]中指出了软件测试基本原则之一是:穷尽测试是不可能的。由于将程序的各种可能的输入进行排列组合需要大量的时间,有时甚至根本无法做到全部的罗列。所以,测试人员根本不可能找出程序中的所有的错误,进而也无法做到彻底的测试。再加上随着时间的推移,发现的软件缺陷数量会逐渐减少,如果一直不断地测试,势必会增加测试的成本。由此可知过度的测试是不可取的。当然,不充分的测试势必不会揭露隐藏在软件中的缺陷。那么在测试过程中对何时才能停止测试的研究就显得尤为重要!即便是大公司开发的成熟软件产品,在实际使用过程中,也会因为各种各样的原因出现不同的错误。面对这样的事实,测试人员就需要分析测试停止的依据。一般来讲,通过软件测试,可以把程序的错误限定在一定范围内。通过单位时间内查出的缺陷数量和严重程度来判断是否停止测试。这里面还要强调一点的是软件必须要能够满足用户的需求。
如果没有把握好这个“度”,测试人员就会觉得测试工作本身就是一件无法完成的工作的。從心理学角度分析,如果人们一开始就觉得某件事情无法完成,那么心情就会变得十分沮丧、对这件事就会非常抵触。所以,掌握好测试的度,可以让测试工作本身变得容易被人接受、认可。
综合上述几点来看,从心理学角度考量软件测试这项工作,测试人员在测试前必须确定有正确的目标,就是尽可能多的发现程序中的错误;在测试时,必须有坚强的心理素质,找到错误后,要和程序员进行有效的沟通。对于何时结束测试,也需要把握好客户的需求,才不会使测试工作陷入泥潭。最有效的做法就是尽量找第三方软件公司来协助完成测试工作,往往软件能达到较好的预期效果,坚决避免程序员身兼数职,测试自己开发的代码。
5 结论
软件测试不仅是一个系统工程,除了测试工具、测试人员能力、测试方法外,测试中的心理问题对测试结果都会有直接影响。尽管测试方法、测试工具都在不断发展更新,但测试中的心理影响很少引起人们的重视。相信随着测试技术的发展和成熟,心理学在软件测试方面的应用也会引起越来越多的人关注。
参考文献:
[1] GlendfordJ.Myers.《软件测试的艺术》:第二版[M].北京:机械工业出版社,2005.1.
[2] 郑人杰,许静,于波.《软件测试》[M].北京:人民邮电出版社,2015.8.