在一個(gè)交流討論會(huì)上,開發(fā)對我說:“測試給我的印象,像是在雞蛋里挑骨頭!蔽衣牶蠊笮Γ瑢λf:“如果雞蛋是新鮮的雞蛋,那不管我們怎么挑,也不會(huì)挑出骨頭來;如果雞蛋變質(zhì)了,或者將要孵化成小雞,不單是雞蛋里挑骨頭,而且還是雞蛋里挑雞毛了!。”

  當(dāng)然,這只是一個(gè)玩笑,只是在這個(gè)玩笑的背后隱藏著開發(fā)對測試的誤解,也隱藏著測試工作的本質(zhì)。我可以理解他對測試的看法,因?yàn)楹芏鄷r(shí)候,我們對產(chǎn)品的質(zhì)量要求都非常嚴(yán)格,除了基本功能測試外,還會(huì)做性能的調(diào)優(yōu)測試、異常測試,基本功能的bug比較容易修改,而且有依可循;但是,性能調(diào)優(yōu)和異常測試出來的問題不那么容易解決了。有時(shí)候,在性能調(diào)優(yōu)時(shí)有些問題的修改甚至?xí)P(guān)聯(lián)到整個(gè)流程的變動(dòng),改動(dòng)多了,開發(fā)自然會(huì)覺得煩;而且,工程上對性能也無一個(gè)明確的需求,測試提出來的可以說是一個(gè)完善的建議,改了肯定會(huì)完善產(chǎn)品,不改也不會(huì)受責(zé)難,開發(fā)會(huì)不明白測試為什么偏偏那么追求完美;有些異常測試,工程上出現(xiàn)的幾率是1%,為了這1%而大動(dòng)干戈,開發(fā)自然會(huì)問這是否值得。除了異常以外,連日志的可讀性、規(guī)范性,還有界面的友好性、易用性,測試也會(huì)要求開發(fā)力盡完美;作為開發(fā),他自然會(huì)認(rèn)為,功能實(shí)現(xiàn)了好了,為什么還有這么多可有可無的講究?

  不過,從測試的角度來看,問題不一樣了,測試必須對產(chǎn)品的質(zhì)量負(fù)責(zé)。首先,要確保功能滿足需求,功能有問題自然不能通過測試。其次,會(huì)考慮系統(tǒng)的性能和完善,在同類的產(chǎn)品中,大家都實(shí)現(xiàn)相同的功能,在功能上不同的廠家并沒有太大的差別,但是,性能不一樣了,好的設(shè)計(jì)好的產(chǎn)品性能會(huì)高上好幾倍,在實(shí)際的運(yùn)行中價(jià)值體現(xiàn)出來了。再次,對于異常,在大多數(shù)的情況下自然不會(huì)出現(xiàn)異常,但是是否可以確保永遠(yuǎn)都不會(huì)出現(xiàn)異常呢?當(dāng)然不是,即使是只有萬分之一的機(jī)會(huì),異常也是會(huì)出現(xiàn)的,而且異常的出現(xiàn)往往會(huì)帶來災(zāi)難性的后果,這又叫測試如何可以忽略呢?后,對于非功能性的問題,比如有助于日常維護(hù)的日志,客戶使用的界面,這些雖然不是什么大問題,不修改也不影響功能的使用,但是卻影響到了產(chǎn)品的使用效果,直接影響到了客戶對產(chǎn)品的第一印象。

  測試與開發(fā),還真要相互理解,如果一個(gè)產(chǎn)品在設(shè)計(jì)的時(shí)候考慮得比較完善,在實(shí)現(xiàn)的時(shí)候確保質(zhì)量,那么,不管測試怎么挑也不會(huì)在一個(gè)新鮮的雞蛋里挑出骨頭了;但是,如果雞蛋已經(jīng)不是我們所期待雞蛋,骨頭自然會(huì)挑出一大堆。

  另外,從另一個(gè)角度來說,相對于其它測試人員來說,我的要求也真的太過完美,有時(shí)甚至有些苛刻。我自己也一直在思考一個(gè)度的問題,測試肯定不可能發(fā)現(xiàn)所有的問題也不可能把產(chǎn)品測試得非常完美,但是也要保證產(chǎn)品的質(zhì)量,在兩者之間應(yīng)該有一個(gè)平衡的度,只是這個(gè)度該如何去把握?