<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

    關(guān)于軟件測試的幾點反思—測試工作的三個階段

      上一篇里我們討論了測試的必需性,如果大家目前還在公司里做著測試的工作,那就說明還是落在必需的范圍里面,或者至少一段時間是吧。那接下來我們看下既然需要做測試,需要做哪些事情。
      基于我自己的一些理解和觀察,我試圖把測試工作的層次分成三個階段,越到后面涵蓋的范圍越廣。這里討論的一些做法可能更偏向于互聯(lián)網(wǎng)方面的測試,特別是第三個階段。
      首先我想先從一個例子開始,一個現(xiàn)實生活中的例子。
      對于一個城市,假設(shè)我們的工作目標(biāo)是提升環(huán)境的質(zhì)量,減少垃圾。那么我們可以做什么?
      首先,我們可以請很多環(huán)衛(wèi)工人,出去打掃各個街道,這個馬上就有了效果,環(huán)境變得更干凈了。但是還不夠好的地方是明天還是有很多東西需要打掃,治標(biāo)不治本,只要一停下來立馬回到之前的狀況。
      接下來,我們往前面想一想,為什么有那么多垃圾呢?其中一個方面是很多人亂扔垃圾。所以更進(jìn)步一點的方案是,對于亂扔垃圾的人有些約束或者懲罰,比如抓到了曝光或者罰錢,這樣扔垃圾的人會變少。
      再然后,我們發(fā)現(xiàn)即使做到了上面,還是有不少垃圾,而且上面強制的方案也帶來不少的反感。我們需要更深層次的思考,為什么會有那么多垃圾?是因為垃圾桶太少?設(shè)計得不合理?如果是這樣,就需要從其他公共設(shè)施方面做一些改進(jìn)了。
      對于我們的測試工作,也是有類似的思路,只不過細(xì)節(jié)上要考慮更多。
      第一個階段:發(fā)現(xiàn)和解決bug的階段
      這個階段的思路基本上盡可能發(fā)現(xiàn)更多的bug,見一個滅一個,來兩個滅一雙。
      發(fā)現(xiàn)bug,解決后驗證bug,沒有任何根源性的推動,或者推動的效果不好。
      這個階段,測試工作主要集中在發(fā)現(xiàn)bug,要做好這個,需要多個方面的努力,比如下面這些:
      - 更高效的發(fā)現(xiàn)bug,考驗測試設(shè)計的能力。
      這方面有非常多的方法和技巧,以及經(jīng)驗,這里不細(xì)說。
      - 發(fā)現(xiàn)bug之后如何清晰的描述,定級,以及跟進(jìn)和驗證。
      這個看似簡單,但是你會發(fā)現(xiàn)很多測試工作做了幾年的人這樣的基本功還是不夠扎實。也可能沒有受到過很好的訓(xùn)練或者一直沒有人指導(dǎo)。
      - 對業(yè)務(wù)和架構(gòu)的理解能力。
      沒有這方面的能力,很難發(fā)現(xiàn)一些深層次的bug。而這樣的能力對于快速學(xué)習(xí)和一些技術(shù)基礎(chǔ)也有不低的要求。
      - 發(fā)現(xiàn)bug之后如果舉一反三的盡早發(fā)現(xiàn)更多類似的bug。
      大家看到的很多經(jīng)典的測試書籍講的基本都是這個階段做的事情,比如Software Testing,How We Test Software at Microsoft,以及探索性測試相關(guān)的書籍,都是專注在如何更高效的發(fā)現(xiàn)缺陷。
      上面這些東西都是一個業(yè)務(wù)測試人員的基本功??此坪唵危亲龊貌⒉皇且患菀椎氖虑?。也許這些事情一點都不cool,不sexy,甚至去做職級評審的時候不占優(yōu)勢,但是對于系統(tǒng)質(zhì)量的提升,是切切實實帶來很大幫助的,其工作的價值應(yīng)該得到認(rèn)可。但是如果一直停留在這個階段,就陷入到上面例子中說的掃馬路的階段,因為如果沒有其他方面的改變,每次都有那么多的bug。
      不過很多時候,我們的測試停留在這個階段也是因為現(xiàn)狀,考慮下這樣的情況:
      - 開發(fā)基本不自測,甚至沒有自測的環(huán)境,特別是涉及多個系統(tǒng)的對接。
      - 提測后很多基本的功能都不能正常使用
      - 項目管理比較混亂,但是最終的發(fā)布日期又被老大們定死,所以測試時間常常被壓縮
      而且,而且沒有對于開發(fā)人員的質(zhì)量方面的考核,那么很長一段時間,我們的測試將處于這個初級階段。
      我相信目前還有不少的團隊是處于這樣疲于應(yīng)對的情況下,不只是小公司,可能一些大公司的部分項目也是如此。隨著整個研發(fā)體系的發(fā)展和深入,我們應(yīng)該有更高的追求。
      第二個階段:質(zhì)量的管理
      在第一個階段中,可能有一些人會停下來想:我們一直這樣下去也不是個辦法?有沒有更好的做法呢?
      最直接會想到的就是,怎么讓別人少丟垃圾,讓本身的bug就更少一些。如果我們做的工作只是發(fā)現(xiàn)bug解決bug,那么就是一個消耗戰(zhàn)。不能形成一個良性的循環(huán),就不能持續(xù)的優(yōu)化,工作的長期累積價值就體現(xiàn)不出來。
      這個階段核心的思路是對缺陷做分析和考核,并做研發(fā)流程中主要問題的梳理和改善。
      常常做的事情可以從下面幾個方面來看:
      1. 做質(zhì)量數(shù)據(jù)的統(tǒng)計和分析
      收集的數(shù)據(jù)很多,常見的有:
      - 外網(wǎng)的bug情況,包括事故,及影響的程度
      - 測試階段的bug數(shù)量,分布(按系統(tǒng),團隊,開發(fā)個人),嚴(yán)重程度,bug的類別等維度
      - bug的橫向跨團隊和系統(tǒng)的對比,縱向的和歷史情況對比
      - 版本發(fā)布的情況,代碼變更行數(shù)的情況
      從這些數(shù)據(jù)的收集中就能發(fā)現(xiàn)很多問題,比如問題集中在哪里,哪些模塊,哪些人,哪些類別等等,以及有沒有改善。
      2. 問題的追溯和對于開發(fā)的考核
      這個方面也許有一些爭議,但是我還是覺得這個是一個很重要的方法。光靠觀念和自覺是不夠的,必需要有一定的反饋機制,就好比交規(guī)一定是配合著扣分和罰款等手段,否則記錄闖紅燈有什么意義呢?而且現(xiàn)實的來說,這些方法起到約束的作用,也是一種心理暗示,要做自己做的東西負(fù)責(zé),也便于養(yǎng)成好的習(xí)慣。

     通常的考核指標(biāo)涉及這些方面:
      -  編譯失敗次數(shù)的考核
      - 外網(wǎng)事故和bug的數(shù)量
      - 測試階段的bug,特別是基礎(chǔ)功能bug和嚴(yán)重bug
      粗略的列了這么多,其實可以有很多,比如配置文件改錯的情況,漏提測文件的次數(shù)等等。
      這里也許有很多的討論,但是讓我們看看一個實際的例子。下圖是某個系統(tǒng)的編譯失敗的情況,在11月份的時候提出要統(tǒng)計并公開(并無懲罰條款)編譯失敗的情況,包含到開發(fā)的團隊和個人等明顯,12月份開始出現(xiàn)了明顯的下降并穩(wěn)定了。這個圖隱藏了一些細(xì)節(jié),如果剔除其他因素只看開發(fā)代碼原因的編譯失敗則更明顯,特別是后面有懲罰機制之后,進(jìn)一步下降。
      編譯失敗大幅的下降一方面是節(jié)省了大家的時間,另一方面其實也是提高了版本質(zhì)量,想想如果有很多的編譯失敗,而且是到提交測試的階段,這樣的代碼質(zhì)量能好嗎?是可能做過自測嗎? 有了這樣的機制,至少會更仔細(xì)一些。
      對于bug方面其實也是一樣,如果開發(fā)在乎(或者被迫在乎)外網(wǎng)bug或者被測試發(fā)現(xiàn)的bug數(shù)量,他寫代碼的時候一定會更仔細(xì),也會做些簡單的自測,讓提測的質(zhì)量更高,提高了整個研發(fā)系統(tǒng)的效率,同時也是提升了質(zhì)量,因為quality must be built in。
      我個人的經(jīng)驗,作為測試人員幾乎同時面對過兩個開發(fā)團隊,一個有上述的考核,一個沒有。表現(xiàn)出來的版本質(zhì)量和對質(zhì)量的關(guān)注完全不一樣,而且前者也并沒有出現(xiàn)開發(fā)和測試的對立,以及測試不敢提bug等負(fù)面的情況。
      3. 對于測試的考核
      除了對于開發(fā)的考核,同樣也有對于測試的考核,這樣也更加的公平。
      測試的考核通常考慮下面的指標(biāo):
      - 漏測:絕對數(shù)量或者漏測率
      - 版本的工作量和測試效率
      - 發(fā)布延期的情況
      如果測試有這樣的壓力,也需要不斷努力去發(fā)現(xiàn)更多的bug。
      說起考核,總有人覺得這不符合智力勞動的情況,或者互聯(lián)網(wǎng)的作風(fēng),其實不太理解為什么會這么覺得,放眼望去,有什么工作不被考核呢,sales要背quota,為什么軟件開發(fā)和測試不能對自己的工作的質(zhì)量負(fù)責(zé)呢?當(dāng)然,具體的指標(biāo)如何去定才更合理那是另一個要去考慮的。
      換個角度來看,適當(dāng)?shù)膲毫Γú粦?yīng)該導(dǎo)致焦慮和扭曲的做法),其實是讓一個人表現(xiàn)最好的狀態(tài)。
      4. 推動開發(fā)的自測
      這個問題一向是個老大難問題。愿意自測的開發(fā)團隊你不用太多的推動,不愿意做的推動也很難,或者你無法判斷他有沒有做自測。而且這方面,通常取決于開發(fā)負(fù)責(zé)人的觀念和態(tài)度。
      如果是介于之間的,我們可以做一些事情,比如:
      - 統(tǒng)計測試階段的bug中,屬于開發(fā)可自測發(fā)現(xiàn)的比例。通過這個可以看有多少bug是不應(yīng)該到測試階段的,以及橫行縱向的對比。當(dāng)然這個標(biāo)準(zhǔn)要自己拿捏。
      - 給出一個自測的checklist。開發(fā)在提交前要完成這個list并正式的給出報告。這個方式我們曾經(jīng)在一個項目中用過,效果不錯,基本功能都通過這個保證了,前提是開發(fā)負(fù)責(zé)人認(rèn)可。
      - 有一套自動化驗收的用例,可以掛接到自動部署之后或者daily build。前提是我們的自動化要足夠的問題,效果才會好。
      這個階段除了業(yè)務(wù)測試的努力,也體現(xiàn)出了QA的價值。這里的QA是指質(zhì)量管理,有的地方叫SQA,專注在質(zhì)量度量和研發(fā)流程的管理上。
      到這個階段,發(fā)現(xiàn)事情順了很多,質(zhì)量也有更大程度的提升,并有改善額趨勢。
      第三個階段:推動全面的質(zhì)量提升
      到上面第二個階段,我們發(fā)現(xiàn)質(zhì)量有了一定的提升,但是還是有不少的問題,而且有些問題需要我們把思路和眼界拓寬來看。這里討論的一些東西可能更適合互聯(lián)網(wǎng)的產(chǎn)品。
      這里列一些我們可以去做的事情,受限于個人的經(jīng)驗,可能還很片面。
      1. 研發(fā)流程的梳理
      其實在階段2的時候也可能有些團隊已經(jīng)開始做這樣的事情,因為在分析質(zhì)量和效率問題的時候,我們發(fā)現(xiàn)很多問題不單純是代碼的問題,可能還涉及研發(fā)流程的很多方面,比如:
      - 需求不清楚
      - 跨團隊的配合問題
      - 代碼版本管理
      - 技術(shù)方面的評審和大家的理解
      所以整個研發(fā)流程的規(guī)范和梳理,以及配合對應(yīng)的需求和版本管理的系統(tǒng)也是非常的必要,實際中發(fā)現(xiàn)效果也是比較的明顯。而且還有一點體會,在接手一個很混亂的狀況時,這樣角度的數(shù)量和調(diào)整比技術(shù)方案的引入更重要和切中要點,能從40分到60分,技術(shù)是往80分走的過程效果更明顯。
      2. 提交測試前后做的一些事情
      - 代碼的靜態(tài)掃描
      這個方法很多的團隊都在做,但是實際的效果似乎差別很多,而且ROI也很難說,不過從方法本身來說還是值得去做的,對測試人員也提出來更高的要求。
      - code review
      這個開發(fā)應(yīng)該要做,特別是開發(fā)間的交叉review,非常的有幫助。不過這個也和自測一樣,取決于開發(fā)負(fù)責(zé)人的態(tài)度。另外,測試也應(yīng)該去做,特別是對于diff 代碼的review,我們檢查做了大概兩個月的時間,發(fā)現(xiàn)還是非常的有收獲。發(fā)現(xiàn)了一些黑盒難以發(fā)現(xiàn)的問題,以及開發(fā)的代碼夾帶,并且對于這個版本影響范圍的評估也更準(zhǔn)確。但問題是短期會花費測試更多時間,以及需要測試人員有一定的技術(shù)能力。


     3. 測試能力的提升
      測試階段有很多的事情可以去做,覺得最主要的還是兩個方面
      - 自動化。 越來越覺得這個是繞不開的話題,要想盡辦法去做,做得更高效更全面。前面有篇blog也提到了一些輕量級的做法,業(yè)務(wù)測試的團隊可以參考  http://blog.csdn.net/superqa/article/details/20644285
      - 輔助手段,比如代碼覆蓋率,特別是差異的覆蓋率。這個大家都比較容易理解就不展開了。
      - 拓展測試的類型
      這個方面說起來有些泛,需要結(jié)合團隊和業(yè)務(wù)的情況,比如安全測試,性能測試,兼容性測試等,去發(fā)現(xiàn)一些對于產(chǎn)品來說很重要的風(fēng)險。
      這方面有兩個前提,一是我們的基本功能質(zhì)量到了一個階段,可以讓大家騰出手去拓展測試的面,另一方面我們測試人員的能力要跟得上。
      4. 發(fā)布環(huán)節(jié)的質(zhì)量把控
      這個方面和傳統(tǒng)的測試不太一樣,而且了解到不同的組織做法不同,執(zhí)行發(fā)布的人員可能不同,有開發(fā),運維,專職的版本管理或者測試來做。
      在我們的實踐中,發(fā)布后來都逐步收到測試這邊,回頭來看覺得還是有不少有幫助的地方。當(dāng)然也不絕對的必須測試來做。
      - DO分離,避免了隨意的發(fā)布,特別是在開發(fā)手上的時候。所有的bugfix都經(jīng)過測試發(fā)布,可以更準(zhǔn)確的度量質(zhì)量(除非這個問題可以不修復(fù),否則肯定要過發(fā)布環(huán)節(jié))
      - 知道最近發(fā)了什么,可能的影響是什么,需要線上關(guān)注什么。
      - 灰度。 互聯(lián)網(wǎng)產(chǎn)品常用的一個控制風(fēng)險和節(jié)奏的手段。
      - 擴容的快速自動化檢查,這方面也依賴于自動化的建設(shè)。
      - 發(fā)布過程支持灰度的控制,備份和快速的回滾。對發(fā)布系統(tǒng)有一定的要求,而且有可追溯性。
      發(fā)布處在整個研發(fā)流程非常關(guān)鍵的節(jié)點,在這個點可以做很多的控制,也能發(fā)現(xiàn)很多的問題,對于測試團隊來說,從這里可以發(fā)現(xiàn)很多的問題,做很多的提升,對自己和相關(guān)的合作團隊。
      5. 外網(wǎng)的監(jiān)控
      發(fā)現(xiàn)發(fā)布后的問題,持續(xù)運營過程中的問題,推動優(yōu)化。
      通常監(jiān)控可以分幾個層面,粗淺的可以分成幾類:
      - 運維層面的監(jiān)控,比如機器,鏈路,資源使用,主要組件是否正常等。
      - 業(yè)務(wù)指標(biāo)的監(jiān)控,比如來自點擊率,BI系統(tǒng)等。
      - 集成在產(chǎn)品里面的監(jiān)控代碼,我們稱之為模塊調(diào)用監(jiān)控。這個是全量的,有次數(shù),成功率,響應(yīng)時間等角度。
      - 測試層面的自動化監(jiān)控,關(guān)于在接口和功能層面。這個是采樣的,但是從用戶的角度來監(jiān)控。
      以上這些監(jiān)控都有對應(yīng)的告警機制,可以第一時間發(fā)現(xiàn)問題,避免造成更大的損失。為了實現(xiàn)上面的監(jiān)控需要做大量的工作,但是這些對于整個外網(wǎng)運營的質(zhì)量非常的重要。
      6. 外網(wǎng)事故和問題的收集,跟進(jìn)和反向推動
      和前面的思路一樣,如果只是發(fā)現(xiàn)問題解決問題還是稍顯被動,那么對于外網(wǎng)事故和問題的分析,還是有很多推動性的幫助。
      7. 用戶的問題反饋和滿意度
      進(jìn)一步的質(zhì)量不只是系統(tǒng)本身的質(zhì)量,而是從用戶角度看到的質(zhì)量,有時候這個可能稍微超出一些系統(tǒng)層面的問題,但是因為最終的質(zhì)量還是用戶說了算,所以我們應(yīng)該擴展下思路。收集這樣的問題的渠道有很多
      - 外網(wǎng)問題反饋,比如來自客服系統(tǒng)的,用戶直接的反饋,現(xiàn)在很多app上都有反饋的功能。
      - 論壇信息的統(tǒng)計收集。我了解的另一個測試團隊,他們還專門開發(fā)了一個自動收集外部反饋,以及過濾分析的系統(tǒng)來幫助他們及時的了解外包的問題反饋。



      8. 運營層面的質(zhì)量
      更進(jìn)一步,關(guān)注運營方面的質(zhì)量,跳出傳統(tǒng)意義的質(zhì)量的范疇,關(guān)注我們的業(yè)務(wù)指標(biāo),不只是做一個高質(zhì)量的產(chǎn)品,而是做一個業(yè)務(wù)上成功的產(chǎn)品。
      比如下面這樣的例子:
      - 商品詳情頁的圖片的質(zhì)量
      - 活動頁面和詳情頁面價格不一致的情況
      - 運營配置的錯誤導(dǎo)致的問題,哪些是可以監(jiān)控發(fā)現(xiàn),哪些是可以推動運營平臺的規(guī)則檢查?
      每次我們的思路跳出一些框框,都會有不同的領(lǐng)域。有點點哲學(xué)上的意味,很多領(lǐng)域做到后面,其實會超出那個領(lǐng)域本身的范疇。就好比高性能的汽車,到后面就不得不研究空氣動力學(xué)這個原本是和航空有關(guān)的東西。但是,這是否超出了本意,如果去看待,又是另一個問題。
      其實這樣的三個階段也是一個粗略的劃分,并不一定要逐步的來發(fā)展,其實都是一些具體的做法和實踐。以我目前經(jīng)歷過的實踐只想到這樣的層次,應(yīng)該還有更高級的階段。
      我們越到后面我們發(fā)現(xiàn)進(jìn)一步的努力帶來的提升幅度其實不大。但是很多事情也是一樣,從85分到90分付出的努力可能比50到80分的努力還要大。另一個更有趣的是汽車的極速和馬力的關(guān)系,家用車100馬力開到180km/h是能做到的,但是超過時速300,每提升一點需要增加的馬力要大得多,到400以上,車時速每再增加一公里,功率需要提升八馬力。這篇文章讀起來非常有意思, http://blog.sina.com.cn/s/blog_4d0109a301000ajz.html
      寫到這里,我們可以跳到整個公司或者業(yè)務(wù)的層面,來思考一些對于測試更深層次的問題:
      測試團隊存在的價值和意義是什么?
      只有對業(yè)務(wù)有明確的價值,業(yè)務(wù)測試,或者說整個測試團隊才有存在的意義。只要業(yè)務(wù)OK,砍掉測試團隊也不是不可能。我們必須時不時的跳出我們自己的思維的圈子,站在整個事業(yè)部老大的角度來思考下測試的價值和意義。
      在下一篇關(guān)于測試組織方面我們可以再討論下這方面的內(nèi)容。
      還有一個體會:測試的水平反應(yīng)整個研發(fā)體系的能力和水平。
      如果我們的測試還專注在第一階段,那說明整個研發(fā)還比較初級,開發(fā)和測試都是溫飽的階段。當(dāng)我們的測試人員不再趴在地上盯著最基本的功能質(zhì)量的時候,才有可能抬起來看看更多有價值,有幫助和有長遠(yuǎn)意義的工作,慢慢形成一個良性的循環(huán)。

    posted on 2014-03-25 11:17 順其自然EVO 閱讀(309) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

    <2014年3月>
    2324252627281
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日日狠狠久久偷偷色综合免费| 精品国产亚洲男女在线线电影| 亚洲国产精品无码AAA片| 久久午夜无码免费| 亚洲AV无码不卡在线播放| aa级女人大片喷水视频免费| 亚洲成AⅤ人影院在线观看| 黄色网址在线免费| 午夜亚洲国产理论秋霞| 天天干在线免费视频| 久久国产免费直播| ass亚洲**毛茸茸pics| 成熟女人牲交片免费观看视频| 中文字幕在线观看亚洲视频| 亚洲精品偷拍视频免费观看| 2021国内精品久久久久精免费| 国产精品亚洲一区二区三区| 久久亚洲中文字幕精品一区四 | 精品亚洲成A人无码成A在线观看| 全部免费国产潢色一级| 亚洲w码欧洲s码免费| 精品国产福利尤物免费| 亚洲中文字幕久久无码| 亚洲男人第一av网站| 亚洲无码视频在线| 中文字幕久精品免费视频| 亚洲а∨精品天堂在线| 国产成人综合亚洲亚洲国产第一页| 免费国产成人18在线观看| 老司机午夜在线视频免费| 亚洲国产午夜精品理论片| 国产免费69成人精品视频| 黄在线观看www免费看| 中国一级特黄的片子免费| 亚洲福利电影一区二区?| 日韩免费a级在线观看| 免费成人福利视频| 午夜视频免费在线观看| 亚洲日本VA午夜在线影院| 亚洲无人区午夜福利码高清完整版| 蜜臀98精品国产免费观看|