<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            基于度量的軟件測試體系建設

            2023年8月8日 1210點(diǎn)熱度 0人點(diǎn)贊 0條評論

            背景

            2008年12月23號,應邀在中國質(zhì)量年會(huì )上進(jìn)行了發(fā)言,會(huì )議現場(chǎng)由于有賽迪傳媒的現場(chǎng)速錄,借此這份發(fā)言得以保存下來(lái)。

            正好借著(zhù)改版領(lǐng)測軟件測試網(wǎng)的契機,將這篇文章也保留了下來(lái)。

            中國軟件質(zhì)量年會(huì )主辦方

            信息產(chǎn)業(yè)部軟件與集成電路促進(jìn)中心(CSIP)已成功地主辦了兩屆中國軟件質(zhì)量年會(huì )。本屆年會(huì )將以“軟件質(zhì)量創(chuàng )新 助力兩化融合”為主題,繼續深化我們已取得的成績(jì),把軟件質(zhì)量年會(huì )做實(shí),為增強我國軟件企業(yè)競爭能力、振興我國軟件產(chǎn)業(yè),助力信息化與工業(yè)化融合做出積極貢獻。

             

            速記發(fā)言稿

            開(kāi)場(chǎng)

            時(shí)間也比較晚了,希望最后一個(gè)內容對大家來(lái)說(shuō)有一定的幫助。

            今天跟大家分享的題目是基于軟件度量的測試體系建設。

            下面是我的一個(gè)介紹,大家都上過(guò)測試時(shí)代網(wǎng)站,所以掠過(guò)了。

            在以下半個(gè)小時(shí)的時(shí)間大家有任何疑問(wèn)或者不明白的,你就舉手說(shuō),會(huì )場(chǎng)可以產(chǎn)生互動(dòng),沒(méi)有任何問(wèn)題。

            在座有多少測試人員,很高興,大概是百分之百,大家都是同行,看有沒(méi)有這樣的問(wèn)題。

            測試團隊遇到的問(wèn)題

            雖然覺(jué)得軟件測試很重要,但苦于沒(méi)有辦法組建規范的測試中心。什么叫規范的測試中心?有章有法,你的技術(shù)是可控的,你的人是可控的,很少有這樣的公司,我做過(guò)企業(yè)內訓的公司有上百家了,但很少,大多數認為是成本中心,或者是花錢(qián),公司一直在不停的投入,但是對產(chǎn)品的質(zhì)量沒(méi)有多少幫助。有多少幫助?你能說(shuō)出來(lái)的,老板持續給你買(mǎi)工具,組建團隊,招聘新人,由于你的存在,由于你的團隊的存在,你為公司創(chuàng )造了很多效益,有嗎?你隱隱約約覺(jué)得有,但沒(méi)有辦法拿數字說(shuō)明,所以沒(méi)有辦法證明你存在的價(jià)值,或者你部門(mén)存在的價(jià)值。

            無(wú)法衡量軟件測試工作的成果,你說(shuō)我的測試工作很規范,很努力,我寫(xiě)了一千的測試用力,工作成果好不好?很難說(shuō),因為你的老板會(huì )說(shuō),才寫(xiě)了一千個(gè)???我認為應該是上萬(wàn)個(gè),因為我的系統很復雜??赡苓€會(huì )問(wèn)什么呢?你怎么能寫(xiě)一千個(gè)呢?我認為咱們系統有一兩個(gè)足夠了,你用力怎么寫(xiě)的,是不是花了很多無(wú)用功,都有這樣的疑問(wèn)。你還沒(méi)辦法說(shuō)明它。

            總感覺(jué)測試工作,或者測試團隊的工作是不可控的。不可控在什么程度,在座有這么多測試人員,大家都會(huì )有這樣的感覺(jué),我可能今天很累,累在什么地方,我好好測試我的軟件一個(gè)BUG都沒(méi)有發(fā)現,你的老板問(wèn)你工作成果是什么,你沒(méi)辦法說(shuō)。你可能今天很閑,你心情不好,不想干活,你可能上了一天網(wǎng),被測的軟件沒(méi)有打開(kāi),雖然今天沒(méi)干活,但是對整個(gè)質(zhì)量也沒(méi)產(chǎn)生影響,你可以心安理得的回家,第二天再說(shuō),對嗎?可能都有這樣的經(jīng)歷。作為公司,作為部門(mén)經(jīng)理如何對你監控,從公司的角度來(lái)說(shuō),這是一件很可怕的事情。

            測試過(guò)程混亂,無(wú)法進(jìn)行有效的持續改進(jìn)。什么叫持續改進(jìn),沒(méi)有人有能力,沒(méi)有公司有能力,一次把所有的事情都做正確,都做好,做對,沒(méi)有人,沒(méi)有公司。你要知道你現在目標在哪兒,而且能判斷到你持續向你的目標邁進(jìn)。

            測試的目標是什么?

            我們這么多做軟件測試的,軟件測試的目標是什么?上午和下午有很多嘉賓說(shuō),保證產(chǎn)品質(zhì)量,認為是保證產(chǎn)品質(zhì)量的我看看,很遺憾,保證不了,誰(shuí)可以說(shuō)經(jīng)過(guò)你的測試,這個(gè)軟件質(zhì)量就可以保證,誰(shuí)敢說(shuō)?那么多第三方的評測機構,哪個(gè)評測機構敢說(shuō)這個(gè)軟件經(jīng)過(guò)它的評測,質(zhì)量就沒(méi)問(wèn)題,誰(shuí)敢說(shuō),你保證不了。

            做一個(gè)簡(jiǎn)單的數學(xué)題,一個(gè)軟件有一百個(gè)功能點(diǎn),這個(gè)軟件大嗎?很小。如果從測試的角度來(lái)說(shuō),它可能有的功能點(diǎn)組合有多少?概率,C100/100,C100/100的數學(xué)計算結果等于多少?等于100的階乘,已經(jīng)是天文數字了,從數學(xué)模型來(lái)講,測試無(wú)法建立,這個(gè)目標你可以影響,但保證不了。

            驗證需求和實(shí)際軟件的相符程度,同意這個(gè)舉手我看看?同意嗎?軟件和需求相符就證明軟件的質(zhì)量高嗎?需求就做錯了,你怎么辦?

            對開(kāi)發(fā)團隊進(jìn)行有效的考核?行嗎?好象都不對。

            軟件測試的目標是什么?可能是一個(gè)很大的問(wèn)號。

            我現在提出兩個(gè)目標

            這兩個(gè)目標可能在其他的書(shū)上,或者在網(wǎng)上都看不到,最近才提出來(lái)的,兩個(gè)什么目標?

            第一個(gè),穩定控制軟件產(chǎn)品質(zhì)量的振幅,ISO做了那么多質(zhì)量管理體系,它能保證單一的產(chǎn)品進(jìn)來(lái)就肯定出去是一個(gè)優(yōu)秀的產(chǎn)品嗎?不可能。它能做什么?是以統計學(xué)的觀(guān)點(diǎn)控制軟件產(chǎn)品質(zhì)量的振幅,你通過(guò)我的流程,出現一個(gè)高品質(zhì)產(chǎn)品的概率高,同意嗎?是概率高,不可能完全控制。

            穩定控制軟件產(chǎn)品質(zhì)量的振幅這件事情不歸測試人員管,歸誰(shuí)管?通常是通過(guò)SEPG組,建立度量體系,進(jìn)行有效跟蹤和監控實(shí)現,是統計學(xué)。

            第二個(gè),測試做什么?高效的提高軟件測試用例的覆蓋率。好的測試人員和差的測試人員有什么區別?放在日常工作中,就是你想不到,同意嗎?你的組長(cháng)或者你的老板永遠比你想的多一點(diǎn),多的那點(diǎn)是什么?就是測試用例的覆蓋度,同意嗎?我們找了兩個(gè)關(guān)鍵字,一是高效,二是覆蓋度,后面我會(huì )證明這兩個(gè)怎么度量。

            怎么樣能高效?通過(guò)測試用例的復用來(lái)達到高效,以數據驅動(dòng)的形式自動(dòng)化測試用例可以提高效率,通過(guò)有效的測試用例設計方法,擴大覆蓋率。

            我現在要做什么事情?首先我把軟件測試的質(zhì)量分解為一個(gè)目標,這個(gè)目標是高效提高軟件測試用例的覆蓋度,把一個(gè)復雜的問(wèn)題簡(jiǎn)單化,簡(jiǎn)單為一個(gè)明確的問(wèn)題。

            下面我又做了分解,我把高效提高軟件測試用例的覆蓋度分為三個(gè)指標。

            • 通過(guò)測試用例的復用
            • 以數據驅動(dòng)的形式自動(dòng)化測試用例
            • 通過(guò)有效的測試用例設計方法擴大覆蓋率。

            這是典型軟件測試過(guò)程文檔體系結構,我們來(lái)看通常情況下,我會(huì )把整個(gè)軟件測試劃分為幾個(gè)步驟,首先最關(guān)鍵是軟件測試策略的制訂,測試策略提供幾個(gè)信息,項目實(shí)施范圍,可見(jiàn)可衡量的指標,驗證方法和階段。通常情況下,我們會(huì )把整個(gè)軟件測試過(guò)程劃分為單元集成系統。從所有的軟件工程或者從所有方法來(lái)說(shuō),都需要怎么做呢?都需要單元集成系統,一個(gè)都不能少。通常在不同企業(yè)里面做不同程度的裁減,單元測試必須要做嗎?

            WPS1.0你相信第一個(gè)版本出現的時(shí)候會(huì )通過(guò)單元集成系統測試,我不相信,你們相信嗎?我肯定也不相信,但是不影響這個(gè)產(chǎn)品。產(chǎn)品在每個(gè)階段有不同的競爭要求。WPS剛出現的時(shí)候,是功能上的競爭,填補市場(chǎng)空白,只要有就OK,只要能用就OK,當競爭到一定程度,WPS到現在你能相信它不進(jìn)行單元集成系統測試就可以賣(mài)嗎?不可想象。你現在就是選擇適合你的過(guò)程,當我們明確完策略以后,我們一般會(huì )把測試分為計劃、方案、實(shí)施、報告幾個(gè)階段。計劃主要解決五個(gè)W問(wèn)題,誰(shuí),什么時(shí)間、什么地點(diǎn),干什么事,由誰(shuí)來(lái)完成,就是做資源合理分配,然后進(jìn)行專(zhuān)項測試方案。專(zhuān)項測試方案就是性能測試方案,安全測試方案,易用性測試方案,加密狗測試方案等等,然后進(jìn)行測試實(shí)施,測試實(shí)施主要做兩個(gè)內容,首先是測試記錄,通過(guò)寫(xiě)記錄證明你執行到哪兒,沒(méi)通過(guò)的寫(xiě)缺陷報告,整個(gè)階段完成寫(xiě)階段完成報告,包括測試評估,然后做測試結論。

            測試策略

            通常情況下測試策略我們會(huì )明確以下幾個(gè)內容:

            1、明確測試需求,你要對什么進(jìn)行測試,這個(gè)點(diǎn)很重要,重要到什么程度?這么多人做軟件測試,我問(wèn)大家一個(gè)問(wèn)題,如果產(chǎn)品發(fā)布了以后,產(chǎn)生了質(zhì)量問(wèn)題,誰(shuí)的問(wèn)題?是測試員的問(wèn)題嗎?是嗎?同意是測試員的問(wèn)題,舉手我看看,不同意是測試員的問(wèn)題我看看。經(jīng)過(guò)你最后一道手發(fā)布出去了,產(chǎn)品出現問(wèn)題了,你說(shuō)不是你的問(wèn)題,你能解釋嗎?很重要一個(gè)問(wèn)題要明確測試的工作范圍,如果在你測試范圍內發(fā)現問(wèn)題,肯定是你的問(wèn)題,在你測試范圍外發(fā)現的問(wèn)題,就不是你的問(wèn)題嗎?不一定。我們要明確測試工作范圍,需要測試的對象,達到的目標等,可以來(lái)源于軟件需求,個(gè)人經(jīng)驗,以前發(fā)生的錯誤等。我們要確定測試目標,確定測試類(lèi)型和方法,測試風(fēng)險分析。

            策略完成以后,大家一定要注意,策略里面不包括人和時(shí)間,為什么不包括這兩項,從項目的角度來(lái)講,這兩項變化的風(fēng)險太大。測試策略中一定不包含可能變化比較頻繁的要素,目的就是測試策略不允許隨便修改,它確定了該項目最關(guān)鍵的要素,當我們確定測試策略以后,將進(jìn)行測試計劃的制訂。測試計劃包括什么呢?目標、方法、環(huán)境、工具,確定時(shí)間段,確定資源,自動(dòng)化測試分析。一個(gè)項目里一定要進(jìn)行自動(dòng)化測試分析嗎?完全沒(méi)必要,自動(dòng)化測試不能幫助你解決發(fā)現BUG的問(wèn)題。首先大家要對自動(dòng)化或者功能類(lèi)自動(dòng)化工具產(chǎn)生明確的認識,它不能幫助你發(fā)現新的BUG,它能幫助你提高效率,提高測試用例覆蓋效率。

            但計劃完成以后,我們要進(jìn)行專(zhuān)項測試方案制訂,我們要把計劃策略中所有需求拿出來(lái),進(jìn)行備案,然后細化測試規矩等等。

            測試實(shí)施包括測試記錄和測試報告。

            階段總結報告要提供測試執行依據,證明測試過(guò)程完整的執行了測試計劃內容,提供測試分析數據,證明系統的質(zhì)量達到要求或未達到要求,如果比較重要的系統要提供模擬測試,比如說(shuō)銀行或者電信系統,當它一個(gè)周期是一個(gè)月的數據,如果你隨意切換,你的系統不行怎么辦,有一種方式就是這一個(gè)月的數據,原來(lái)的系統跑一遍,新上線(xiàn)的系統在另外一套系統跑一遍,兩個(gè)出現的結果對比一下,走一個(gè)月就可以順利切換了。

            其次提供遺留問(wèn)題及后續的解決辦法,剛才都問(wèn)到一個(gè)問(wèn)題,測試什么時(shí)候結束,測試結束有兩個(gè)必要條件,缺陷處于收斂狀態(tài),所有遺留問(wèn)題都有了明確的解決方案。

            剛才跟大家簡(jiǎn)要的說(shuō)了一下我們認可的,或者我們覺(jué)得比較合適的一個(gè)軟件測試過(guò)程控制方法,談到度量,談到對過(guò)程的控制,我們首先要明確過(guò)程是什么,剛才我們過(guò)程擺在那兒了,我們再來(lái)看。

            測試流程解決的兩個(gè)問(wèn)題

            我們把復雜的問(wèn)題明確為兩個(gè)問(wèn)題,一是質(zhì)量振幅,二是高效提高軟件測試用例覆蓋率。質(zhì)量振幅如何控制,針對軟件測試過(guò)程的符合度進(jìn)行控制,通過(guò)由EPG組進(jìn)行監控,SQA進(jìn)行檢查,檢查報告就是振幅的一個(gè)指標,不在我們討論范圍之內。

            我們談測試相關(guān)的東西,高效提高軟件測試用例的覆蓋率,高效和覆蓋度是我們關(guān)注的目標。通過(guò)這兩個(gè)目標,我們去抓整個(gè)的軟件測試過(guò)程,我們看怎么抓。

            軟件測試工作如何提出效率,可能的指標有什么?我只能說(shuō)可能的指標,因為度量也好,過(guò)程也好,針對每個(gè)公司都是個(gè)性化的過(guò)程,比如說(shuō)我們通常在網(wǎng)上能拿到的數據,最完備的過(guò)程是什么?是RUP,一張光盤(pán),上頭有整個(gè)從項目需求一直到最后部署,整套的文檔,整套的模板,你能用嗎?我跟IBM的工程師聊過(guò),RUP的精華在什么?精華在裁減,你只有了解的全部,了解到本企業(yè)的現狀才知道自己用什么,不要盲目套用任何一套你看的好的方法或者模板,必須要個(gè)性化定制。這塊談到的目標只是參考??蓮陀玫漠a(chǎn)品多,可能提高效率吧,如果每次做項目能用到復用的產(chǎn)品很多,一定會(huì )提高效率,我們的指標就是測試資源復用率,包括計劃、方案、用例,自動(dòng)化測試腳本等等一系列,你在一個(gè)項目中產(chǎn)生的所有文檔、代碼或者思想,這些復用率有多高,拿一個(gè)指標控制。

            無(wú)用的工作少,上禮拜我們在對面開(kāi)測試時(shí)代的交流會(huì ),有幾個(gè)人,測試用例我們寫(xiě)到什么程度,大家想象,如果你只有一個(gè)禮拜的測試時(shí)間,五個(gè)工作日,你花三天寫(xiě)測試用例,兩天做測試執行,合理嗎?五天全部做測試執行,我不寫(xiě)測試用例,合理嗎?假設一年我八個(gè)月寫(xiě)測試用例,四個(gè)月做執行,合理嗎?我一年不寫(xiě)測試用例,只執行,合理嗎?所以當你看你項目的時(shí)候,絕對沒(méi)有一個(gè)統一的方法、指標讓你去做,要根據目標來(lái)決定。

            目標決定過(guò)程,過(guò)程決定質(zhì)量

            上午在說(shuō)我推崇一句話(huà),這句話(huà)是兩部分,第一部分是目標決定過(guò)程,一定要注意,目標決定過(guò)程,第二部分,過(guò)程決定質(zhì)量。為什么目標決定過(guò)程?跟敏捷開(kāi)發(fā)方法的理念是一樣的,你想做什么,想達成什么樣的結果,就讓過(guò)程不多不少的配合你,你要做什么,完全跟你的目的有關(guān)系,不要做過(guò)多或者過(guò)少的工作。所以它都是定制化的過(guò)程。無(wú)用的工作少,你要做度量,比如說(shuō)以前我作為測試組,或者你們作為測試人員,有多少測試人員在寫(xiě)文檔,我指的文檔是用戶(hù)使用手冊說(shuō)明書(shū),舉手我看看。在小組織小工作量下是沒(méi)問(wèn)題的,如果你的測試工作或者測試有效工時(shí)三分之一以上都被明顯跟工作質(zhì)量無(wú)關(guān)的工作就有問(wèn)題了,所以我們要拿到有效測試工時(shí)率。

            和開(kāi)發(fā)的配合好,在研發(fā)過(guò)程中,測試是輔助流程,還是主流程?輔助流程,如果你是輔助流程,你當然要跟主流程配合。跟主流程如何配合,首先協(xié)作點(diǎn)的數量,你跟開(kāi)發(fā)人員有多少次交互,我指的正式交互,不是你平常沒(méi)事吃飯、打球、聊天,而是在技術(shù)方案中你跟開(kāi)發(fā)人員做的交互有多少點(diǎn),協(xié)作點(diǎn)的正確率,正確率主要指時(shí)間和質(zhì)量,1月1號說(shuō)給你協(xié)作點(diǎn),1月1號沒(méi)給你,這個(gè)協(xié)作點(diǎn)沒(méi)有成功,如果給了你,你沒(méi)有評估,這也沒(méi)有成功。

            測試項目進(jìn)度貼合度

            測試項目進(jìn)度貼合度好,什么叫貼合度好?第一,我沒(méi)看到過(guò)沒(méi)有發(fā)現BUG的項目,有沒(méi)有這樣的測試人員,我測試一個(gè)產(chǎn)品壓根沒(méi)發(fā)現BUG。項目變化率,你作為項目經(jīng)理,你寫(xiě)了份測試計劃,你的計劃會(huì )有多少次變化,變化的程度會(huì )是怎樣的,也是判斷你的效率。工期貼合率,你們之間的工期是否有很好的貼合。

            自動(dòng)化測試不能發(fā)現BUG

            自動(dòng)化測試提高效率,首先自動(dòng)化測試不能發(fā)現BUG,它可以把你的手工測試用例自動(dòng)化,自動(dòng)化手工測試用例的數量,跟手工用例的比例,這個(gè)比例越高越好,但一定要考慮成本和產(chǎn)出,值不值得這樣做。以前我看一個(gè)項目,它的測試經(jīng)理給我們展示QTP做的自動(dòng)化測試,從頭到尾自動(dòng)化,所有的操作不用人工干預,我看了挺高興,后來(lái)我問(wèn)他,它發(fā)現過(guò)BUG嗎?沒(méi)發(fā)現,你平常測試用它嗎?也不用。做它干什么?演示。你就看到鼠標在那兒點(diǎn),一個(gè)流程一個(gè)流程完成。為什么這么做?處于測試人員自我的愛(ài)好,他覺(jué)得這個(gè)有意思,技術(shù)含量高,想學(xué)這門(mén)技術(shù),也給老板做演示,老板看了很高興,它不產(chǎn)生實(shí)際的效率。

            測試用例的覆蓋度

            測試用例的覆蓋度是一個(gè)求積分的過(guò)程,什么叫求積分的過(guò)程?可以無(wú)線(xiàn)接近,但是永遠到達不了,只可能無(wú)限接近,但不可能等于。

            有效度量測試用例覆蓋度增加的條件:

            • 1、現有測試用例進(jìn)行了有效的管理,首先測試用例你需要用工具或者手段管理起來(lái),一條一條放在那兒,做一個(gè)基線(xiàn)。
            • 2、明確測試用例編寫(xiě)的顆粒度,大家都有這種感覺(jué),你寫(xiě)測試用例,你測試這個(gè)產(chǎn)品的時(shí)候,你十條測試用例就測試完了,有人寫(xiě)三十條,你就覺(jué)得奇怪,我覺(jué)得十條已經(jīng)是局限了,怎么你能寫(xiě)到三十條,你去看他的用例,發(fā)現這也能算一條,這是組織內部測試用例顆粒度沒(méi)有達成一致,顆粒度你可以跟代碼行數對應,跟功能點(diǎn)對應,組織內部測試用例顆粒度要統一,保證所有人員大致是一致的。
            • 3、單個(gè)功能點(diǎn)都進(jìn)行了有效的規整,確定最小測試范圍。你如果做測試用例的度量,需要保證單一個(gè)功能點(diǎn)進(jìn)行了規整。
            • 4、提高的方式放在功能點(diǎn)的組合和測試數據的增加上,如果你想提高效果,很重要的兩個(gè)目標,就是功能點(diǎn)的組合增加了多少,測試數據又增加了多少。
            • 5、每輪新增測試用例量和率,通常情況下測試一個(gè)軟件,你的測試用例要跑好幾輪,三到五輪,有的可能更多,每輪會(huì )新增一些用例,這些新增的量和率是多少,如果在組織穩定的時(shí)候,新增數量不會(huì )太大,如果組織不穩定,或者產(chǎn)生新的功能點(diǎn)比較多的時(shí)候,新的功能點(diǎn)組合比較大,這個(gè)率就會(huì )比較高。對于你進(jìn)行一個(gè)項目控制也是有借鑒意義的。

            軟件測試過(guò)程的定制是一個(gè)個(gè)性化很強的工作,每個(gè)企業(yè)都應該不一樣,如果一樣了,就會(huì )有問(wèn)題,指標確定確立不能照抄,你抄沒(méi)問(wèn)題,你照著(zhù)人家的進(jìn)行,就有很大問(wèn)題,需要根據能力成熟度進(jìn)行有效的分析和定制。

            質(zhì)量的提高,工作的改進(jìn)是一個(gè)漸進(jìn)的過(guò)程,絕不能一蹴而就。

            通過(guò)分析,要先解決重要的事情,要有總體的規劃,而不是頭痛醫頭,腳痛醫腳。

            我大致的發(fā)言就到這兒,謝謝大家。

            領(lǐng)測老賀

            領(lǐng)測軟件測試網(wǎng)站長(cháng),ISTQB認證高級培訓師,TMMi認證咨詢(xún)師。深耕軟件測試行業(yè)20余年,領(lǐng)測老賀聊軟件測試制造者。

            文章評論

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>