• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-60  評(píng)論-98  文章-0  trackbacks-0

            不論是單元測(cè)試還是接口測(cè)試,熟悉程序內(nèi)部實(shí)現(xiàn)都是有用的——這種理解是有問(wèn)題的,我們目前所做的測(cè)試除了集成測(cè)試就是小規(guī)模的集成測(cè)試。

            現(xiàn)在測(cè)試組目前的所有測(cè)試都不是單元測(cè)試,因?yàn)閱卧獪y(cè)試最基本的單位是函數(shù),接口測(cè)試是一種測(cè)試手段,不是一種測(cè)試分類。

            編寫(xiě)測(cè)試用例跟程序?qū)崿F(xiàn)沒(méi)有必然聯(lián)系,比如按照測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的理論的測(cè)試用例編寫(xiě)是從函數(shù)接口都沒(méi)有的情況下開(kāi)始寫(xiě)的,此時(shí)接口都沒(méi)有,更別說(shuō)實(shí)現(xiàn)了,這樣就寫(xiě)不出測(cè)試用例來(lái)了么?
            編寫(xiě)測(cè)試用例關(guān)注什么,關(guān)注的是模塊的行為,也就是通過(guò)輸入看輸出,是否和設(shè)計(jì)文檔、接口頭文件中的描述一致。比如一個(gè)函數(shù)聲明為

            // 為公司的數(shù)據(jù)庫(kù)添加一位新員工的信息,包括工號(hào),姓名,性別
            // 約定工號(hào)始終為正數(shù),男同事為1打頭,女同事為0打頭
            // 姓名不得為空
            // 性別0代表女同事,1代表男同事
            // 添加成功則返回true,失敗返回false
            bool AddEmployee(int iNumber, String sName, int iSex);

            有了上述這些信息就可以開(kāi)始設(shè)計(jì)測(cè)試用例了,比如iNumber = 047788, sName = "li hong",  iSex = 1, 我們期待的返回值就是false,因?yàn)樾詣e和工號(hào)有沖突。如果測(cè)試返回true,則說(shuō)明軟件有bug。

            這是寫(xiě)一條測(cè)試用例的整個(gè)過(guò)程,其中并沒(méi)有設(shè)計(jì)到函數(shù)的內(nèi)部實(shí)現(xiàn)啊?

            我們現(xiàn)在的開(kāi)發(fā)離測(cè)試驅(qū)動(dòng)開(kāi)發(fā)還有很長(zhǎng)的路要走。
            我們能做的是什么呢?
            是回歸測(cè)試,開(kāi)發(fā)人員對(duì)模塊進(jìn)行回歸測(cè)試,帶著反饋工作,尤其是在添加新功能,修正bug的時(shí)候,有了回歸測(cè)試,就像有了雜技演員的身上有了保險(xiǎn)繩,可以放心地在高空中做各種動(dòng)作。

            現(xiàn)在該怎么做呢?
            我的想法是,測(cè)試框架的搭建是由開(kāi)發(fā)人員做好的,因?yàn)橐恍┙怦詈偷墓ぷ魇潜仨氶_(kāi)發(fā)組來(lái)做的(隨著技術(shù)的進(jìn)步,越來(lái)越多的解耦合方法被提出來(lái),想詳細(xì)了解這方面的東西,推薦看《修改代碼的藝術(shù)》)。具體來(lái)說(shuō),比如我要做一個(gè)模塊,現(xiàn)在已經(jīng)做到一半了,基本功能都做得差不多了,但是心里沒(méi)底,因?yàn)闆](méi)有QA。這是后就可以用DUnit來(lái)創(chuàng)建測(cè)試工程,寫(xiě)一些測(cè)試用例。但是,現(xiàn)在版本壓力大,沒(méi)有這么多時(shí)間把測(cè)試用例寫(xiě)全面,怎么辦?把測(cè)試框架給測(cè)試組,由測(cè)試組的同學(xué)來(lái)完善和豐富測(cè)試用例,因?yàn)闇y(cè)試組的同學(xué)比開(kāi)發(fā)組的同學(xué)有更深厚的測(cè)試用例設(shè)計(jì)基礎(chǔ),能寫(xiě)出更好的測(cè)試用例,同時(shí)也有助于提高測(cè)試組同學(xué)開(kāi)發(fā)水平,促進(jìn)TEST向QA轉(zhuǎn)變。另外,這也避免了開(kāi)發(fā)人員在編寫(xiě)測(cè)試用例時(shí)的思維定勢(shì),導(dǎo)致明顯的問(wèn)題也測(cè)不出來(lái)。

            這樣,隨著模塊的不斷完善,開(kāi)發(fā)人員把測(cè)試框架進(jìn)行補(bǔ)充,測(cè)試人員豐富測(cè)試用例。如此交替進(jìn)行。

            另外一個(gè)比較關(guān)鍵的問(wèn)題是開(kāi)發(fā)組測(cè)試組提供什么來(lái)進(jìn)行測(cè)試。提供源文件的方式是行不通的,目前采用比較多的是提供DLL,同時(shí)為了避免測(cè)試規(guī)模增長(zhǎng),采用了DLL注冊(cè)等一系列機(jī)制。
            我的想法是由開(kāi)發(fā)組提供模塊代碼的.obj文件和測(cè)試用例的源文件,這樣測(cè)試人員可以隨時(shí)構(gòu)建出自己需要運(yùn)行的版本,感覺(jué)上就像手里有模塊的源代碼一樣,只是不能進(jìn)去debug。

            所以說(shuō),現(xiàn)在先做一個(gè)模塊,解耦合、大框架、測(cè)試組編寫(xiě)測(cè)試用例,這一整套流程做通了,證明切實(shí)可行,方便有效。開(kāi)發(fā)組自然就樂(lè)于接受了,測(cè)試組可以在模塊的級(jí)別上進(jìn)行QA,而不是在發(fā)布版本之后才進(jìn)行集成測(cè)試。

            一點(diǎn)小想法,具體實(shí)現(xiàn),還需要各位都加把勁啊,呵呵。

            posted on 2008-03-05 13:16 創(chuàng)建更好的解決方案 閱讀(1895) 評(píng)論(7)  編輯 收藏 引用 所屬分類: TDD軟件測(cè)試理越辯越明

            評(píng)論:
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-05 22:09 | 魔域私服
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-06 17:04 | LOGOS
            嘗試在遺留代碼中使用單元測(cè)試有一陣子了,發(fā)現(xiàn)了以下一些問(wèn)題:
            項(xiàng)目壓力
            遺留代碼的代碼基非常差,解依賴消耗大量時(shí)間
            所選擇的遺留代碼也是當(dāng)前的開(kāi)發(fā)項(xiàng)目,變動(dòng)比較劇烈,以前寫(xiě)好通過(guò)的測(cè)試,在一段時(shí)間后,就因?yàn)橐蕾嚩×耍踔辆幾g不能通過(guò)  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-06 17:47 | 創(chuàng)建更好的解決方案
            大家處境都差不多,探索出一條好的工作流程,可以添加測(cè)試用例不再那樣痛苦,才是解決的辦法。靠一己之力,過(guò)于綿薄了吧。@LOGOS
              回復(fù)  更多評(píng)論
              
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-06 18:48 | LOGOS
            我當(dāng)然希望和同事共同努力,只是多數(shù)人對(duì)單元測(cè)試并沒(méi)有太多認(rèn)識(shí),而我現(xiàn)在也沒(méi)有信心能把這里面的概念向大家講清楚,還需要再做些摸索才行  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-07 10:51 | 創(chuàng)建更好的解決方案
            是啊,通過(guò)半個(gè)月的溝通,在測(cè)試組碼了兩個(gè)人,負(fù)責(zé)完善測(cè)試用例的,我先趟趟水,隨時(shí)交流進(jìn)展。@LOGOS
              回復(fù)  更多評(píng)論
              
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-11 14:19 | 創(chuàng)建更好的解決方案
            我的想法是由開(kāi)發(fā)組提供模塊代碼的.obj文件和測(cè)試用例的源文件,這樣測(cè)試人員可以隨時(shí)構(gòu)建出自己需要運(yùn)行的版本,感覺(jué)上就像手里有模塊的源代碼一樣,只是不能進(jìn)去debug。

            這種設(shè)想有點(diǎn)問(wèn)題。

            首先obj文件沒(méi)用,因?yàn)闇y(cè)試用例的源文件包含了接口文件和實(shí)現(xiàn)文件的頭文件,hoho,更改之后的compile會(huì)把大家都牽扯進(jìn)來(lái)。

            修改一下:通過(guò)dunit框架load dll并導(dǎo)出對(duì)象,供測(cè)試組調(diào)試測(cè)試用例之用。這樣的測(cè)試用例不僅可以用來(lái)測(cè)試dll,也可以用來(lái)做單元測(cè)試。  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于實(shí)戰(zhàn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的一點(diǎn)感想。 2008-03-18 18:02 | 創(chuàng)建更好的解決方案
            通過(guò)添加DLL/源碼測(cè)試開(kāi)關(guān),開(kāi)發(fā)人員和測(cè)試人員共用一套測(cè)試代碼,開(kāi)始走上靠譜的道路。@創(chuàng)建更好的解決方案
              回復(fù)  更多評(píng)論
              
            一本一本久久a久久综合精品蜜桃| 国产精品乱码久久久久久软件| 久久久一本精品99久久精品88| 欧美亚洲色综久久精品国产| 国产精品嫩草影院久久| 久久人人爽人人爽人人片AV东京热| 久久精品中文字幕无码绿巨人| 99久久国产综合精品网成人影院| 日韩久久久久中文字幕人妻| 久久精品国产亚洲av麻豆色欲| 国产精品美女久久久久av爽| 久久亚洲AV成人无码国产| 久久99精品久久久久久9蜜桃| 久久久久亚洲av无码专区喷水| 久久本道综合久久伊人| 精品久久久久久国产潘金莲 | 欧美国产成人久久精品| 精品国产一区二区三区久久久狼 | 一本色道久久综合| 久久九色综合九色99伊人| 国产91色综合久久免费| 无码精品久久久天天影视| 欧美午夜精品久久久久久浪潮| 老司机国内精品久久久久| 久久A级毛片免费观看| 热re99久久6国产精品免费| 99久久无色码中文字幕人妻| 亚洲精品国精品久久99热| 久久免费大片| 亚洲第一永久AV网站久久精品男人的天堂AV| 久久精品国产只有精品2020| 久久婷婷激情综合色综合俺也去| 久久精品国产色蜜蜜麻豆| 久久久久亚洲AV片无码下载蜜桃| 国产精品中文久久久久久久| 精品久久久一二三区| 三级三级久久三级久久| 色诱久久av| 97久久婷婷五月综合色d啪蜜芽| 久久精品桃花综合| 欧美精品国产综合久久|