測試人員的腦子里到底在想什么
目前開發(fā)人員對測試人員的工作有一些不太理解:用戶不可能進(jìn)行的操作,測試人員非要進(jìn)行操作,甚至找出一些開發(fā)人員都沒有想到的操作;有時還設(shè)計(jì)一些用戶沒有的流程進(jìn)行測試;還有時提出一些用戶沒有提出的要求,比如非要增加一個列表排序功能;測試組的數(shù)據(jù)庫服務(wù)器本身就是一臺PC機(jī),配置不高,運(yùn)行復(fù)雜程序比較慢,非要提出來要求修改。等等、等等。在開發(fā)任務(wù)不太忙的時候還能忍受,如果開發(fā)任務(wù)很緊的時候就容易發(fā)生摩擦了。
測試人員到底是怎么想的?怎么有時總是往牛角尖里鉆呢?怎么總是讓人搞不懂?后續(xù)章節(jié)里就簡單的說說“測試人員的腦袋里到底在想什么呢?”
測試人員測試考慮問題基本有幾個方面:
“測試人員的腦子里到底在想什么呢?”(一)
在一個項(xiàng)目中,測試人員與開發(fā)人員的良好合作往往起到事倍功半的作用。縱觀一個成熟的項(xiàng)目,測試與開發(fā)都是緊密合作、相得益彰的。在軟件行業(yè)說明舉例中大家都習(xí)慣于用微軟、IBM、HP等國際大企業(yè)來說明,也確實(shí)如此,這些大公司都是一些好的借鑒。好像有這么一個規(guī)律:凡是做的好的項(xiàng)目,測試與開發(fā)的合作也都是比較好的。而在國內(nèi)一些企業(yè)里,由于軟件工程發(fā)展相對晚一些,這方面的經(jīng)驗(yàn)比較少,好多項(xiàng)目中測試人員和開發(fā)人員經(jīng)常會發(fā)生一些摩擦、甚至沖突,一些有經(jīng)驗(yàn)的管理人員、開發(fā)人員和測試人員還比較好一些,而經(jīng)驗(yàn)較少的人員表現(xiàn)比較突出,如果再加上一些管理方面不夠到位的話這種沖突就比較嚴(yán)重了,有的項(xiàng)目測試人員和開發(fā)人員甚至到了互相不能容忍的地步。這不是夸大其辭,確認(rèn)經(jīng)歷過這樣的公司和這樣的人,往往是經(jīng)驗(yàn)越豐富的人員對測試與開發(fā)的作用越理解的比較透徹。
追其原因,主要是因?yàn)闇y試和開發(fā)的工作內(nèi)容雖然相同,但考慮問題的角度卻各異。這樣有時候站在這個角度看到的問題與另一個角度看到的問題是不相同的。有時這種不相同就會導(dǎo)致爭議發(fā)生。如果雙方都能夠站在對方的角度考慮一下就會明白對方為什么要提出這樣的問題。但是站在對方的角度來考慮不是說說就能明白的,有時非得親身體驗(yàn)一回不可,否則還是有一些不理解。更何況對方是怎么想的、原則是什么都不一定能夠說的很清楚。
往往會聽到這樣的評價(jià):測試人員不知道怎么想的,總是做一些用戶不可能進(jìn)行的操作;我真服了測試人員,不是好好的測試功能,不知道都在想些什么,非要搞一大堆沒用的數(shù)據(jù)錄入;我看測試人員故意找茬,本來好好的功能非要鉆牛角尖,找出幾個沒用的BUG來表現(xiàn)自己的水平。等等。
后續(xù)章節(jié)就測試人員考慮問題的思想因素做一說明,試圖起到拋磚引玉的作用,供開發(fā)人員和測試人員來參考。文章中的描述或用詞不妥之處也希望大家指出來我盡快更正,提前道謝了!
“測試人員的腦子里到底在想什么呢?”(二)
系統(tǒng)是否做了該做的事情?還有就是系統(tǒng)是否做了不該做的事情?
今天,在用戶現(xiàn)場的測試人員打電話回來:“我們的系統(tǒng)出現(xiàn)了一個大的問題:通過前臺界面修改一條記錄沒有成功,系統(tǒng)也很正確的進(jìn)行了提示,可是后臺系統(tǒng)卻把修改信息發(fā)了出去,其他廠家開發(fā)的系統(tǒng)接收到消息后同時進(jìn)行了響應(yīng)的修改,并且把修改成功的信息發(fā)送回來了,可是我們的系統(tǒng)卻沒有成功修改,導(dǎo)致業(yè)務(wù)不能正常進(jìn)行,這樣的系統(tǒng)根本就不能放行。”
這個案例就是一個很好的說明。測試人員在測試的時候首先會考慮系統(tǒng)是否實(shí)現(xiàn)了預(yù)期的功能-前臺界面修改記錄不成功進(jìn)行提醒,但同時還要考慮系統(tǒng)是否做了不該做的事情,在這個案例中就是既然沒有修改成功,那就不應(yīng)該發(fā)送消息給其他系統(tǒng)要求修改相關(guān)信息。
這種問題多發(fā)生在功能之間的接口或者是多個人開發(fā)的系統(tǒng)中。例如在航天史上有名的案例:美國發(fā)射火星探測器,整個研發(fā)過程都比較嚴(yán)密,但是最終登錄失敗了。問題的原因就在于系統(tǒng)出現(xiàn)了問題:火星著陸與著陸后出現(xiàn)不銜接。著陸后系統(tǒng)運(yùn)行應(yīng)該在著陸的數(shù)據(jù)基礎(chǔ)上運(yùn)行,而項(xiàng)目研發(fā)的時候著陸后的系統(tǒng)運(yùn)行實(shí)在數(shù)據(jù)清空的基礎(chǔ)上運(yùn)行,根本就沒有考慮到實(shí)際情況。
這種情況開發(fā)人員與測試人員容易發(fā)生爭議的地方是:開發(fā)人員認(rèn)為我做的系統(tǒng)或功能沒有問題,我已經(jīng)測試通過。有的還會說當(dāng)初沒有告訴我要這樣做,或者是別人沒有在我的基礎(chǔ)上考慮,或者別人沒有給我傳送我需要的數(shù)據(jù)。這時如果項(xiàng)目組織不夠好的話測試人員往往要協(xié)調(diào)多名開發(fā)人員或開發(fā)團(tuán)隊(duì)來解決問題,有如果不樂觀的話會吃力不討好,無人理睬。
“測試人員的腦子里到底在想什么呢?”(三)
不僅要進(jìn)行合法性的測試,同時還要考慮非法的是否可以進(jìn)行。
測試人員認(rèn)為合法輸入或流程等一定能夠正常進(jìn)行,同時非法的輸入或者流程不能夠進(jìn)行,系統(tǒng)應(yīng)該有所判斷并有相關(guān)信息提示。為什么要有提示?不一定所有使用系統(tǒng)的人都知道哪些是非法的。
舉個很簡單的例子:數(shù)據(jù)錄入的時候,如果沒有進(jìn)行非法檢查,一些非法字符進(jìn)入系統(tǒng)很可能會給以后造成很大的數(shù)據(jù)錯誤,比如一些保留字、特殊字符等等。例如在一個文本框中輸入一個單引號(‘)成功的話,在數(shù)據(jù)庫中有時執(zhí)行一條SQL語句的時候會把單引號做為SQL命令而導(dǎo)致SQL腳本執(zhí)行不成功或者錄入錯誤數(shù)據(jù)。試想如果在遠(yuǎn)程緊急救護(hù)系統(tǒng)中把緊急搶救時間1分鐘錯誤成10分鐘后果會是什么?如果關(guān)鍵時刻系統(tǒng)出現(xiàn)崩潰會是什么后果?那就不是BUG了,是殺人!
這種情況開發(fā)人員往往會說:測試的都是些什么呀?不痛不癢。能不能發(fā)現(xiàn)一些重要的、深層的BUG呀?豈不是這個不中要的BUG如果把數(shù)據(jù)放行進(jìn)入數(shù)據(jù)庫,后面就會出現(xiàn)重要的、深層的BUG了。有時對這些BUG不置可否。
“測試人員的腦子里到底在想什么呢?”(四)
健壯性、穩(wěn)定性
這是測試人員和開發(fā)人員最容易產(chǎn)生爭議的問題。測試人員總是從各個角度進(jìn)行測試,尤其是各個非法操作角度進(jìn)行測試,測試人員想:不能因?yàn)橛脩舻恼`操作導(dǎo)致系統(tǒng)出錯或者崩潰,所以盡量考慮各種非常情況,有的情況開發(fā)人員都覺得有點(diǎn)變態(tài)了。下面是測試人員和開發(fā)人員的一段對話,從中可以看出一些不同點(diǎn):
開發(fā)人員:“用戶輸入數(shù)據(jù)時怎么可能按住鍵盤不放呢?你這樣按著不放能不出錯嗎?”
測試人員:“用戶是不會故意按著鍵盤不放的,但是有可能不小心會用手或者書之類的東西壓著鍵盤,如果發(fā)生這樣的事情,我們的系統(tǒng)總不能崩潰吧?怎么著也應(yīng)該給個提示或者警告一下。”
有時候用戶是會發(fā)生錯誤的,人嗎,誤操作總是難免的,如果有了誤操作系統(tǒng)就出一點(diǎn)小錯,用戶還能忍受,如果出打錯或者崩潰,用戶估計(jì)會有意見了。測試人員正式從這個方面進(jìn)行考慮的。
易用性
一般經(jīng)常與用戶接觸的人員會對易用性理解深刻,用戶覺得操作繁瑣會要求系統(tǒng)修改的,上帝不滿意了你能不管嗎?
測試人員說了:我操作都感到麻煩,用戶會操作的舒服嗎?
這是測試人員對待系統(tǒng)在易用性方面的心態(tài)。
比如測試人員說“在查詢結(jié)果中增加一個排序功能或者模糊匹配功能吧,要不查出這么多的數(shù)據(jù),要找用戶要的那個數(shù)據(jù)太不容易了。”
“這個增加功能太慢了,我都等的有點(diǎn)不耐煩了!”
有時這些提示會被開發(fā)人員忽略掉的。
“測試人員的腦子里到底在想什么呢?”(五)
安全性
(略)
響應(yīng)速度、容量、壓力負(fù)載
“這個增加功能太慢了,我都等的有點(diǎn)不耐煩了!”如果測試人員覺得時間長,用戶也會有這種感覺的,更何況到用戶使用的時候數(shù)據(jù)量可能會更多,隨著用戶數(shù)據(jù)量的增加,速度還會下降的。有時測試人員提出有關(guān)速度等性能問題的時候就是基于這個思路提出來的。
盡可能多的發(fā)現(xiàn)BUG
測試人員的職責(zé)就是找BUG,盡可能多的發(fā)現(xiàn)BUG,不管BUG是嚴(yán)重的還是輕微的,都要提出來。如果有時系統(tǒng)相對穩(wěn)定或者測試人員不熟悉系統(tǒng)的時候,會發(fā)現(xiàn)很多輕微的BUG,比如顯示錯字、位置不對等等,開發(fā)人員會認(rèn)為這些問題都不是問題而輕視測試人員,從而造成矛盾。
提前、盡早、不斷
測試人員的原則之一。提前發(fā)現(xiàn)問題有助于盡早的解決問題降低成本(時間、人力、金錢等成本),也有助于對系統(tǒng)有全盤的把握。
不斷測試原則比較典型的矛盾是這樣:
開發(fā)人員:“能不能一次測試完就告訴我有多少問題?總是沒個完。”
要知道BUG是永遠(yuǎn)都存在的,不可能一下子發(fā)現(xiàn)全部問題的。
足夠好的測試
測試不是無休止的,所以即使你想進(jìn)行完全的測試是不可能的,這在好多教科書中都有介紹,再加上測試是有成本的,需要花費(fèi)時間、金錢、人力資源等成本的,有時過多的測試對企業(yè)來說是虧本的,因此測試有一個結(jié)束時間。但是總不能在不該停止測試的時候停止,否則系統(tǒng)中包含很多問題怎么辦?因此測試既不能過度,也不能過少,進(jìn)行足夠好的測試就可以了。
這怎么會有矛盾呢?可以看一看開發(fā)人員的這句話就明白了:“用戶都發(fā)現(xiàn)問題了,測試人員怎么不測試了呢?害的我們費(fèi)這么大勁去修改。”
管理方式(處理方式)
有的管理人員對測試認(rèn)識比較深刻,只要是測試人員發(fā)現(xiàn)問題,就要求開發(fā)人員必須限期修改完成,而不是對問題進(jìn)行分析、評估并根據(jù)開發(fā)人員的工作量進(jìn)行適當(dāng)?shù)陌才拧_@樣有時開發(fā)人員容易與測試人員造成矛盾:這么簡單的問題也要提出來,而且這么多小問題,我哪有時間去改那!測試人員也不高興了,我沒有錯呀,我都把問題發(fā)現(xiàn)了,提前告訴你不是很好嗎?要是到了用戶那里豈不是麻煩了?我做了好事不但不感謝,反倒成了我的不是了。但是測試人員也不愿意得罪開發(fā)人員呀,所以有時矛盾發(fā)展結(jié)果就成了開發(fā)人員與測試人員私下里達(dá)成協(xié)議:不記錄問題,與雙方都有利。
爭議處理流程
(略)
缺陷處理成本 環(huán)節(jié)少
(略)