?

淺析軟件測試中的心理學應用

2017-12-11 13:54李晶晶李勝嵐
電腦知識與技術 2017年31期
關鍵詞:測試人員軟件測試

李晶晶 李勝嵐

摘要:軟件測試是軟件開發環節中的一個重要階段,軟件測試的好壞會直接影響軟件的最終質量。而測試人員在測試程序時的態度和心理對測試工作又有著直接影響,盡管心理學的發展和應用都比較成熟了,但在軟件測試方面的應用卻較少。該文從測試人員應具備的心理要素入手,分析心理因素對軟件測試的影響,從而引起對心理學在軟件測試應用中的重視。

關鍵詞:軟件測試;測試目的;測試人員;測試心理;測試素質

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)31-0236-02

在人類的所有活動中,人的心理因素對活動行為都有著直接的、不可忽視的影響。所以,很多經濟較發達的國家都非常重視心理學的研究。心理學經過幾百年的發展,也已經形成了一個較為成熟的體系,其應用也逐步滲入到各個行業領域內。比如犯罪心理學、軟件工程心理學、認知心理學、教育心理學等等。心理學的成功應用在各行各業逐步凸顯出來。

但將心理學應用到軟件測試領域中的研究是稀少的,在知網上搜索“軟件測試心理學”關鍵詞,從查詢結果可以看出:近20年中,這方面的論文數量較之其他計算機專業方向的研究是少之又少,與關鍵詞完全符合的論文僅有5篇。這也說明在國內對軟件測試的心理研究還不夠重視,軟件測試中的心理問題容易被大家忽略。大多數程序員、產品經理都覺得只要軟件能夠通過測試找出bug,并對bug正確的處理,不影響使用即可。

其實,軟件測試是軟件系統開發中一個重要環節,測試人員在測試時的既定目標、心理因素對測試用例的選擇和測試結果都有著重要影響,因此必須要重視軟件測試中的心理學問題。

1 軟件測試的目的

軟件產品在交付使用或發布上線前,都必須經過大量的測試:單元測試、集成測試、系統測試等等。在梅爾斯所著的《軟件測試的藝術》一書中對軟件測試是這樣定義的:所謂的軟件測試,就是一個過程或者一系列過程,用來確認計算機代碼完成了其應該完成的功能,不執行其不該有的操作[1]。

電氣和電子工程師協會IEEE對軟件測試的定義是:使用人工或自動手段來運行或測定某個系統的過程,其目的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別 [2]。

根據上述對軟件測試的定義可知,測試的真正目的是:發現并修改缺陷、滿足用戶需求以及優化軟件品質。其中bug只是這個過程中的產品而非目標。測試人員需要以滿足用戶需求為依據去發現更多程序中隱藏的錯誤,以達到優化軟件品質的目的。在心理學中認為,人們的行為特點是有目的性的行為。與無目的性的行為相比兩種行為的結果是大不一樣的。一般說來,沒有目的性的行為無成果而言;而有目的性的行為,才可取得最大最滿意的成果。在軟件測試開始之前,只有抱著測試就是為了驗證需求的心理,才能設計出好的和有價值的測試用例,發現更多的錯誤;如果測試是為了證明程序很強壯,沒有錯誤,那么就會導致設計的測試用例較為簡單,容易讓程序通過測試,發現不了或者只能發現很少的錯誤。

但實際的情況是很多公司在開發軟件中并不重視軟件測試。一些小型的軟件開發公司甚至沒有專門的測試部門和測試人員。他們在軟件交付客戶或發布上線前,往往是由程序員完成測試工作的。這種做法弊端很多。從心理學角度分析,讓程序員去測試自己編寫的代碼,就像讓一個人對自己進行自我批評一樣,雖然了解自身的缺點所在,但改正起來還是比較困難的。程序員對自己開發的代碼,經過編程、調試之后,一般都認為代碼無錯或者錯誤不大,

在這種心理作用下,測試的目的就會朝著“證明程序完成了應有的功能”走偏,編寫出的測試用例意義不大,甚至可能連一些常規錯誤都發現不了。

筆者曾參與過某公司開發的一款APP軟件的測試。在使用真機測試軟件的過程中發現:編輯框在輸入時,如果輸入內容超過50個字后,輸入的內容便無法自動換行。類似這樣的錯誤開發人員在測試時根本沒有發現,他們只是簡單輸入幾個字,覺得實現基本輸入就認為這個模塊沒有bug了??梢娫跍y試軟件時,測試人員的既定目標有著很明顯的導向作用。

2 測試人員的素質

從心理學角度分析,程序員的工作是一種創造性的工作,把一個軟件產品從無到有創造出來,這樣的工作總能給人以信心、希望。反觀測試人員的工作,似乎總是在一件成品上到處找錯誤,把好好的一個產品測得處處是漏洞(當然,這些漏洞本來就存在,只是剛好被測試人員發現而已),這樣的工作本身就具有破壞性,而人們對破壞性的事物心理上往往難以愿意接受。所以“勇敢”是測試人員應該具備的首要心理素質。敢于表達,敢于指正錯誤。因為錯誤確確實實地存在于軟件中,如果測試人員找不到,那么最終交付給用戶使用時,就會暴露問題,最終為企業帶來損失。但測試人員在敢于找錯的同時還要注重溝通方式。由于被測試人員找出的bug,通常會交付給研發人員去修復。因此,測試人員與研發人員是緊密聯系的,從心理學角度來講良好的溝通方式會讓別人更易于接受錯誤。

3 軟件測試中的“成功與不成功”

在軟件公司有一個很有意思的現象,就是程序員和測試人員相處總不太融洽,尤其是在軟件項目進入到測試階段,這個現象就更加明顯了!程序員編寫好的、經過初步調試看似沒有問題的代碼,如果測試人員測出來bug,程序員就會郁悶,有時甚至會抱怨測試人員設計的測試用例不好!

那什么是好的測試用例,什么是壞的測試用例呢?

測試本身就是為了盡可能多的發現程序中隱藏的錯誤。一個好的測試用例能發現程序中包含的不易發現的錯誤,這樣的測試用例才算是設計成功的測試用例。如果設計的測試用例查找不出程序的任何問題,這可能在程序員看來是個好現象,但對于軟件測試而言,只能說明測試用例設計得很失敗。要知道沒有完全正確的程序,只是目前還沒有測試出來問題而已。

4 把握軟件測試中的“度”

文獻[2]中指出了軟件測試基本原則之一是:窮盡測試是不可能的。由于將程序的各種可能的輸入進行排列組合需要大量的時間,有時甚至根本無法做到全部的羅列。所以,測試人員根本不可能找出程序中的所有的錯誤,進而也無法做到徹底的測試。再加上隨著時間的推移,發現的軟件缺陷數量會逐漸減少,如果一直不斷地測試,勢必會增加測試的成本。由此可知過度的測試是不可取的。當然,不充分的測試勢必不會揭露隱藏在軟件中的缺陷。那么在測試過程中對何時才能停止測試的研究就顯得尤為重要!即便是大公司開發的成熟軟件產品,在實際使用過程中,也會因為各種各樣的原因出現不同的錯誤。面對這樣的事實,測試人員就需要分析測試停止的依據。一般來講,通過軟件測試,可以把程序的錯誤限定在一定范圍內。通過單位時間內查出的缺陷數量和嚴重程度來判斷是否停止測試。這里面還要強調一點的是軟件必須要能夠滿足用戶的需求。

如果沒有把握好這個“度”,測試人員就會覺得測試工作本身就是一件無法完成的工作的。從心理學角度分析,如果人們一開始就覺得某件事情無法完成,那么心情就會變得十分沮喪、對這件事就會非常抵觸。所以,掌握好測試的度,可以讓測試工作本身變得容易被人接受、認可。

綜合上述幾點來看,從心理學角度考量軟件測試這項工作,測試人員在測試前必須確定有正確的目標,就是盡可能多的發現程序中的錯誤;在測試時,必須有堅強的心理素質,找到錯誤后,要和程序員進行有效的溝通。對于何時結束測試,也需要把握好客戶的需求,才不會使測試工作陷入泥潭。最有效的做法就是盡量找第三方軟件公司來協助完成測試工作,往往軟件能達到較好的預期效果,堅決避免程序員身兼數職,測試自己開發的代碼。

5 結論

軟件測試不僅是一個系統工程,除了測試工具、測試人員能力、測試方法外,測試中的心理問題對測試結果都會有直接影響。盡管測試方法、測試工具都在不斷發展更新,但測試中的心理影響很少引起人們的重視。相信隨著測試技術的發展和成熟,心理學在軟件測試方面的應用也會引起越來越多的人關注。

參考文獻:

[1] GlendfordJ.Myers.《軟件測試的藝術》:第二版[M].北京:機械工業出版社,2005.1.

[2] 鄭人杰,許靜,于波.《軟件測試》[M].北京:人民郵電出版社,2015.8.

猜你喜歡
測試人員軟件測試
基于OBE的軟件測試課程教學改革探索
EXCEL和VBA實現軟件測試記錄管理
高校分析測試中心測試隊伍建設方案初探
軟件測試誤區分析
關于軟件測試技術應用與發展趨勢研究
綠植防輻射只是個傳說,是真的嗎?
智能電能表軟件測試技術概述
《軟件測試》課程教學策略研究
犯罪心理測試人員素質要求分析
犯罪心理測試人員素質要求分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合