讓用戶幫你做測(cè)試
我們知道,只要有軟件就會(huì)有bug。一者,再嚴(yán)格的測(cè)試也只是抽樣活動(dòng),總會(huì)有bug被遺留下來(lái)。再者,做軟件也是一種商業(yè)行為,對(duì)質(zhì)量的投入要看ROI。基于以上兩種原因,軟件或者系統(tǒng)發(fā)布時(shí)總會(huì)或多或少帶點(diǎn)bug。對(duì)于這些bug,我們要看它的影響程度是什么樣的。對(duì)于生命周期比較長(zhǎng)的系統(tǒng),這些bug只要產(chǎn)生了影響都是要修改的。在我上篇文章《測(cè)試的最高境界是什么?》 中給出了軟件不同周期中缺陷修復(fù)所需要的成本的一張示意圖,要知道,bug的檢測(cè)也是需要成本的,并且檢測(cè)成本也會(huì)隨著時(shí)間向后推移水漲船高。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),已發(fā)布版本的bug如何檢測(cè)才能成本低且有效呢?顯然已發(fā)布的軟件會(huì)直面用戶,從用戶身上打主意是正途。 再雞賊一些,如何讓用戶在發(fā)布前就參與測(cè)試呢?在IT行業(yè)蓬勃發(fā)展的幾十年間,涌現(xiàn)了大量讓用戶幫助開(kāi)發(fā)者做測(cè)試的方法。下面就讓我們一一道來(lái)。
α測(cè)試和β測(cè)試
α測(cè)試和β測(cè)試是上個(gè)世紀(jì)較為流行的兩種用戶測(cè)試方法。兩者都是請(qǐng)用戶真實(shí)的來(lái)使用系統(tǒng),并反饋錯(cuò)誤。兩者最大的不同是,前者是請(qǐng)用戶到開(kāi)發(fā)者的環(huán)境中做測(cè)試;后者是用戶在自己的環(huán)境中做測(cè)試。由于不同的用戶所有的軟硬件環(huán)境千差萬(wàn)別,因此在β測(cè)試中可能發(fā)現(xiàn)更多的兼容性問(wèn)題。另一個(gè)稍小的區(qū)別就是α測(cè)試有可能是開(kāi)發(fā)公司內(nèi)部人員(微軟流行的“吃你自己的狗食”),β測(cè)試則更傾向于外部的真實(shí)用戶。β測(cè)試的測(cè)試成本較高,尤其是在互聯(lián)網(wǎng)普及以前。我中學(xué)時(shí)代就做過(guò)β測(cè)試,那時(shí)候某家軟件廠商在《電腦報(bào)》上招聘測(cè)試人員,被選中后會(huì)把被測(cè)軟件寄來(lái),你把測(cè)試結(jié)果寫(xiě)信寄回去,測(cè)試幾乎不會(huì)給錢(qián)。但是當(dāng)時(shí)唯一吸引我的是:軟件裝在6張3.5寸軟盤(pán)里,當(dāng)時(shí)對(duì)于我可是筆客觀的財(cái)富。但不這么做的成本會(huì)更高!在互聯(lián)網(wǎng)能夠幾乎無(wú)成本分發(fā)軟件之前,未經(jīng)測(cè)試的軟件需要以光盤(pán)或者軟盤(pán)的形式發(fā)布,如果出現(xiàn)大錯(cuò)誤,那損失可就大了。這錯(cuò)誤就連偉大的暴雪公司也犯過(guò),他們的游戲《魔獸爭(zhēng)霸1》,沒(méi)有經(jīng)過(guò)很好的測(cè)試就在圣誕節(jié)發(fā)布了。由于兼容性等問(wèn)題,很多客戶拿到光盤(pán)后連裝都裝不上,這讓暴雪賠了幾百萬(wàn)美刀,差點(diǎn)丟了命。
吃自己的狗食
微軟臭名昭著的有效做法。那自己或者自己的兄弟當(dāng)小白鼠。內(nèi)部人發(fā)現(xiàn)bug理應(yīng)反饋,還不能拿酬勞,大家都是命運(yùn)共同體嘛。這樣,上班是員工,下班就變成了最終用戶,甚至上班時(shí)候也變成了最終用戶。原來(lái)有個(gè)同學(xué)在網(wǎng)易,有段時(shí)間工作時(shí)間聯(lián)系他只能用網(wǎng)易泡泡,據(jù)說(shuō)QQ被強(qiáng)制卸載了(不過(guò)泡泡現(xiàn)在還活著么?)。
故障推送
互聯(lián)網(wǎng)時(shí)代來(lái)了。用戶報(bào)bug的成本低了,因?yàn)殄e(cuò)誤信息可以很方便的傳回去。所以在非常多的軟件中你可以在它們崩潰后得到一個(gè)提示框:“您愿意幫助我們改進(jìn)產(chǎn)品么?您的反饋對(duì)我們非常重要blablabla。。。” 只要一點(diǎn),調(diào)試信息就回傳到開(kāi)發(fā)者那里了。當(dāng)然會(huì)有客戶以在論壇,微博等平臺(tái)上吐槽的形式推送bug。
A/B測(cè)試
發(fā)布特性、版本上有些許不同的軟件給不同的用戶。然后比較這些特性的造成的不同影響。A/B測(cè)試其實(shí)取自科學(xué)實(shí)驗(yàn)中的對(duì)照法。在實(shí)踐中A/B測(cè)試的主要目的是為了改進(jìn)軟件特性、提高轉(zhuǎn)化率等,發(fā)現(xiàn)bug反倒在其次了。想對(duì)A/B測(cè)試有跟深入了解可以google A/B測(cè)試的網(wǎng)站,或者買(mǎi)這本書(shū)。
灰度發(fā)布
灰度發(fā)布本質(zhì)上是A/B測(cè)試的一種變種。其實(shí)施方法是:某個(gè)軟件的新特性推出或者特性進(jìn)行升級(jí)的時(shí)候不是一下子發(fā)布給所有用戶,而是按照一定的策略,逐步發(fā)布給所有用戶。例如:某電商網(wǎng)站的推薦算法升級(jí),先發(fā)布到一個(gè)二級(jí)城市,然后比較這個(gè)城市的推薦轉(zhuǎn)化率是否提高了。當(dāng)然現(xiàn)在很多互聯(lián)網(wǎng)公司利用灰度發(fā)布來(lái)快速發(fā)布軟件,比如某游戲升級(jí),先選取一定比例的ip,比如1%的ip發(fā)布。如果出現(xiàn)問(wèn)題,客戶很快會(huì)在平臺(tái)上以各種形式反饋(包括在游戲大廳或者論壇內(nèi)吐槽),這時(shí)候開(kāi)發(fā)者就知道有問(wèn)題了,馬上進(jìn)行修復(fù),然后繼續(xù)灰度發(fā)布。等功能或者性能穩(wěn)定了以后,繼續(xù)提高發(fā)布比率,直至100%。這樣做的好處是:能夠迅速得到真實(shí)用戶的反饋,且如果出現(xiàn)問(wèn)題,不會(huì)大面積影響用戶。
生產(chǎn)引流
灰度發(fā)布是一種非常好的策略,但是它有時(shí)候也對(duì)少量用戶造成了影響。有沒(méi)有不影響用戶,還能讓用戶做測(cè)試的方案么?這就是生產(chǎn)引流:從生產(chǎn)系統(tǒng)上將用戶所有請(qǐng)求復(fù)制下來(lái),引入到測(cè)試系統(tǒng)進(jìn)行測(cè)試。這種方法尤其適合互聯(lián)網(wǎng)軟件,客戶端越瘦,就越不用關(guān)注客戶端的軟硬件環(huán)境。生產(chǎn)引流可以用作性能測(cè)試和功能測(cè)試。現(xiàn)在性能測(cè)試用得比較廣泛的是TCPCOPY,目前網(wǎng)易,百度,阿里都有廣泛應(yīng)用。功能測(cè)試的實(shí)現(xiàn)手段根據(jù)被測(cè)系統(tǒng)的技術(shù)架構(gòu)不同會(huì)有很大區(qū)別,根據(jù)被測(cè)系統(tǒng)的業(yè)務(wù)流程不同也會(huì)有很大區(qū)別,根據(jù)測(cè)試的意圖也會(huì)有很大區(qū)別。后續(xù)我將舉一個(gè)詳細(xì)的例子來(lái)描述生產(chǎn)引流的測(cè)試方法。
黑暗部署
黑暗部署的詞是facebook的工程團(tuán)隊(duì)起的,但其實(shí)很多團(tuán)隊(duì)早已經(jīng)這么做了,只是沒(méi)有總結(jié)出來(lái)而已。其主要思路是:把新開(kāi)發(fā)的特性部署到生產(chǎn)系統(tǒng)上,并有一個(gè)開(kāi)關(guān)來(lái)快速的控制這個(gè)特性是否讓用戶可見(jiàn),在部署的初期,這個(gè)開(kāi)關(guān)是關(guān)閉的。有人要問(wèn),這么做有啥用?其實(shí)可以結(jié)合生產(chǎn)引流配合測(cè)試,也可以查看新上的特性是否影響原有系統(tǒng)的正常運(yùn)行。
posted on 2014-03-17 11:10 順其自然EVO 閱讀(235) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 測(cè)試學(xué)習(xí)專(zhuān)欄