一篇文章搞懂什么是测试,测试是干什么的?
測(cè)試現(xiàn)在被普遍認(rèn)為“保證產(chǎn)品質(zhì)量”這個(gè)籠統(tǒng)的說(shuō)法下,而測(cè)試本身是什么呢?今天我們就測(cè)試本身跟大家一起討論。
測(cè)試是在研發(fā)產(chǎn)品的整個(gè)過(guò)程中的一個(gè)跟蹤活動(dòng),他在各個(gè)階段報(bào)告給人們當(dāng)前項(xiàng)目的狀況,能夠督促和提示項(xiàng)目經(jīng)理或者高層經(jīng)理對(duì)項(xiàng)目的關(guān)注點(diǎn).
國(guó)內(nèi)的測(cè)試的定義,一般是在產(chǎn)品的研發(fā)后期,對(duì)產(chǎn)品的功能進(jìn)行驗(yàn)證的一個(gè)系列活動(dòng)。
國(guó)外的測(cè)試已經(jīng)發(fā)展比較成型了,而國(guó)內(nèi)的測(cè)試現(xiàn)在還處于摸索階段,至于超著那個(gè)方向去發(fā)展,我覺(jué)得大家目前還是處于比較迷茫的階段。
主要原因是:國(guó)內(nèi)軟件產(chǎn)業(yè)起步晚,而且質(zhì)量意識(shí)不強(qiáng),造成了軟件工業(yè)發(fā)展緩慢,配套行業(yè)(測(cè)試發(fā)展緩慢),我覺(jué)得這個(gè)很正常,因?yàn)閺娜祟?lèi)歷史發(fā)展的角度來(lái)看,這個(gè)是必須經(jīng)歷的階段,從有這個(gè)概念到摸索,目前國(guó)內(nèi)的測(cè)試應(yīng)該處于沉思期,主要是沒(méi)有一個(gè)全套的指導(dǎo)思想,另外一個(gè)原因是行業(yè)發(fā)展方向不明朗。
國(guó)內(nèi)存在對(duì)測(cè)試的誤解,所以造成了測(cè)試現(xiàn)在成了大家進(jìn)入企業(yè)的跳板,要么就是覺(jué)得自己的能力還不夠,目前只能從事測(cè)試,要么就沒(méi)有編寫(xiě)程序的能力,但是同類(lèi)產(chǎn)品比較了解,所以做測(cè)試。
如果我們把測(cè)試的方法整理成技術(shù),那么他形成一個(gè)規(guī)則或者說(shuō)是一個(gè)標(biāo)尺,我們只是分析什么樣產(chǎn)品的需要用什么方法來(lái)測(cè)試,而且需要了解的知識(shí)架構(gòu)是什么?怎么把這些知識(shí)穿插起來(lái),那么積累就不會(huì)被約束,但是不能撇開(kāi)經(jīng)驗(yàn),因?yàn)榻?jīng)驗(yàn)本身是設(shè)計(jì)出好的案例的基礎(chǔ),但不是唯一的基礎(chǔ)。
我們?cè)賮?lái)看看測(cè)試案例的設(shè)計(jì),測(cè)試案例的設(shè)計(jì)在國(guó)內(nèi)現(xiàn)在是一些剛剛?cè)胄械牟粫?huì)寫(xiě)程序或者程序功底比較差的人在寫(xiě)案例,那么這些人設(shè)計(jì)出來(lái)的案例只是包含了整個(gè)測(cè)試過(guò)程中功能測(cè)試的一部分案例而已,因?yàn)樗麄儾欢没蛘卟焕斫獬绦?#xff0c;不是從原理上去分析產(chǎn)品,不是從邏輯上去分析產(chǎn)品,而是從用戶(hù)使用的角度去分析產(chǎn)品,這樣設(shè)計(jì)出來(lái)的案例的可行性和可信度多大呢?大家可想而知了。所以我們?cè)谡麄€(gè)引導(dǎo)大家的過(guò)程中,從技術(shù)和方法,結(jié)合具體實(shí)例和針對(duì)不同類(lèi)型的產(chǎn)品的測(cè)試方法進(jìn)行跟蹤和描述。
首先,什么叫測(cè)試?測(cè)試干什么?
測(cè)試,是在開(kāi)發(fā)過(guò)程中的一種活動(dòng),它是分白盒測(cè)試和黑盒測(cè)試。在不同的階段不同的人所承擔(dān)著測(cè)試這個(gè)角色,我們把整個(gè)活動(dòng)統(tǒng)稱(chēng)為測(cè)試。
測(cè)試的工作內(nèi)容主要包含了設(shè)計(jì)測(cè)試計(jì)劃,設(shè)計(jì)測(cè)試案例,執(zhí)行測(cè)試,進(jìn)行測(cè)試總結(jié)。
執(zhí)行測(cè)試是在產(chǎn)品開(kāi)發(fā)的整個(gè)過(guò)程中進(jìn)行的,包括了單元測(cè)試,系統(tǒng)測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試和驗(yàn)收測(cè)試,那么不同的階段測(cè)試的重點(diǎn)不同。
單元測(cè)試的重點(diǎn)是函數(shù)級(jí),包括需求,包括算法,包括接口預(yù)留等內(nèi)容。
集成測(cè)試是指把小模塊結(jié)合起來(lái),測(cè)試的重點(diǎn)是輸入輸出數(shù)據(jù),參數(shù)的處理,錯(cuò)誤預(yù)處理,接口規(guī)范,參數(shù)約束等測(cè)試內(nèi)容。
系統(tǒng)測(cè)試的重點(diǎn)是功能性質(zhì),它的測(cè)試重點(diǎn)是按照需求來(lái)對(duì)照測(cè)試, 主要是功能實(shí)現(xiàn)的情況,包括功能使用邏輯和操作邏輯,操作系統(tǒng),兼容性(軟件和硬件)等內(nèi)容。
驗(yàn)收測(cè)試,主要是合同性質(zhì)而言的,在國(guó)外現(xiàn)在軟件外包情況比較多,那么雙方按照合同規(guī)定履行自己的職責(zé),把功能按照合同約定的形式條條比對(duì)。這是主要方面,那么在企業(yè)內(nèi)部,驗(yàn)收測(cè)試是除了功能驗(yàn)收以外,還包括易用性,軟件的親和度等方面的內(nèi)容。
測(cè)試的分類(lèi)
單元測(cè)試
單元測(cè)試是在測(cè)試過(guò)程中的最小粒度,它在執(zhí)行的過(guò)程中緊密的依照程序框架對(duì)產(chǎn)品的函數(shù)和模塊進(jìn)行測(cè)試,包含入庫(kù)和出口的參數(shù),輸入和輸出信息,錯(cuò)誤處理信息,部分邊界數(shù)值測(cè)試。
這個(gè)部分的測(cè)試工作在國(guó)內(nèi)現(xiàn)在是開(kāi)發(fā)人員進(jìn)行的。我相信未來(lái)的發(fā)展應(yīng)該是測(cè)試工程師來(lái)做這個(gè)事情。那么需要測(cè)試人員需要深刻的理解程序,理解需求,理解設(shè)計(jì),這樣才能發(fā)現(xiàn)問(wèn)題。
還有一種在國(guó)內(nèi)先在操作的方法,就是當(dāng)一個(gè)模塊給某個(gè)開(kāi)發(fā)工程師以后,需要他給大家講解他要完成這個(gè)模塊或者函數(shù)的整體流程和思路,進(jìn)行統(tǒng)一評(píng)審,使得問(wèn)題能夠暴露的更充分些,這樣做的目的有以下個(gè)。
第一,使得大家對(duì)設(shè)計(jì)者的思路明晰的理解,以便以后調(diào)用或者配合的時(shí)候能夠真切的提出需求或者相對(duì)完美配合。
第二,在評(píng)審的過(guò)程中,如果發(fā)現(xiàn)問(wèn)題,那么大家可能沒(méi)有犯過(guò),這樣就會(huì)更加提高警惕,如果犯過(guò),就會(huì)回想當(dāng)時(shí)自己怎么解決的或者規(guī)避的,使得大家能夠在錯(cuò)誤的過(guò)程中快速提高。
第三,可以對(duì)平常犯錯(cuò)誤進(jìn)行一個(gè)積累,我覺(jué)得這是生動(dòng)的教科書(shū),可以使得新的人員在新上手的時(shí)候遇到這樣的問(wèn)題以后,我們就可以給他一個(gè)解決問(wèn)題的方法或者方向。
回顧,我們上面給大家介紹了兩種方法,第一種就是通過(guò)在開(kāi)發(fā)的過(guò)程種進(jìn)行測(cè)試,由開(kāi)發(fā)(測(cè)試)工程師寫(xiě)測(cè)試代碼,對(duì)所編寫(xiě)的函數(shù)或者模塊進(jìn)行測(cè)試,第二種就是通過(guò)代碼互評(píng)發(fā)現(xiàn)問(wèn)題,將問(wèn)題進(jìn)行積累,形成知識(shí)積累庫(kù),以便使得新人在同樣的方面不至于再犯錯(cuò)誤。
單元測(cè)試非常重要,因?yàn)樗绊懙姆秶蛯挾缺容^大,也許由于一個(gè)函數(shù)或者參數(shù)問(wèn)題,造成后面暴露出很多表象問(wèn)題出現(xiàn)。而且如果單元測(cè)試做不好,使得集成測(cè)試或者后面系統(tǒng)測(cè)試的壓力很大,而且項(xiàng)目的費(fèi)用和進(jìn)度可能就會(huì)飚升。
對(duì)單元測(cè)試,現(xiàn)在用CPPUnit的比較多,市場(chǎng)上也有其他對(duì)應(yīng)的產(chǎn)品,他們?cè)诓煌能浖挝徊煌碾A段。正確的理解單元測(cè)試的重要性是意識(shí),需要在過(guò)程改進(jìn)種不停的總結(jié),慢慢的積累,將質(zhì)量意識(shí)滲透到整個(gè)開(kāi)放過(guò)程中的各個(gè)環(huán)節(jié)。
保證單元測(cè)試順利進(jìn)行,需要滲透軟件工程的很多思想,把CMM和跟蹤機(jī)制建立起來(lái),問(wèn)題的分類(lèi)、跟蹤,如果把軟件環(huán)節(jié)整個(gè)活動(dòng)都滲透了,那么產(chǎn)品質(zhì)量的意識(shí)自然就增強(qiáng)了。
COM思想現(xiàn)在在大的項(xiàng)目現(xiàn)在體現(xiàn)的淋漓盡致,因?yàn)槿绻徊捎肅OM機(jī)制,維護(hù)和升級(jí)以及修改測(cè)試的成本很大,所以現(xiàn)在大型項(xiàng)目基本上都采用COM的組織形式。
說(shuō)了這么多,單元測(cè)試做什么呢?單元測(cè)試主要是做一下幾個(gè)事情:
第1, 模塊或者函數(shù)的設(shè)計(jì)稿
第2, 代碼規(guī)范,其中包含代碼書(shū)寫(xiě)規(guī)范,對(duì)齊方式
第3, 代碼的注釋。非常重要
第4, 參數(shù)類(lèi)型,數(shù)據(jù)長(zhǎng)度,指針,數(shù)組長(zhǎng)度大小
第5, 輸入輸出參數(shù)和結(jié)果
第6, 創(chuàng)建對(duì)象后是否刪除了,如果在這里沒(méi)有刪除,請(qǐng)注明在那里刪除
第7, 是否應(yīng)用了沒(méi)有初試化的變量,如果是,請(qǐng)指明該變量在那里初始化
第8, 變量是否聲明,聲明是否按照要求進(jìn)行
第9, 調(diào)用此函數(shù)需要的滿(mǎn)足條件需要注明
第10, 在此函數(shù)或者模塊中用到了系統(tǒng)或者其他第三方插件函數(shù),需要滿(mǎn)足的系統(tǒng)條件
上面我只是列舉了一些在測(cè)試過(guò)程中發(fā)現(xiàn)或者隱藏的問(wèn)題,我想可能還有很多情況引發(fā)問(wèn)題,請(qǐng)大家補(bǔ)充,以便在工作中有操作性。
集成測(cè)試
集成測(cè)試是在保證單元測(cè)試進(jìn)行后進(jìn)行的一個(gè)動(dòng)作,能否集成的標(biāo)志不是所有的代碼編譯通過(guò)了就算是可以集成了,而是所有的能夠在這個(gè)虛擬環(huán)境下能夠正常運(yùn)轉(zhuǎn)。
在集成測(cè)試種一般采用的方法是數(shù)據(jù)驅(qū)動(dòng)或者樁驅(qū)動(dòng),因?yàn)榧蓽y(cè)試不能看到產(chǎn)品的表象,因?yàn)樗且恍?shù)據(jù)流的中間段,我們渴望能夠?qū)χ虚g數(shù)據(jù)進(jìn)行分析,就可以知道或者就渴望知道流程或者算法中有什么不妥當(dāng)?shù)牡胤健?/p>
集成測(cè)試比較適合做成自動(dòng)化測(cè)試,當(dāng)然首先我們分析了適合做自動(dòng)化的條件是滿(mǎn)足的,我這里就不講詳細(xì)的方法,到后面的自動(dòng)化測(cè)試介紹中,我會(huì)提到這個(gè)方面的問(wèn)題。下面和大家一起揭開(kāi)測(cè)試自動(dòng)化的神秘面紗以及給大家講一些構(gòu)建冒煙的概念。
冒煙測(cè)試的出處是,由于生活習(xí)慣等原因,人們會(huì)定期的做某個(gè)事情,就像人們會(huì)約定成俗的認(rèn)為12:00是吃飯下班的時(shí)間。那個(gè)時(shí)候大家都會(huì)做飯,哈哈,自然會(huì)從煙囪冒煙。
在軟件行業(yè)里面的約定是當(dāng)產(chǎn)品到達(dá)某個(gè)階段之后,為了驗(yàn)證產(chǎn)品的各個(gè)部分的銜接程度,為了驗(yàn)證項(xiàng)目的進(jìn)展程度,為了驗(yàn)證產(chǎn)品的(已完成)功能的全面穩(wěn)定程度,由測(cè)試主導(dǎo)的一種測(cè)試方法,主要的操作就是,在產(chǎn)品開(kāi)發(fā)計(jì)劃定制完成以后,依照開(kāi)發(fā)計(jì)劃指定完整的編譯計(jì)劃,按照開(kāi)發(fā)計(jì)劃和編譯計(jì)劃,各個(gè)單位按照要求完成自己的作業(yè),然后在編譯點(diǎn)上驗(yàn)證完成程度。
集成測(cè)試也是不可缺少的一個(gè)部分,很多單位為了趕進(jìn)度,會(huì)將這個(gè)部分省略掉,就甩手給測(cè)試小組,如果沒(méi)有對(duì)應(yīng)的測(cè)試小組,就會(huì)是程序員進(jìn)行簡(jiǎn)單的使用后就交付市場(chǎng),危險(xiǎn),這是個(gè)定時(shí)炸彈。因?yàn)樗麜r(shí)刻有可能產(chǎn)生市場(chǎng)對(duì)企業(yè)影響的額度,以及企業(yè)本身的聲譽(yù)問(wèn)題。
集成測(cè)試是在單元測(cè)試完成后進(jìn)行的測(cè)試環(huán)節(jié)中的一個(gè)測(cè)試,主要是測(cè)試各個(gè)模塊和函數(shù)之間的相互銜接情況,互動(dòng)情況,輸入輸出情況。所以集成測(cè)試也很重要。
那么集成測(cè)試一般采用什么方法呢?集成測(cè)試一般采用樁驅(qū)動(dòng)的方法,因?yàn)樵趩卧獪y(cè)試我們檢查的相對(duì)比較詳細(xì),那么在集成測(cè)試的重點(diǎn)其實(shí)要保證邏輯上了。我簡(jiǎn)單的介紹樁驅(qū)動(dòng)的實(shí)現(xiàn)方法。
我們可以定義很多個(gè)樁,使得測(cè)試效率提高。
我們把上面的內(nèi)容進(jìn)行簡(jiǎn)單的總結(jié):集成測(cè)試就是測(cè)試各個(gè)組件之間的配合情況。所以集成測(cè)試是為系統(tǒng)測(cè)試提供了一些基本保證,但是不要完全依賴(lài)。
采用的方法給大家介紹了,這樣可以采用測(cè)試或者程序編碼的形式實(shí)現(xiàn)測(cè)試。
系統(tǒng)測(cè)試
系統(tǒng)測(cè)試是測(cè)試過(guò)程中的一個(gè)轉(zhuǎn)折點(diǎn),因?yàn)樵诂F(xiàn)在國(guó)內(nèi)的企業(yè)中,不同的產(chǎn)品面對(duì)不同的用戶(hù)群體,所以有的企業(yè)經(jīng)過(guò)第三方產(chǎn)品的驗(yàn)收測(cè)試,有的企業(yè)則沒(méi)有通過(guò)驗(yàn)收,而是一些工具類(lèi)或者通用類(lèi)的產(chǎn)品,那么他的驗(yàn)收測(cè)試是經(jīng)過(guò)廣大的用戶(hù)群來(lái)做的,也就是說(shuō)凡是通用類(lèi)產(chǎn)品的系統(tǒng)測(cè)試必須嚴(yán)謹(jǐn)測(cè)試以后,才可以投放到市場(chǎng)。但是對(duì)于對(duì)企業(yè)或者其他專(zhuān)業(yè)性單位定制的產(chǎn)品我們必須進(jìn)行驗(yàn)收測(cè)試。
系統(tǒng)測(cè)試工作是一個(gè)重復(fù)老動(dòng)很多的工作,需要在工作種把握幾個(gè)重點(diǎn),系統(tǒng)測(cè)試是保證系統(tǒng)能夠正常運(yùn)轉(zhuǎn),包括了功能,易用性,健壯性,壓力,邊界數(shù)值設(shè)定等各個(gè)方面的內(nèi)容。要想在這個(gè)階段的工作種找到樂(lè)趣,就要不停的摸索,找出能夠?qū)C(jī)器代替人的所有的東西,找工作的快感。
系統(tǒng)測(cè)試需要有廣泛的知識(shí)面,對(duì)測(cè)試工程師的要求需要了解和掌握很多方面的知識(shí),需要了解問(wèn)題可能出現(xiàn)的原因,已經(jīng)出現(xiàn)這個(gè)問(wèn)題可能是由于什么原因造成的,以便我們能夠及時(shí)的補(bǔ)充測(cè)試案例,保證或者降低產(chǎn)推出的風(fēng)險(xiǎn)。
目前軟件測(cè)試行業(yè)發(fā)展還不成熟,大多數(shù)系統(tǒng)測(cè)試都在測(cè)試組做,而且測(cè)試組幾乎到系統(tǒng)測(cè)試測(cè)試階段才會(huì)接觸到產(chǎn)品。我們也把系統(tǒng)測(cè)試簡(jiǎn)單的說(shuō)明一下。
目前系統(tǒng)測(cè)試基本上采用黑盒測(cè)試方法,而且基本上局限在手公測(cè)試上面。
我們不知道被測(cè)試軟件是怎么實(shí)現(xiàn)的,做了什么事情,我們只知道我們要它做什么,我們想得到什么,至于程序內(nèi)部怎么實(shí)現(xiàn),我們并不關(guān)心,我們只是關(guān)心結(jié)果。這是一種純粹黑盒的測(cè)試。
這個(gè)階段是測(cè)試發(fā)現(xiàn)問(wèn)題的主要階段,最少?gòu)哪壳笆袌?chǎng)上的產(chǎn)品情況來(lái)看是這樣的。在這個(gè)階段60%的問(wèn)題會(huì)暴露出來(lái),如果不進(jìn)行單元測(cè)試和集成測(cè)試,這個(gè)階段的測(cè)試量和測(cè)試點(diǎn)很重要。
黑盒測(cè)試的核心是需要找到測(cè)試的重點(diǎn)在那里?測(cè)試的切入點(diǎn)在那里。系統(tǒng)測(cè)試重復(fù)的工作量比較大,而且如果是一個(gè)大型的項(xiàng)目,涉及的內(nèi)容相對(duì)比較多,而且如果組織不好,或者沒(méi)有找到重點(diǎn),需要一遍遍的重復(fù)。所以需要自動(dòng)化測(cè)試的需要合理的設(shè)計(jì),使得我們的重復(fù)工作盡量減少,以提高工作效率。
驗(yàn)收測(cè)試
驗(yàn)收測(cè)試類(lèi)似于客戶(hù)驗(yàn)證產(chǎn)品的質(zhì)量,在軟件行業(yè)發(fā)展的過(guò)程中,各種承包項(xiàng)目類(lèi)似于國(guó)外的外包項(xiàng)目將會(huì)不斷的出現(xiàn),那么外包項(xiàng)目的質(zhì)量問(wèn)題需要大家共同討論。
外包項(xiàng)目的操作流程是當(dāng)承包方提出具體的需求,然后有承包商來(lái)按照需求來(lái)開(kāi)發(fā)項(xiàng)目,包括單元測(cè)試,系統(tǒng)測(cè)試,集成測(cè)試等各個(gè)方面的測(cè)試,經(jīng)過(guò)被承包商測(cè)試后的產(chǎn)品提交給外包商的時(shí)候,需要進(jìn)行驗(yàn)收測(cè)試,驗(yàn)收測(cè)試可以是外包商本身提供一套測(cè)試方案,然后對(duì)照具體的需求,進(jìn)行產(chǎn)品驗(yàn)證測(cè)試。也可以是雙方找一個(gè)共同的第三方,進(jìn)行產(chǎn)品的驗(yàn)證測(cè)試。
驗(yàn)收測(cè)試的測(cè)試重點(diǎn)主要是產(chǎn)品是否按照需求開(kāi)發(fā)的,而不從針對(duì)功能進(jìn)行的測(cè)試。所以驗(yàn)收測(cè)試基本上不需要多少專(zhuān)業(yè)水平,也可以是承包商找到使用該產(chǎn)品的用戶(hù),來(lái)體驗(yàn)該產(chǎn)品是否能夠滿(mǎn)足使用要求。這樣以來(lái)使得雙方可以有一個(gè)共同的平臺(tái),避免商業(yè)矛盾的產(chǎn)生。
驗(yàn)收測(cè)試的測(cè)試手段目前來(lái)說(shuō)還是靠用戶(hù)體驗(yàn)。對(duì)照合同的需求進(jìn)行測(cè)試,是第三方按照雙方達(dá)成的共識(shí)來(lái)跟蹤和測(cè)試軟件是否能達(dá)成的需求。
測(cè)試方法
黑盒測(cè)試
顧名思義,黑盒就是外面不知道盒子里面在作什么,怎么作,只知道我的輸入他需要有反應(yīng),無(wú)論是正確的還是錯(cuò)誤的,都需要有回饋信息。黑盒測(cè)試需要懂產(chǎn)品的使用方法,操作方法,把盡可能多的情況暴露出來(lái),通過(guò)這種方法進(jìn)行測(cè)試。
黑盒測(cè)試的隨機(jī)性比較大,在大部分案例執(zhí)行完成以后,大概能夠測(cè)試40%的功能,據(jù)美國(guó)一個(gè)官方的數(shù)據(jù)說(shuō),20%的問(wèn)題是在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)的,80%的問(wèn)題是在系統(tǒng)測(cè)試和集成測(cè)試過(guò)程中發(fā)現(xiàn)的,其中80%的比例我們還是需要在細(xì)分,20%的是使用的問(wèn)題,20%是程序的問(wèn)題,5%邏輯問(wèn)題,剩下的都是莫名其妙的問(wèn)題,這樣的數(shù)據(jù)對(duì)測(cè)試的一個(gè)引導(dǎo)是:要想發(fā)現(xiàn)更多的問(wèn)題,需要更多的思考,更多的組合。這樣無(wú)畏的增加了很多工作量,人們?cè)谄v的執(zhí)行著測(cè)試案例,渴望從中發(fā)現(xiàn)新的問(wèn)題。
這樣的案例設(shè)計(jì)思想使得我們?cè)陂_(kāi)發(fā)一個(gè)大型的產(chǎn)品或者延續(xù)性產(chǎn)品的時(shí)候,整個(gè)測(cè)試案例的延續(xù)性很差,重用性也很差。所以我們?cè)谶@里需要糾正一個(gè)概念,黑盒測(cè)試不簡(jiǎn)單的使用,案例設(shè)計(jì)也不是無(wú)謂的組合。
那么如何設(shè)計(jì)好的測(cè)試案例呢?如何在開(kāi)發(fā)過(guò)程中很好的結(jié)合2/8原則呢?當(dāng)前包括以后,不可能出現(xiàn)一個(gè)積極完美的產(chǎn)品,一個(gè)錯(cuò)誤也沒(méi)有,但是我們作為軟件工程師,肯定渴望自己參與開(kāi)發(fā)的產(chǎn)品穩(wěn)定,易用,人們寄予無(wú)限的稱(chēng)贊,這是一種奢望,那么我們把這種奢望修改一下,就是渴望我們參與的產(chǎn)品,能夠滿(mǎn)足當(dāng)前大多數(shù)人的需求,穩(wěn)定是否更合理呢?
白盒測(cè)試
白盒測(cè)試是一種高技能的測(cè)試,它是一種基于源代碼下的測(cè)試,這種測(cè)試要求對(duì)程序的要求很高,需要了解程序的構(gòu)架,具體需求,以及一些編寫(xiě)程序的技巧,能夠檢查一些程序規(guī)范,指針,變量,數(shù)組越界等問(wèn)題,使得問(wèn)題在前期就暴露出來(lái)。
一般程序所容易犯的錯(cuò)誤,沒(méi)有定義變量,無(wú)效引用,野指針,超過(guò)數(shù)組下標(biāo),內(nèi)存分配后沒(méi)有刪除等,無(wú)法調(diào)入循環(huán)體,函數(shù)本身沒(méi)有析構(gòu),導(dǎo)致循環(huán)實(shí)效或者死循環(huán).參數(shù)類(lèi)型不匹配,調(diào)用系統(tǒng)的函數(shù)沒(méi)有考慮到系統(tǒng)的兼容性等.
白盒測(cè)試一般是以單元或者模塊為基礎(chǔ)的。目前的做法是把他歸結(jié)為開(kāi)發(fā)的范疇,用轉(zhuǎn)人或者兼職的人去看代碼或者利用部分工具,例如Rational系列,Boundchecker等工具,他們可以幫助人為的發(fā)現(xiàn)變量沒(méi)有初始化,指針錯(cuò)誤等。大大的減少了人力。
我下面講講BoundChecker最實(shí)用的東西。
例如:我們發(fā)現(xiàn)一個(gè)現(xiàn)象:有個(gè)軟件再Win98下運(yùn)行不起來(lái),或者總是出現(xiàn)莫名其妙的錯(cuò)誤,再Win2000下或者更高系統(tǒng)下運(yùn)行正常。
上面是一個(gè)現(xiàn)象,是我們?cè)偃粘y(cè)試中經(jīng)常遇到的現(xiàn)象,我們分析可能導(dǎo)致出錯(cuò)的原因:操作系統(tǒng)本身出錯(cuò)的原因,導(dǎo)致軟件無(wú)法再此系統(tǒng)下運(yùn)行,另外一個(gè)原因:軟件中用到了某些函數(shù)不支持此操作系統(tǒng)。還有一個(gè)原因,軟件運(yùn)行的硬件環(huán)境再此系統(tǒng)下不能滿(mǎn)足
灰盒測(cè)試
灰盒測(cè)試是介于黑盒測(cè)試和白盒測(cè)試之間的一種測(cè)試.這個(gè)階段的測(cè)試重點(diǎn)是各個(gè)組件之間的邏輯,這個(gè)時(shí)期的測(cè)試重點(diǎn)是各個(gè)DLL文件的參數(shù)和邏輯是否正確,測(cè)試的重點(diǎn)是DLL本身.然后采用樁驅(qū)動(dòng),把各個(gè)DLL或者函數(shù)按照一定的邏輯串起來(lái),達(dá)到在產(chǎn)品還沒(méi)有界面的情況下能看到一種既定情況下的結(jié)果輸出.
灰盒測(cè)試的要求相對(duì)白盒測(cè)試來(lái)說(shuō)要求相對(duì)較低,對(duì)測(cè)試案例的要求也相對(duì)較低,只要求能夠檢測(cè)DLL處理輸入和輸出的能力,異常情況下的處理而已.
測(cè)試方面
案例設(shè)計(jì)問(wèn)題
分析:因?yàn)楝F(xiàn)在從總體上看,案例設(shè)計(jì)很細(xì),但是重復(fù)和不必要的東西太多了,個(gè)人認(rèn)為原因有三個(gè):
第1、 設(shè)計(jì)案例的不了解產(chǎn)品設(shè)計(jì)的框架(從程序概念上講)
第2、 案例的設(shè)計(jì)沒(méi)有一個(gè)反饋,涵蓋情況不知
第3、 開(kāi)發(fā)產(chǎn)品質(zhì)量意識(shí)淡薄,測(cè)試壓力太大
第4、 測(cè)試人員的素質(zhì)分析沒(méi)有,我們看不清問(wèn)題出現(xiàn)在那里
進(jìn)度問(wèn)題
第1、 測(cè)試的整體計(jì)劃里面沒(méi)有重復(fù)考慮風(fēng)險(xiǎn),時(shí)間問(wèn)題緊迫
第2、 回歸測(cè)試無(wú)法保證
結(jié)合開(kāi)發(fā)模型,跟大家一起分析各個(gè)時(shí)期要作的時(shí)期
怎么樣閱讀需求呢?
我們?cè)跍y(cè)試的時(shí)候,我們需要通篇的閱讀需求,那么怎么閱讀需求呢?需要了解什么內(nèi)容呢?實(shí)際的可操作的在那里呢?
我詳細(xì)說(shuō)我的認(rèn)識(shí),需求我們需要了解我們需要做什么類(lèi)型的產(chǎn)品,這種產(chǎn)品需要什么樣的基礎(chǔ)知識(shí),我們應(yīng)該補(bǔ)充學(xué)習(xí)那些基礎(chǔ)知識(shí),市面上是否有同類(lèi)型的或者相似的產(chǎn)品,他們?cè)?jīng)出了那些問(wèn)題等,把自己先充實(shí)了,這是看需求的主要目的和重要目的。
測(cè)試改進(jìn)方案
以上對(duì)存在的問(wèn)題進(jìn)行了分析,我們需要找到自己的弱項(xiàng)在那里,那么從現(xiàn)在看來(lái),我們現(xiàn)在測(cè)試隊(duì)伍沒(méi)有建立,沒(méi)有形成相應(yīng)的體制。主要表現(xiàn)在一下幾個(gè)方面:
測(cè)試工作需要回饋
回顧一,測(cè)試案例執(zhí)行跟蹤和統(tǒng)計(jì)不明確。
問(wèn)題:如果測(cè)試案例不進(jìn)行跟蹤,無(wú)法證明或者檢測(cè)我們案例設(shè)計(jì)的好壞,無(wú)法改進(jìn)工作方法或者改善我們的思路,所以需要通過(guò)這里把自身問(wèn)題看清楚,這樣有利于工作的開(kāi)展。
在我們?nèi)粘5纳钪?#xff0c;存在這一種現(xiàn)象,因?yàn)檫@種現(xiàn)象導(dǎo)致了測(cè)試一些列的發(fā)展。大家普遍認(rèn)為,測(cè)試的含金量不高,導(dǎo)致了測(cè)試工作就是一些不愿意做開(kāi)發(fā)或者沒(méi)有能力做開(kāi)發(fā)的人來(lái)做,其二,他們對(duì)測(cè)試設(shè)計(jì)的測(cè)試案例從不認(rèn)真的審查,認(rèn)為就那么回事情。出現(xiàn)這種問(wèn)題的愿意是由于開(kāi)發(fā)還沒(méi)有清楚的認(rèn)識(shí)到測(cè)試是一個(gè)服務(wù)部門(mén),是為他們服務(wù)的,從私利的角度來(lái)講,我們拋開(kāi)項(xiàng)目的關(guān)系,測(cè)試的主要工作是為了幫助開(kāi)發(fā)將自己寫(xiě)的代碼更實(shí)用一些,讓市場(chǎng)更認(rèn)可一些,讓開(kāi)發(fā)人員的成就感強(qiáng)一些。
如果大家都從這個(gè)角度考慮問(wèn)題,那就可能緩解或者解決上面的第二個(gè)問(wèn)題。
關(guān)于測(cè)試含金量不高的說(shuō)法,我不贊成這個(gè)說(shuō)法,在目前國(guó)內(nèi)的大環(huán)境下,測(cè)試是這樣的,但是它在朝自己預(yù)想的發(fā)展。而開(kāi)發(fā)的發(fā)展除了新的語(yǔ)言在發(fā)展以外,思想或者體系我們能增加或者能設(shè)想的空間已經(jīng)不多了,而對(duì)于測(cè)試是一個(gè)全新的行業(yè),他發(fā)展首先需要支持,需要理解,我相信國(guó)內(nèi)測(cè)試在5~10以后,發(fā)展更加迅猛。因?yàn)榫退闶乾F(xiàn)在很小的軟件企業(yè),已經(jīng)開(kāi)始重視測(cè)試了。
回顧二,測(cè)試需要和開(kāi)發(fā)有共同語(yǔ)言
當(dāng)你開(kāi)心或者興奮的發(fā)現(xiàn)問(wèn)題以后,你能告訴我這個(gè)問(wèn)題發(fā)生的原因嗎?當(dāng)你發(fā)現(xiàn)問(wèn)題以后,你能告訴我問(wèn)題可能在那個(gè)環(huán)節(jié)發(fā)生的?你能告訴我類(lèi)似于此類(lèi)問(wèn)題可能在那里還會(huì)發(fā)生。
所以,當(dāng)你進(jìn)行測(cè)試的時(shí)候,渴望測(cè)試人員完全了解被測(cè)試對(duì)象的架構(gòu),然后針對(duì)此類(lèi)軟件需要補(bǔ)充基礎(chǔ)知識(shí),把自己補(bǔ)充起來(lái),不至于開(kāi)發(fā)人員給你講任何事情,你不理解,或者很難理解,那么如果真的是這樣,我對(duì)你個(gè)人設(shè)計(jì)的測(cè)試案例會(huì)打一個(gè)問(wèn)號(hào)。
靠自己的基礎(chǔ)知識(shí),詳細(xì)拜讀設(shè)計(jì)稿件,從設(shè)計(jì)稿件中如果能發(fā)現(xiàn)問(wèn)題或者風(fēng)險(xiǎn),你就有長(zhǎng)足的進(jìn)步了。
回顧三,補(bǔ)充測(cè)試案例
我相信大家都有這個(gè)體會(huì),在設(shè)計(jì)案例的過(guò)程中,大家想到這里,想到那里,總之想的很詳細(xì),但是在真正做測(cè)試工作的時(shí)候,總是發(fā)現(xiàn)一些bug與我們?cè)O(shè)計(jì)的測(cè)試案例無(wú)關(guān)。
怎么會(huì)發(fā)生這樣的事情呢?因?yàn)槲覀冊(cè)O(shè)計(jì)案例是寄予自己的經(jīng)驗(yàn)和對(duì)軟件的理解去設(shè)計(jì)案例,勢(shì)必會(huì)造成這樣的局面。現(xiàn)在我推進(jìn)一種方法。就是在設(shè)計(jì)測(cè)試案例的時(shí)候,渴望每個(gè)人把自己負(fù)責(zé)的模塊劃個(gè)流程圖出來(lái),包括所有的出口和入口,包括信息流怎么流轉(zhuǎn)的,如果把這張圖形能夠完全的劃出來(lái),說(shuō)明你的理解要深一步,那么設(shè)計(jì)的案例含金量會(huì)高。
測(cè)試工作需要總結(jié)
測(cè)試的總結(jié)機(jī)制沒(méi)有
i. 測(cè)試案例的執(zhí)行情況
ii. 測(cè)試案例發(fā)現(xiàn)問(wèn)題情況
iii. 測(cè)試案例的冗余情況
iv. 測(cè)試周期內(nèi)的曲線(xiàn)項(xiàng)目進(jìn)展情況
需要交流平臺(tái)和形式
信息交流平臺(tái)和積累
v. 資源共享
vi. 信息共享
vii. 提高自己在開(kāi)發(fā)中的信心,不要總是喊狼來(lái)了
viii. 人和人之間需要溝通和認(rèn)同,團(tuán)體也一樣
測(cè)試人員交流什么呢?
在一個(gè)組織中,應(yīng)該讓所有的人熟悉每個(gè)模塊的設(shè)計(jì)思路和測(cè)試思想,讓每個(gè)設(shè)計(jì)的人告訴大家,宣講出來(lái),這樣大家在看這塊的時(shí)候,就知道那里容易出問(wèn)題,出了那些問(wèn)題。如果進(jìn)行測(cè)試是最有效的,如果設(shè)計(jì)案例能抓住問(wèn)題的核心。在設(shè)計(jì)階段,如果把設(shè)計(jì)的案例給開(kāi)發(fā)人員看看,能規(guī)避一些設(shè)計(jì)上的缺陷。
在應(yīng)該團(tuán)體中大家都應(yīng)該有共享的概念,我個(gè)人推薦的學(xué)習(xí)方法,是偷,我別人學(xué)了很多年的思想精華部分,在很短的時(shí)間內(nèi)接受并吸收,這樣會(huì)提高整個(gè)團(tuán)隊(duì)的素質(zhì)。如果每個(gè)人都在共享,那么每個(gè)人都在進(jìn)步,所以需要交流,包括思想,包括方法等。
采用的方法
讓別人給服務(wù)說(shuō)話(huà),清楚認(rèn)識(shí)自己
讓開(kāi)發(fā)人員說(shuō)話(huà),讓對(duì)應(yīng)開(kāi)發(fā)人員給我們的測(cè)試案例提出相應(yīng)的意見(jiàn),保證測(cè)試案例的覆蓋面,以把握重點(diǎn)。
在整個(gè)開(kāi)發(fā)過(guò)程中,由需求,開(kāi)發(fā),測(cè)試完整的團(tuán)隊(duì),準(zhǔn)確的說(shuō)還有市場(chǎng)部分,我們都把它歸結(jié)為需求的搜索和定義部分。那么在整個(gè)產(chǎn)品研發(fā)的過(guò)程中,各個(gè)部分需要完整的配合,否則整個(gè)產(chǎn)品都不能按時(shí)上市。作為為開(kāi)發(fā)和需求服務(wù)的測(cè)試部分,應(yīng)該擺正自己的位置,我們是一個(gè)團(tuán)隊(duì)中的一部分,是不可以缺少的一部分。
人貴有自知,也難有自知。只有在認(rèn)識(shí)自己的基礎(chǔ)上才能選擇好自己的生活道路。首先要認(rèn)清自己的能力。人的能力可以有天壤之別,但只要不辜負(fù)自己這塊材料,也就可以問(wèn)心無(wú)愧了。認(rèn)識(shí)自己尤忌自大,這會(huì)使你為自己訂立高不可攀的奮斗目標(biāo),到頭來(lái)高不成、低不就。其次要認(rèn)識(shí)自己的本性。心理學(xué)家把人分成六個(gè)類(lèi)型:經(jīng)濟(jì)型、理論型、社會(huì)型、審美型、宗教型和權(quán)力型。要選擇一個(gè)適合自己本性的生活目標(biāo)。
看清楚了自己,就可以很好的改善,也能把自己的事情做好,同時(shí)呢,才能更好的服務(wù)。
自己回頭看
讓執(zhí)行測(cè)試案例的人員反饋給我們數(shù)據(jù),說(shuō)明案例的冗余情況,這樣會(huì)慢慢提高自己的設(shè)計(jì)水平。
因?yàn)槿藗兞?xí)慣于談成績(jī),問(wèn)題在成績(jī)中可以淡化,我不同意此觀點(diǎn)。
其實(shí)在現(xiàn)實(shí)生活中,大家都經(jīng)歷了很多事情,都學(xué)會(huì)了總結(jié),可是同樣的錯(cuò)誤在現(xiàn)實(shí)中會(huì)多次出現(xiàn),為什么呢?是因?yàn)榛仡^了多次,沒(méi)有總結(jié),總結(jié)了沒(méi)有執(zhí)行,執(zhí)行了沒(méi)有改變方式,改變方式了但是沒(méi)有認(rèn)真考慮,還是錯(cuò)的。
把自己犯的錯(cuò)誤列舉出來(lái),然后找出出現(xiàn)問(wèn)題的真正原因,才是自己最大的進(jìn)步。如果淡化錯(cuò)誤,將來(lái)可能就會(huì)將成績(jī)磨滅掉,所以積累,回頭是工作中需要重視的問(wèn)題。
還有一種論點(diǎn),說(shuō)公司多么多么重視開(kāi)發(fā),不重視測(cè)試,我對(duì)這種論調(diào)積極反感,這只是個(gè)人感覺(jué)。為什么這么說(shuō)呢?
對(duì)公司來(lái)說(shuō),要靠項(xiàng)目和產(chǎn)品維持生存,對(duì)嗎?從這個(gè)方面來(lái)說(shuō)開(kāi)發(fā)重要,產(chǎn)品質(zhì)量不重要嗎?這個(gè)問(wèn)題很多人問(wèn)我,我回答說(shuō),重要,非常重要,那為什么測(cè)試的價(jià)值體現(xiàn)不出來(lái)呢?主要是兩個(gè)方面的原因,一個(gè)是公司引導(dǎo)不正確,各個(gè)部分的同事為這個(gè)項(xiàng)目負(fù)責(zé),而不是開(kāi)發(fā)為這個(gè)項(xiàng)目負(fù)責(zé),其二呢,主要是因?yàn)槲覀兪蔷S護(hù),而不是創(chuàng)造,如果你告訴老板,這個(gè)產(chǎn)品我們改變測(cè)試策略,能夠提高工作效率,這個(gè)產(chǎn)品可以提前2個(gè)月發(fā)布,而且我保證質(zhì)量。我相信你的價(jià)值也即體現(xiàn)出來(lái)了,如果不可以,說(shuō)明還是沒(méi)有找到合適的方法。
了解同類(lèi)產(chǎn)品
讓市場(chǎng)人員反饋同類(lèi)產(chǎn)品的問(wèn)題以及市場(chǎng)對(duì)我們產(chǎn)品的需求。測(cè)試過(guò)程是反映當(dāng)前產(chǎn)品的質(zhì)量,為什么要研究競(jìng)爭(zhēng)對(duì)手的產(chǎn)品呢?
首先,測(cè)試中包含易用性測(cè)試,測(cè)試什么內(nèi)容呢?就是測(cè)試怎么好用,客戶(hù)是怎么用的,我們?cè)趺丛O(shè)計(jì)更貼近用戶(hù),那么不研究競(jìng)爭(zhēng)對(duì)手,我們?cè)趺纯赡苷碱I(lǐng)上風(fēng)。
其次,了解競(jìng)爭(zhēng)對(duì)手的產(chǎn)品,有利于測(cè)試工作捕捉重點(diǎn),使得工作開(kāi)展有利有節(jié)。
可謂知己知彼,百戰(zhàn)不殆,所以在現(xiàn)在的市場(chǎng)競(jìng)爭(zhēng)中,了解同類(lèi)產(chǎn)品才可能發(fā)現(xiàn)對(duì)方的缺點(diǎn),給以打擊,發(fā)現(xiàn)對(duì)方的優(yōu)點(diǎn),快速學(xué)習(xí),閉門(mén)造車(chē)必定失敗。
提高自身素質(zhì)
從程序的概念理解產(chǎn)品,這樣測(cè)試案例可以設(shè)計(jì)的比較有針對(duì)性。
常言說(shuō)得好,“識(shí)重于才”,而見(jiàn)識(shí)卻往往是生活閱歷造就的。對(duì)于一個(gè)初出茅廬的人,智者的指點(diǎn)是至關(guān)重要有時(shí)甚至是決定性的。回想我十年來(lái)的經(jīng)歷,很多失敗其實(shí)是沒(méi)有人指點(diǎn)而造成的。要尋找一個(gè)精神上的導(dǎo)師,他可以是你的父母,也可以是其他師長(zhǎng)。他閱歷豐富而又不拘泥于自己的老經(jīng)驗(yàn);他能在緊要關(guān)頭給予你原則上的指導(dǎo)和精神上的支持。有時(shí)候僅僅是他失敗的經(jīng)驗(yàn)就會(huì)使你受益匪淺。
如何提高程序能力
耳濡目染
讓開(kāi)發(fā)或者設(shè)計(jì)人員在討論開(kāi)發(fā)方案的時(shí)候參與旁聽(tīng),耳濡目染。其實(shí)這只是一種輔助的手段。
電視劇《霍元甲》播出以后,得到大家的欣賞。原因是因?yàn)樗救松眢w虛弱,所以父親從小不讓練武功,而生長(zhǎng)在那樣的環(huán)境中,他天天可以看到兄弟們?cè)诰毠?#xff0c;招式已經(jīng)記憶在心理,但是苦在沒(méi)有練功的機(jī)會(huì),他利用體力勞動(dòng)的過(guò)程中,改變勞動(dòng)方式,趁機(jī)練功,后來(lái)發(fā)展到獨(dú)創(chuàng)“迷綜拳”。
程序設(shè)計(jì)和開(kāi)發(fā)是一個(gè)硬功夫,也是一個(gè)長(zhǎng)遠(yuǎn)的事情,它是一個(gè)積累的過(guò)程,不能一蹴而就,需要苦心練,多些理解,多些思考。
面對(duì)程序開(kāi)發(fā),不要有太多的壓力,因?yàn)槌绦蜷_(kāi)發(fā)就跟你學(xué)說(shuō)話(huà)一樣,因?yàn)檎Z(yǔ)言本身有很多通性,高級(jí)語(yǔ)言和低級(jí)語(yǔ)言本質(zhì)上差別不大,所以扎實(shí)的從基礎(chǔ)的東西學(xué)起,這樣才能完全的積累下來(lái)。
計(jì)算機(jī)發(fā)展速度很快,各種概念,各種語(yǔ)言發(fā)展都很快,掌握實(shí)質(zhì),不斷學(xué)習(xí),才能把握。所以還是需要多看,多想,多練。
自己練內(nèi)功
從自身做起,了解程序架構(gòu)和開(kāi)發(fā)模式,努力提高理解和產(chǎn)品的單元測(cè)試或者組件測(cè)試能力,這樣以來(lái)可以了解程序的很多算法,使得在產(chǎn)品的開(kāi)發(fā)過(guò)程中就能把問(wèn)題發(fā)現(xiàn)并且能夠得到及時(shí)的解決。
其次能夠提高大家參與到項(xiàng)目的榮譽(yù)感,因?yàn)樵跍y(cè)試本身是一個(gè)服務(wù)性的行業(yè),那么服務(wù)行業(yè)的特點(diǎn)是不停的改變思路,改變服務(wù)模式,提高服務(wù)質(zhì)量,當(dāng)服務(wù)做好了,那么在整個(gè)研發(fā)中就可以找到自己也是其中一個(gè)分子的感覺(jué)。
其三,練好內(nèi)功,為自己將來(lái)提高工作效率,進(jìn)行一些自動(dòng)測(cè)試以及從程序架構(gòu)的概念上設(shè)計(jì)測(cè)試案例提供了技術(shù)保障。
以上是自己練好內(nèi)功的用途。
在過(guò)去社會(huì)中,有很多擂臺(tái)賽,目的是切磋技藝,弘揚(yáng)中華武術(shù),各個(gè)門(mén)派直接交流和學(xué)習(xí)的過(guò)程,為了在擂臺(tái)賽中取的很好的成績(jī),我們需要努力練功,其次是多學(xué)本門(mén)派和其他門(mén)派的武功,或者自創(chuàng)武功,在擂臺(tái)上能夠發(fā)揮的淋漓盡致,因?yàn)槲涔Φ淖罡呔辰缇褪菦](méi)有招式,要達(dá)到這個(gè)境界,需要內(nèi)功深厚,避免走火入魔,需要毅力,需要?jiǎng)?chuàng)新。
理論就是理論,無(wú)論在那里看到的理論都是一定的基礎(chǔ)的,因?yàn)樗械睦碚摶A(chǔ)需要一個(gè)證明此理論的平臺(tái)或者條件,所有一定要看,想,用。看別人是怎么用的,在什么情況下用的,用的目的是解決什么問(wèn)題,在什么樣的環(huán)境下能夠做出來(lái),需要什么樣的支撐;想自己現(xiàn)在目前是否有這個(gè)環(huán)境,就目前的環(huán)境能夠做什么,如果要搭建對(duì)方的環(huán)境需要多長(zhǎng)時(shí)間,這個(gè)做法中存在什么不托的地方,有什么需要改進(jìn)的地方;在自己工作的環(huán)節(jié)中找找看,看自己是否適合用這個(gè)東西,如果適合,怎么用,用到什么程度,如果非常認(rèn)可別人的做法,需要衡量需要多少資源和時(shí)間,努力找自己的結(jié)合點(diǎn)。
千萬(wàn)不要再我們看到一個(gè)理論或者方法的時(shí)候就去推動(dòng)它,或者原理實(shí)踐過(guò)一個(gè)什么思想就想在新的環(huán)境下實(shí)踐他,都是不可取的。好的事情或者好的做事方式他需要一些條件支撐,一旦硬套,就可能出現(xiàn)問(wèn)題。
實(shí)踐中檢驗(yàn)
嘗試做一些灰盒測(cè)試部分(目前暫時(shí)是想法,但是還不完善)。灰盒測(cè)試是界與白盒測(cè)試和黑盒測(cè)試之間的一種臨街狀態(tài)。
測(cè)試發(fā)展
測(cè)試在國(guó)內(nèi)還是處于摸索階段,在過(guò)去的發(fā)展階段,大家只是初步針對(duì)不同的軟件產(chǎn)生了不同的測(cè)試方式,但在操作方法,操作流程等方面還需要繼續(xù)摸索。對(duì)潛入式軟件來(lái)說(shuō),行業(yè)內(nèi)始終認(rèn)為潛入式軟件是最難進(jìn)行測(cè)試的,因?yàn)樗枰軓V的知識(shí)面,需要對(duì)各個(gè)點(diǎn)的設(shè)計(jì)原理進(jìn)行分析和測(cè)試。
在目前國(guó)內(nèi)開(kāi)發(fā)眼中的測(cè)試還沒(méi)有形成概念,我們需要不斷的改變形象,加深他們對(duì)測(cè)試的印象,以便我們獲取更多的幫助和協(xié)助。
測(cè)試未來(lái)發(fā)展需要兩條腿走路,這樣能夠在各個(gè)環(huán)節(jié)保證產(chǎn)品的質(zhì)量。
第一步,系統(tǒng)測(cè)試?yán)^續(xù)練內(nèi)功,將案例設(shè)計(jì)的能力提高
第二步,需要進(jìn)行灰盒測(cè)試,對(duì)產(chǎn)品進(jìn)行代碼級(jí)的測(cè)試
第三步,需要進(jìn)行部分白盒測(cè)試或者由開(kāi)發(fā)人員進(jìn)行執(zhí)行
要達(dá)到一定的認(rèn)同和發(fā)展,測(cè)試人員需要努力學(xué)習(xí),打下扎實(shí)基
礎(chǔ),這樣才能一步步的成功.
如何提高測(cè)試
提高測(cè)試需要從幾個(gè)方面著手,其實(shí)只是自己的一些感覺(jué),不一定就需要按部就班,需要找自己適合的點(diǎn)。
制定完備的測(cè)試計(jì)劃
清楚的認(rèn)識(shí)測(cè)試計(jì)劃,測(cè)試計(jì)劃是一個(gè)文檔,能夠保證整個(gè)研發(fā)過(guò)程中順利執(zhí)行的一個(gè)指導(dǎo)性文檔,它描述了幾個(gè)方面的問(wèn)題。
第1、 描述了項(xiàng)目的目的
第2、 描述了項(xiàng)目的開(kāi)發(fā)周期
第3、 描述了在測(cè)試中遇到的技術(shù)
第4、 描述了測(cè)試案例的設(shè)計(jì)周期
第5、 描述測(cè)試案例的執(zhí)行周期
第6、 描述了測(cè)試過(guò)程中用到的工具或者技術(shù)
第7、 描述了測(cè)試過(guò)程中用到的資源情況
第8、 描述了測(cè)試過(guò)程中可能遇到的風(fēng)險(xiǎn)以及規(guī)避方法
提高案例設(shè)計(jì)水平
明確了解現(xiàn)在目前流行切實(shí)用的幾種案例設(shè)計(jì)的方法,因?yàn)樵诓煌漠a(chǎn)品不同的要求有不同的設(shè)計(jì)手段,我們需要不斷的學(xué)習(xí)和總結(jié),在為了測(cè)試領(lǐng)域中,許多新鮮的詞語(yǔ)都會(huì)出現(xiàn)。
這種方法類(lèi)似與工業(yè)領(lǐng)域的隨即抽取統(tǒng)計(jì)分析法,但是工業(yè)性質(zhì)牽扯到損壞或者人為原因,統(tǒng)計(jì)出來(lái)存在這偏差,但是應(yīng)用與軟件方面,雖然存在著偏差,但是不可能象硬件那么偏差很高。
等效法
明確測(cè)試的目標(biāo),一般適合用到的范圍是,制定被測(cè)試的對(duì)象是在滿(mǎn)足某個(gè)條件的區(qū)間內(nèi)的所有的所有數(shù)據(jù)。
案例設(shè)計(jì)方法:從其中區(qū)間數(shù)據(jù)段中選擇任意一個(gè)或者兩個(gè)數(shù)據(jù),只要這個(gè)數(shù)據(jù)滿(mǎn)足了,那么其他的數(shù)據(jù)就是滿(mǎn)足的。
我現(xiàn)在舉一些例子,來(lái)說(shuō)明等效法在測(cè)試過(guò)程中如何應(yīng)用的。
范例1:在登陸某系統(tǒng)需要驗(yàn)證用戶(hù)名,要求是長(zhǎng)度是最小是6位,最長(zhǎng)是14位,名字中可以包含數(shù)字,但是不能以數(shù)字開(kāi)頭,可以包含各種符號(hào),不能包含中文。
1、隨意字母組合成一個(gè)12位的姓名,測(cè)試是否可以通過(guò)驗(yàn)證。
2.、隨意生成一個(gè)長(zhǎng)度12位的姓名,測(cè)試是否可以通過(guò)驗(yàn)證
3、測(cè)試以任意一個(gè)數(shù)字打頭12位的姓名,測(cè)試是否可以通過(guò)驗(yàn)證
4、測(cè)試姓名長(zhǎng)度位12位且包含中文情況,測(cè)試是否可以通過(guò)驗(yàn)證
5、測(cè)試長(zhǎng)度不滿(mǎn)足條件情況下,是否通過(guò)驗(yàn)證
6、如果長(zhǎng)度不滿(mǎn)足,是以數(shù)字開(kāi)頭的,提示信息驗(yàn)證
7、如果長(zhǎng)度不滿(mǎn)足,姓名中包含中文的,提示信息驗(yàn)證
………….
(注:)這個(gè)可能比較簡(jiǎn)單,但是說(shuō)明一個(gè)問(wèn)題:為什么隨意生成一個(gè)12位姓名的,其實(shí)你選擇8位姓名長(zhǎng)度或者10位姓名長(zhǎng)度是一樣的,所以這種情況下考慮采用等效方法比較合適。
范例2:有這么一個(gè)需求,要求選擇1~12之間進(jìn)行調(diào)整,手機(jī)的背光就會(huì)隨著數(shù)值的變化而變化。總體的是數(shù)值越大越暗。
以上需求是大家經(jīng)常可以看到的。
測(cè)試案例設(shè)計(jì):清晰記憶1的情況,然后隨意調(diào)整一個(gè)數(shù)值,因?yàn)橐笫亲兓?#xff0c;至于變化成什么樣子,變暗到什么程度才正確,沒(méi)有明確的指標(biāo)數(shù)值,所以只需要記住臨街點(diǎn)1的情況,然后隨意調(diào)整一個(gè)數(shù)據(jù),然后和當(dāng)前調(diào)整后的數(shù)據(jù)進(jìn)行比較。
(注:)沒(méi)有明確的說(shuō)明,只是含糊的結(jié)果,但是總體的結(jié)果是在變化,那么這個(gè)時(shí)候比較適合使用等效法。
因果分析法
需要有一定的程序基礎(chǔ),了解程序的架構(gòu),就是當(dāng)問(wèn)題發(fā)生以后,能夠有效的補(bǔ)充相關(guān)的案例或者篩選相關(guān)的案例。因果分析的核心是從自己的理解去分析問(wèn)題所在的真正原因。
范例1:刪除磁盤(pán)上某個(gè)文件失敗,分析原因:如果是管理員權(quán)限,那么可以隨意刪除,無(wú)論這個(gè)文件的屬性是只讀的還是存檔的,那么如果不能刪除磁盤(pán)文件,除非是壞道上的文件。分析完成以后,使得測(cè)試案例設(shè)計(jì)有針對(duì)性,而不是盲目的將所有的文件格式都去嘗試一次。
范例2:假設(shè)我們用Excel作一個(gè)計(jì)算,結(jié)果和我們用計(jì)算器計(jì)算的結(jié)果不同。
分析:Excel的計(jì)算函數(shù)單獨(dú)運(yùn)算沒(méi)有錯(cuò)誤,然后插入一行,結(jié)果錯(cuò)誤了,說(shuō)明插入行導(dǎo)致計(jì)算錯(cuò)誤,那么插入一行怎么會(huì)引起函數(shù)計(jì)算錯(cuò)誤呢?原因是由于插入行后,導(dǎo)致傳給計(jì)算函數(shù)的區(qū)域沒(méi)有更新,所以造成計(jì)算結(jié)果錯(cuò)誤,那么這個(gè)Bug就很明確了。
范例3:假設(shè)我們平常在做講座的時(shí)候發(fā)現(xiàn)在某臺(tái)機(jī)器上就會(huì)死機(jī)。這是一種現(xiàn)象。
分析:為什么在這臺(tái)機(jī)器上死,在其他機(jī)器上不死。原因有兩個(gè),第一個(gè)先找系統(tǒng)原因,是否是我們的產(chǎn)品在當(dāng)前這個(gè)系統(tǒng)下有Bug,經(jīng)過(guò)驗(yàn)證沒(méi)有,那問(wèn)題出在那里?
其實(shí)演示產(chǎn)品需要的是硬件的支持,那就是顯卡,如果顯卡內(nèi)存不夠大,可能導(dǎo)致某些演示文件死。
(注)因果分析需要有廣泛的知識(shí)面,使得我們?cè)诜治龅臅r(shí)候能夠拓寬面積,模糊的定位問(wèn)題。
范例4:用戶(hù)給我發(fā)送一個(gè)文件,打印的時(shí)候發(fā)現(xiàn)是亂碼。后來(lái)逼迫無(wú)奈,就讓用戶(hù)將這個(gè)文件傳真給我。這是現(xiàn)象。
分析:為什么打印出現(xiàn)亂碼?問(wèn)題基本定位,系統(tǒng)字庫(kù)不夠,系統(tǒng)下打印驅(qū)動(dòng)問(wèn)題,打印虛擬內(nèi)存問(wèn)題,操作系統(tǒng)問(wèn)題,軟件本身問(wèn)題?最后問(wèn)題經(jīng)過(guò)驗(yàn)證,最終歸結(jié)為在此操作系統(tǒng)下,打印驅(qū)動(dòng)程序有問(wèn)題,使得文件不能正常打印。
(注:問(wèn)題需要先框定范圍,不要亂了套路。)
邏輯分析法
在邏輯分析方面,也需要有一定的程序理解能力。從程序邏輯和日常常識(shí)去判斷問(wèn)題。邏輯分析法其實(shí)就一堆假設(shè)的羅列,推論出系列結(jié)果的假設(shè),然后將假設(shè)反推翻,問(wèn)題就可以暴露出來(lái)。無(wú)論那種方法都是通過(guò)表現(xiàn)去分析問(wèn)題的實(shí)質(zhì)的。
范例1:我們?cè)谧鯩P3播放器快進(jìn)和快退測(cè)試中,要考慮的同步問(wèn)題,就是我們液晶顯示屏上出現(xiàn)的歌詞進(jìn)度,時(shí)間進(jìn)度和我們耳朵聽(tīng)到的進(jìn)度不同。我們分析一下,為什么出現(xiàn)不同步現(xiàn)象,為什么其他的能同步,就某一個(gè)或者某幾個(gè)不能同步。
首先我們了解同步的算法:快進(jìn)和快退是按照當(dāng)前歌曲的數(shù)據(jù)流來(lái)計(jì)算應(yīng)該到那里,它是以當(dāng)前歌曲的數(shù)據(jù)流為系數(shù),然后進(jìn)行的一些調(diào)整,那么出現(xiàn)不同步的原因是由于系數(shù)不同造成的,所以考慮到同步問(wèn)題,我們需要找不同格式不同數(shù)據(jù)流的歌曲,這樣問(wèn)題容易暴露,容易清楚的定位問(wèn)題的真正原因。
范例2
我們來(lái)分析網(wǎng)絡(luò)游戲中的交易系統(tǒng),就是在游戲兩個(gè)人進(jìn)行物品和金錢(qián)的交易。
怎么設(shè)計(jì)這里的案例呢?
邊界數(shù)值分析法
在測(cè)試案例執(zhí)行的過(guò)程中,所有調(diào)節(jié)的數(shù)據(jù)都需要考慮到邊界數(shù)值的測(cè)試方法,這里我就不在贅述。但是需要注意,邊界數(shù)值的測(cè)試不是枚舉,只是抽樣的方法。
逃避測(cè)試的誤區(qū),市場(chǎng)需求引導(dǎo)產(chǎn)品質(zhì)量
測(cè)試是為了驗(yàn)證需求,保證產(chǎn)品質(zhì)量,無(wú)論如何你都不可能做成100%的測(cè)試,不可能做成No Errors。所以我們針對(duì)不同的產(chǎn)品,不同的市場(chǎng)定位,確定不同的測(cè)試方針。
因?yàn)槠髽I(yè)面對(duì)的是客戶(hù),面對(duì)是企業(yè)長(zhǎng)遠(yuǎn)利益,那么我們不可能倉(cāng)促的推出產(chǎn)品為了迎合市場(chǎng),而是需要研究,調(diào)查市場(chǎng)的真正需求,把用戶(hù)所關(guān)心的功能提供給用戶(hù),使得其更加完善,更加穩(wěn)定。
我們從企業(yè)來(lái)分析,首先任何一家企業(yè)要生存,必須需要市場(chǎng)空間的支撐,目的是為了盈利,我覺(jué)得沒(méi)有必要說(shuō)的那么冠冕堂皇,這是事實(shí),但是在把握產(chǎn)品質(zhì)量和市場(chǎng)需求的時(shí)候,我相信很多企業(yè)會(huì)選擇市場(chǎng)需求的,因?yàn)檫@是機(jī)會(huì),是把握企業(yè)生存的機(jī)會(huì),特別是對(duì)于發(fā)展性企業(yè)來(lái)說(shuō)。(企業(yè)原因)
我們從開(kāi)發(fā)來(lái)分析,因?yàn)樵陂_(kāi)發(fā)的過(guò)程中,由于軟件行業(yè)的高流動(dòng)行和知識(shí)更新快的特點(diǎn),風(fēng)險(xiǎn)加大,使得開(kāi)發(fā)周期很難把握,這樣使得產(chǎn)品測(cè)試時(shí)間很難控制。因?yàn)殚_(kāi)發(fā)的進(jìn)度包括市場(chǎng)提出需求的技術(shù)風(fēng)險(xiǎn)都很難把握。(開(kāi)發(fā)的原因)
我們從測(cè)試來(lái)分析,測(cè)試在很多企業(yè)中是沒(méi)有的,那么開(kāi)發(fā)人員自己來(lái)做,如果有測(cè)試人員,那測(cè)試也是隨意性非常強(qiáng),造成產(chǎn)品上市后預(yù)留很多無(wú)法預(yù)估的風(fēng)險(xiǎn),為企業(yè)的形象蒙上了面紗(測(cè)試模式)
合理利用2/8原則
測(cè)試是列舉,不是枚舉,所以設(shè)計(jì)案例的時(shí)候全面是不可能的,那么需要靈活的運(yùn)用2/8原則,使得測(cè)試重點(diǎn)清楚,容易控制。
基于產(chǎn)品在開(kāi)發(fā)過(guò)程中的種種風(fēng)險(xiǎn),我們?cè)谟邢薜娜肆唾Y源的情況下,合理的利用2/8原則,如何把握2/8原則?首先需要了解產(chǎn)品的特點(diǎn),讓所有參與測(cè)試的人員能夠了解產(chǎn)品的特點(diǎn),這樣使得工作具有針對(duì)性,至于產(chǎn)品的噱頭,我們可以進(jìn)行充足的測(cè)試,因?yàn)橹皇俏覀兊漠a(chǎn)品立足市場(chǎng)的點(diǎn)。
在時(shí)間有限的情況下,把常用的功能測(cè)試保證了,不要攤?cè)?#xff0c;攤寬,這樣到最后都無(wú)法總計(jì)產(chǎn)品的質(zhì)量概念了。
以上這么說(shuō),是一種概況,在實(shí)際的工作中大家需要總結(jié),把進(jìn)度,時(shí)間,質(zhì)量等進(jìn)行權(quán)衡,以保證產(chǎn)品的順利發(fā)布。
回歸測(cè)試的概念
測(cè)試次數(shù)不是輪回,測(cè)試的不同次數(shù)不是輪回,而是為了驗(yàn)證問(wèn)題,那么什么時(shí)候適合安排一輪測(cè)試,需要定義標(biāo)準(zhǔn),否則耗時(shí)耗力。
回歸測(cè)試是不可缺少的環(huán)節(jié),在一個(gè)產(chǎn)品測(cè)試完成后,直接到用戶(hù)手頭的時(shí)候,需要千萬(wàn)小心,需要進(jìn)行一次徹底的回歸測(cè)試,這個(gè)時(shí)候包括所有的功能以及所有已經(jīng)修正的問(wèn)題。避免版本出現(xiàn)問(wèn)題。
其實(shí)在不同的資料中對(duì)回歸測(cè)試有不同的解釋,我就不在這里贅述。我想表明我的觀點(diǎn)是,依照不同的開(kāi)發(fā)模式,回歸測(cè)試所在的時(shí)間段也不相同;當(dāng)前的開(kāi)發(fā)模式有瀑布型和迭代型,例如,在瀑布型的開(kāi)發(fā)模式中,所有的測(cè)試活動(dòng)(手工測(cè)試,系統(tǒng)測(cè)試,部分集成測(cè)試)都在最后進(jìn)行的,而切所理解的回顧測(cè)試是為了保證在新的版本中測(cè)試修改后的問(wèn)題,其實(shí)這個(gè)測(cè)試只是保證了其中一部分工作
測(cè)試的概念
測(cè)試不是為了驗(yàn)證問(wèn)題,而是為了發(fā)現(xiàn)以前設(shè)計(jì)中沒(méi)有發(fā)現(xiàn)的問(wèn)題。
自動(dòng)測(cè)試只是測(cè)試的一種手段,目的是為了提高工作效率
測(cè)試工具只是利用,不能依靠,因?yàn)楣ぞ弑旧頉](méi)有智能的判斷是否會(huì)有問(wèn)題發(fā)生,自動(dòng)測(cè)試不是利于測(cè)試工具,而是需要編寫(xiě)或者利于測(cè)試平臺(tái),編寫(xiě)適合自己的測(cè)試工作進(jìn)展。
如何調(diào)整團(tuán)隊(duì)的作戰(zhàn)能力
建議性質(zhì):因?yàn)樵?jīng)帶過(guò)四個(gè)團(tuán)隊(duì),而且這個(gè)經(jīng)驗(yàn)最少在我身上是成功的。
形式分析
測(cè)試團(tuán)隊(duì),測(cè)試團(tuán)隊(duì)在現(xiàn)在國(guó)內(nèi)來(lái)說(shuō)在慢慢的得到重視,之所以原來(lái)不重視是因?yàn)檎麄€(gè)行業(yè)處于摸索期,不知道采用什么方法,什么技術(shù),作什么事情等的情況下,使得測(cè)試員好像是一些沒(méi)有能力人的集合(宣講,不聽(tīng)的宣講)。
目標(biāo)計(jì)劃引導(dǎo)
測(cè)試技術(shù)和未來(lái)發(fā)展規(guī)劃,因?yàn)槿魏稳说陌l(fā)展需要目標(biāo),那么一個(gè)人的發(fā)展目標(biāo)假如它和這個(gè)行業(yè)相關(guān),那么它會(huì)付出一切,努力的工作,所以需要大家認(rèn)可一個(gè)目標(biāo),并且讓大家認(rèn)為是可行的,然后我們分步驟一步步的去實(shí)現(xiàn)它。讓他或者大家能夠看到自己所喜歡或者從事行業(yè)的發(fā)展方向。
過(guò)過(guò)老師癮
因?yàn)樵谧鋈魏问虑榈臅r(shí)候,每個(gè)人都有自己的想法或者步驟,講出來(lái)就好,這就需要開(kāi)始的時(shí)候我們以任務(wù)的形式下達(dá),我相信,到后來(lái)大家愿意自己站出來(lái)講了,我告訴你原因。因?yàn)槿吮旧碛行咔痈?#xff0c;怕幾個(gè)方面,怕講錯(cuò),怕人多,怕提問(wèn)。
那么如果把這幾個(gè)問(wèn)題都解決了,是否羞怯感就沒(méi)有了呢?
如何解決個(gè)人怕的問(wèn)題:引導(dǎo),因?yàn)橐粋€(gè)人如果不能把自己的想法和思路講出來(lái),那么不可能把事情做的很好,其二,就是如果你把你的想法說(shuō)出來(lái),別人可能會(huì)指出你思路中走彎路的地方,對(duì)個(gè)人來(lái)說(shuō)可以跳高工作效率,使得思路更加完善。
其三,如果大家都把自己的思路說(shuō)出來(lái)了,你不就節(jié)省的很多學(xué)習(xí)時(shí)間嗎,另外你想過(guò)沒(méi)有,當(dāng)別人形成這個(gè)想法的時(shí)候,需要一定的積累,那是他的心血,這不就輕輕松松讓你學(xué)到了嗎?如果固步自封,那么你的思路有可能是錯(cuò)的,有可能是對(duì)的,但是你的知識(shí)面就只能局限在你所考慮的范圍內(nèi),對(duì)個(gè)人發(fā)展不利。
定學(xué)習(xí)目標(biāo)
在軟件行業(yè)里面,要有發(fā)展,就需要不停的學(xué)習(xí),不停的進(jìn)步,不停的總結(jié),才可能有長(zhǎng)遠(yuǎn)發(fā)展,所以需要定義在這個(gè)行業(yè)階段行的學(xué)習(xí)目標(biāo),讓人感覺(jué)這個(gè)行業(yè)現(xiàn)有的水平只是維持,要發(fā)展,需要學(xué)習(xí)。
在工作中學(xué)習(xí)的方法,除了自學(xué)以外,就是“偷”了,所謂偷,就是要學(xué)會(huì)問(wèn)問(wèn)題,把你想知道的東西刨根問(wèn)底,當(dāng)別人回答你問(wèn)題的時(shí)候,他一定是用他知道的東西的精華來(lái)總結(jié),那么這樣你在很短的時(shí)間內(nèi),把他總結(jié)的精華全給你了。
在學(xué)習(xí)的過(guò)程中,需要學(xué)會(huì)總結(jié),把能總結(jié)的都整理出來(lái),第一是經(jīng)驗(yàn)的積累,第二呢能夠做到分門(mén)別類(lèi),逐類(lèi)旁通,使得相同或者類(lèi)似的錯(cuò)誤不要重范。
興趣和愛(ài)好
一個(gè)人工作有兩種情況,第一中是真正的工作,完成就算完成了,自己也在不斷的學(xué)習(xí),不斷的總結(jié),但是缺乏激情。第二中是把工作當(dāng)成自己的事業(yè),渴望自己在這個(gè)方面成為權(quán)威或者說(shuō)業(yè)界能夠說(shuō)話(huà)的人,也是在不斷學(xué)習(xí),不斷的總結(jié),培養(yǎng)職業(yè)性,培養(yǎng)和引導(dǎo)大家的興趣和愛(ài)好,因?yàn)橹挥心懔私饬伺d趣和愛(ài)好,才能更融洽的調(diào)和整個(gè)工作組的氣氛,這對(duì)測(cè)試行業(yè)的領(lǐng)導(dǎo)者來(lái)說(shuō)是個(gè)挑戰(zhàn)。
歪曲理論推理
“測(cè)試人員是由于技術(shù)不過(guò)硬,才去做測(cè)試的。”針對(duì)這個(gè)觀點(diǎn),我說(shuō)說(shuō)自己的看法。好,我給測(cè)試說(shuō)幾句,測(cè)試水平不過(guò)硬成立,假設(shè)成立,那么這是相對(duì)的,相對(duì)開(kāi)發(fā)來(lái)說(shuō)的,而且這種論調(diào)都是從開(kāi)發(fā)那里擴(kuò)散或傳播出來(lái)的,測(cè)試在后期發(fā)現(xiàn)問(wèn)題后,開(kāi)發(fā)也許心理很痛苦,但是他不愿意暴露在臉上,使得有些問(wèn)題越發(fā)變的嚴(yán)重,不得不修改。那么在產(chǎn)品后期暴露那么多問(wèn)題,說(shuō)明了什么呢?這么低水平的測(cè)試都能考慮到你程序設(shè)計(jì)的種種漏洞,那么說(shuō)明了程序水平開(kāi)發(fā)有待提高。
在IT現(xiàn)在的行業(yè)中,開(kāi)發(fā)的流程,模式,以及各種約定成俗
的東西越來(lái)越多,而且相對(duì)穩(wěn)定,而測(cè)試是一個(gè)全新的行業(yè),它需要大家摸索支持,需要大家共同建立起來(lái)。
其實(shí),在原來(lái)的開(kāi)發(fā)模式中,商家為了適應(yīng)市場(chǎng),為了保證利潤(rùn)的最大化,為了使得產(chǎn)品能夠順利的適應(yīng)市場(chǎng),那么采用各種方法,使得產(chǎn)品質(zhì)量的定位淡薄,而現(xiàn)在隨著人們的要求越來(lái)越高,商家的意識(shí)越來(lái)越強(qiáng),各個(gè)公司或者組織渴望成立測(cè)試部門(mén),保證產(chǎn)品的質(zhì)量,使得測(cè)試這個(gè)行業(yè)在最近幾年才發(fā)展起來(lái)。
正確理解自動(dòng)測(cè)試
首先,自動(dòng)化測(cè)試是測(cè)試行業(yè)是技術(shù),但是不是說(shuō)用了自動(dòng)化測(cè)試了就能發(fā)現(xiàn)更多的問(wèn)題,它只是提高了工作效率而已.
自動(dòng)化的概念是人們?cè)诠I(yè)生產(chǎn)的過(guò)程中,為了提高工作效率,不斷的對(duì)操作方法或者技術(shù)或者工具進(jìn)行改進(jìn),減少人們普遍的手工勞動(dòng),節(jié)省時(shí)間和成本。
而軟件行業(yè)的自動(dòng)化測(cè)試同樣也有節(jié)約成本,提高效率的需求。所以所有的改進(jìn)需要考慮到成本的問(wèn)題。
自動(dòng)化測(cè)試的大前提
第1. 產(chǎn)品本身特征具有長(zhǎng)期可維護(hù)性
第2. 產(chǎn)品本身非緊迫的大項(xiàng)目
第3. 產(chǎn)品結(jié)構(gòu)相對(duì)復(fù)雜
第4. 資源投入相對(duì)充裕
那么作為成本,需要從幾個(gè)方面去考慮,第一實(shí)現(xiàn)成本,第二,人力成本,第三,新技術(shù)的風(fēng)險(xiǎn),第四,節(jié)省的成本,第五,被自動(dòng)化的功能是否需要大量的手工勞動(dòng)。
所以我們理解自動(dòng)化一定從成本的概念上考慮, 最少?gòu)淖詣?dòng)化測(cè)試概念的起步應(yīng)該從這個(gè)方面考慮。那么自動(dòng)化測(cè)試的重點(diǎn)就在于他節(jié)省人力,節(jié)省時(shí)間,得到的數(shù)據(jù)更精確些,而且操作的可重復(fù)性和Bug的可重現(xiàn)性更強(qiáng)一些。
下面我就對(duì)自動(dòng)化測(cè)試做一個(gè)詳細(xì)的解釋,跟大家分享。
1. 簡(jiǎn)介
本文關(guān)注于一個(gè)實(shí)施自動(dòng)化測(cè)試框架的組織的主要方面和影響。本文的意圖是提供一些能夠成功的實(shí)施自動(dòng)化測(cè)試的指導(dǎo)方針。
2. 測(cè)試自動(dòng)化的神話(huà)
有很多關(guān)于自動(dòng)化測(cè)試的神話(huà)。其中的一些是真實(shí)的,而其他的一些是不正確的設(shè)想,這些不正確的設(shè)想會(huì)嚴(yán)重的威脅到實(shí)施自動(dòng)化測(cè)試的成功。
2.1. 我們?cè)跁r(shí)間上是緊迫的 - 項(xiàng)目已經(jīng)落后了 - 讓我們使用自動(dòng)化測(cè)試吧!這種情況將不能成為現(xiàn)實(shí)。實(shí)際上,正確的思想應(yīng)該是 - 我們時(shí)間急迫 - 我們決不應(yīng)該使用自動(dòng)化測(cè)試。
如果項(xiàng)目已經(jīng)陷入到了麻煩之中,不建議實(shí)施自動(dòng)化的功能測(cè)試。項(xiàng)目很可能因?yàn)樾枰罅康臏y(cè)試框架的準(zhǔn)備和實(shí)施會(huì)被托跨。我餓建議將重點(diǎn)放在以下的事情上:
優(yōu)化測(cè)試的過(guò)程。調(diào)查并建議在目前工作基礎(chǔ)上的測(cè)試方法和過(guò)程。建議借鑒 RUP的相關(guān)思想和過(guò)程。引進(jìn)或者使單元/組件測(cè)試正式化。這是我們能夠快速獲得受益的很好的方法。如果正式的組件測(cè)試被使用,我建議可以使用 Rational PurifyPlus 進(jìn)行單元或者組件測(cè)試。根據(jù)我的經(jīng)驗(yàn)盡早的使用 Rational PurifyPlus 是非常值得的。在一個(gè)引入和 Rational PurifyPlus 的項(xiàng)目中,通常會(huì)在組件的級(jí)別得到 百分之三十的性能提升。僅僅在項(xiàng)目團(tuán)隊(duì)能夠?qū)?下列問(wèn)題的回答是"Yes"時(shí):項(xiàng)目能夠被適當(dāng)?shù)耐蒲印4嬖谀軌蛲ㄟ^(guò)實(shí)施自動(dòng)化測(cè)試被達(dá)到的精確的目標(biāo)。項(xiàng)目具備建立適當(dāng)?shù)臏y(cè)試框架的必要條件。
那么,你可以在一個(gè)時(shí)間緊迫的項(xiàng)目中適當(dāng)?shù)膶?shí)施測(cè)試自動(dòng)化。但是根據(jù)經(jīng)驗(yàn)這種情況是很難發(fā)生的。總而言之,我只能說(shuō)"對(duì)不起,銀彈根本不存在"。
2.2. 測(cè)試自動(dòng)化就是捕獲和回放
在過(guò)去的日子中,自動(dòng)化的測(cè)試工具只是被看作是一種捕獲和回放的工具。當(dāng)前這個(gè)神話(huà)仍然在很多測(cè)試人員的思想中。而事實(shí)上自動(dòng)化測(cè)試已經(jīng)遠(yuǎn)不止捕獲和回放這么簡(jiǎn)單了。按照成熟度自動(dòng)化的測(cè)試可以被劃分為 5 個(gè)級(jí)別。
2.2.1. 級(jí)別 1:捕獲和回放
這是使用自動(dòng)化測(cè)試的最低的級(jí)別,同時(shí)這并不是自動(dòng)化測(cè)試最有用的使用方式。優(yōu)點(diǎn):自動(dòng)化的測(cè)試腳本能夠被自動(dòng)的生成,而不需要有任何的編程知識(shí)。缺點(diǎn):你會(huì)擁有大量的測(cè)試腳本,同時(shí)當(dāng)需求胡子和應(yīng)用發(fā)生變化時(shí)相應(yīng)的測(cè)試腳本也必須被重新錄制。用法:當(dāng)測(cè)試的系統(tǒng)不會(huì)發(fā)生變化時(shí) - 小規(guī)模的自動(dòng)化。
2.2.2. 級(jí)別 2:捕獲、編輯和回放
在這個(gè)級(jí)別中,你使用自動(dòng)化的測(cè)試工具來(lái)捕獲你想要測(cè)試的功能。將測(cè)試腳本中的任何寫(xiě)死的測(cè)試數(shù)據(jù),比如名字、帳號(hào)等等,從測(cè)試腳本的代碼中完全刪除,并將他們轉(zhuǎn)換成為變量。優(yōu)點(diǎn):測(cè)試腳本開(kāi)始變得更加的完善和靈活,并且可以大大的減少腳本的數(shù)量和維護(hù)的
工作。缺點(diǎn):需要一定的編知識(shí)。頻繁的變化可能會(huì)引起"意大利面條式的代碼",并且變更和維護(hù)幾乎是不可能的。用法:當(dāng)進(jìn)行回歸測(cè)試時(shí),被測(cè)試的應(yīng)用有很小的變化,比如僅僅是針對(duì)計(jì)算的代碼變
化,但是沒(méi)有關(guān)于 GUI 界面的變化。你能夠使用這種技術(shù)通過(guò)快速的編制一些測(cè)試腳本以檢驗(yàn)?zāi)愕南敕▉?lái)探索你的預(yù)定的測(cè)試設(shè)計(jì)。當(dāng)我在沒(méi)有任何象需求或者設(shè)計(jì)模型這樣的文檔的情況下第一次操作一個(gè)產(chǎn)品時(shí)和我需要獲得一系列內(nèi)部構(gòu)建版本的穩(wěn)定性的第一印象時(shí),我使用過(guò)這種技術(shù)。通常如果適當(dāng)?shù)能浖渲霉芾?#xff08;SCM)與良好的內(nèi)建設(shè)計(jì)相結(jié)合時(shí),使用級(jí)別 2 的技術(shù)已經(jīng)足夠了。
2.2.3. 級(jí)別 3:編程和回放
這個(gè)級(jí)別是面對(duì)多個(gè)構(gòu)建版本的有效使用測(cè)試自動(dòng)化的第一個(gè)級(jí)別。你需要在實(shí)際的投資開(kāi)始顯現(xiàn)之前確保團(tuán)隊(duì)和客戶(hù)對(duì)項(xiàng)目的安全感。如果沒(méi)有對(duì)測(cè)試自動(dòng)化工具的適當(dāng)?shù)呐嘤?xùn)測(cè)試人員將不具備到達(dá)這個(gè)級(jí)別的能力。在自動(dòng)化測(cè)試工具中的所有測(cè)試功能都必須被很好的理解,并且要掌握測(cè)試腳本語(yǔ)言的知識(shí)。好處:你確定了測(cè)試腳本的設(shè)計(jì)。適當(dāng)?shù)脑O(shè)計(jì)是必要的。編碼的習(xí)慣必須是適當(dāng)?shù)摹J褂门c開(kāi)發(fā)中相同的編碼習(xí)慣是非常好的。這將開(kāi)始搭建起測(cè)試和開(kāi)發(fā)之間的橋梁。在項(xiàng)目的早期就可以開(kāi)始自動(dòng)化的測(cè)試。你能夠在項(xiàng)目的早期就開(kāi)始進(jìn)行測(cè)試腳本的設(shè)計(jì)。與開(kāi)發(fā)人員交并調(diào)查他們認(rèn)為可能會(huì)存在問(wèn)題的區(qū)域。確保了開(kāi)發(fā)人員關(guān)注在獲得能夠被測(cè)試的方案上。缺點(diǎn): 要求測(cè)試人員具有很好的軟件技能,包括設(shè)計(jì)、開(kāi)發(fā)等。用法:大規(guī)模的測(cè)試套件被開(kāi)發(fā)、執(zhí)行和維護(hù)的專(zhuān)業(yè)自動(dòng)化測(cè)試。級(jí)別 3 使你能夠使用自動(dòng)化測(cè)試并構(gòu)建不同的回歸測(cè)試(重用已有的自動(dòng)化測(cè)試
用例)。根據(jù)我的經(jīng)驗(yàn)在看到更多切實(shí)的回報(bào)之前,為了達(dá)到這個(gè)級(jí)別,有大量的工作和影響項(xiàng)目的活動(dòng)必須被做。因此快速的建立和證明自動(dòng)化測(cè)試的價(jià)值是至關(guān)重要的。找到乏味的測(cè)試(例如,邊緣測(cè)試和特定的功能測(cè)試用例是首先進(jìn)行自動(dòng)化測(cè)試的良好候選者)。首先創(chuàng)建少量的能夠測(cè)試一些基本功能(比如,登陸和創(chuàng)建用戶(hù)等)的測(cè)自動(dòng)化測(cè)試用例。
2.2.4. 級(jí)別 4:數(shù)據(jù)驅(qū)動(dòng)的測(cè)試
對(duì)于自動(dòng)化測(cè)試來(lái)說(shuō)這是一個(gè)專(zhuān)業(yè)的測(cè)試級(jí)別。你現(xiàn)在要利用測(cè)試工具提供的所有的測(cè)試功能。你擁有一個(gè)強(qiáng)大的測(cè)試框架,這個(gè)測(cè)試框架是基于能夠使你根據(jù)被測(cè)試系統(tǒng)的變化快速創(chuàng)建一個(gè)測(cè)試腳本的測(cè)試功能庫(kù)的。維護(hù)的成本相對(duì)是比較低的。你在你的測(cè)試中會(huì)使用到大量真實(shí)的數(shù)據(jù)。優(yōu)點(diǎn):你能夠維護(hù)和使用良好的并且有效的模擬真實(shí)生活中數(shù)據(jù)的測(cè)試數(shù)據(jù)。缺點(diǎn):軟件開(kāi)發(fā)的技能是基礎(chǔ),并且需要訪(fǎng)問(wèn)相關(guān)的測(cè)試數(shù)據(jù)。用法:大規(guī)模的測(cè)試套件被開(kāi)發(fā)、執(zhí)行和維護(hù)的專(zhuān)業(yè)自動(dòng)化測(cè)試。級(jí)別 4 要求一些非常良好的測(cè)試數(shù)據(jù)。一個(gè)測(cè)試人員必須要花費(fèi)一些時(shí)間來(lái)識(shí)別在哪里收集數(shù)據(jù)和收集哪些數(shù)據(jù)。使用現(xiàn)實(shí)生活中的數(shù)據(jù)是最基本的以從測(cè)試中得到完全的回報(bào)。使用適當(dāng)?shù)臄?shù)據(jù)將為你提供通常僅僅在項(xiàng)目的后期才會(huì)發(fā)現(xiàn)的或者是有客戶(hù)發(fā)現(xiàn)的錯(cuò)誤的能力。現(xiàn)在你能夠通過(guò)使用現(xiàn)實(shí)的數(shù)據(jù)開(kāi)運(yùn)行大量的測(cè)試。
2.2.5. 級(jí)別 5:使用動(dòng)作詞的測(cè)試自動(dòng)化
這是自動(dòng)化測(cè)試的最高級(jí)別。主要的思想是將測(cè)試用例從測(cè)試工具中分離出來(lái)。這個(gè)級(jí)別要求有一個(gè)具有高技能測(cè)試人員測(cè)小的團(tuán)隊(duì),這些測(cè)試人員能夠?qū)y(cè)試工具的非常深層次的知識(shí)與他們具備的較深的編程能力結(jié)合起來(lái)。
這個(gè)團(tuán)隊(duì)負(fù)責(zé)在測(cè)試工具中生成并維護(hù)測(cè)試的功能性,能夠使測(cè)試工具從外部的來(lái)源,比如 excel 表或者數(shù)據(jù)庫(kù)中執(zhí)行測(cè)試用例。這種測(cè)試概念最初是由 CMG 開(kāi)發(fā)的。與 CMG 方案相比,其他的可能的開(kāi)放源碼的方案有被 Carl Nagle 和SAS Institute 開(kāi)發(fā)的DDE。
使用 DDE 的概念,關(guān)注點(diǎn)是當(dāng)在Excel表中創(chuàng)建測(cè)試用例的時(shí)候,放置使用包括被使用的特定動(dòng)作詞語(yǔ)的一些類(lèi)型的模板。執(zhí)行的過(guò)程是從 Excel 表中讀取測(cè)試用例,并將測(cè)試用例轉(zhuǎn)換成為測(cè)試工具能夠理解的形式,然后使用不同的測(cè)試功能來(lái)執(zhí)行測(cè)試。
這個(gè)概念變得越來(lái)越流,因?yàn)闇y(cè)試與用例一起使用是非常有用的。優(yōu)點(diǎn):測(cè)試用例的設(shè)計(jì)被從測(cè)試工具中分離了出來(lái) - 關(guān)注在設(shè)計(jì)良好的測(cè)試用例上。允許快速的測(cè)試用例的執(zhí)行和基于用例的更好的估計(jì)。缺點(diǎn):需要一個(gè)具有工具技能和開(kāi)發(fā)技能的測(cè)試團(tuán)隊(duì),以提供并維護(hù)測(cè)試工程(框架)。
用法:專(zhuān)業(yè)的測(cè)試自動(dòng)化將技能的使用最優(yōu)化的結(jié)合起來(lái)如果工具不具備使用內(nèi)建的對(duì)象映射的可能性,那么這個(gè)方案對(duì)于消除與 GUI 相關(guān)的大部分維護(hù)成本是優(yōu)秀的。在一些組織中已經(jīng)創(chuàng)建了這種方案,并且他們其中的一些已經(jīng)實(shí)現(xiàn)了高度的自動(dòng)化(60%),并且他們都得到了巨大的回報(bào)。
如果測(cè)試框架是適當(dāng)?shù)?#xff0c;我們能夠使用 excel 來(lái)生成實(shí)際的測(cè)試用例。這個(gè)級(jí)別對(duì)于那些按照正規(guī)基礎(chǔ)使用用例的組織或者項(xiàng)目來(lái)說(shuō)是非常優(yōu)秀的。有多少測(cè)試用的估計(jì)是被需要的,并且當(dāng)用例適當(dāng)時(shí)需要做的工作也是非常簡(jiǎn)單的。你可以集中時(shí)間來(lái)生成第一個(gè)包含被需要的"對(duì)象映射"的測(cè)試用例(主流程)。依靠被測(cè)試應(yīng)用的復(fù)雜程度,通常這會(huì)花費(fèi)大約半天到一天的時(shí)間。
后續(xù)的被需要的每一個(gè)測(cè)試用例大概會(huì)花費(fèi) 15 到 20 分鐘的時(shí)間,因?yàn)橥ǔ6鄶?shù)的測(cè)試用例可以復(fù)制已有的測(cè)試用例,并對(duì)其進(jìn)行必要的修改,通常這種修改是有限的。動(dòng)作詞語(yǔ)框架能夠通過(guò)使用用例使緊密的并行測(cè)試用例的開(kāi)發(fā)變得可能。
2.3. 我們不需要培訓(xùn)!
我們所有的人都在某一些方面具有一定的經(jīng)驗(yàn),我們沒(méi)有時(shí)間能夠花費(fèi)在使用新工具的培訓(xùn)上。當(dāng)一個(gè)對(duì)自動(dòng)化工具還不是很熟悉的組織或者項(xiàng)目團(tuán)隊(duì)開(kāi)始實(shí)施自動(dòng)化測(cè)試時(shí),培訓(xùn)和指導(dǎo)是至關(guān)重要的。如果我們?cè)试S組織或者項(xiàng)目團(tuán)隊(duì)在沒(méi)有關(guān)于應(yīng)該如何做的任何知識(shí)的情況下實(shí)施自動(dòng)化的測(cè)試,那將肯定會(huì)以失敗告終。
用于實(shí)施自動(dòng)化測(cè)試方案的預(yù)算會(huì)被超出,測(cè)試會(huì)被延誤并且更壞的情況是自動(dòng)化測(cè)試將被放棄。組織和項(xiàng)目團(tuán)隊(duì)需要盡量避免一些認(rèn)識(shí)上的缺陷,尤其是自動(dòng)化測(cè)試的維護(hù)成本和當(dāng)測(cè)試人員嘗試和確認(rèn)工具如何工作時(shí)產(chǎn)生的挫敗感。
你需要確保你的測(cè)試過(guò)程是適當(dāng)?shù)?- 如果測(cè)試過(guò)程是不合理的,引入自動(dòng)化測(cè)試只會(huì)給軟件組織或者項(xiàng)目團(tuán)隊(duì)帶來(lái)更大的混亂。因此,我建議希望實(shí)施自動(dòng)化測(cè)試方案的組織或者項(xiàng)目團(tuán)隊(duì)?wèi)?yīng)該在實(shí)施之前建立"訓(xùn)練營(yíng)",并將重點(diǎn)放在培訓(xùn)測(cè)試團(tuán)隊(duì)能夠很好的利用一個(gè)原型的項(xiàng)目上。
為第一個(gè)原型項(xiàng)目制定一個(gè)實(shí)施計(jì)劃,下面包括原型項(xiàng)目的最小化的描述:當(dāng)先狀態(tài)我們希望實(shí)現(xiàn)什么 - 建立成功的因素期待的回報(bào)(第一次自動(dòng)化測(cè)試工作被期望驗(yàn)證什么)找到一個(gè)"簡(jiǎn)單的"測(cè)試的痛處并盡力的通過(guò)自動(dòng)化測(cè)試解決它,這可以被作為在同一時(shí)間上使測(cè)試運(yùn)行在多個(gè)平臺(tái)上的樣例說(shuō)明被需要的資源和時(shí)間......
一開(kāi)始你就要大聲的說(shuō)出成功的信心 - 讓人們了解你所展示的進(jìn)展。這將吸引更多的關(guān)注和資源。
2.4. 我們必須 100% 的自動(dòng)化
從管理的角度來(lái)說(shuō),100% 的自動(dòng)化目標(biāo)只是一個(gè)從理論上可能達(dá)到的,但是實(shí)際上達(dá)到 100% 的自動(dòng)化的代價(jià)是十分昂貴的。一個(gè) 40-60% 的利用自動(dòng)化的程度已經(jīng)是非常好的了。
達(dá)到這個(gè)級(jí)別以上將增加測(cè)試相關(guān)的維護(hù)成本。由于對(duì)每一個(gè)構(gòu)建版本的需求變化的復(fù)雜度,你將花費(fèi)更多的時(shí)間在變更測(cè)試用例上以使他們能夠正確的運(yùn)行。
在這種情況下,通過(guò)告知管理層100% 的自動(dòng)化目標(biāo)是相當(dāng)昂貴的來(lái)確立一個(gè)合理的期望值才是明智之舉。對(duì)于決定自動(dòng)化一個(gè)測(cè)試用例的一般規(guī)則是這個(gè)測(cè)試用例必須被運(yùn)行 4 次以上。
這個(gè)數(shù)字是基于用戶(hù)對(duì)測(cè)試工具有良好的技能并且有一個(gè)良好的測(cè)試框架的。如果情況不是這樣的化,整個(gè)數(shù)字能夠是 10-20次或者更高。一個(gè)例子,在一個(gè)項(xiàng)目中測(cè)試人員花費(fèi)和兩周的時(shí)間將手工測(cè)試的 23天的任務(wù)轉(zhuǎn)換成了自動(dòng)化測(cè)試的用例。在完成使,項(xiàng)目能夠在 4 個(gè)小時(shí)在多個(gè)平臺(tái)上運(yùn)行相同數(shù)量的測(cè)試用例。
2.5. 測(cè)試框架
測(cè)試框架對(duì)于產(chǎn)生成功的測(cè)試自動(dòng)化的適當(dāng)基礎(chǔ)是重要的。很多考慮必須被解決以使測(cè)試自動(dòng)化更加有效地被使用。重點(diǎn)必須在:維護(hù)成本維護(hù)成本是成功的使用自動(dòng)化測(cè)試的最重要的問(wèn)題之一。維護(hù)成本直接聯(lián)系到前面已經(jīng)提到過(guò)的自動(dòng)化測(cè)試的成熟度。組織或者項(xiàng)目必須至少要在成熟度的 3 級(jí)使用高度的測(cè)試庫(kù)才能使維護(hù)和更新測(cè)試功能變得容易。
測(cè)試數(shù)據(jù)
什么樣類(lèi)型的數(shù)據(jù)將被使用?要為每一個(gè)測(cè)試用例生成測(cè)試數(shù)據(jù)還是使用在被測(cè)試應(yīng)用中已有的數(shù)據(jù)。在很多的情況下一個(gè)測(cè)試數(shù)據(jù)被創(chuàng)建了,刪除他們是不可能的。
可測(cè)試性
自動(dòng)化測(cè)試方案能夠有效的測(cè)試嗎?例如,被適當(dāng)命名的對(duì)象(不僅僅是索引Id)。一個(gè)簡(jiǎn)單的例子是所有的對(duì)話(huà)框都有相同的 #id 和相同的標(biāo)題,所不同的僅僅是顯示的文字信息。當(dāng)測(cè)試應(yīng)該覆蓋多種語(yǔ)言的方案時(shí),對(duì)話(huà)框的測(cè)試就是一個(gè)挑戰(zhàn)。
測(cè)試人員的技能
被包括在自動(dòng)化測(cè)試的創(chuàng)建中的人員應(yīng)該具有什么樣的技能呢?如果他們具有良好的開(kāi)發(fā)背景,那么成熟度 3 級(jí)是足夠了。如果他們有很少的或者根本沒(méi)有開(kāi)發(fā)的經(jīng)驗(yàn),我們被迫使找到或者培訓(xùn)一個(gè)自動(dòng)化測(cè)試專(zhuān)家的小組,并直接到達(dá)成熟度 5級(jí),在成熟度 5 級(jí)測(cè)試的創(chuàng)建與實(shí)際的測(cè)試執(zhí)行被分離開(kāi)。
一個(gè)好的構(gòu)建過(guò)程
自動(dòng)化測(cè)試的引入在"構(gòu)建團(tuán)隊(duì)"上加入了一些約束。為了實(shí)現(xiàn)自動(dòng)化測(cè)試的高利用率(回歸測(cè)試),要求具有一個(gè)高的構(gòu)建頻率。每周僅僅運(yùn)行自動(dòng)化的測(cè)試不是好的自動(dòng)化測(cè)試的使用率。將回歸測(cè)試增加到每天一次將幫助快速的發(fā)現(xiàn)新的問(wèn)題并使開(kāi)發(fā)人員更加容易的發(fā)現(xiàn)問(wèn)題的根源,因?yàn)閷?duì)測(cè)試的反饋時(shí)間是比較短的(開(kāi)發(fā)人員能夠記住他們昨天做了什么)。所有權(quán)不同的測(cè)試庫(kù)的所有權(quán)的定義是重要的。一個(gè)好的方案會(huì)將測(cè)試庫(kù)的組織劃分為三個(gè)級(jí)別:
級(jí)別 1 - 全局的
這個(gè)一個(gè)通常的級(jí)別。被存儲(chǔ)在這個(gè)級(jí)別的測(cè)試功能能夠被所有的項(xiàng)目訪(fǎng)問(wèn)。通用的和通常的功能象登陸、創(chuàng)建一個(gè)用戶(hù)都是這個(gè)級(jí)別很好的候選者。
級(jí)別 2 - 項(xiàng)目
在這個(gè)級(jí)別的測(cè)試功能是與特定的測(cè)試項(xiàng)目相關(guān)的,但是通常在項(xiàng)目中有用的比一定在項(xiàng)目外是有用的。通常級(jí)別 2 是級(jí)別 1 的功能的提供者。
級(jí)別 3 - 腳本
功能被直接關(guān)聯(lián)到特定的測(cè)試腳本。 I在這個(gè)級(jí)別中,通常一個(gè)測(cè)試功能的第一個(gè)版本是被開(kāi)發(fā)的。在新的測(cè)試腳本的創(chuàng)建期間已有測(cè)試功能的重用性被發(fā)現(xiàn),并被移到了級(jí)別 2 中。在這個(gè)級(jí)別上盡量最小化功能的數(shù)量,因?yàn)樗鼘⒃黾泳S護(hù)工作量。還有很多有關(guān)測(cè)試框架的問(wèn)題,但是這里所提及的是一些基本的要被解決的問(wèn)題。
3. 在哪里使用自動(dòng)化測(cè)試
有很多的情況下使用自動(dòng)化的測(cè)試可以降低測(cè)試成本。我將盡量的突出在自動(dòng)化測(cè)試中的不同的測(cè)試技術(shù)技術(shù) 描述 備注單元測(cè)試/組件測(cè)試 這個(gè)測(cè)試工作通常是開(kāi)發(fā)人員的職責(zé),很多不同的方法能夠被使用,比如"測(cè)試先行",它是一個(gè)測(cè)試框架,開(kāi)發(fā)人員在編寫(xiě)代碼前編寫(xiě)不同的單元測(cè)試。當(dāng)測(cè)試通過(guò)時(shí),代碼也被完成了。
?通過(guò)使用正式的單元測(cè)試,不僅能夠幫助開(kāi)發(fā)人員產(chǎn)出更加穩(wěn)定的代碼而且能夠是軟件的整體質(zhì)量更加的好。冒煙測(cè)試 冒煙測(cè)試是一般驗(yàn)證別測(cè)試系統(tǒng)的功能性測(cè)試用例的集合。
冒煙測(cè)試背后的思想是確保基礎(chǔ)是可以工作的,以便"大的"測(cè)試工作能夠開(kāi)始。 在構(gòu)建過(guò)程能夠確保構(gòu)建已經(jīng)為測(cè)試準(zhǔn)備好時(shí),冒煙測(cè)試通常是自動(dòng)化的運(yùn)行。功能/集成測(cè)試 這里測(cè)試的工作關(guān)注在驗(yàn)證在不同的組件之間的集成上。
?這些類(lèi)型的測(cè)試通常是被測(cè)試系統(tǒng)的更加復(fù)雜測(cè)試的基礎(chǔ),大量的邊緣測(cè)試被合并以制造出不同的錯(cuò)誤處理測(cè)試。系統(tǒng)測(cè)試 - 用例測(cè)試 這種測(cè)試是通過(guò)執(zhí)行用戶(hù)場(chǎng)景模擬真實(shí)用戶(hù)使用系統(tǒng)以證明系統(tǒng)具有被期望的功能的測(cè)試。 這里不需要進(jìn)行自動(dòng)化的測(cè)試。
安裝測(cè)試、安全性測(cè)試通常是有手工完成的,因?yàn)橄到y(tǒng)的環(huán)境是恒定不變的。回歸測(cè)試 回歸測(cè)試實(shí)際上是重復(fù)已經(jīng)存在的測(cè)試。通常如果是手工完成的化,這種測(cè)試只在項(xiàng)目的結(jié)尾執(zhí)行執(zhí)行一到兩次。 這里完全有潛力應(yīng)用自動(dòng)化的測(cè)試。你能夠在每次構(gòu)建完成后執(zhí)行自動(dòng)化的回歸測(cè)試,以驗(yàn)證被測(cè)試系統(tǒng)的改變是否影響了系統(tǒng)的其他功能。
性能測(cè)試 性能測(cè)試包括以下不同測(cè)試形式:
- 負(fù)載測(cè)試
- 壓力測(cè)試
- 并發(fā)測(cè)試
-.....
如果沒(méi)有自動(dòng)化的測(cè)試工具,你將不能執(zhí)行通過(guò)模擬用戶(hù)的負(fù)載實(shí)現(xiàn)的高密集度的性能測(cè)試。
4. 什么時(shí)候使用自動(dòng)化測(cè)試
我對(duì)什么時(shí)候應(yīng)該使用自動(dòng)化測(cè)試和什么時(shí)候應(yīng)該使用手工測(cè)試進(jìn)行了一個(gè)概要的總結(jié):使用自動(dòng)化測(cè)試 使用手工測(cè)試項(xiàng)目沒(méi)有嚴(yán)格的時(shí)間壓力具有良好定義的測(cè)試策略和測(cè)試計(jì)劃你直到要測(cè)試什么,
你知道什么時(shí)候測(cè)試對(duì)于自動(dòng)化測(cè)試你擁有一個(gè)能夠被識(shí)別的測(cè)試框架和候選者能夠確保多個(gè)測(cè)試運(yùn)行的構(gòu)建策略多平臺(tái)環(huán)境需要被測(cè)試你擁有運(yùn)行測(cè)試的硬件你擁有關(guān)注在自動(dòng)化過(guò)程上的資源被測(cè)試系統(tǒng)是可自動(dòng)化測(cè)試的 沒(méi)有適當(dāng)?shù)臏y(cè)試過(guò)程沒(méi)有一個(gè)測(cè)試什么,什么時(shí)候測(cè)試的清晰的藍(lán)圖在一個(gè)項(xiàng)目中,你是一個(gè)新人,并且還不是完全的理解方案的功能性和或者設(shè)計(jì)你或者整個(gè)項(xiàng)目在時(shí)間的壓力下在團(tuán)隊(duì)中沒(méi)有資源或者具有自動(dòng)化測(cè)試技能的人沒(méi)有硬件如果你正在從事自動(dòng)化測(cè)試,那么一定要記住要關(guān)注將自動(dòng)化測(cè)試與手工測(cè)試結(jié)合起來(lái)使用。
首先,對(duì)于自動(dòng)化測(cè)試率的目標(biāo)是 10/90 (10% 的自動(dòng)化測(cè)試和 90%的手工測(cè)試)。當(dāng)這些目標(biāo)都實(shí)現(xiàn)了,可以將自動(dòng)化測(cè)試的使用率提高。記住創(chuàng)建自動(dòng)化測(cè)試的測(cè)試用例要比創(chuàng)建手工測(cè)試的測(cè)試用例花費(fèi)更多的時(shí)間。不要將你所有的測(cè)試時(shí)間都用在自動(dòng)化的測(cè)試用例上。同時(shí)也要記住在測(cè)試期間對(duì)每一個(gè)被發(fā)現(xiàn)的錯(cuò)誤都要花費(fèi)一定的時(shí)間去處理。
5. 自動(dòng)化測(cè)試的好處如果你正在你的組織中引入自動(dòng)化測(cè)試,記住有很多不同的方面被包含了進(jìn)了。今天在測(cè)試工作如何被進(jìn)行上有很多不同的視圖。為了能夠成功的實(shí)施自動(dòng)化測(cè)試你應(yīng)該提出這些問(wèn)題:
測(cè)試覆蓋什么?- 我們沒(méi)有覆蓋什么?
由于遺漏的測(cè)試我們沒(méi)有發(fā)現(xiàn)的"bug"會(huì)帶來(lái)什么樣的成本?由于不好的測(cè)試,破壞已有功能性的成本是多少?如果"瑣碎的"測(cè)試被每天的運(yùn)行,對(duì)于你的項(xiàng)目意味著什么?如果我們能夠每天向開(kāi)發(fā)人員提供他們最近代碼變更相關(guān)的反饋,對(duì)項(xiàng)目有怎樣的影響?這些問(wèn)題都能夠被自動(dòng)化測(cè)試滿(mǎn)足。你必須從自動(dòng)化測(cè)試成熟度的級(jí)別 1 或者 級(jí)別 2 開(kāi)始,并開(kāi)始測(cè)量結(jié)果。根據(jù)我的經(jīng)驗(yàn)快速的向開(kāi)發(fā)人員反饋并每天運(yùn)行測(cè)試對(duì)于向自動(dòng)化測(cè)試成熟度的級(jí)別 4或者 級(jí)別 5 是非常有好處的。
自動(dòng)化測(cè)試有以下的貢獻(xiàn):
降低風(fēng)險(xiǎn) - 你知道你測(cè)試了什么和沒(méi)測(cè)試什么測(cè)試能在項(xiàng)目的早期開(kāi)始并隨著時(shí)間一直擴(kuò)展快速的反饋 - 自動(dòng)化測(cè)試用例能夠隨時(shí)的運(yùn)行在多個(gè)平臺(tái)上的測(cè)試能夠同時(shí)進(jìn)行
更好的估計(jì) - 你能夠?qū)y(cè)試進(jìn)度和被使用的時(shí)間有更好的了解優(yōu)秀人員的集中 - 你能夠得到一個(gè)專(zhuān)家的團(tuán)隊(duì),并將他們的知識(shí)傳播給其他的項(xiàng)目喜悅 -你和你的團(tuán)隊(duì)正獲得著成功
測(cè)試工具介紹
下面我介紹市面上相對(duì)比較廣泛的測(cè)試軟件,Rational中的Robot和MI公司的WinRunner的具體的用法。
Robot,俗稱(chēng)機(jī)器人。它有幾個(gè)特點(diǎn),第一,Robot它的語(yǔ)法相對(duì)簡(jiǎn)單,是一種類(lèi)似于VB的語(yǔ)法,所以上手快;第二,Robot的腳本組織結(jié)構(gòu)類(lèi)似于C的結(jié)構(gòu),相對(duì)容易理解;第三,Robot運(yùn)行環(huán)境和可參數(shù)化,所以容易維護(hù);第四,要求的機(jī)器配置相對(duì)較低;第五,Rantional系統(tǒng)集成的很多產(chǎn)品很優(yōu)秀,而且適合面很廣;第六,相對(duì)價(jià)格比較低廉。
WinRunner的功能相對(duì)Robot相對(duì)來(lái)說(shuō)有一下幾個(gè)特點(diǎn)。
第1, WinRunner的語(yǔ)法結(jié)構(gòu)是類(lèi)似于C的語(yǔ)法,理解相對(duì)容易;
第2, WinRunner的腳本組織形式是以目錄的形式組織的,所以相對(duì)來(lái)說(shuō)比較好管理;
第3, WinRunner支持當(dāng)前市面上的很多系統(tǒng);
第4, 可以隨時(shí)Update檢查點(diǎn)的內(nèi)容,使得腳本的維護(hù)量減少
第5, 機(jī)器配置相對(duì)要求高些;
第6, 集成了很多優(yōu)秀的組件。
下面我就嘗試寫(xiě)一個(gè)Robot的腳本。
題目:請(qǐng)檢查各種我們規(guī)定的字符是否過(guò)濾掉了,如果那些詞語(yǔ)沒(méi)有過(guò)濾掉請(qǐng)記錄下來(lái)。
測(cè)試腳本:
Function T_OpenTestFile(Filename as string)as integer
{
。。。。。。。。。。。。。
}
Funciton T_FilterWord(getword as string)as integer
{
。。。。。。。。。。。。
}
以上是兩個(gè)SBL文件,相當(dāng)于C中的函數(shù)實(shí)體
那么我們要建立一個(gè)SBH,相當(dāng)于C中的頭文件,紅色的部分類(lèi)似于一個(gè)類(lèi)庫(kù),我們把相關(guān)的或者具有相似屬性的操作或者函數(shù)定義在同一個(gè)類(lèi)庫(kù)中。
Declare Function T_OpenTestFile Basiclib T_FileOpertion(filename as string) as integer
Declare Function T_FilterWord Basiclib T_FileOpertion(getword as string) as integer
我們現(xiàn)在建立一個(gè)腳本文件REC
#include T_FileOpertion.sbh
Main()
{
。。。。。。。
}
在此腳本中就可以調(diào)用上面那兩個(gè)函數(shù)了。在以后的測(cè)試中,我們只需要維護(hù)過(guò)濾詞文件庫(kù)就可以了。這樣提高了工作效率,保證了測(cè)試的正常進(jìn)行。
下面我就舉個(gè)例子,來(lái)嘗試用WinRunner的使用方法,其實(shí)例子相對(duì)很簡(jiǎn)單,主要是想告訴大家這種語(yǔ)言腳本的組織方法是怎么樣的?
測(cè)試工具在實(shí)際工作中的應(yīng)用
現(xiàn)在在測(cè)試行業(yè)說(shuō)的最多的有兩個(gè)問(wèn)題,第一個(gè)問(wèn)題是測(cè)試的待遇和地位,第二個(gè)問(wèn)題是自動(dòng)化問(wèn)題。我這里不談測(cè)試的地位,只談自動(dòng)化測(cè)試。
如何做好自動(dòng)化測(cè)試?這里給出幾個(gè)分析方法,第一,被測(cè)試產(chǎn)品是否有延續(xù)性?第二,被測(cè)試產(chǎn)品的維護(hù)頻繁度?第三,被測(cè)試產(chǎn)品自動(dòng)化的難度如何?
其次,如何選擇自動(dòng)化工具,選擇容易上手的,測(cè)試腳本和測(cè)試數(shù)據(jù)容易維護(hù)的,價(jià)格低廉的。
正確的理解測(cè)試工具需要我們?nèi)ヒ龑?dǎo),我們應(yīng)該清楚的知道那些應(yīng)該自動(dòng)化,那么能自動(dòng)化,那些自動(dòng)化程度會(huì)更高等。
工作中的自動(dòng)化
測(cè)試的幾中方法
數(shù)據(jù)驅(qū)動(dòng)法
數(shù)據(jù)驅(qū)動(dòng)是測(cè)試中最常用的一種方法,它是在不修改測(cè)試程序的情況下或者稍微修改測(cè)試程序的情況下,不段的增加測(cè)試案例來(lái)進(jìn)行自動(dòng)測(cè)試的一種方法。
舉一個(gè)具體的例子:例如我們檢查登陸驗(yàn)證(用戶(hù)名稱(chēng)),
如果我們采用自動(dòng)化測(cè)試,我們只需要在測(cè)試配置文件中增加或者刪除修改配置文件就可以達(dá)到測(cè)試的效果了。
要將兩個(gè)文件進(jìn)行比較,就可以得到被測(cè)試程序的處理能力和結(jié)果了。
樁驅(qū)動(dòng)
樁驅(qū)動(dòng)也是一種常見(jiàn)的測(cè)試方法。這種測(cè)試方法是把某個(gè)模塊假設(shè)是正確的,然后把這個(gè)模塊作為主核心,然后測(cè)試他傳出的參數(shù)和數(shù)據(jù)給其他模塊來(lái)處理,查看處理的結(jié)果。
我那EXCEL中數(shù)據(jù)舉一個(gè)現(xiàn)實(shí)的例子,大家都知道,當(dāng)你輸入等號(hào)的時(shí)候,Excel認(rèn)為你需要計(jì)算,那么處理流程就應(yīng)該是接受鍵盤(pán)消息,然后處理。如果我們把輸入做為一個(gè)樁,那么來(lái)查看計(jì)算結(jié)果的話(huà),就可以知道那些信息處理了,那些信息沒(méi)有處理。
樁驅(qū)動(dòng)的核心其實(shí)很簡(jiǎn)單,就是首先對(duì)樁模塊做一個(gè)假設(shè)和詳細(xì)測(cè)試,認(rèn)為樁模塊是足夠健壯的;第二,樁模塊是驅(qū)動(dòng)機(jī),能夠和很多模塊發(fā)生調(diào)用關(guān)系,是核心部件.
關(guān)鍵字驅(qū)動(dòng)
關(guān)鍵字驅(qū)動(dòng)和樁驅(qū)動(dòng)有些相似的地方,關(guān)鍵字驅(qū)動(dòng)的核心是
網(wǎng)絡(luò)方面的測(cè)試方法
數(shù)據(jù)庫(kù)測(cè)試要點(diǎn)
網(wǎng)絡(luò)游戲測(cè)試要點(diǎn)
下面我和大家探討網(wǎng)絡(luò)游戲的測(cè)試方法。網(wǎng)絡(luò)游戲是一個(gè)信息相對(duì)集中的一個(gè)網(wǎng)絡(luò)產(chǎn)品,它牽扯到客戶(hù)端和服務(wù)端以及客戶(hù)端之間的通訊。下面我們就結(jié)合具體的例子來(lái)分析
我舉一個(gè)Mmog的例子(注:mmog是大型網(wǎng)絡(luò)游戲的縮寫(xiě)),大型網(wǎng)絡(luò)游戲主要是即時(shí)戰(zhàn)略性質(zhì)的,所以通訊上采用TCP協(xié)議來(lái)發(fā)送數(shù)據(jù)包。TCP協(xié)議發(fā)送數(shù)據(jù)包的優(yōu)點(diǎn)是盡量能夠減少數(shù)據(jù)包的丟失,他是對(duì)數(shù)據(jù)包的一個(gè)精包裝,一般的發(fā)送數(shù)據(jù)包采用實(shí)時(shí)處理的形式,即采用堵塞式的處理模式,而不是等到一定空間的數(shù)據(jù)包滿(mǎn)了以后才一起發(fā)送(非堵塞式的處理模式)。
上面我們只是簡(jiǎn)單的講了mmog游戲數(shù)據(jù)包發(fā)送的形式。下面我們分析網(wǎng)絡(luò)游戲服務(wù)端測(cè)試的重點(diǎn)。
網(wǎng)絡(luò)游戲服務(wù)端的主要作用:下發(fā)玩家信息,仲裁勝負(fù)信息,仲裁裝備信息,服務(wù)器之間中轉(zhuǎn)信息,狀態(tài)存盤(pán),玩家信息存盤(pán)等。我們來(lái)一個(gè)個(gè)的分析,服務(wù)端要處理這么多的事情,在處理什么事情的時(shí)候壓力最大呢?那肯定是下發(fā)玩家信息最大,為什么這么說(shuō)呢?因?yàn)樵谙掳l(fā)玩家信息的時(shí)候,服務(wù)端會(huì)把每個(gè)人的信息和地圖上的所有的信息,而且這個(gè)信息是當(dāng)?shù)貓D上的玩家和元素的增多而增多,當(dāng)?shù)貓D上的人越多的情況下,服務(wù)器的處理信息的量就很大。那么分析這么多,我們主要測(cè)試什么?測(cè)試同步消息的傳遞。就是在很多玩家的情況下,信息能否順利的通知給各個(gè)玩家。
如果做這樣的事情呢?根據(jù)經(jīng)驗(yàn)(可以另外想辦法),建議編寫(xiě)一個(gè)機(jī)器人,我們能夠操作機(jī)器人,這個(gè)機(jī)器人需要處理什么事情呢?希望機(jī)器人能夠在以玩家為中心的地方隨意走動(dòng),能夠跟隨玩家跨地圖,能夠按照設(shè)定施放技能,能夠聊天。通過(guò)機(jī)器人的每一個(gè)動(dòng)作我們來(lái)觀察服務(wù)的各個(gè)性能表現(xiàn)。關(guān)心那些性能表現(xiàn)?大家可以參考LoadRunner提供的業(yè)界比較官方的指標(biāo)進(jìn)行核對(duì)。
網(wǎng)絡(luò)游戲服務(wù)端的測(cè)試相對(duì)比較復(fù)雜,對(duì)測(cè)試人員的要求比較高,測(cè)試人員必須了解用什么協(xié)議通訊的,怎么通訊的,服務(wù)器都處理了那些事情才能具體的分析測(cè)試重點(diǎn)和測(cè)試方法怎么做。
對(duì)于客戶(hù)端的測(cè)試應(yīng)該相對(duì)簡(jiǎn)單些,我這里說(shuō)的客戶(hù)端的測(cè)試不包含數(shù)據(jù)平衡部分。客戶(hù)端主要是驗(yàn)證功能邏輯。例如我舉個(gè)例子,任務(wù)系統(tǒng),現(xiàn)在每個(gè)游戲都有任務(wù)系統(tǒng)。如果測(cè)試任務(wù)系統(tǒng),我們應(yīng)該怎么測(cè)試?首先完成任務(wù)的條件是什么?完成任務(wù)需要什么道具?玩家能得到什么道具?道具是否可以交易,拾撿?道具是否可以買(mǎi)賣(mài)?玩家跟NPC交付任務(wù)斷線(xiàn)處理?NPC在不同的狀態(tài)下所說(shuō)話(huà)的內(nèi)容?是公共任務(wù)還是門(mén)派任務(wù)?在得到道具過(guò)程中儲(chǔ)物箱滿(mǎn)了會(huì)怎么處理?在負(fù)重超出了本身能力的情況下怎么處理?等等,把細(xì)節(jié)的問(wèn)題考慮清楚了,這樣設(shè)計(jì)案例執(zhí)行就是了,沒(méi)有自動(dòng)化的必要(但是可以在組件測(cè)試中進(jìn)行自動(dòng)化,系統(tǒng)測(cè)試沒(méi)有必要自動(dòng)化)。
客戶(hù)端還有一個(gè)測(cè)試點(diǎn)就是地圖,因?yàn)榈貓D是游戲的門(mén)面,所以地圖的檢查點(diǎn):絢麗度,整個(gè)地圖的亮度,不同分辨率下的地圖顯示,地圖的拼接,地圖上NPC或者怪物的分布等等。網(wǎng)絡(luò)游戲的測(cè)試是積極具有挑戰(zhàn)性,包括能力,耐力,創(chuàng)造力的人奮斗。
還有一種是休息類(lèi)游戲,例如盛大網(wǎng)絡(luò)的泡泡,客戶(hù)端之間主要是通過(guò)UDP進(jìn)行通訊。關(guān)于UDP通訊的檢查和測(cè)試我在這里先不做詳細(xì)描述,以后進(jìn)行補(bǔ)充。
C/S結(jié)構(gòu)測(cè)試要點(diǎn)
網(wǎng)絡(luò)游戲現(xiàn)在是C/S架構(gòu)的一種,但是我們平常所說(shuō)的C/S是一種類(lèi)似于銀行系統(tǒng),購(gòu)物系統(tǒng)等,這種系統(tǒng)要求:服務(wù)器處理能力強(qiáng),反饋及時(shí),但是有一個(gè)特點(diǎn),這種服務(wù)器壓力是出現(xiàn)在業(yè)務(wù)繁忙的時(shí)候,所以在測(cè)試這種軟件的時(shí)候,需要完全弄清楚業(yè)務(wù)邏輯,業(yè)務(wù)點(diǎn)在那里?信息同步在那些方面需要關(guān)注?服務(wù)端數(shù)據(jù)處理流程是什么?如果把以上問(wèn)題搞清楚了,測(cè)試的重點(diǎn)也就出來(lái)了,這里我不再舉具體的例子,因?yàn)镃/S架構(gòu)的軟件是相通的。
下面我就舉個(gè)例子,給大家看看,關(guān)于C/S架構(gòu)的mmog類(lèi)型的游戲測(cè)試,服務(wù)器的壓力那里,測(cè)試的重點(diǎn)在那里?
市面上90%以上mmog類(lèi)型游戲采用的結(jié)構(gòu)。
當(dāng)客戶(hù)端要求登陸服務(wù)器的時(shí)候,通過(guò)賬號(hào)數(shù)據(jù)庫(kù)驗(yàn)證,然后取出該賬號(hào)對(duì)應(yīng)的角色,然后告訴客戶(hù)端你是我們的用戶(hù),然后由網(wǎng)關(guān)把該玩家連接到響應(yīng)的GameSvr上.
客戶(hù)端向服務(wù)器發(fā)送登陸請(qǐng)求,如果采用非阻塞式,使得各個(gè)客戶(hù)端的請(qǐng)求形成非隊(duì)列式,那么服務(wù)器壓力不會(huì)很大,如果采用阻塞式,那么客戶(hù)端感覺(jué)服務(wù)器處理速度就會(huì)很慢,玩家不答應(yīng),所以大多采用非阻塞式,處理速度快.而且玩家和賬號(hào)數(shù)據(jù)庫(kù)不是長(zhǎng)期保持連接,只是保持一個(gè)心跳而已.這樣就得出一個(gè)結(jié)論,用戶(hù)在登陸的時(shí)候,對(duì)服務(wù)器不會(huì)造成多少壓力.
那么什么時(shí)候會(huì)造成壓力呢?
玩家走路,大家都知道,網(wǎng)絡(luò)最主要的特點(diǎn)是同步信息,也就是說(shuō),當(dāng)一個(gè)玩家走動(dòng)以后,服務(wù)器首先要計(jì)算一次,當(dāng)前玩家指的坐標(biāo)是否正確,其次,服務(wù)器要下發(fā)消息,告訴周?chē)耐婕?他現(xiàn)在在那里,怎么樣的姿態(tài)存在.因?yàn)榉?wù)器會(huì)給一定范圍內(nèi)的玩家通知這些信息,造成服務(wù)器壓力增多,因?yàn)榉?wù)器(GaemSvr)和玩家保持的是一個(gè)TCP的長(zhǎng)連接,如果當(dāng)前服務(wù)器或者一屏(或者說(shuō)一定范圍內(nèi)的玩家相對(duì)比較多)的情況下,服務(wù)器要處理當(dāng)前服務(wù)器上類(lèi)似于上面描述的若干個(gè)這樣的情況,造成服務(wù)器壓力巨大.
除了走路,還有什么會(huì)造成服務(wù)器壓力大呢?
聊天,為什么說(shuō)聊天會(huì)造成服務(wù)器壓力比較大呢?因?yàn)楫?dāng)A對(duì)B說(shuō)話(huà),服務(wù)器需要尋找,當(dāng)前B在那里,然后通知A,B在,你可以說(shuō)話(huà)給他,這個(gè)時(shí)候A才可能和B說(shuō)話(huà).如果人相對(duì)比較多的話(huà),可能造成服務(wù)器壓力大.
跨服務(wù)器行走,也會(huì)造成服務(wù)器壓力巨大?
因?yàn)楫?dāng)你從一個(gè)服務(wù)器跨到另外一個(gè)服務(wù)器的時(shí)候,服務(wù)器需要把第一個(gè)服務(wù)器上玩家的數(shù)據(jù)拷貝的另外一個(gè)服務(wù)器,然后初始化一個(gè)實(shí)體,然后再告訴DB,把這個(gè)人的數(shù)據(jù)存盤(pán)一次,然后再?lài)L試跨服務(wù)器,如果跨不成功,如果成功,則把該數(shù)據(jù)初始化給本玩家,如果不可以,則另外處理,這樣造成服務(wù)器的壓力大.
總上所述,不是所有的C/S結(jié)構(gòu)的產(chǎn)品,我們以上來(lái)就模擬人多的情況怎么樣,而是要分析,那塊的壓力真正的大,壓力大的情況下會(huì)影響到游戲邏輯和數(shù)據(jù)在那里?需要冷靜的分析這些情況,才可能有效的執(zhí)行測(cè)試.
綜上所述,我們知道網(wǎng)絡(luò)的測(cè)試重點(diǎn)是相同通訊,數(shù)據(jù)同步和存儲(chǔ),那么在進(jìn)行測(cè)試的時(shí)候,需要熟悉的了解各個(gè)部分相互通訊的模式是TCP還是UDP模式,那么各個(gè)模式有各個(gè)模式的特點(diǎn).
TCP是通訊協(xié)議是把數(shù)據(jù)包進(jìn)行精包裝,然后在網(wǎng)絡(luò)鏈路中進(jìn)行發(fā)送,它需要進(jìn)行三次握手才可以確定數(shù)據(jù)包的發(fā)送與否,丟包的幾率很小,但是自身有補(bǔ)償機(jī)制,使得包數(shù)據(jù)傳輸?shù)倪^(guò)程中可靠性大大加強(qiáng)但是缺點(diǎn)是速度相對(duì)很慢.
UDP通訊是另外一種數(shù)據(jù)包傳送模式,這種方式的特點(diǎn)是傳送速度快,但是容易造成數(shù)據(jù)包丟棄.
所以除了了解各個(gè)部分的通訊協(xié)議之外還需要了解,當(dāng)丟包了以后,對(duì)數(shù)據(jù)包進(jìn)行補(bǔ)償?shù)膬煞N方法,第一種方法是把從丟失的第一個(gè)包到當(dāng)前包作為一個(gè)整體的包,進(jìn)行包的重播,這樣的方法會(huì)使得從客戶(hù)端看到通常我們?cè)谟螒蛑兴霈F(xiàn)的”卡”現(xiàn)象,還有另外一種補(bǔ)償機(jī)制,就是把前面的數(shù)據(jù)包丟棄,然后播放最后一個(gè)數(shù)據(jù)包信息,這樣就會(huì)在其他的客戶(hù)端看到一些莫名其妙的現(xiàn)象.
WEB測(cè)試要點(diǎn)
Web測(cè)試的要點(diǎn)其實(shí)很多,但是Web測(cè)試的著力點(diǎn)其實(shí)不多,因?yàn)榛赪eb現(xiàn)在有兩個(gè)重點(diǎn),一種是基于平面的靜態(tài)的,只是更新新聞,那么這個(gè)的測(cè)試點(diǎn)相對(duì)簡(jiǎn)單,主要是各個(gè)鏈接正確性,服務(wù)器瀏覽量等,還有另外一種就是基于Web的P To P的通訊,需要注冊(cè),牽扯到用戶(hù)信息,那么這些測(cè)試重點(diǎn)在于P To P通訊的順暢性,數(shù)據(jù)的可靠性。
嵌入式軟件的測(cè)試方法
手機(jī)軟件測(cè)試
手機(jī)現(xiàn)在在社會(huì)上應(yīng)用很廣,同時(shí)針對(duì)手機(jī)上的功能增加也非常快,例如,藍(lán)牙,例如,短信,例如,信息下載,手機(jī)游戲等,這說(shuō)明在未來(lái)發(fā)展中,手機(jī)將人們帶在一個(gè)孤獨(dú)的社會(huì)中去。
簡(jiǎn)單回想,我們的上輩人開(kāi)始用手機(jī),那是后簡(jiǎn)單的目的:就是通訊,而且還必須在既定范圍內(nèi),價(jià)格高昂等,這些只有很富有的人才能染指的東西現(xiàn)在在社會(huì)中的每個(gè)角落都可能。放羊的。。。。
那么手機(jī)軟件怎么測(cè)試呢?測(cè)試什么呢?怎么組織呢?
那么我做簡(jiǎn)單的分析:首先確定手機(jī)軟件是嵌入式軟件,那么我們拋開(kāi)IC測(cè)試,拋開(kāi)盲區(qū),耐久性,耐碰撞性測(cè)試不提,就軟件本身測(cè)試需要考慮的內(nèi)容。
我們說(shuō)了這么多,我們整理出來(lái)手機(jī)軟件測(cè)試的核心是數(shù)據(jù)的時(shí)效性,怎么理解呢?不能說(shuō)我發(fā)了個(gè)短信,對(duì)方一天都無(wú)法收到?或者我打電話(huà),對(duì)方?jīng)]有任何反映,這就說(shuō)明有問(wèn)題。
在例如,通過(guò)手機(jī)的紅外線(xiàn),能把地址薄中的資料傳送的電腦中,如果在傳送的過(guò)程中出錯(cuò),或者對(duì)操作系統(tǒng)有要求,或者在傳輸?shù)倪^(guò)程造成數(shù)據(jù)丟失,導(dǎo)出來(lái)的數(shù)據(jù)是無(wú)法識(shí)別的格式等,都會(huì)造成該功能無(wú)效。
再如,手機(jī)信息的存儲(chǔ)問(wèn)題,因?yàn)槭謾C(jī)本身有自己的系統(tǒng),有自己處理信息的方式和格式,那就牽掣到的問(wèn)題和外界信息交互的問(wèn)題,外界需要了解其格式,閱讀其格式,就需要和外界有比較信任的通訊。
其次,是測(cè)試本身的功能,例如,能夠正常撥打電話(huà),能夠正常編輯信息,能夠正常保存朋友電話(huà),能夠有歷史記錄,能夠正常鬧鐘和各種設(shè)置,能夠正常有提示信息等。
我再舉個(gè)例子,手機(jī)中游戲軟件的測(cè)試,我們先了解手機(jī)中游戲開(kāi)發(fā)語(yǔ)言Java,其次,由于手機(jī)中的內(nèi)存大小優(yōu)先,所以游戲的大小以及運(yùn)行的各種指標(biāo)都很小,所以用KJava。還有一個(gè)特點(diǎn),手機(jī)中的游戲是回合制,所以類(lèi)似的同步要求不是很高,所以測(cè)試重點(diǎn)就有所改變。
那么像手機(jī)游戲的測(cè)試點(diǎn)在那里呢?了解這個(gè)方面的測(cè)試,需要了解幾個(gè)問(wèn)題,運(yùn)營(yíng)商對(duì)產(chǎn)品的要求:
運(yùn)營(yíng)商對(duì)開(kāi)發(fā)商提出的要求,一般情況有這么幾種。第一,應(yīng)用程序的大小;第二,應(yīng)用程序的命名規(guī)則;第三,應(yīng)用程序版本控制規(guī)則;第四,明確提出所支持的機(jī)器的類(lèi)型;第五,采用的編碼格式UTF_8的編碼還是其他的編碼;第六,外部中斷的處理邏輯;第七,比對(duì)壓縮后的文件和先前文件的比較。
上面我提出了手機(jī)軟件測(cè)試的七個(gè)重點(diǎn),下面我逐步添加詳細(xì)介紹各個(gè)部分的細(xì)節(jié)。
第一,應(yīng)用程序的大小。由于應(yīng)用程序在被下載時(shí)百寶箱會(huì)根據(jù)需要插入5K的程序代碼,因此要求SP提交的應(yīng)用程序其大小不能超過(guò)手機(jī)最大下載尺寸減5K,下表列出了目前市場(chǎng)上部分JAVA手機(jī)對(duì)JAR文件下載的字節(jié)數(shù)限制情況(未列入機(jī)型請(qǐng)SP咨詢(xún)手機(jī)廠(chǎng)家)
其次,由于應(yīng)用程序在被下載時(shí)百寶箱會(huì)根據(jù)需要插入程序代碼,這段代碼在手機(jī)上執(zhí)行時(shí)要占用10K左右的堆內(nèi)存,因此要求SP提交的應(yīng)用程序在運(yùn)行時(shí)要預(yù)留至少10K的堆內(nèi)存。
第二,應(yīng)用程序的命名規(guī)則。應(yīng)用程序的命名規(guī)則的字符長(zhǎng)度不能超過(guò)12個(gè)字符長(zhǎng)度,而且命名有一定的規(guī)則,需要SP和提供商商定,但是必須依照行業(yè)標(biāo)準(zhǔn)。另外,在提交的時(shí)候,需要了解一些要求,由于各個(gè)SP開(kāi)發(fā)商開(kāi)發(fā)環(huán)境,編譯環(huán)境等問(wèn)題,所以運(yùn)營(yíng)商都提出嚴(yán)格的打包要求。
SP遞交應(yīng)用程序打包要求:
1. JDK使用1.3.1版本(國(guó)際版);
2. 打包工具使用SUN公司提供的J2ME Wireless Toolkit (midp1.0版本,1.0.3或1.0.4);
由于SUN公司的WTK只支持標(biāo)準(zhǔn)的midp1.0,不支持各手機(jī)擴(kuò)展的API,需要SP對(duì)所使用的WTK進(jìn)行擴(kuò)充才可以支持手機(jī)擴(kuò)展的API,方法是:將擴(kuò)展API加到D:WTK104libmidpapi.zip(假設(shè)WTK安裝在D:WTK104目錄下)中即可。
3. 不做擾碼或使用RetroGuard進(jìn)行擾碼,不得使用別的擾碼工具。
說(shuō)明:1. SP在開(kāi)發(fā)時(shí)仍然可以使用原來(lái)的工具進(jìn)行開(kāi)發(fā),但遞交應(yīng)用時(shí)請(qǐng)使用SUN公司的WTK進(jìn)行打包;
2. 如果SP不按照要求進(jìn)行打包,出現(xiàn)百寶箱不能識(shí)別API的情況時(shí)將按照測(cè)試未通過(guò)的情況處理。
第三,版本控制要求是,版本控制的格式x.x.x,應(yīng)該嚴(yán)格遵守這個(gè)規(guī)則。
辦公類(lèi)產(chǎn)品的延續(xù)性相對(duì)較長(zhǎng),所以部分模塊有利于自動(dòng)化測(cè)試。我在這里介紹辦公類(lèi)產(chǎn)品的測(cè)試重點(diǎn)在那里?
辦公類(lèi)產(chǎn)品的特點(diǎn)是人們?cè)谵k公中經(jīng)常要用到,頻率很高,所以簡(jiǎn)單,易用,方便操作容易理解成為辦公類(lèi)產(chǎn)品的首要要求。
其次辦公類(lèi)產(chǎn)品考慮的機(jī)器的硬件配置,例如顯卡,打印機(jī)等外設(shè)
第三,辦公類(lèi)產(chǎn)品還需要測(cè)試兼容性,因?yàn)樽陨硌永m(xù)性長(zhǎng)的特點(diǎn)。
第四,辦公類(lèi)產(chǎn)品需要保證數(shù)據(jù)安全
第五,辦公類(lèi)產(chǎn)品本身的功能邏輯
那么怎么才能做好辦公類(lèi)軟件的測(cè)試呢?
首先辦公軟件的核心是辦公,日常生活中要用到,那么按照各種排版格式自己去排版就好了,在這個(gè)過(guò)程中詳細(xì)得出一些結(jié)論:
第一可操作性;第二,各個(gè)模塊的使用邏輯,例如:在文件中插入對(duì)象,對(duì)象能否體現(xiàn)出來(lái),設(shè)置對(duì)象的繞排方式,能否設(shè)置成功,能否體現(xiàn),設(shè)置對(duì)象是否打印;第三,存盤(pán),數(shù)據(jù)安全考慮,看存盤(pán)后對(duì)象是否保存,各種字體設(shè)置是否保存,繞排方式是否保存等。第四,兼容性,因?yàn)橛脩?hù)使用的辦公類(lèi)軟件很多,需要文件共享兼容。其次是本身高低版本的兼容性,需要著重考慮。第五,文件大小和不同文件格式的存盤(pán)信息。第六,各種性能指標(biāo),包括啟動(dòng)速度,占用磁盤(pán)大小,在使用的過(guò)程中CPU的占有情況;第七,快捷鍵的設(shè)定和檢查,不要和系統(tǒng)的快捷鍵沖突,并且支持系統(tǒng)的各種設(shè)置支持系統(tǒng)剪貼板功能;第八,支持網(wǎng)絡(luò)傳輸,能夠自由的通訊和共享,能夠支持協(xié)同工作,能夠充分體現(xiàn)修改數(shù)據(jù)的同步信息。
殺毒類(lèi)產(chǎn)品測(cè)試
殺毒類(lèi)軟件是一種工具類(lèi)軟件,隨著網(wǎng)絡(luò)的普及,殺毒軟件也越發(fā)顯得重要,那么殺毒軟件的測(cè)試重點(diǎn)是:
能夠發(fā)現(xiàn)病毒
操作系統(tǒng)檢查
能夠正確的報(bào)告并且查殺病毒
占有的CPU占有情況
查殺病毒的內(nèi)存使用情況
數(shù)據(jù)安全
軟件沖突
病毒庫(kù)升級(jí)
自動(dòng)更新
那么在殺毒軟件的時(shí)候,還有一個(gè)重要的東西,就是用戶(hù)的數(shù)據(jù)安全,當(dāng)殺毒軟件能夠清除含毒文件中的毒的時(shí)候,一定要包含用戶(hù)文件的可靠性。
ERP軟件的測(cè)試方法
驗(yàn)證測(cè)試
測(cè)試管理工作
我沒(méi)有讀過(guò)管理方面,只是看了一些書(shū)而已,在幾個(gè)團(tuán)隊(duì)中應(yīng)用,效果還可以,所以拿出來(lái)和大家交流。
其實(shí)無(wú)論是開(kāi)發(fā)管理和測(cè)試管理,其核心應(yīng)該是“理”,如果理都不通,那么管只能是強(qiáng)制性質(zhì),那么在軟件行業(yè),創(chuàng)造性的企業(yè)中,可能不能維持的很久,所以需要先“理”清楚了,然后我們來(lái)管,到那個(gè)時(shí)候也就不用管了,因?yàn)槔眄樍?#xff0c;所以大家都知道該怎么樣做,什么時(shí)候做了。
那么談到“理”,我們需要理什么呢?理事情,把要做的事情理清楚;理目標(biāo),把要達(dá)到的目的說(shuō)清楚;理思路,把做事情的思路和方法理清楚;理資源,把合理的資源調(diào)配到合適的位置上,讓興趣和能力結(jié)合。我覺(jué)得從大的方面就需要先將這些事情理清楚了,才可能使得一個(gè)團(tuán)隊(duì)具有非常的戰(zhàn)斗力。
其次,還需要和善的溝通,做到無(wú)所不曉,因?yàn)樵谝粋€(gè)團(tuán)隊(duì)中,氣氛非常重要,也許一個(gè)人的今天心情不好,造成跟他配合的幾個(gè)人都無(wú)法工作順心,也許是感應(yīng)。所以需要和大家開(kāi)誠(chéng)布公,把能講的問(wèn)題,能講的事情講清楚,讓大家覺(jué)得你可以依靠,可以把心思告訴你,你盡力為大家解決后患問(wèn)題,讓他們能夠開(kāi)心踏實(shí)的做事情。
另外,需要換位思考,充分讓大家提出意見(jiàn),因?yàn)槿绻粋€(gè)團(tuán)隊(duì)要發(fā)展,是需要大家一起努力的,這是大家都熟知的道理,但是做起來(lái)很難。避免一言堂,讓大家充分參與到設(shè)計(jì)中,在其中找到自我的感覺(jué),找到這里沒(méi)有他是不可以的,這樣每一個(gè)人才能關(guān)心項(xiàng)目的每一個(gè)角落,而不是為了工作而工作了。
其二,需要在“理”的基礎(chǔ)上幫助大家總結(jié),大家在什么地方容易犯錯(cuò)誤,犯什么類(lèi)型的錯(cuò)誤,犯錯(cuò)誤的原因是由于我們的思想老化了,需要改進(jìn)做事情的方式,還是由于工作能力或者經(jīng)驗(yàn)的問(wèn)題。
那么就需要對(duì)各種錯(cuò)誤進(jìn)行統(tǒng)計(jì),以找到問(wèn)題的根本原因。就問(wèn)題而討論問(wèn)題,問(wèn)題的實(shí)質(zhì)出在那里,然后幫大家改進(jìn),自己同時(shí)也會(huì)進(jìn)步。給大家講我現(xiàn)實(shí)中的例子吧,我曾經(jīng)帶的一個(gè)測(cè)試組,大家做事情都很賣(mài)力,而且成績(jī)也非常顯著,但是在做的過(guò)程中總是會(huì)有問(wèn)題發(fā)生,問(wèn)題到底出在那里呢?后來(lái)找到了原因,就是由于工作環(huán)節(jié)中出現(xiàn)問(wèn)題了,所以他總是在那里犯錯(cuò)誤,因?yàn)樗前压ぷ鳟?dāng)成工作來(lái)做了,所以他就改這個(gè)地方,我后來(lái)找到他,也找到了問(wèn)題的原因,一起把問(wèn)題解決了。后來(lái)我就告訴他們,如果誰(shuí)在同一個(gè)地方犯同樣的錯(cuò)誤,我們的結(jié)論是他不懂,教他,共同學(xué)習(xí),直到他告訴我可以了;如果第二次犯錯(cuò)誤,那么我們給的結(jié)果是,他忘記了,好再學(xué),直到他告訴我,他可以了;第三次犯同樣的錯(cuò)誤,我們給的結(jié)論是故意犯錯(cuò)誤的,那么就要全組請(qǐng)喝可樂(lè)一灌。
這個(gè)例子在現(xiàn)實(shí)生活中很多,主要是引導(dǎo),因?yàn)槿绻压ぷ鳟?dāng)成工作來(lái)作,可能不會(huì)用“心”,因?yàn)槿绻怯谩靶摹惫ぷ魉麜?huì)找竅門(mén),會(huì)找方法,負(fù)責(zé)他會(huì)厭煩;如果把工作當(dāng)成自己未來(lái)的事業(yè)來(lái)做,那么就會(huì)用心工作,這樣就需要我們正確的引導(dǎo)。
開(kāi)發(fā)方面開(kāi)發(fā)分析
因?yàn)槲覀兪堑谝淮巫鯩P3的產(chǎn)品,所以從技術(shù)上還處于摸索階段,第二我們對(duì)產(chǎn)品的質(zhì)量意識(shí)還存在一點(diǎn)問(wèn)題,第三,四方溝通或者說(shuō)回饋不夠.
進(jìn)度問(wèn)題
四方配合問(wèn)題,因?yàn)樵谌魏我患夜咀銮度胧杰浖钠髽I(yè),存在硬件、軟件開(kāi)發(fā),市場(chǎng)開(kāi)發(fā),測(cè)試準(zhǔn)備四個(gè)方面的組織需要開(kāi)展工作,所以那個(gè)組織的進(jìn)度耽誤都會(huì)嚴(yán)重影響產(chǎn)品的發(fā)布周期,在現(xiàn)在競(jìng)爭(zhēng)日益劇烈的市場(chǎng)中,必須把握市場(chǎng)機(jī)會(huì),所以需要對(duì)進(jìn)度進(jìn)行把握。
建議采用作戰(zhàn)圖的形式,對(duì)各個(gè)階段點(diǎn)進(jìn)行有利的把握,以給各個(gè)方面贏取更多的時(shí)間,明確職責(zé)范圍,則權(quán)利的有利結(jié)合,激發(fā)各個(gè)方面的積極性。采用利益共同體的原則,將各個(gè)方面合理的結(jié)合,讓開(kāi)發(fā)關(guān)心測(cè)試工作,讓測(cè)試關(guān)心開(kāi)發(fā)工作,這樣形成一個(gè)有利的整體,讓市場(chǎng)及時(shí)反饋信息,使得項(xiàng)目順利進(jìn)展。
溝通問(wèn)題
SPEC設(shè)計(jì)完成后,各個(gè)方面在限定的時(shí)間內(nèi)做出反饋,以及時(shí)跟進(jìn),以便對(duì)產(chǎn)品有個(gè)明確的定位,各個(gè)方面對(duì)方案認(rèn)可后,切實(shí)執(zhí)行,如果出現(xiàn)技術(shù)問(wèn)題,及時(shí)通知有關(guān)人士,以便進(jìn)度和方案進(jìn)行合理的修改和微調(diào)。在產(chǎn)品開(kāi)發(fā)階段,需要及時(shí)的總結(jié)可能遇到的問(wèn)題和對(duì)問(wèn)題的解決方案,通知相關(guān)人士,使得項(xiàng)目組的人有一種歸宿感覺(jué)。
開(kāi)發(fā)需要給每個(gè)Bug做出合理的解釋,或者對(duì)我們的測(cè)試人員進(jìn)行相關(guān)培訓(xùn),以便測(cè)試人員能夠深切的理解產(chǎn)品,能夠?qū)Ξa(chǎn)品進(jìn)行合理嚴(yán)格的測(cè)試。
這里提出一個(gè)建議,在測(cè)試人員提出Bug以后,知道表現(xiàn),一定要弄清楚問(wèn)題發(fā)生在那里,是什么導(dǎo)致這個(gè)Bug發(fā)生,才能有效的分析結(jié)構(gòu),有效的進(jìn)行案例的補(bǔ)償和測(cè)試.
跟蹤問(wèn)題
跟蹤問(wèn)題牽扯到Bug的跟蹤和進(jìn)度跟蹤,Bug的跟蹤需要一套流程,及時(shí)的出來(lái)Bug,使得發(fā)現(xiàn)Bug和解決問(wèn)題形成一個(gè)完整的流程。
進(jìn)度跟蹤的方法,建議采用階段點(diǎn)產(chǎn)品,定義明確的時(shí)間點(diǎn),明確各個(gè)時(shí)間點(diǎn)上完成的功能點(diǎn),保證產(chǎn)品可以編譯,可以抽查,可以運(yùn)行以完成的相關(guān)功能。這樣使得大家在各個(gè)時(shí)期能夠看到大家都在進(jìn)步,產(chǎn)品在進(jìn)步,有利于整個(gè)團(tuán)隊(duì)的士氣。
版本控制問(wèn)題
定制嚴(yán)格的產(chǎn)品發(fā)布流程,降低由于時(shí)間問(wèn)題,壓縮測(cè)試時(shí)間,給產(chǎn)品發(fā)布帶來(lái)的風(fēng)險(xiǎn)。建議采用的方法,由項(xiàng)目組定制編譯計(jì)劃,然后有相關(guān)人士進(jìn)行討論,各個(gè)方面達(dá)成共識(shí)之后,堅(jiān)決執(zhí)行。
版本控制和進(jìn)度控制密切相關(guān)。
進(jìn)行嚴(yán)格的代碼管理,以保證公司機(jī)密資料,在代碼Check in 和Check Out的時(shí)候建議由專(zhuān)人進(jìn)行審核后方能入庫(kù),以免誤操作或者敵意的操作造成代碼沖刷。控制版本有幾個(gè)好處和優(yōu)點(diǎn)。
關(guān)于Bug的回饋優(yōu)點(diǎn)
第1、 開(kāi)發(fā)方面回饋速度快
第2、 解決速度快
關(guān)于測(cè)試情況的總結(jié)
第1、 涵蓋情況
第2、 Bug的質(zhì)量問(wèn)題
開(kāi)發(fā)體系問(wèn)題
第1、 設(shè)計(jì)的分析做嗎?技術(shù)難度?設(shè)計(jì)的合理行,進(jìn)度的可行性?
第2、 單元測(cè)試做了嗎?
第3、 CVS的Check In控制了嗎?
第4、 進(jìn)度風(fēng)險(xiǎn)預(yù)估了嗎?
第5、 進(jìn)度控制如何進(jìn)行的?
產(chǎn)品方面:
產(chǎn)品分析:整個(gè)產(chǎn)品在開(kāi)發(fā)前期,市場(chǎng)已經(jīng)找到了市場(chǎng)切入點(diǎn),但是在現(xiàn)在產(chǎn)品要發(fā)布了,我們不能或者說(shuō)很難用一系列的數(shù)據(jù)做說(shuō)明,告訴高層這個(gè)產(chǎn)品可以發(fā)布了或者說(shuō)不能發(fā)布,因?yàn)榉治龅臄?shù)據(jù)太少了。因?yàn)閿?shù)據(jù)是說(shuō)明問(wèn)題的基礎(chǔ),但是現(xiàn)在定了產(chǎn)品發(fā)布的標(biāo)準(zhǔn),只是一個(gè)現(xiàn)存數(shù)據(jù),沒(méi)有預(yù)估分析可能性,對(duì)產(chǎn)品投入市場(chǎng)可能存在風(fēng)險(xiǎn)。
建議:
第1、 案例執(zhí)行率
第2、 案例發(fā)現(xiàn)bug率
第3、 重復(fù)bug率
第4、 KLOC
第5、 產(chǎn)品日測(cè)試匯總圖(察看歷史曲線(xiàn))
對(duì)產(chǎn)品研發(fā)整體改進(jìn)思路
第一步、增強(qiáng)開(kāi)發(fā)質(zhì)量意識(shí)
做法:這個(gè)是個(gè)長(zhǎng)遠(yuǎn)任務(wù),但是我們可以做具體的事情,例如:檢查開(kāi)發(fā)單元測(cè)試情況或者單元測(cè)試代碼等活動(dòng)
對(duì)設(shè)計(jì)的模塊案例檢查回饋情況,把質(zhì)量和開(kāi)發(fā)邦定,不要讓測(cè)試單獨(dú)承擔(dān)這個(gè)壓力。
活動(dòng)方式:宣講,制度,執(zhí)行,邦定
第二步、增強(qiáng)測(cè)試本身素質(zhì)
做法:因?yàn)闇y(cè)試不成型,這是現(xiàn)狀,所以我們通過(guò)提供一些數(shù)據(jù)來(lái)提高案例設(shè)計(jì)的能力或者說(shuō)告訴測(cè)試人員我們的缺陷在那里。這個(gè)是長(zhǎng)遠(yuǎn)的事情,因?yàn)樾枰肆θプ鲞@個(gè)事情。提供如下數(shù)據(jù):重復(fù)報(bào)告率,案例和Bug的比率等。加強(qiáng)程序概念的培訓(xùn)或者框架的了解,盡力從程序的概念上理解產(chǎn)品,盡量避免例冗余。
活動(dòng)方式:培訓(xùn),數(shù)據(jù),比較
第三步、對(duì)產(chǎn)品開(kāi)發(fā)過(guò)程中版本編譯的控制
做法:CVS庫(kù)權(quán)限控制,所有的Check in和Check out需要控制,檢查代碼后方可入庫(kù)。另外需要制訂完整的開(kāi)發(fā)計(jì)劃和編譯計(jì)劃,使得項(xiàng)目跟蹤超向正規(guī)。
活動(dòng)方式:專(zhuān)人控制,以面沖掉原來(lái)的代碼
第四步、進(jìn)度控制
做法:在產(chǎn)品開(kāi)發(fā)周期中定制完整的編譯計(jì)劃,對(duì)階段性產(chǎn)品進(jìn)行測(cè)試或者抽查。以保后期測(cè)試時(shí)間的爭(zhēng)取和質(zhì)量的保證。
活動(dòng)方式:認(rèn)可,執(zhí)行,調(diào)整
第五步、控制進(jìn)度問(wèn)題
做法:明確開(kāi)發(fā)模式,列舉詳細(xì)的開(kāi)發(fā)進(jìn)度,詳細(xì)提出開(kāi)發(fā)的功能情況,樹(shù)立作戰(zhàn)詳細(xì)進(jìn)度表或者叫作戰(zhàn)牌,以鼓舞士氣,讓每個(gè)參與者了解進(jìn)度
活動(dòng)方式:承諾,監(jiān)督,跟蹤
1做法:統(tǒng)一平臺(tái),統(tǒng)一流程,統(tǒng)一做事方式,實(shí)現(xiàn)任務(wù)單跟蹤
活動(dòng)方式:準(zhǔn)則,平臺(tái),優(yōu)化。
如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一鍵三連哦!喜歡
最后基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫(kù)、抓包工具專(zhuān)題、接口測(cè)試工具、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試、APP自動(dòng)化測(cè)試、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成、測(cè)試架構(gòu)開(kāi)發(fā)測(cè)試框架、性能測(cè)試、安全測(cè)試等。
總結(jié)
以上是生活随笔為你收集整理的一篇文章搞懂什么是测试,测试是干什么的?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python3使用xpath爬取豆丁网文
- 下一篇: 基本存款账户编号怎么查_基本存款账户编号