李晶晶 李勝嵐
摘要:軟件測試是軟件開發(fā)環(huán)節(jié)中的一個(gè)重要階段,軟件測試的好壞會直接影響軟件的最終質(zhì)量。而測試人員在測試程序時(shí)的態(tài)度和心理對測試工作又有著直接影響,盡管心理學(xué)的發(fā)展和應(yīng)用都比較成熟了,但在軟件測試方面的應(yīng)用卻較少。該文從測試人員應(yīng)具備的心理要素入手,分析心理因素對軟件測試的影響,從而引起對心理學(xué)在軟件測試應(yīng)用中的重視。
關(guān)鍵詞:軟件測試;測試目的;測試人員;測試心理;測試素質(zhì)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)31-0236-02
在人類的所有活動中,人的心理因素對活動行為都有著直接的、不可忽視的影響。所以,很多經(jīng)濟(jì)較發(fā)達(dá)的國家都非常重視心理學(xué)的研究。心理學(xué)經(jīng)過幾百年的發(fā)展,也已經(jīng)形成了一個(gè)較為成熟的體系,其應(yīng)用也逐步滲入到各個(gè)行業(yè)領(lǐng)域內(nèi)。比如犯罪心理學(xué)、軟件工程心理學(xué)、認(rèn)知心理學(xué)、教育心理學(xué)等等。心理學(xué)的成功應(yīng)用在各行各業(yè)逐步凸顯出來。
但將心理學(xué)應(yīng)用到軟件測試領(lǐng)域中的研究是稀少的,在知網(wǎng)上搜索“軟件測試心理學(xué)”關(guān)鍵詞,從查詢結(jié)果可以看出:近20年中,這方面的論文數(shù)量較之其他計(jì)算機(jī)專業(yè)方向的研究是少之又少,與關(guān)鍵詞完全符合的論文僅有5篇。這也說明在國內(nèi)對軟件測試的心理研究還不夠重視,軟件測試中的心理問題容易被大家忽略。大多數(shù)程序員、產(chǎn)品經(jīng)理都覺得只要軟件能夠通過測試找出bug,并對bug正確的處理,不影響使用即可。
其實(shí),軟件測試是軟件系統(tǒng)開發(fā)中一個(gè)重要環(huán)節(jié),測試人員在測試時(shí)的既定目標(biāo)、心理因素對測試用例的選擇和測試結(jié)果都有著重要影響,因此必須要重視軟件測試中的心理學(xué)問題。
1 軟件測試的目的
軟件產(chǎn)品在交付使用或發(fā)布上線前,都必須經(jīng)過大量的測試:單元測試、集成測試、系統(tǒng)測試等等。在梅爾斯所著的《軟件測試的藝術(shù)》一書中對軟件測試是這樣定義的:所謂的軟件測試,就是一個(gè)過程或者一系列過程,用來確認(rèn)計(jì)算機(jī)代碼完成了其應(yīng)該完成的功能,不執(zhí)行其不該有的操作[1]。
電氣和電子工程師協(xié)會IEEE對軟件測試的定義是:使用人工或自動手段來運(yùn)行或測定某個(gè)系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別 [2]。
根據(jù)上述對軟件測試的定義可知,測試的真正目的是:發(fā)現(xiàn)并修改缺陷、滿足用戶需求以及優(yōu)化軟件品質(zhì)。其中bug只是這個(gè)過程中的產(chǎn)品而非目標(biāo)。測試人員需要以滿足用戶需求為依據(jù)去發(fā)現(xiàn)更多程序中隱藏的錯(cuò)誤,以達(dá)到優(yōu)化軟件品質(zhì)的目的。在心理學(xué)中認(rèn)為,人們的行為特點(diǎn)是有目的性的行為。與無目的性的行為相比兩種行為的結(jié)果是大不一樣的。一般說來,沒有目的性的行為無成果而言;而有目的性的行為,才可取得最大最滿意的成果。在軟件測試開始之前,只有抱著測試就是為了驗(yàn)證需求的心理,才能設(shè)計(jì)出好的和有價(jià)值的測試用例,發(fā)現(xiàn)更多的錯(cuò)誤;如果測試是為了證明程序很強(qiáng)壯,沒有錯(cuò)誤,那么就會導(dǎo)致設(shè)計(jì)的測試用例較為簡單,容易讓程序通過測試,發(fā)現(xiàn)不了或者只能發(fā)現(xiàn)很少的錯(cuò)誤。
但實(shí)際的情況是很多公司在開發(fā)軟件中并不重視軟件測試。一些小型的軟件開發(fā)公司甚至沒有專門的測試部門和測試人員。他們在軟件交付客戶或發(fā)布上線前,往往是由程序員完成測試工作的。這種做法弊端很多。從心理學(xué)角度分析,讓程序員去測試自己編寫的代碼,就像讓一個(gè)人對自己進(jìn)行自我批評一樣,雖然了解自身的缺點(diǎn)所在,但改正起來還是比較困難的。程序員對自己開發(fā)的代碼,經(jīng)過編程、調(diào)試之后,一般都認(rèn)為代碼無錯(cuò)或者錯(cuò)誤不大,
在這種心理作用下,測試的目的就會朝著“證明程序完成了應(yīng)有的功能”走偏,編寫出的測試用例意義不大,甚至可能連一些常規(guī)錯(cuò)誤都發(fā)現(xiàn)不了。
筆者曾參與過某公司開發(fā)的一款A(yù)PP軟件的測試。在使用真機(jī)測試軟件的過程中發(fā)現(xiàn):編輯框在輸入時(shí),如果輸入內(nèi)容超過50個(gè)字后,輸入的內(nèi)容便無法自動換行。類似這樣的錯(cuò)誤開發(fā)人員在測試時(shí)根本沒有發(fā)現(xiàn),他們只是簡單輸入幾個(gè)字,覺得實(shí)現(xiàn)基本輸入就認(rèn)為這個(gè)模塊沒有bug了。可見在測試軟件時(shí),測試人員的既定目標(biāo)有著很明顯的導(dǎo)向作用。
2 測試人員的素質(zhì)
從心理學(xué)角度分析,程序員的工作是一種創(chuàng)造性的工作,把一個(gè)軟件產(chǎn)品從無到有創(chuàng)造出來,這樣的工作總能給人以信心、希望。反觀測試人員的工作,似乎總是在一件成品上到處找錯(cuò)誤,把好好的一個(gè)產(chǎn)品測得處處是漏洞(當(dāng)然,這些漏洞本來就存在,只是剛好被測試人員發(fā)現(xiàn)而已),這樣的工作本身就具有破壞性,而人們對破壞性的事物心理上往往難以愿意接受。所以“勇敢”是測試人員應(yīng)該具備的首要心理素質(zhì)。敢于表達(dá),敢于指正錯(cuò)誤。因?yàn)殄e(cuò)誤確確實(shí)實(shí)地存在于軟件中,如果測試人員找不到,那么最終交付給用戶使用時(shí),就會暴露問題,最終為企業(yè)帶來損失。但測試人員在敢于找錯(cuò)的同時(shí)還要注重溝通方式。由于被測試人員找出的bug,通常會交付給研發(fā)人員去修復(fù)。因此,測試人員與研發(fā)人員是緊密聯(lián)系的,從心理學(xué)角度來講良好的溝通方式會讓別人更易于接受錯(cuò)誤。
3 軟件測試中的“成功與不成功”
在軟件公司有一個(gè)很有意思的現(xiàn)象,就是程序員和測試人員相處總不太融洽,尤其是在軟件項(xiàng)目進(jìn)入到測試階段,這個(gè)現(xiàn)象就更加明顯了!程序員編寫好的、經(jīng)過初步調(diào)試看似沒有問題的代碼,如果測試人員測出來bug,程序員就會郁悶,有時(shí)甚至?xí)г箿y試人員設(shè)計(jì)的測試用例不好!
那什么是好的測試用例,什么是壞的測試用例呢?
測試本身就是為了盡可能多的發(fā)現(xiàn)程序中隱藏的錯(cuò)誤。一個(gè)好的測試用例能發(fā)現(xiàn)程序中包含的不易發(fā)現(xiàn)的錯(cuò)誤,這樣的測試用例才算是設(shè)計(jì)成功的測試用例。如果設(shè)計(jì)的測試用例查找不出程序的任何問題,這可能在程序員看來是個(gè)好現(xiàn)象,但對于軟件測試而言,只能說明測試用例設(shè)計(jì)得很失敗。要知道沒有完全正確的程序,只是目前還沒有測試出來問題而已。
4 把握軟件測試中的“度”
文獻(xiàn)[2]中指出了軟件測試基本原則之一是:窮盡測試是不可能的。由于將程序的各種可能的輸入進(jìn)行排列組合需要大量的時(shí)間,有時(shí)甚至根本無法做到全部的羅列。所以,測試人員根本不可能找出程序中的所有的錯(cuò)誤,進(jìn)而也無法做到徹底的測試。再加上隨著時(shí)間的推移,發(fā)現(xiàn)的軟件缺陷數(shù)量會逐漸減少,如果一直不斷地測試,勢必會增加測試的成本。由此可知過度的測試是不可取的。當(dāng)然,不充分的測試勢必不會揭露隱藏在軟件中的缺陷。那么在測試過程中對何時(shí)才能停止測試的研究就顯得尤為重要!即便是大公司開發(fā)的成熟軟件產(chǎn)品,在實(shí)際使用過程中,也會因?yàn)楦鞣N各樣的原因出現(xiàn)不同的錯(cuò)誤。面對這樣的事實(shí),測試人員就需要分析測試停止的依據(jù)。一般來講,通過軟件測試,可以把程序的錯(cuò)誤限定在一定范圍內(nèi)。通過單位時(shí)間內(nèi)查出的缺陷數(shù)量和嚴(yán)重程度來判斷是否停止測試。這里面還要強(qiáng)調(diào)一點(diǎn)的是軟件必須要能夠滿足用戶的需求。
如果沒有把握好這個(gè)“度”,測試人員就會覺得測試工作本身就是一件無法完成的工作的。從心理學(xué)角度分析,如果人們一開始就覺得某件事情無法完成,那么心情就會變得十分沮喪、對這件事就會非常抵觸。所以,掌握好測試的度,可以讓測試工作本身變得容易被人接受、認(rèn)可。
綜合上述幾點(diǎn)來看,從心理學(xué)角度考量軟件測試這項(xiàng)工作,測試人員在測試前必須確定有正確的目標(biāo),就是盡可能多的發(fā)現(xiàn)程序中的錯(cuò)誤;在測試時(shí),必須有堅(jiān)強(qiáng)的心理素質(zhì),找到錯(cuò)誤后,要和程序員進(jìn)行有效的溝通。對于何時(shí)結(jié)束測試,也需要把握好客戶的需求,才不會使測試工作陷入泥潭。最有效的做法就是盡量找第三方軟件公司來協(xié)助完成測試工作,往往軟件能達(dá)到較好的預(yù)期效果,堅(jiān)決避免程序員身兼數(shù)職,測試自己開發(fā)的代碼。
5 結(jié)論
軟件測試不僅是一個(gè)系統(tǒng)工程,除了測試工具、測試人員能力、測試方法外,測試中的心理問題對測試結(jié)果都會有直接影響。盡管測試方法、測試工具都在不斷發(fā)展更新,但測試中的心理影響很少引起人們的重視。相信隨著測試技術(shù)的發(fā)展和成熟,心理學(xué)在軟件測試方面的應(yīng)用也會引起越來越多的人關(guān)注。
參考文獻(xiàn):
[1] GlendfordJ.Myers.《軟件測試的藝術(shù)》:第二版[M].北京:機(jī)械工業(yè)出版社,2005.1.
[2] 鄭人杰,許靜,于波.《軟件測試》[M].北京:人民郵電出版社,2015.8.