為什么要選擇軟件測試”并非出身名校的我,每每在面試中面臨著個(gè)問題時(shí),總是覺得百感交集。測試對我就如同我歷經(jīng)的求職過程——痛苦并快樂著。在品味它的過程中,我彷徨,迷茫,經(jīng)歷著感情的低潮,這個(gè)過程不會(huì)很快樂,甚至是痛苦。同樣品味測試,有人拿駕馭它易如反掌折枝,不費(fèi)吹灰之力;有人雖歷經(jīng)波折,但最后總算苦盡甘來,嘗到“擁有”的甜美果實(shí);但也有人即便吃盡苦中苦、用盡千方百計(jì),終了卻仍與“它”擦身而過。結(jié)果永遠(yuǎn)難以預(yù)測,我渴望快樂,那就要蛻變,意味著要經(jīng)歷痛苦而漫長的磨練,意味著所有的一切都將從頭開始,一切都將變的陌生,但如果蛻變成功,那一刻就如同蝴蝶破繭而出的那一瞬間,美麗卻又讓人感動(dòng)。一直以來對測試的認(rèn)識(shí)存在誤區(qū),認(rèn)為測試的目標(biāo)和價(jià)值就是在黑盒測試活動(dòng)中找bug,但當(dāng)測試經(jīng)驗(yàn)的逐漸的積累,重新回頭再重新審視測試,發(fā)現(xiàn)我所理解的測試逐漸浮現(xiàn)出它自身的價(jià)值,在這里我對自己的感悟和理解做了一個(gè)梳理,有不完整和理解不正確的地方,希望大家多多指教。
測試=重復(fù)+枯燥
也許我要講測試不過是每天重復(fù)一些操作來發(fā)現(xiàn)Bug(錯(cuò)誤)。事實(shí)的確如此,哪怕是非常熱愛這項(xiàng)職業(yè)的人也承認(rèn)它的枯燥。測試它是機(jī)械、枯燥、重復(fù)的過程,尤其是在項(xiàng)目接近尾聲的時(shí)候,修改測試,再修改再測試,像無法擺脫的輪回,有時(shí)候更像是一場與開發(fā)組不間斷的戰(zhàn)爭,不過,摒棄枯燥的外衣,測試本身有它的價(jià)值所在,它更讓人能從用戶的角度來考慮問題,更能深入了解程序開發(fā)過程中可能出現(xiàn)的問題,盡管可能一整天都為了一個(gè)很小的問題“循規(guī)蹈矩”地反復(fù)測試并撰寫測試文檔,這樣的重復(fù)將會(huì)是重要的積累。我喜歡新東方學(xué)校的徐小平新書《騎驢找馬》中的一句話:“重復(fù)做漢堡,就是麥當(dāng)勞;重復(fù)煮咖啡,就是星巴克;重復(fù)教托福,就是俞敏洪;重復(fù)做好事,就是活雷鋒!惫ぷ鞅旧淼臐M足也是來自于填補(bǔ)缺陷,測試亦是如此。
其實(shí)在現(xiàn)實(shí)的軟件測試環(huán)境中,沒有兩條測試路徑是完全相同的,沒有測試是可以精確的重復(fù)執(zhí)行,就好像你不能精確的沿著你的足跡往回走,你可以很接近,但你總會(huì)有一點(diǎn)偏移。所以你無法確保其中某些因素會(huì)影響你下次的測試,重復(fù)測試也其實(shí)只是重復(fù)其它測試的某些方面,在以下某些方面重復(fù)的測試是非常有必要的:
1.重試:當(dāng)你不確定一個(gè)測試在其它的時(shí)候是否被正確的執(zhí)行時(shí),這種情況的一種處理方法就是讓幾個(gè)測試員沿著同樣的測試說明執(zhí)行測試,檢查他們是否得到相同的結(jié)果。
2.改變:當(dāng)開發(fā)修改了一個(gè)測試中的重要部分,但同時(shí)保持其它部分不變時(shí),即使這個(gè)測試的一部分元素是保持不變的,但對整個(gè)測試來說,它是新的,并且可能會(huì)引發(fā)新的行為。之所以會(huì)對一個(gè)測試作改變,那是因?yàn)殡m然之前的測試涵蓋了某些方面,但涵蓋的范圍還不足夠。這個(gè)時(shí)候需要重復(fù)測試。
3.重要性:當(dāng)可以通過重復(fù)測試發(fā)生的問題可能比其它檢測出來的問題更重要時(shí),產(chǎn)品行為的重要性的結(jié)果是不一樣的,有時(shí)一個(gè)特殊的問題或者只要影響用戶一次就可能被認(rèn)為難以接受的(“決不允許再次發(fā)生”的情況)。這并不意味著需要執(zhí)行完全相同的測試,只要重復(fù)的測試包含可檢測出問題的足夠相似的元素就可以了(查看改變部分)。
4.舊問題:原有的問題在原有的環(huán)境中已經(jīng)解決,但是將其應(yīng)用到新的環(huán)境中時(shí),然后會(huì)偶現(xiàn),這是需要在新的環(huán)境中重復(fù)的測試。
測試= 沒有技術(shù)含量
踏上測試這條路的人何止千萬,但是不同的人對這個(gè)行業(yè)有不同的感嘆。有人嘆息成長為測試的高手猶如星星之火,難以燎原,有人在唏噓,測試毫無技術(shù)含量,也有人感嘆因?yàn)槟康牟煌と霚y試道路的人們,經(jīng)過實(shí)踐的歷練,歲月的打磨,會(huì)有那么多不一樣的結(jié)果。
其實(shí)軟件測試并不是簡單,雖然它所進(jìn)行的主要工作就是在軟件開發(fā)過程中的排錯(cuò)。但是這種排錯(cuò)的工作卻并非像我作為新人初涉入這個(gè)行業(yè)所了解那樣,僅僅是一個(gè)尋找bug的工作,任何人,都能找到出來,區(qū)別在于,熟手找到的速度和數(shù)量大于生手而已。它的根本原則是站在客戶/終端用戶的角度上來衡量和評價(jià)軟件產(chǎn)品的質(zhì)量。如果不清楚客戶真正的需求,那么我們的工作也只不過是機(jī)械的勞作而已。我們需要將需求分解為可測的功能點(diǎn),并且根據(jù)自己的思維去想,在有限的測試時(shí)間內(nèi),如何設(shè)計(jì)測試用例,能夠保證最佳有效的測試覆蓋,檢測出軟件產(chǎn)品中的種種功能及性能隱患。在這個(gè)過程中我們就像在掘?qū)殻瑢毑仉[藏的越深,條件越復(fù)雜,級別越高,找到后,就會(huì)越開心。
如何完全界定有沒有技術(shù)含量,我也說不好,但是我認(rèn)為對測試悟得越透,經(jīng)驗(yàn)越多,測試也就會(huì)做得越好,取得成效越好,從這個(gè)角度上講,測試是很需要能力的,這種能力我們也可以理解成“技術(shù)含量 ”, 在軟件開發(fā)過程中測試人員不僅需要具備技術(shù)能力,還需要具備溝通能力,懷疑精神,極強(qiáng)的洞察力,耐心,甚至是幽默感(在遇到狡辯的情況下,幽默的批評是很有幫助的)。所以所謂的技術(shù)含量在某種程度上并不完全是純粹的技術(shù),更多時(shí)候是測試人員本身的素質(zhì)。
測試+開發(fā) = 不可調(diào)和的矛盾
在好的項(xiàng)目組中,和諧的測試和開發(fā)猶如一對好的矛和盾,相互制約又相互協(xié)調(diào),在求職面試時(shí),經(jīng)常會(huì)遇到一個(gè)相同的問題,在測試項(xiàng)目或者產(chǎn)品的過程如何協(xié)調(diào)與開發(fā)人員的關(guān)系,即如何處理工作性質(zhì)所帶來的開發(fā)和測試的矛盾。剛涉足測試時(shí),我不能很好的體會(huì)到這種矛盾,只能淺層的想象測試是挑開發(fā)的毛病,開發(fā)當(dāng)然也不樂意老讓人挑毛病,所以就有了矛盾。之后翻閱一些書籍,里面談到測試和開發(fā)的協(xié)調(diào)需要上升到一定的高度,即“雙贏”,就是大家共同的目標(biāo)是一致的,就是維護(hù)好整個(gè)項(xiàng)目讓客戶打到最佳滿意度,這樣會(huì)這很大程度上避免一些“沖突”,實(shí)現(xiàn)工作中的雙贏,理論上這是個(gè)很好很和諧的概念,這樣回答面試官不加分也不至于扣分。
但是在實(shí)際操作中,很多現(xiàn)實(shí)因素會(huì)制約這種思想,比如其一:大家為了減少項(xiàng)目出錯(cuò)的風(fēng)險(xiǎn),卯足了勁去查bug,免不了有鉆牛角尖的情況發(fā)生,再要是同時(shí)開發(fā)人員會(huì)將bug的數(shù)量作為其考核的標(biāo)準(zhǔn),那么測試和開發(fā)之間的“硝煙”是終日揮散不去的。其二:測試和開發(fā)獲取的信息的不平等抑或不一致,由于開發(fā)人員在整個(gè)項(xiàng)目開發(fā)過程中獲取的需求信息,需求變得信息,項(xiàng)目流程信息等比測試人員更廣泛或者時(shí)間上更快捷,導(dǎo)致與最終測試人員的思想不一致而產(chǎn)生一些錯(cuò)報(bào)或者漏報(bào)的bug,倘若再加上溝通不善,會(huì)對整個(gè)項(xiàng)目進(jìn)度和流程產(chǎn)生很大的影響;信息不一致則是開發(fā)和測試在理解需求上產(chǎn)生分歧,從需求階段就產(chǎn)生矛盾勢必會(huì)滿意至編碼階段和測試階段,解決這樣的矛盾的結(jié)果就是拖延項(xiàng)目的進(jìn)度。
測試如矛,開發(fā)如盾,在初期,矛若知道盾之強(qiáng)弱,便可及時(shí)修補(bǔ)其弱點(diǎn),那么這就首先要求開發(fā)和測試從項(xiàng)目出去就需要保持一個(gè)一致的狀態(tài),無論從需求信息,需求變更信息,風(fēng)險(xiǎn)信息,技術(shù)瓶頸信息,項(xiàng)目難度信息,都需要保持同等及時(shí)的認(rèn)知,這就需要測試和開發(fā)人員相互溝通得當(dāng)及時(shí)。其次在處理bug的問題上,好習(xí)慣的測試人員會(huì)在開發(fā)之前撰寫case階段就根據(jù)自身經(jīng)驗(yàn)預(yù)測開發(fā)人員容易忽視的邏輯從而預(yù)先告知防止錯(cuò)漏的發(fā)生。其三,對于bug的分析和爭議,測試人員應(yīng)該多從用戶的可重現(xiàn)性,bug的風(fēng)險(xiǎn)性,解決bug所需要的時(shí)間和價(jià)值性價(jià)比等方面共同商榷,最后定奪一個(gè)處理bug的最佳方案,一個(gè)被提出的bug也并非只有解決,不解決和無效者幾種狀態(tài),可以根據(jù)整個(gè)項(xiàng)目的情況來定奪它,目前不解決也不一定是永遠(yuǎn)都不解決,最重要的是它對產(chǎn)品的影響力和投入的估計(jì)要得當(dāng)適合,才能查出一個(gè)高性價(jià)比的產(chǎn)品,最終獲得收益的最大化,同時(shí)開發(fā)和測試也獲得了雙贏的局面。
以子之矛,攻子之盾,在古代或許是絕對的對立,但是對于測試和開發(fā)誰說一支好的矛一定要攻破盾,一支好的盾一定抵御得了任何矛,好的矛與好的盾,不斷的磨合和進(jìn)步,終有一天會(huì)默契得強(qiáng)過任何矛盾,所向披靡。
我的測試 == 痛&&快樂
我的第一份實(shí)習(xí)工作是在一個(gè)外企做黑盒WEBGUI測試。剛剛進(jìn)入軟件測試的我那個(gè)時(shí)候?qū)浖䴗y試也一無所知,甚至一開始我的職位都是:測試執(zhí)行人員。跟我一起奮斗的同伴們,每天都在不斷的自我抱怨中拿著那些別人寫好的測試用例,一遍一遍在同一個(gè)頁面上重復(fù)的點(diǎn)擊某個(gè)按鈕。大家都似乎認(rèn)同一個(gè)道理:這就算測試運(yùn)行自己寫或者別人寫的case,機(jī)械的像在碰運(yùn)氣一樣的去尋找或許存在的bug。
我曾在心里質(zhì)疑過自己的選擇,但是我最終還是覺得,即便是在這樣的環(huán)境里面,我能學(xué)到應(yīng)該不止這些。我能做的應(yīng)該也不止這樣,否則我的路在哪里人無法預(yù)料未來,只能把握現(xiàn)在。如果你想未來能走得更遠(yuǎn),更寬,那么今天就一定要努力。這也是我當(dāng)時(shí)想的,并且努力去做的。其實(shí)喜歡與否,有的時(shí)候也在于你是否有興趣去探求,去思考和了解這個(gè)行業(yè)里面的浮在表面之外那些東西。不了解,就很難喜歡,不喜歡,又有什么機(jī)會(huì)會(huì)因?yàn)榕d趣而去努力呢或許,世界本來就是不公平的,在某些人的眼中,看別人瀟灑的談笑,自己卻要如此艱澀的生活著;或許,世界本來就是公平的,你善待了你的生命,虔誠的為了自己的理想去努力,即使不能碩果累累,取得的成績可圈可點(diǎn),對于我的人生,痛并快樂著,這就已經(jīng)足夠。
相關(guān)推薦:軟件水平考試網(wǎng)絡(luò)工程師學(xué)習(xí)筆記匯總(完整版)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |