另外,我始終不明白,為什么不做開發(fā)的QA會(huì)比Dev在測(cè)試上更專業(yè)? 這一點(diǎn)都說不通啊。

  2)減少溝通,扯皮,和推諉

  想想下面的這些情況你是否似曾相識(shí)?

  ● QA 做的測(cè)試計(jì)劃,測(cè)試案例設(shè)計(jì),測(cè)試結(jié)果,總是需要Dev來評(píng)審和檢查。

  ● QA在做測(cè)試的過程中,總是需要Dev對(duì)其測(cè)試的環(huán)境,配置,過程做指導(dǎo)。

  ● QA總是會(huì)和Dev爭(zhēng)吵某個(gè)問題是不是BUG,爭(zhēng)吵要不要解決。

  ● 無論發(fā)現(xiàn)什么樣的問題,總是Dev去解決,QA從不fix問題。

  ● 我們總是能聽到,線上發(fā)生問題的時(shí)候,Dev的抱怨QA這樣的問題居然沒測(cè)出來,

  ● QA也總會(huì)抱怨Dev代碼太差,一點(diǎn)也不懂測(cè)試,沒怎么測(cè)給hand over 給QA了。

  ● QA總是會(huì)push Dev,這個(gè)bug再不fix,你影響我的進(jìn)度了。

  ● 等等,等等。

  如果沒有QA,那么沒有這么多事了,DEV自己的干出來的問題,自己處理,沒什么好扯皮的。

  而一方面,QA說Dev不懂測(cè)試,另一方面Dev說QA不懂技術(shù),而我們還要讓他們隔離開來,各干各的,這一點(diǎn)都不利于把Dev和QA的代溝給填平了。要讓Dev理解QA,讓QA理解Dev,減少公說公有理,婆說婆有理的只站在自己立場(chǎng)上的溝通,只有一個(gè)方法,那是讓Dev來做測(cè)試,讓QA來做開發(fā)。這樣一樣,大家都是程序員了。

  3)吃自己的狗食

  真的的開發(fā)團(tuán)隊(duì)都是要吃自己狗食的。這句話的意思是??如果你不能切身體會(huì)到自己干的爛事,自己的痛苦,你不會(huì)有想要去改進(jìn)的動(dòng)機(jī)。沒有痛苦,不會(huì)真正地去思考,沒有真正的思考,沒有真正的進(jìn)步。

  在我現(xiàn)在的公司,程序員要干幾乎有的事,從需求分析,設(shè)計(jì),編碼,集成,測(cè)試,部署,運(yùn)維,OnCall,從頭到尾,因?yàn)椋?/FONT>

  ● 只有了解了測(cè)試的難度,你才明白怎么寫出可測(cè)試的軟件,怎么去做測(cè)試的自動(dòng)化和測(cè)試系統(tǒng)。

  ● 只有自己真正去運(yùn)維自己的系統(tǒng),你才知道怎么在程序里寫日志,做監(jiān)控,做統(tǒng)計(jì)……

  ● 只有自己去使用自己的系統(tǒng),你才明白用戶的反饋,用戶的想法,和用戶的需求。

  所以,真正的工程師是能真正明白軟件開發(fā)不單單只是coding,還更要明白整個(gè)軟件工程。只明白或是只喜歡coding的,那只是碼農(nóng),不能稱之為工程師。

  4)其它問題

  ● 關(guān)于SDET。全稱是Software Development Engineer on Test。像微軟,Google, Amazon都有這樣的職位。但我不知道這樣的職位在微軟和Google的比例是多少,在Amazon是非常少的。那么像這樣的懂開發(fā)的專職測(cè)試可以有嗎?我的答案是可以有!但是,我在想,如果一個(gè)人懂開發(fā),為什么只讓其專職做測(cè)試呢?這樣的程序員分工合理嗎?把程序分成兩等公民有意義嗎?試問有多少懂開發(fā)的程序員愿意只做測(cè)試開發(fā)呢?所以,SDET在實(shí)際的操作中,更多的還是對(duì)開發(fā)不熟的測(cè)試人員。還是哪句話,不懂開發(fā)的人是做不好測(cè)試的。

  ● 如果你說Dev對(duì)測(cè)試不專業(yè),不細(xì)心,不認(rèn)真,那么我們同樣也無法保證QA的專業(yè),細(xì)心和認(rèn)真。在Dev上可能出現(xiàn)的問題,在QA也也會(huì)一樣出現(xiàn)。而出了問題QA不會(huì)來加班解決,還是開發(fā)人員自己解決。所以,如果QA不用來解決問題,那么,QA怎么可能真正的細(xì)心和認(rèn)真呢?

  ● 如果你說不要QA的話,Dev人手會(huì)不夠。你這樣想一下,如果把你團(tuán)隊(duì)中現(xiàn)有的QA全部變成Dev,然后,大家一起開發(fā),一起測(cè)試,親密無間,溝通方便,你會(huì)不會(huì)覺得這樣會(huì)更有效?你有沒有發(fā)現(xiàn),在重大問題上,Dev可以幫上QA的忙,但是QA幫不上Dev的忙。

  ● 第三方中立,你會(huì)說人總是測(cè)不好自己寫的東西,因?yàn)橛兴季S定式。沒錯(cuò),我同意。但是如果是Dev交叉測(cè)試呢?你可能會(huì)說開發(fā)人員會(huì)有開發(fā)人員的思維定式。那這只能說明開發(fā)人員還不成熟,他們還不合格。沒關(guān)系,只要吃自己的狗食,痛苦了,會(huì)負(fù)責(zé)的。

  ● 磨刀不誤砍柴功。如果你開發(fā)的東西自己在用,那么自己是自己天然的QA,如果有別的團(tuán)隊(duì)也在用你開發(fā)的模塊,那么,別的團(tuán)隊(duì)也很自然地在幫你做測(cè)試了,而且是真實(shí)的測(cè)試。

  ● 你可能會(huì)說吃狗食是個(gè)笑話,因?yàn)槿绻俏遥野迅蔂的事,離職走人了,讓別人去吃我的狗食。這個(gè)在現(xiàn)實(shí)中的確會(huì)發(fā)生,也是很現(xiàn)實(shí)的。但是想一想,你為什么在一開始讓他把事干爛了?另外,如果你的團(tuán)隊(duì)在設(shè)計(jì)評(píng)審和代碼評(píng)審里沒有把好關(guān),讓某人把事給干爛了,那么這個(gè)人的離職帶來的問題還是這個(gè)團(tuán)隊(duì)來抗,于是整個(gè)團(tuán)隊(duì)都在吃自己的狗食,挺公平的。痛苦過一次,你的團(tuán)隊(duì)下次怎么干了,不敢亂招人了,不敢隨意評(píng)審代碼了,不敢讓人只做一塊東西了。終還是沒有逃脫吃狗食的范疇。

  ● 關(guān)于系統(tǒng)集成測(cè)試。所謂集成測(cè)試,是把多個(gè)開發(fā)團(tuán)隊(duì)開發(fā)的模塊集中起來測(cè)試。因?yàn)殚_發(fā)人員可以無法看到全局,不了解別個(gè)團(tuán)隊(duì)的系統(tǒng),所以需要有統(tǒng)管全局的專職的QA進(jìn)行測(cè)試。對(duì)這個(gè)方面,我并不反對(duì),在實(shí)際操作過程中,好像的確用專職的做集成測(cè)試的QA更有效一些。不過,這還是不能讓我停止去思考兩個(gè)問題,1) 如果開發(fā)人員看不到全局,他能開發(fā)出更好的軟件嗎?2)這個(gè)全職的做集成測(cè)試的QA難道不能是各個(gè)團(tuán)隊(duì)的骨干Dev來組成嗎?

  ● 關(guān)于自動(dòng)化測(cè)試。所謂自動(dòng)化的意思是,這是一個(gè)機(jī)械的重復(fù)勞動(dòng)。我想讓測(cè)試人員思考一下,你是否在干這樣的事?如果你正在干這樣的事,那么,你要思考一下你的價(jià)值了。但凡是重復(fù)性比較高的機(jī)械性的勞動(dòng),總有都會(huì)被機(jī)器取代的。

  ● 關(guān)于線上測(cè)試。我們都知道,無論自己內(nèi)測(cè)的怎么樣,到了用戶那邊,總是會(huì)有一些測(cè)試不到的東西。所以,有些公司會(huì)整出個(gè)UAT,用戶驗(yàn)收測(cè)試。做產(chǎn)品的公司會(huì)叫Beta測(cè)試。無論怎么樣,你總是要上生產(chǎn)線做真正測(cè)試的。對(duì)于互聯(lián)網(wǎng)企業(yè)來說,生產(chǎn)線上測(cè)試有的在玩A/B測(cè)試,有的玩部分用戶測(cè)試,比如,新上線的功能只有10%的用戶可以訪問得到,這樣不會(huì)因?yàn)槌鰡栴}讓全部用戶受到影響。做這種測(cè)試的人必然是開發(fā)人員。

  好吧,我暫時(shí)寫這么多,我會(huì)視大家的討論再補(bǔ)充我的觀點(diǎn)的。