我的職業(yè)發(fā)展路徑
蔡:謝謝文強(qiáng)接受我的采訪。請相對詳細(xì)地介紹一下你的個人經(jīng)歷。就我個人而言,我比較喜歡看人物傳記。雖然我們不是什么大人物,但是每個人都是獨(dú)特的,人生的經(jīng)歷都是寶貴的,其中或許有可以供其他朋友借鑒的地方。
按工號隨機(jī)分配而進(jìn)入軟件測試行業(yè)
鄭:我不是計算機(jī)相關(guān)專業(yè)畢業(yè)的,卻陰差陽錯地從事了與之相關(guān)的軟件測試工作。1994年到1998年我在華東師范大學(xué)物理系上學(xué),1998年到2001年接著在本校上了精密激光物理專業(yè)的研究生。因?yàn)榇髮W(xué)與研究生專業(yè)都是理科,在整個7年學(xué)習(xí)期間基本沒有上過計算機(jī)相關(guān)的專業(yè)課,因此IT基礎(chǔ)很差,導(dǎo)致工作以后入門相對比較難。
2001年碩士畢業(yè)以后我應(yīng)聘進(jìn)入中興通訊上海第一研究所。中興通訊在上海有兩個研究所:第一研究所和第二研究所,其中第一研究所的主要產(chǎn)品線是有線通訊。我在中興通訊上海第一研究所的工作是軟件測試,產(chǎn)品是園區(qū)寬帶接入系統(tǒng)IPDSLAM,主要提供ADSL/VDSL的用戶端接入。從時間上來說,在國內(nèi)我算是做軟件測試比較早的一批了。當(dāng)時國內(nèi)測試行業(yè)剛剛起步,測試工作并不受重視。說起來比較有意思,新入職一批新人,按工號排列,奇數(shù)的去做開發(fā),偶數(shù)的去做測試(或者反過來,記得不是很清楚了),就是這么隨機(jī)分配的。
努力學(xué)習(xí)軟件測試
由于專業(yè)的原因,我的IT基礎(chǔ)很差,甚至TCP/IP協(xié)議和IP地址/掩碼等方面的知識都沒有。不懂怎么辦?我能做的只能是比其他同事更加勤奮努力。在工作之余,我拼命看書,同時多向其他同事學(xué)習(xí)。當(dāng)時測試組加我只有三個人,兩個做功能測試,一個做性能測試,我就是被分配做性能測試的那位。剛出校門,我對通信設(shè)備的功能都不了解,就要做性能測試,壓力非常大。但是,沒有別的路可以走,只能靠自己努力。當(dāng)時所做的性能測試,主要是偏硬件的,要搭建大的測試環(huán)境,是個體力活,基本都是沒有人愿意接手的工作。更苦的是,除了性能測試,還需要負(fù)責(zé)通信設(shè)備的EMC(電磁兼容性)測試,每次都是背著沉重的設(shè)備,乘公交車去其他公司的EMC實(shí)驗(yàn)室做測試,經(jīng)常在外面奔波。
旁觀者說:剛畢業(yè)后的第一份工作,不要挑工作內(nèi)容。不管做什么,都是一種歷練,像鄭文強(qiáng)一樣踏踏實(shí)實(shí)做下來。剛畢業(yè)的時候有沖勁,總想學(xué)習(xí),沒有家累,這些都是優(yōu)勢,能夠彌補(bǔ)工作經(jīng)驗(yàn)的不足。如果這也不愿做,那也不愿做,要享受老員工的"待遇",等于在破壞自己的優(yōu)勢。一個人在公司總要有點(diǎn)優(yōu)勢。
就像前面說的,當(dāng)時所謂的性能測試和EMC測試,都是最沒有地位的工作,即使是在測試部門內(nèi)部。為了使自己更多地了解產(chǎn)品功能和協(xié)議方面的知識,我在完成性能測試與EMC測試工作之后,就會拿一個本子,坐到做功能測試的同事邊上,邊看邊記,不懂的就問。等他們中午吃飯和休息的時候,我就自己動手嘗試操作,這個過程對自己掌握產(chǎn)品功能的測試幫助很大。
旁觀者說:在這里,我看到了鄭文強(qiáng)刻苦學(xué)習(xí)的精神。天道酬勤。
除了產(chǎn)品測試的任務(wù)之外,為了在公司內(nèi)部引入一些自動化測試的內(nèi)容,我開始嘗試學(xué)習(xí)編程語言。沒有一點(diǎn)編程的基礎(chǔ),怎么辦?時間對每個人都是平等的,在不影響每天測試工作的前提下,我主動加班以獲取更多的學(xué)習(xí)時間。那時候,每個月的加班時間都在40個小時以上。因此,很快熟悉了如何通過C++和TCL(Tool Command Language,一種通用的腳本語言,可以在各種平臺上解釋運(yùn)行)進(jìn)行測試腳本的編寫。大概過了半年的時間,我不但在性能測試和EMC測試上是了解最多的,同時在產(chǎn)品功能測試方面也不遜色。因此,部門經(jīng)理開始讓我在技術(shù)上負(fù)責(zé)公司內(nèi)IPDSLAM的總體測試任務(wù)和公司外OEM交換機(jī)的驗(yàn)收測試。
旁觀者說:時間都是擠出來的。一個月加班40個小時,相當(dāng)于給自己增加了一周。
旁觀者說:機(jī)會來自能力,而能力來自于日常的學(xué)習(xí)和積累。
在2001年的時候,公司對測試并不大重視。當(dāng)然這并不是單個公司的問題,整個國內(nèi)的大環(huán)境就是這樣,整個軟件測試行業(yè)還是剛起步,流程上也不規(guī)范。項(xiàng)目計劃主要是根據(jù)客戶的要求來確定的,在項(xiàng)目進(jìn)度與質(zhì)量之間發(fā)生沖突的時候,往往先滿足發(fā)布的時間要求,而犧牲產(chǎn)品質(zhì)量。因此,對于測試人員,除了在公司內(nèi)部有緊張的測試任務(wù)之外,還需要不斷地去解決客戶現(xiàn)場的問題,就是一個不斷救火的過程。
在中興通訊上海第一研究所的2年測試工作為我在產(chǎn)品知識領(lǐng)域打下了非常堅(jiān)實(shí)的基礎(chǔ)。這是合格的測試人員首先需要具備的一個技能--深入了解你的測試對象,它的架構(gòu)、功能,以及客戶是如何使用他們的業(yè)務(wù)知識的。
旁觀者說:對軟件產(chǎn)品了解到什么程度,測試才能做到什么程度。
學(xué)習(xí)好軟件研發(fā)流程
2003年中,我第一次換工作,到上海貝爾-阿爾卡特繼續(xù)從事測試工作。現(xiàn)在回過頭來看,即使是在2003年,上海貝爾-阿爾卡特的項(xiàng)目管理、開發(fā)流程和測試流程都是做得相當(dāng)好的。在上海貝爾-阿爾卡特公司內(nèi)部,一個蘿卜一個坑,不僅僅強(qiáng)調(diào)個人的能力,更注重團(tuán)隊(duì)的整體能力。上海貝爾-阿爾卡特的文檔管理系統(tǒng)非常好,以前項(xiàng)目的所有文檔你都能找得到,而且是正確的版本,同時針對各種測試工作產(chǎn)品,都會有相應(yīng)的文檔模板,以方便測試人員迅速了解每個文檔中應(yīng)該包括哪些內(nèi)容。當(dāng)時采用的開發(fā)模型是火車模型 ,即迭代增量的開發(fā)模型,針對產(chǎn)品有5年的長遠(yuǎn)計劃,基本上是每隔半年會發(fā)布一個版本。
旁觀者說:團(tuán)隊(duì)越大,項(xiàng)目越大,配置管理就越重要。
在上海貝爾-阿爾卡特,除了繼續(xù)在產(chǎn)品知識和業(yè)務(wù)領(lǐng)域進(jìn)行學(xué)習(xí)與實(shí)踐之外,我將很大的精力花在了流程的學(xué)習(xí)上,包括PMP知識體系、開發(fā)模型、測試流程的主要活動、測試輸入與輸出文檔等。在上海貝爾-阿爾卡特的幾年工作經(jīng)驗(yàn),使得自己對整個研發(fā)流程都有了全局了解,也讓自己可以更輕松地和不同的測試從業(yè)人員進(jìn)行交流與分享。不同公司盡管其采用的開發(fā)模型和測試流程會有所不同,但是基本的測試知識體系都大同小異。
旁觀者說:在一家公司工作,除了學(xué)到軟件產(chǎn)品對應(yīng)的技術(shù)外,不要忘了學(xué)習(xí)“軟技能”,例如研發(fā)流程。
去管人還是堅(jiān)持做技術(shù)
在上海貝爾-阿爾卡特,我當(dāng)時的目標(biāo)是去做經(jīng)理,簡單地講,就是去管人。周圍的氛圍大抵如此,大家基本都認(rèn)為管人的經(jīng)理有地位、有能力,當(dāng)然也有面子。其間我曾經(jīng)去UT-斯達(dá)康面試過,目標(biāo)職位是項(xiàng)目經(jīng)理。所有的面試流程都通過了,但是這個職位因?yàn)楦鞣N原因最終被取消了,我沒有去成。這件事情讓我深思,我問自己:自己真的喜歡做項(xiàng)目管理工作嗎?自己真的適合做項(xiàng)目經(jīng)理嗎?是自己喜歡還是活在其他人的期望之中?深思和反省了一段時間之后,發(fā)覺自己并不是真的喜歡項(xiàng)目經(jīng)理這樣的職位,更多的是由于人家覺得這樣是好的。經(jīng)過這次反思,我給自己重新做了一個定位:發(fā)揮自己在測試領(lǐng)域的專長與經(jīng)驗(yàn),繼續(xù)自己的軟件測試技術(shù)之路。
旁觀者說:做自己,而不是生活在別人的期望中。
上海貝爾-阿爾卡特是一家不錯的公司,我在其中的幾年最大的收獲是:深入了解了軟件開發(fā)流程、測試流程與項(xiàng)目管理方面的知識。這也是合格測試人員需要具備的技能。除了了解你的測試對象之外,你需要深入了解軟件產(chǎn)品是如何開發(fā)出來的,開發(fā)與測試之間的關(guān)系是什么,主要的測試活動與測試任務(wù),等等。
由于辦公場所在浦東,離家太遠(yuǎn),每天往返上下班需要2到3個小時。雖然公司有班車,但是每天在路上花費(fèi)的時間太多。在2006年的時候,我猶豫、徘徊了很久,最終決定到離家更近的朗訊科技光網(wǎng)絡(luò)有限公司,繼續(xù)做我喜歡的軟件測試工作。這樣,我也可以更好地平衡工作與生活。
旁觀者說:一個人最珍貴的資源是什么?時間。
在朗訊我做了2年多的測試管理職位,帶領(lǐng)一個測試團(tuán)隊(duì)。在朗訊工作2年多后,也就是2008年年底,我主動向公司申請,轉(zhuǎn)做測試技術(shù)崗位。我感覺自己的個人興趣還是在技術(shù)上,我想專注在軟件測試過程和測試能力改進(jìn)等領(lǐng)域上,這樣從管理崗位轉(zhuǎn)到技術(shù)崗位有利于自己的發(fā)展,有更多的時間和精力去做自己想做的事情。
旁觀者說:能夠看清自己的興趣在哪里,看清自己擅長的在什么地方,真是幸事。
研究測試技術(shù)和方法
在朗訊公司內(nèi)部,完成測試任務(wù)之后,我將其他時間與精力放在了測試技術(shù)與方法的研究上面,提出了一些解決方案來不斷提高團(tuán)隊(duì)內(nèi)部的測試能力。例如,在測試用例設(shè)計與執(zhí)行中引入了測試類型的概念;根據(jù)敏捷開發(fā)的特點(diǎn),在測試團(tuán)隊(duì)中提出并引入了Pair Testing(結(jié)對測試 )的概念;在測試用例設(shè)計中提出了"精簡化的測試用例"的概念;在測試用例設(shè)計中提出了放射性思維,使得測試用例編寫的工作量與測試人員創(chuàng)造性思維方面得到了很好的平衡。
旁觀者說:提出新概念是一種創(chuàng)新,當(dāng)然這不容易做到。
同時,我開始在公司內(nèi)部更廣泛地參與測試相關(guān)的活動。2011年和2012年分別參加了公司中國區(qū)第一屆和第二屆技術(shù)大會,并做了主題演講。積極參與公司內(nèi)部的軟件測試社區(qū)建設(shè),并在公司內(nèi)部推廣測試知識、測試技術(shù)與方法、測試管理等方面的培訓(xùn)與分享。現(xiàn)在非常明顯地感覺到公司對軟件測試的重視程度在不斷提高。
到現(xiàn)在為止,我在朗訊的工作時間已經(jīng)有7年了,在軟件測試方面給我最大的體會是:不管多好的測試?yán)砟睢y試技術(shù)與方法,我們都需要和實(shí)際測試工作結(jié)合起來,不斷提高測試效率和有效性,不斷提升測試質(zhì)量。這是合格的測試人員需要具備的技能。
旁觀者說:讓理論經(jīng)過實(shí)踐的檢驗(yàn),落地,形成適合自己公司和團(tuán)隊(duì)的做法和經(jīng)驗(yàn)。
我在測試行業(yè)工作已經(jīng)超過11年了,我感覺是在更深入地了解測試的內(nèi)涵,更愿意將當(dāng)前的狀態(tài)看做是超越自己的一個起點(diǎn)。堅(jiān)持去做自己喜歡的工作,不斷積累、總結(jié)和分享,相信每個人都可以成為領(lǐng)域內(nèi)的專家。
旁觀者說:11年的積累,仍然看做是一個新的起點(diǎn),值得學(xué)習(xí)。
跳槽時要考慮自己的興趣愛好
蔡:一個人跳槽的時候要有哪些方面的考慮呢?
鄭:首先,從大的方向而言,我不鼓勵經(jīng)常跳槽,特別是在沒有職業(yè)規(guī)劃的情況下,僅僅因?yàn)榇觥⑷穗H關(guān)系等原因而匆匆下決定的跳槽。從個人的發(fā)展機(jī)會而言,在一個公司待的時間久了,可以獲得更多的機(jī)會,俗話說"偉大是熬出來的"。當(dāng)然行業(yè)也很重要,要注意自己知識和技能的持續(xù)積累。假如真的決定要跳槽,那么下面幾個方面需要仔細(xì)考慮。
旁觀者說:跳槽會有新的機(jī)會,同時也會付出代價。在做決定的時候,要看到兩面。
第一,跳槽要考慮自己的興趣愛好。做自己喜歡做的事情,盡管錢也很重要,但是為了漲一些錢就跳槽,甚至為此去做自己并不真正喜歡的工作,并不見得是一個明智的選擇,同時很難一直堅(jiān)持下去。我自己就是一個例子,在2005年準(zhǔn)備換工作的時候,我心儀的職位是項(xiàng)目經(jīng)理,感覺特有面子和地位。但在求職失敗之后,我重新審視了自己:去做自己喜歡的,還是去做人家喜歡的?最終我選擇了前者。從目前的結(jié)果看,感覺到自己在公司內(nèi)部可以做的事情更多了,參與的活動也在增加。不管對公司還是對個人,體現(xiàn)的價值都是在不斷增加的。
旁觀者說:在公司里工作,我們難免會被安排,而不一定都遂人愿,但是在發(fā)展的大方向上,還是要自己定。
第二,如果興趣愛好能和自己的優(yōu)點(diǎn)結(jié)合起來,那么跳槽就會更加理性。認(rèn)識自己的優(yōu)缺點(diǎn)實(shí)際上是挺困難的一件事情,"當(dāng)局者迷,旁觀者清"。還是以我自己為例,我的優(yōu)點(diǎn)是勤奮、專注于技術(shù)能力。因此我更適合有條理地工作,自己計劃和控制時間完成每一件事情,而不太適合每天參與各種會議、討論與協(xié)調(diào)工作。所以,從這個層面而言,我更適合去做測試技術(shù)方面的工作,而不是測試管理工作。假如你認(rèn)定自己的性格并不適合做管理工作,那就不要強(qiáng)求,否則不僅自己痛苦,整個團(tuán)隊(duì)也痛苦。
旁觀者說:去認(rèn)識自己的優(yōu)缺點(diǎn)。一個人要想認(rèn)清自己其實(shí)并不容易。
第三,跳槽需要和自己的職業(yè)規(guī)劃相一致,不要亂了方向。假如有了明確的職業(yè)規(guī)劃,清楚實(shí)現(xiàn)職業(yè)發(fā)展需要具備哪些方面的技能,那么在跳槽的時候就會考慮如何更快地掌握這些技能。記得我在中興通訊上海第一研究所的一位同事,原來是做測試工作的,但是其職業(yè)規(guī)劃是做項(xiàng)目經(jīng)理。項(xiàng)目經(jīng)理不僅需要了解測試工作,而且需要了解整個軟件開發(fā)流程和管理工作。因此,除了平時積極學(xué)習(xí)項(xiàng)目管理方面的知識外,他在第一次跳槽的時候,找到了一個軟件開發(fā)的職位,目的就是為了獲取軟件開發(fā)的實(shí)際經(jīng)驗(yàn),待遇方面考慮得比較少。在軟件開發(fā)方向工作3年以后,他再次跳槽,如愿以償?shù)氐玫搅四硞€公司項(xiàng)目經(jīng)理的職位。由于他不僅了解開發(fā)工作,而且了解測試,同時這一結(jié)果又符合自己的職業(yè)規(guī)劃,因此目前他的工作狀態(tài)是非常有激情,這對公司、對個人都是一個不錯的結(jié)果。
旁觀者說:目的非常明確的職業(yè)發(fā)展路線,值得學(xué)習(xí)。
第四,在考慮跳槽的時候,也需要考慮公司的企業(yè)文化、團(tuán)隊(duì)氛圍、個人在公司內(nèi)的發(fā)展空間等,例如,公司離家是否方便,公司是否經(jīng)常加班,公司是否等級森嚴(yán),公司是否鼓勵員工個性化發(fā)展等。
印象深刻的從巴西到上海的項(xiàng)目轉(zhuǎn)移
蔡:請談一下讓你印象深刻的項(xiàng)目。
鄭:從事軟件測試工作超過11年了,經(jīng)歷的大大小小的項(xiàng)目超過了幾十個,有成功的,也有失敗的。不管是成功的軟件項(xiàng)目還是失敗的,我從中都學(xué)到了很多經(jīng)驗(yàn)和教訓(xùn),其中印象最深的項(xiàng)目是2006年從巴西成功地將IPAFM/AFM項(xiàng)目轉(zhuǎn)移到上海。該項(xiàng)目的主要功能是為電信運(yùn)營商提供寬帶接入系統(tǒng),分別提供IP的上行鏈路和ATM的上行鏈路,客戶端的主要接入手段有ADSL、ADSL2+、PSTN、100M電口/光口等。
公司從成本方面考慮,2006年的時候希望將該項(xiàng)目從巴西轉(zhuǎn)移到上海,包括相關(guān)的資源、知識、工具等都轉(zhuǎn)移過來。作為該項(xiàng)目的測試負(fù)責(zé)人,我面臨多項(xiàng)挑戰(zhàn),例如,產(chǎn)品相關(guān)文檔、知識、技能和資源如何有效地轉(zhuǎn)移到上海研發(fā)中心,新團(tuán)隊(duì)對該產(chǎn)品功能缺乏經(jīng)驗(yàn),在有限的時間與資源下如何開展有效的回歸測試,如何測試新的功能,等等。
面對面的溝通是重要的
為了提高產(chǎn)品轉(zhuǎn)移的速度和效率,公司派了幾個人到巴西出差,為期一個半月。面對面的溝通對于項(xiàng)目轉(zhuǎn)移非常重要。我們積極參加巴西研發(fā)團(tuán)隊(duì)針對我們的各種培訓(xùn)和討論,深入學(xué)習(xí)產(chǎn)品相關(guān)的功能與業(yè)務(wù)知識。我們盡量多地收集需求文檔、開發(fā)文檔和測試文檔,包括原來測試團(tuán)隊(duì)在前面項(xiàng)目中測試的經(jīng)驗(yàn)教訓(xùn)等,熟悉軟件環(huán)境的搭建和配置,包括測試儀表的使用、測試環(huán)境的基本配置等。由于巴西測試團(tuán)隊(duì)的鼎力相助,整個測試知識和技能的轉(zhuǎn)移非常順利。
旁觀者說:即使電話、QQ、微博等各種溝通方法很方便,也取代不了面對面的溝通。見到“真人”的感覺是不一樣的。
毫無保留地做分享
回國以后,我們的任務(wù)是將學(xué)到的知識與技能在整個測試團(tuán)隊(duì)內(nèi)共享。在共享過程中,我印象最深的是大家毫無保留地將自己學(xué)到的知識和技能分享給團(tuán)隊(duì)中的每個人。
只要是我懂的,我會主動在團(tuán)隊(duì)內(nèi)進(jìn)行分享。我會主動給每個成員講解功能的工作原理,如何搭建測試環(huán)境,如何執(zhí)行測試步驟,如何判斷測試結(jié)果等。只有掌握了測試對象的業(yè)務(wù)和測試知識,他們才能順利完成任務(wù)。而對于我來說,整個項(xiàng)目測試的管理與監(jiān)控也會比較容易。同時,由于測試成員都能學(xué)到新的知識,也可以增加他們在團(tuán)隊(duì)內(nèi)的凝聚力。
作為測試的負(fù)責(zé)人,不要期望自己在所有的方面都比其他人強(qiáng),你的定位應(yīng)該是為整個測試團(tuán)隊(duì)服務(wù)。如果你能在團(tuán)隊(duì)內(nèi)帶頭分享自己的知識與經(jīng)驗(yàn),也一定能帶動其他人分享,更好地做好測試團(tuán)隊(duì)的知識與技能的儲備,有利于測試經(jīng)理更好地分配測試工作,并做好備份工作。
旁觀者說:管理者要成為團(tuán)隊(duì)的核心、精神領(lǐng)袖,并不是什么都要比別人強(qiáng),更不能去壓制別人的“強(qiáng)”。
有的人不愿意分享,是擔(dān)心別人超過了自己。從實(shí)際來看,你今天分享了經(jīng)驗(yàn),同事仍然要花一段時間去消化,并不是說,你一說大家就都到了你的這個程度,還是需要實(shí)際操作和慢慢體會的。在這段時間里,你可能又學(xué)會了新的東西,所以不必過于擔(dān)心。你經(jīng)常做分享,大家也會因此而尊重你,這對于你在團(tuán)隊(duì)里立足是很有幫助的。
旁觀者說:管理者要鼓勵大家分享,甚至可以把分享算入績效。
回歸測試不能流于形式
測試的工作量主要集中在回歸測試上面,因此,如何選擇合適的測試用例是我在實(shí)施整個測試工作中的重點(diǎn)。我們考慮到的重點(diǎn)是:什么功能是客戶最經(jīng)常使用的;哪些功能對客戶而言是最重要的;哪些功能在以前版本中發(fā)現(xiàn)的缺陷是最多的;針對新增加的功能或者升級,對原來的哪些功能和模塊的影響是最大的。
回歸測試不應(yīng)該是流于形式的,應(yīng)該制定嚴(yán)格的回歸測試過程,包括軟件變更分析、軟件變更影響分析、定義回歸測試策略、定義回歸測試套件、執(zhí)行回歸測試套件,以及報告回歸測試結(jié)果等。
旁觀者說:常見的做回歸測試的幾條依據(jù):按照功能的重要性來做;按照bug來做;按照新功能(即變化量)來做。這幾條標(biāo)準(zhǔn)往往是同時運(yùn)用的。
推動開發(fā)和測試的規(guī)范化
我們需要對每個增加的功能、升級修改的功能進(jìn)行詳盡的需求文檔化,作為后續(xù)開發(fā)測試活動的參考和基線。這樣,可以在后續(xù)的開發(fā)設(shè)計、測試設(shè)計等方面擁有共同的輸入和參考點(diǎn)。這對于系統(tǒng)的研發(fā)非常重要,這個環(huán)節(jié)沒有做好,項(xiàng)目的開發(fā)將一直處于混亂狀態(tài),例如,系統(tǒng)需求不明確、開發(fā)條目不清晰、測試輸出預(yù)期沒有標(biāo)準(zhǔn)等,無法保證項(xiàng)目產(chǎn)品的質(zhì)量。所以,我們和開發(fā)一道,推動整個后續(xù)開發(fā)、測試的規(guī)范化,有助于整個測試的順利完成。
簡單而言,項(xiàng)目成功轉(zhuǎn)移的關(guān)鍵點(diǎn)是:溝通、分享、合適的測試過程、開發(fā)與測試的緊密合作。
旁觀者說:表面上開發(fā)和測試為了bug會有爭執(zhí),其實(shí)兩股力量的目標(biāo)是一致的,都是想做出好產(chǎn)品,所以緊密合作是有可能的,也是應(yīng)該的
成為優(yōu)秀的測試工程師:勤奮、努力、堅(jiān)持不懈
蔡:如何成為優(yōu)秀的測試工程師呢?
鄭:優(yōu)秀的測試工程師,不僅需要時間的積累,也需要測試知識、技能和測試經(jīng)驗(yàn)等的持續(xù)積累。要想成為優(yōu)秀的測試工程師,至少需要從下面幾個方面不斷地充實(shí)自己。
第一,深入了解測試對象,即測試人員需要深入了解被測產(chǎn)品的架構(gòu)、功能與業(yè)務(wù)知識。對于我自己,我一直從事的是寬帶接入系統(tǒng)與交換功能,因此掌握ADSL、VDSL、以太網(wǎng)交換功能、L2協(xié)議標(biāo)準(zhǔn)、三層交換功能、OAM功能等是開展各種測試任務(wù)的基礎(chǔ)。
第二,熟悉研發(fā)流程,即知道在什么時候應(yīng)該做什么事情。測試人員需要了解每個開發(fā)階段的輸出是什么,測試的主要活動與任務(wù)有哪些,只有對測試過程中的各種活動與任務(wù)了然于心,測試人員才能主動去完成任務(wù),而不是每次被動地等著測試經(jīng)理給你分配任務(wù)。另外,了解每個階段可能存在的問題,可以提前制訂應(yīng)對計劃。
第三,除了知道測試過程中我們需要做什么之外,測試人員需要掌握如何有效地去做,因此需要測試人員深入了解各種軟件測試技術(shù)與方法,例如:測試用例設(shè)計技術(shù)與方法、測試估算方法、測試風(fēng)險識別與評估方法等。
第四,培養(yǎng)各種軟技能,例如溝通與合作。現(xiàn)在更強(qiáng)調(diào)整體團(tuán)隊(duì)運(yùn)作過程,測試人員不僅需要和開發(fā)人員溝通與合作,也需要和客戶緊密合作。另外,測試人員還需要培養(yǎng)專業(yè)的懷疑態(tài)度、嚴(yán)密的分析能力、處理沖突的能力、嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度與創(chuàng)新能力等方面的技能。
想成為優(yōu)秀的測試工程師,勤奮、努力和堅(jiān)持不懈是非常重要的。
猜數(shù)字游戲和探索性測試
蔡:什么是探索性測試?
鄭:探索性測試(Exploratory Testing,ET)是Cem Kaner在1983年提出的,是軟件測試的一種方式。與腳本化測試(Scripted Testing,ST)相比,探索性測試將更高的認(rèn)知水平放在了測試執(zhí)行上面,同時更加強(qiáng)調(diào)測試人員學(xué)習(xí)、設(shè)計、執(zhí)行與結(jié)果分析等測試活動的并行、相互反饋與相互支持。
很多人都玩過猜數(shù)字游戲:我預(yù)先在心里想好一個1到100之間的數(shù)字,你來猜。你可以問任何問題,而我只有兩種回答"是"或"不是"。然后通過你的不斷提問與我的不斷回答,最終猜到我心中想的數(shù)字。在猜對的情況下,問的問題越少得分越高。這就是一個典型的探索性測試的例子。測試人員需要根據(jù)前面問題的答案分析和設(shè)計下一個問題。第一個問題可能不靠譜,但是根據(jù)前面問題的不斷反饋和結(jié)果分析,你設(shè)計的問題將會越來越靠近問題的答案。假如參與者了解二分法,那么最多7次就可以猜中數(shù)字。假如不了解二分法,你也可以猜到數(shù)字,但是嘗試的次數(shù)可能遠(yuǎn)多于7次。你的策略、技術(shù)與方法,直接決定了你完成任務(wù)的速度與質(zhì)量。
探索性測試的過程與猜數(shù)字游戲的過程是類似的。游戲中你要猜的數(shù)字,就是你要尋找的缺陷或者其他質(zhì)量信息;你要問的問題,是你分析和設(shè)計的測試用例;每個問題的答案,則是測試過程中測試對象的輸出。測試人員面對一個被測試的功能,首先對它有個模糊的概念與范圍,然后不斷地分析、設(shè)計和執(zhí)行測試用例,觀察測試對象的輸出和反應(yīng),并以此為基礎(chǔ)判斷下一步的測試用例,獲取缺陷或者其他質(zhì)量信息。
由于探索性測試的不斷探索、不斷分析、不斷反饋的特點(diǎn),它可以較好地解決腳本化測試中的一些問題,例如,腳本化測試強(qiáng)調(diào)盡早的測試設(shè)計,但是測試設(shè)計越早,測試人員對測試對象的了解越少,對風(fēng)險的了解越少。測試人員對測試對象的了解是一個逐步的過程,腳本化測試需要更多的工作量以應(yīng)對這個過程(需求的細(xì)化和變更等)。
與腳本化測試相比,探索性測試更強(qiáng)調(diào)測試人員的思維自由度與主觀能動性。然而,探索性的自由,并不代表它是不做準(zhǔn)備的,它也不是隨機(jī)的。好的探索性測試依賴于測試人員綜合應(yīng)用測試策略、測試技術(shù)與方法的能力,例如,獲取測試數(shù)據(jù),掌握測試設(shè)計技術(shù),建立失效模式,創(chuàng)建測試模型等。口號式的探索性測試并不能幫助測試人員成功。探索性測試如下象棋,規(guī)則不多。但是我們在欣賞象棋比賽的時候,關(guān)注的是在這些規(guī)則下選手選擇下一步如何走的技巧與技能,它的技術(shù)含量也不在其規(guī)則,而在選手的技巧與技能。規(guī)則簡單,技巧復(fù)雜。
旁觀者說:探索性測試的基礎(chǔ)是對測試對象的熟悉。
盡管探索性測試可以解決腳本化測試中的一些問題,但我并不認(rèn)為探索性測試優(yōu)于腳本化測試,或者將來會誰取代誰的問題。它們之間各有所長,作為測試人員,我們應(yīng)該做的是根據(jù)測試對象特點(diǎn)、組織特點(diǎn)、資源特點(diǎn)等具體情況,如何更好地發(fā)揮兩者的各自優(yōu)點(diǎn),彌補(bǔ)兩者的不足。
天貓 軟件自動化測試開發(fā)