首先來(lái)說(shuō)一下個(gè)人對(duì)于測(cè)試類(lèi)型的幾個(gè)理解吧贬堵,如果要保證一個(gè)軟件產(chǎn)品可以被正常使用结洼,如下幾個(gè)測(cè)試是少不了的:
1 功能測(cè)試(單元測(cè)試)
2 可交互測(cè)試(集成測(cè)試)
3 自動(dòng)化測(cè)試(持續(xù)交付測(cè)試)
4 性能測(cè)試(壓力測(cè)試)
在編寫(xiě)測(cè)試過(guò)程中黎做,對(duì)于測(cè)試如何寫(xiě)松忍,寫(xiě)多少用例算是足夠的蒸殿,不同的人有不同的理解鸣峭,根據(jù)《用戶(hù)故事》介紹的內(nèi)容和自己的一些理解宏所,整理如下:
關(guān)于測(cè)試用例的責(zé)任主體可以分為兩個(gè),一個(gè)是客戶(hù)團(tuán)隊(duì)爬骤,一個(gè)開(kāi)發(fā)團(tuán)隊(duì)
1 客戶(hù)團(tuán)隊(duì)需要完成什么樣的測(cè)試呢? 客戶(hù)團(tuán)隊(duì)掌握需求莫换,需要定義可交付的測(cè)試用例的編寫(xiě)。此時(shí)的測(cè)試用例既是需求的驗(yàn)收標(biāo)準(zhǔn)浓镜,也是對(duì)需求的進(jìn)一步解釋澄清。開(kāi)發(fā)團(tuán)隊(duì)可以通過(guò)對(duì)于用例的閱讀劲厌,進(jìn)一步的明確客戶(hù)的實(shí)際需求,也就不至于做成的產(chǎn)品和客戶(hù)的期望有偏差补鼻。
比如用戶(hù)期望做一個(gè)招聘網(wǎng)站中供HR輸入招聘信息的頁(yè)面哄啄,客戶(hù)期望可以錄入的信息包括崗位名稱(chēng)风范,工作地址咨跌,薪資范圍等等硼婿,求職者可以查看這些信息锌半。 對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)寇漫,會(huì)把所有的信息錄入到界面中進(jìn)行展示刊殉,很有可能要求每個(gè)信息都是必填的。但客戶(hù)的實(shí)際希望是某些信息(比如薪資范圍)是可以不錄入的州胳,對(duì)于不錄入的條目记焊,對(duì)于求職者也是不需要展示的。 像這樣的信息遍膜,如果通過(guò)測(cè)試用例的方式明確標(biāo)記出來(lái)碗硬,會(huì)極大的減少后期返工的成本。
客戶(hù)團(tuán)隊(duì)的測(cè)試用例一定要在開(kāi)發(fā)之前寫(xiě)恩尾,可以由客戶(hù)團(tuán)隊(duì)來(lái)完成或者客戶(hù)團(tuán)隊(duì)和開(kāi)發(fā)團(tuán)隊(duì)共同完成,在開(kāi)發(fā)之前就完成測(cè)試用例的做法惜索,也就是TDD所要求的工作方法。
2 開(kāi)發(fā)團(tuán)隊(duì)需要完成什么樣的測(cè)試呢巾兆?開(kāi)發(fā)團(tuán)隊(duì)更多的關(guān)注于功能的實(shí)現(xiàn)方法猎物,理所當(dāng)然的就是單元測(cè)試的編寫(xiě)了角塑。關(guān)于單元測(cè)試是在開(kāi)發(fā)之前寫(xiě)還是開(kāi)發(fā)之后寫(xiě)蔫磨,我個(gè)人的看法是需要分兩半,一半在開(kāi)發(fā)之前寫(xiě)堤如,一半在開(kāi)發(fā)之后寫(xiě)。?
開(kāi)發(fā)之前寫(xiě)的內(nèi)容是把客戶(hù)團(tuán)隊(duì)提供的測(cè)試用例轉(zhuǎn)換為可執(zhí)行的單元測(cè)試代碼窒朋,可以在此基礎(chǔ)上再增加一些設(shè)計(jì)方案中涉及到的細(xì)節(jié)的描寫(xiě)(需求在轉(zhuǎn)換為設(shè)計(jì)方案的過(guò)程中,會(huì)有一些更加細(xì)化的內(nèi)容侥猩,這些內(nèi)容對(duì)客戶(hù)來(lái)說(shuō)可以認(rèn)為是透明的)榔至。
開(kāi)發(fā)之后寫(xiě)的內(nèi)容是把在具體編碼過(guò)程中涉及到一些內(nèi)部邏輯的判斷進(jìn)行一些邊界測(cè)試或者健壯性測(cè)試欺劳,避免出現(xiàn)空指針異常等一些低級(jí)的錯(cuò)誤唧取。
之前在摩洛哥項(xiàng)目實(shí)踐過(guò)類(lèi)似的處理方式划提,整個(gè)流程是這樣的:一個(gè)需求過(guò)來(lái)之后枫弟,首先會(huì)召集設(shè)計(jì)鹏往,開(kāi)發(fā)淡诗,測(cè)試等相關(guān)的同事進(jìn)行需求評(píng)審,讓大家對(duì)需求的內(nèi)容有所了解伊履。 之后設(shè)計(jì)同事就可以開(kāi)始設(shè)計(jì)方案,測(cè)試同事就可以根據(jù)需求來(lái)編寫(xiě)測(cè)試用例了(一定要按照需求來(lái)寫(xiě)測(cè)試用例湾碎,而不是按照開(kāi)發(fā)同事給的邏輯來(lái)寫(xiě))。開(kāi)發(fā)同事按照測(cè)試同事提供的用例進(jìn)行自測(cè)(在自測(cè)的過(guò)程中會(huì)根據(jù)代碼的實(shí)際編寫(xiě)情況增加一些單元測(cè)試的場(chǎng)景并反饋給測(cè)試同事)介褥,自測(cè)完成后提交代碼座掘。 測(cè)試同事根據(jù)最終的測(cè)試用例進(jìn)行集成測(cè)試。
這個(gè)做法的好處是使測(cè)試同事有更多的精力來(lái)關(guān)注業(yè)務(wù)本身并設(shè)計(jì)更多的測(cè)試用例溢陪,開(kāi)發(fā)人員根據(jù)測(cè)試同事的用例完成自測(cè)之后萍虽,代碼質(zhì)量會(huì)有明顯的提高形真,返工率降低了很多杉编,從而釋放了測(cè)試同事的精力,促成了一個(gè)正向循環(huán)邓馒。
關(guān)于測(cè)試用例應(yīng)該寫(xiě)多少的問(wèn)題,書(shū)中給出的答復(fù)是:只要測(cè)試用例還可以繼續(xù)為故事增加價(jià)值和使其更清晰蛾坯,就應(yīng)該繼續(xù)編寫(xiě)。 所以這個(gè)問(wèn)題沒(méi)有一個(gè)可以量化的答案脉课,只能是在實(shí)際工作中進(jìn)行平衡救军,通過(guò)不同團(tuán)隊(duì)同事的協(xié)調(diào)溝通倘零,大家獲取一個(gè)可以接受的平衡值唱遭。
書(shū)中給了一個(gè)例子,比如要支持多種信用卡的支付拷泽,如visis,master等等俐东,其中一個(gè)場(chǎng)景是需要校驗(yàn)卡片的失效日期订晌,我們可以為visia寫(xiě)一個(gè)卡片失效的用例虏辫,但如果跟開(kāi)發(fā)人員溝通后發(fā)現(xiàn):所有卡片的失效日期都是用同一個(gè)函數(shù)校驗(yàn)的锈拨,那其實(shí)就沒(méi)有必要為其他的每種卡片增加這樣的用例砌庄。
暫時(shí)先寫(xiě)這么多了,除了功能測(cè)試和可交互測(cè)試外奕枢,我還對(duì)自動(dòng)化測(cè)試非常的趕興趣,這是一個(gè)可以極大提高版本質(zhì)量的手段缝彬,后面我們?cè)僬視r(shí)間慢慢聊吧萌焰。