軟件測(cè)試實(shí)驗(yàn)學(xué)習(xí)筆記系列6--圖形界面測(cè)試(GUI)
圖形用戶界面測(cè)試
界面是軟件和用戶交互的最直接的層面,界面決定了用戶對(duì)軟件的印象,GUI,設(shè)計(jì)良好GUI—輕松愉悅的感覺。Web應(yīng)用+網(wǎng)頁(yè)制作--->GUI設(shè)計(jì)的興起.
流行的界面風(fēng)格:多窗體風(fēng)格,單窗體風(fēng)格,資源管理器風(fēng)格
特性:易用性,規(guī)范性,幫助,合理性,美觀與協(xié)調(diào),菜單位置,獨(dú)特性,快捷方式的結(jié)合,安全性考慮,多窗口的應(yīng)用與系統(tǒng)資源。
GUI測(cè)試重點(diǎn)是正確性,易用性和視覺效果,文字檢查和拼寫檢查是GUI測(cè)試的重要環(huán)節(jié)。
用戶通過(guò)GUI拖動(dòng)鼠標(biāo),單擊按鈕等來(lái)驅(qū)動(dòng)軟件完成需要的功能,這個(gè)涉及到:
GUI輸入主要是由一系列的事件或行動(dòng)完成,擁有大量需要測(cè)試的狀態(tài),輸入和狀態(tài)轉(zhuǎn)移不僅僅與當(dāng)前的輸入事件有關(guān),而且還與以前的輸入事件相關(guān)
GUI軟件的輸入和事件的排列組合的數(shù)據(jù)非常巨大,執(zhí)行路徑比較多(想想100階乘和101階乘的區(qū)別)
GUI中包含了大量復(fù)雜的組件和控件,允許多個(gè)窗口被激活,彼此之間存在一些同步機(jī)制,窗口中每個(gè)對(duì)象可以影響和控制其他對(duì)象
GUI界面之間相互影響,相互依賴。--耦合度高
GUI軟件是基于事件和消息的。
GUI測(cè)試中的很多方法是重復(fù)而枯燥的。
除了考慮圖形對(duì)象測(cè)試的本身特性,系統(tǒng)工作流程的測(cè)試也是一個(gè)重點(diǎn),數(shù)據(jù)庫(kù)設(shè)計(jì),程序結(jié)構(gòu)設(shè)計(jì)最終要界面設(shè)計(jì)的
GUI測(cè)試的基本過(guò)程:1.執(zhí)行用戶操作,2.獲取檢測(cè)狀態(tài),3.對(duì)比驗(yàn)證內(nèi)容
基本原理:測(cè)試者在運(yùn)行應(yīng)用程序的同時(shí),把他的所有的動(dòng)作(鍵盤操作,鼠標(biāo)操作)捕獲或者錄制下來(lái),生成一個(gè)腳本文件,這個(gè)腳本文件以后可以被”回放“(playback),也就是按照上一次的所有執(zhí)行動(dòng)作重復(fù)執(zhí)行一遍,實(shí)現(xiàn)自動(dòng)運(yùn)行和測(cè)試。在實(shí)際的測(cè)試過(guò)程中,同一動(dòng)作的重復(fù)執(zhí)行意義不大,而是根據(jù)測(cè)試需求為其進(jìn)行一些必要的修改。
GUI自動(dòng)化測(cè)試工具的捕獲/錄制模式--->原型級(jí)的實(shí)現(xiàn)--->插入檢查點(diǎn),維護(hù)腳本--->編程修改,GUI自動(dòng)化測(cè)試:軟件規(guī)范過(guò)程,在錄制前設(shè)計(jì)好測(cè)試用例.
GUI自動(dòng)測(cè)試工具:開源的Java的GUI測(cè)試工具—Selenium。SWTBot用于SWT,基于Eclipse應(yīng)用的GUI測(cè)試工具,提供了能簡(jiǎn)化訪問SWT和Eclipse組件的API,基于Apache2許可協(xié)議。其測(cè)試運(yùn)行配置和JUnit非常的相似,測(cè)試方法的結(jié)構(gòu)也很相似
1.JavaGUI基礎(chǔ)類庫(kù)應(yīng)用測(cè)試
JavaGUI: SWT/JFace,Swing,AWT(Abstract WindowingToolkit)--->java.awt,JFC的一部分--->提供了JavaApplet,JavaApplicaton中可用的GUI中的基本組件,Swing自己繪制控件,調(diào)用本地圖形子系統(tǒng)中的底層例程,而不是依賴于OS的高層模塊。模仿原生系統(tǒng),純Java,輕量級(jí),大量運(yùn)用MVC模式的GUI工具包。SWT/JFace—Eclipse--高效的GUI程序
1.1JFCUnit單元測(cè)試工具的介紹
Xp測(cè)試驅(qū)動(dòng)開發(fā)觀念,單元測(cè)試技術(shù),Java-->JUnit+Ant,JUnit的局限性,HttpUnit--Web測(cè)試,GUI--JFCUnit。
JFCUnit是JUnit的擴(kuò)展框架,擴(kuò)展了針對(duì)SwingGUI的單元測(cè)試工具,提供的一些基本功能:
①捕獲取窗體/對(duì)話框的句柄
②在一個(gè)進(jìn)程的組件容器內(nèi),確定所需要的組件
③模擬觸發(fā)組件的事件
④用于GUI測(cè)試的多線程方法
JFCUnit從2.0開始,提供XML錄制和回放功能,允許使用者快速,自動(dòng)地生成/編輯用于驅(qū)動(dòng)測(cè)試的腳本。XMLAPI是公開的,可以定義自己的XML標(biāo)簽句柄。
1.2JFCUnit基本測(cè)試方法
思路:提供了很多方法,可以用來(lái)模擬許多本地應(yīng)該有傳統(tǒng)測(cè)試人員手工進(jìn)行的觸發(fā)事件:?jiǎn)螕舭粹o,在文本礦中輸入字符,數(shù)字,鼠標(biāo)雙擊事件,從而實(shí)現(xiàn)測(cè)試的自動(dòng)化。
兩種方式模擬交互:①Junit.Extensions.Jfcunit.JFCTestHelper的EevenQueue來(lái)激活事件隊(duì)列②使用Junit.Extensions.Jfcunit.RobotTestHelper來(lái)封裝java.awt.Robot
JFCUnit的測(cè)試用例類似于任何其他的JUnit測(cè)試用例。其主要不同在于它的
測(cè)試用例類應(yīng)繼承自基類Junit.Extensions.Jfcunit.JFCTestCase,而不是基
類:Junit.Framework.TestCase。
1.3 JFCunit環(huán)境的建立
JFCUnit—SourceForge.net—Eclipse插件安裝—配置路徑(jfcunit.jar,jakarta-regexp-1.2.jar{正則表達(dá)式j(luò)ava包,如果沒有這個(gè)包,jfc就會(huì)發(fā)生錯(cuò)誤})
1.4測(cè)試資源應(yīng)用
JFCunit是擴(kuò)展了Junit,具有很多屬于自己的測(cè)試資源。
1.4.1 JFCUnit核心函數(shù)的應(yīng)用方式
⑴setUp()和tearDown()
在junit框架中用于測(cè)試的初始化和結(jié)束測(cè)試,釋放資源
setUp()在測(cè)試方法調(diào)用前,負(fù)責(zé)初始化測(cè)試方法所需要的測(cè)試環(huán)境
tearDown()在每個(gè)測(cè)試方法被調(diào)用之后調(diào)用,負(fù)責(zé)撤銷測(cè)試環(huán)境
流程:測(cè)試開始-->setUp()-->testXXX-->tearDown()-->測(cè)試結(jié)束
⑵Find-Component
JFCUnit中對(duì)對(duì)象測(cè)試的基礎(chǔ)是捕獲測(cè)試對(duì)象的實(shí)例,關(guān)鍵是find...Component系列API的應(yīng)用.具體查找主要基于兩個(gè)方面,對(duì)象組件的”Name”數(shù)據(jù)和容器中的Index。
PublicComponent find(final Container cont,final int index){ returnfind(new Container[] {cont},index); } |
⑶assert函數(shù)
assertNull(Stringmessage,Object object); assertNotNull(Stringmessage,Object object); assertEquals(Stringmessage,Object expected,Object actual); assertTrue(Stringmessage,boolean condition); assertFalse(Stringmessage,boolean condition); assertSame(Stringmessage,Object expected,Object actual); assertNotSame(Stringmessage,Object expected,Object actual); |
⑷JFCTesthelper和TestHelper
JFCTesthelper繼承TestHelper中很多用于自動(dòng)畫界面操作的方法。
1.5 JFCUnit的使用--GUI類和實(shí)驗(yàn)
突然間發(fā)現(xiàn)自己做了很多的重復(fù)的工作,處在互聯(lián)網(wǎng)3.0的時(shí)代,我們應(yīng)該充分的利用網(wǎng)絡(luò),以下是我google的一些JFCUnit的文章,寫得還是相當(dāng)?shù)牟诲e(cuò)的。
JFCUnit實(shí)戰(zhàn):http://www.ltesting.net/ceshi/open/kydycsgj/2007/0525/5733.html
使用JFCUnit進(jìn)行GUI單元測(cè)試 :http://www.aygfsteel.com/wukaichun600/archive/2006/10/19/76026.html
以上僅僅是google后第1,2頁(yè)顯示的結(jié)果,google讓知識(shí)的獲取變得更加的簡(jiǎn)單了。知識(shí)的來(lái)源不再是僅僅局限于書本,通過(guò)搜索引擎(google,baidu)從Internet上獲取知識(shí)漸漸成為一個(gè)更為便捷有效的方式。這件事情既是機(jī)遇也是挑戰(zhàn)。
機(jī)遇:人類從未如此便捷的獲取知識(shí)過(guò),搜索引擎加速了信息的流通,使得我們可以更為方便的整合知識(shí)。
挑戰(zhàn):隨著可獲取的信息量的膨脹,在如此龐大的信息中識(shí)別出有效的信息成為了一個(gè)問題。此外,搜索引擎提供的普遍的知識(shí)原始的材料,如何處理和整合這些信息從而創(chuàng)造出更有價(jià)值的知識(shí)無(wú)疑將成為當(dāng)代知識(shí)分子的所面臨的挑戰(zhàn)。
1.6JFCUnitXML測(cè)試框架
JFCUnitXML是一個(gè)建立的XML框架之上的測(cè)試框架。XML框架支持Swing和非Swing的測(cè)試,框架圖示如下:
JFCUnitXML允許開發(fā)者編寫XML代碼來(lái)開發(fā)用于各種測(cè)試目的的測(cè)試集。錄制生成XML的方式使大多數(shù)的測(cè)試生成過(guò)程自動(dòng)化,可復(fù)用性高
1.3 JFCunit環(huán)境的建立
JFCUnit—SourceForge.net—Eclipse插件安裝—配置路徑(jfcunit.jar,jakarta-regexp-1.2.jar{正則表達(dá)式j(luò)ava包,如果沒有這個(gè)包,jfc就會(huì)發(fā)生錯(cuò)誤})
1.4測(cè)試資源應(yīng)用
JFCunit是擴(kuò)展了Junit,具有很多屬于自己的測(cè)試資源。
1.4.1 JFCUnit核心函數(shù)的應(yīng)用方式
⑴setUp()和tearDown()
在junit框架中用于測(cè)試的初始化和結(jié)束測(cè)試,釋放資源
setUp()在測(cè)試方法調(diào)用前,負(fù)責(zé)初始化測(cè)試方法所需要的測(cè)試環(huán)境
tearDown()在每個(gè)測(cè)試方法被調(diào)用之后調(diào)用,負(fù)責(zé)撤銷測(cè)試環(huán)境
流程:測(cè)試開始-->setUp()-->testXXX-->tearDown()-->測(cè)試結(jié)束
⑵Find-Component
JFCUnit中對(duì)對(duì)象測(cè)試的基礎(chǔ)是捕獲測(cè)試對(duì)象的實(shí)例,關(guān)鍵是find...Component系列API的應(yīng)用.具體查找主要基于兩個(gè)方面,對(duì)象組件的”Name”數(shù)據(jù)和容器中的Index。
PublicComponent find(final Container cont,final int index){ returnfind(new Container[] {cont},index); } |
⑶assert函數(shù)
assertNull(Stringmessage,Object object); assertNotNull(Stringmessage,Object object); assertEquals(Stringmessage,Object expected,Object actual); assertTrue(Stringmessage,boolean condition); assertFalse(Stringmessage,boolean condition); assertSame(Stringmessage,Object expected,Object actual); assertNotSame(Stringmessage,Object expected,Object actual); |
⑷JFCTesthelper和TestHelper
JFCTesthelper繼承TestHelper中很多用于自動(dòng)畫界面操作的方法。
1.5 JFCUnit的使用--GUI類和實(shí)驗(yàn)
突然間發(fā)現(xiàn)自己做了很多的重復(fù)的工作,處在互聯(lián)網(wǎng)3.0的時(shí)代,我們應(yīng)該充分的利用網(wǎng)絡(luò),以下是我google的一些JFCUnit的文章,寫得還是相當(dāng)?shù)牟诲e(cuò)的。
JFCUnit實(shí)戰(zhàn):http://www.ltesting.net/ceshi/open/kydycsgj/2007/0525/5733.html
使用JFCUnit進(jìn)行GUI單元測(cè)試 :http://www.aygfsteel.com/wukaichun600/archive/2006/10/19/76026.html
以上僅僅是google后第1,2頁(yè)顯示的結(jié)果,google讓知識(shí)的獲取變得更加的簡(jiǎn)單了。知識(shí)的來(lái)源不再是僅僅局限于書本,通過(guò)搜索引擎(google,baidu)從Internet上獲取知識(shí)漸漸成為一個(gè)更為便捷有效的方式。這件事情既是機(jī)遇也是挑戰(zhàn)。
機(jī)遇:人類從未如此便捷的獲取知識(shí)過(guò),搜索引擎加速了信息的流通,使得我們可以更為方便的整合知識(shí)。
挑戰(zhàn):隨著可獲取的信息量的膨脹,在如此龐大的信息中識(shí)別出有效的信息成為了一個(gè)問題。此外,搜索引擎提供的普遍的知識(shí)原始的材料,如何處理和整合這些信息從而創(chuàng)造出更有價(jià)值的知識(shí)無(wú)疑將成為當(dāng)代知識(shí)分子的所面臨的挑戰(zhàn)。
1.6JFCUnitXML測(cè)試框架
JFCUnitXML是一個(gè)建立的XML框架之上的測(cè)試框架。XML框架支持Swing和非Swing的測(cè)試,框架圖示如下:
JFCUnitXML允許開發(fā)者編寫XML代碼來(lái)開發(fā)用于各種測(cè)試目的的測(cè)試集。錄制生成XML的方式使大多數(shù)的測(cè)試生成過(guò)程自動(dòng)化,可復(fù)用性高
JFCUnitXML基礎(chǔ)
XML是一種基于SGML的標(biāo)記語(yǔ)言,成為網(wǎng)絡(luò)數(shù)據(jù)交互的強(qiáng)大工具。XML提供了定義和處理GUI測(cè)試的一個(gè)有效的方法,在JFCUnit類中開發(fā)出了XML接口,XML執(zhí)行接口。
XMLJunit框架:定義特性—可以在作用域范圍內(nèi)允許它在測(cè)試用例之間使用,定義在XML中的各個(gè)測(cè)試用例可以訪問定義在父類或者祖父類的特性,父級(jí)可以通過(guò)執(zhí)行特性名來(lái)隱式訪問,或者”../”父訪問路徑來(lái)顯式訪問。特性可以通過(guò)${name}訪問。程序可以在測(cè)試集和測(cè)試用例上定義,父類能夠在更高級(jí)層次上定義---可以生成程序庫(kù)。
兩個(gè)保留程序:setUp,tearDown—對(duì)應(yīng)TestCase.setUp|tearDown
擴(kuò)展XML接口,taghandler結(jié)合Java后端開發(fā)并寫入XML中,taghandler通過(guò)XML腳本定義進(jìn)行注冊(cè)/不注冊(cè),taghandler的概念:
Suitetags: 1.引入定義在其他XML文件中有關(guān)文件中的有關(guān)集的文件標(biāo)簽,2.程序標(biāo)簽定義3.在測(cè)試用例間共享特性標(biāo)簽
Suiteof Suites: 程序標(biāo)簽 |
特性標(biāo)簽
標(biāo)簽名對(duì)應(yīng)于相應(yīng)值
作用域
訪問文法:${name}syntax
定義:<propertyname=”debug” value=”true”/>
其他定義
向程序員傳遞數(shù)據(jù)
判定標(biāo)簽進(jìn)行分支跳轉(zhuǎn)
對(duì)各種標(biāo)簽進(jìn)行循環(huán)處理
Chose/When/Otherwise,Echo, Noop, Assert/Fail, Evaluate, Foreach, Indexof,Dump,
AssertHasFocus,AssertEnabled,AssertTableCellContains,AssertTextFieldContains
1.7 小節(jié)
JFCUnit XML:說(shuō)到底就是JFCUnit的一種高一個(gè)層次封裝,通過(guò)XML來(lái)描述測(cè)試用例,然后使用某中類型的代碼生成器將XML描述轉(zhuǎn)換為JFCUnit代碼,從而避免了手工Code。高層次的抽象帶來(lái)的好處就是可以屏蔽一些繁瑣的細(xì)節(jié),從而讓程序員專注更加重要的應(yīng)用上,而不是浪費(fèi)時(shí)間在底層細(xì)節(jié)上。這中思想在很多的方面被廣泛的應(yīng)用,操作系統(tǒng),編程語(yǔ)言,編譯系統(tǒng)等等。
2 Web頁(yè)面測(cè)試
Internet技術(shù)發(fā)展,Web系統(tǒng)變得越來(lái)越復(fù)雜,Web工程:測(cè)試,確認(rèn),驗(yàn)收。Web環(huán)境:瀏覽器平臺(tái)不兼容,網(wǎng)絡(luò)多樣化,應(yīng)用復(fù)雜等諸多特性。
Web測(cè)試分類:頁(yè)內(nèi)測(cè)試(IntraPageTest)和跨頁(yè)測(cè)試(InterPageTest)
頁(yè)內(nèi)測(cè)試的方法:人工走查,使用web頁(yè)面測(cè)試工具.
頁(yè)面測(cè)試準(zhǔn)則:直觀,一致,靈活,舒適
2.1web頁(yè)面測(cè)試工具
web頁(yè)面測(cè)試的兩種思路:1.瀏覽器測(cè)試2.協(xié)議測(cè)試(在Http上的JavaScript級(jí)測(cè)試,JavaScript偽協(xié)議, POST, WebService).在一些功能測(cè)試中,協(xié)議測(cè)試用的比較的多。
Web測(cè)試工具:
1.HttpUnit:HttpUnit是在JUnit之上構(gòu)建的測(cè)試框架,支持Web應(yīng)用的黑盒測(cè)試和in-container容器內(nèi)測(cè)試。作為功能測(cè)試工具,也可以用它驗(yàn)證軟件是否符合業(yè)務(wù)需求,以及是否在可視的級(jí)別符合預(yù)期的行為。HttpUnit的目的加強(qiáng)HTTP對(duì)Web應(yīng)用的訪問,支持的特性:狀態(tài)管理(cookies),提交請(qǐng)求,應(yīng)答解析(HTML解析),以及網(wǎng)絡(luò)爬蟲(webspider)。HttpUnit還有一個(gè)支持容器內(nèi)測(cè)試的類ServletUnit.JUnit提供的斷言功能和結(jié)果報(bào)告的基礎(chǔ)上,HttpUnit提供了一個(gè)非常有用的web應(yīng)用測(cè)試工具。www.httpunit.org.
2.JWebUnit:HttpUnit上創(chuàng)建的一個(gè)輔助工具包,減少測(cè)試web程序所要編寫的代碼,簡(jiǎn)單當(dāng)作HttpUnit的宏程序庫(kù),提供到HttpUnit代碼段的快速方式,簡(jiǎn)化web程序測(cè)試中的大多數(shù)行為,HttpUnit的底層接口可以讓測(cè)試人員定制很多事情,JWebUnit對(duì)代碼有更好的控制。jwebunit.sourceforge.net
3.StrutsTestCase:是為了測(cè)試Struts應(yīng)用而在Junit基礎(chǔ)上創(chuàng)建的測(cè)試框架,Structs(MVC模式)使web程序容器間的功能測(cè)試和單元測(cè)試變得更復(fù)雜了。Struts使web程序容器之間(in-container)的功能測(cè)試和單元測(cè)試變得復(fù)雜了,Struts處于servlet容器和程序之間,HttpUnit獨(dú)立于程序和容器之間.StrutsTestCase轉(zhuǎn)為Struts程序的容器間測(cè)試而設(shè)計(jì)的.strutstestcase.sourceforge.net
4.Selenium:用于web應(yīng)用程序測(cè)試的工具,將核心組件插入到瀏覽器中,整個(gè)測(cè)試直接在瀏覽器中運(yùn)行,如同真正的用戶在操作一樣,所有的測(cè)試都是可見的。支持的瀏覽器:IE,Mozilla,Firefox等.測(cè)試兼容性,測(cè)試系統(tǒng)功能。seleniumhq.org/download
5.HtmlUnit:具有瀏覽器基本功能的Java組件,HtmlUnit是Junit的擴(kuò)展測(cè)試框架之一。支持HTML,提供API
2.2HttpUnit
工作原理:模擬瀏覽器行為,處理頁(yè)面幀(frames),cookies,頁(yè)面重定向(redirects)等,通過(guò)HttpUnit提供的功能,可以和服務(wù)器進(jìn)行信息交互,將返回的網(wǎng)頁(yè)內(nèi)容作為普通文本,XMLDOM對(duì)象或者鏈接,頁(yè)面框架,圖像,表單,表格等集合。
核心組件:
發(fā)送請(qǐng)求并接受響應(yīng)的web客戶機(jī)
分析并驗(yàn)證響應(yīng)內(nèi)容的方法集
HttpUnit—功能測(cè)試--極限編程(XP)中起到重要的作用
商業(yè)的web工具都是通過(guò)錄制回放實(shí)現(xiàn)的,HttpUnit關(guān)注的重點(diǎn)是控件的內(nèi)容,而不是控件的外在表現(xiàn)形式.HttpUnit無(wú)GUI,開源,API簡(jiǎn)單性—靈活性和強(qiáng)大
2.2 HttpUnit的使用
google一下可以找到很多關(guān)于這個(gè)的,個(gè)人決定不再增加冗余信息。列舉一二個(gè)人覺得比較好的。
使用HttpUnit進(jìn)行集成測(cè)試 :http://www.aygfsteel.com/relax/archive/2005/01/27/743.html
HttpUnit基礎(chǔ)教程:http://wenku.baidu.com/view/ed3be4f77c1cfad6195fa7d0.html
除此以外,不要忘記HttpUnit官方網(wǎng)站以及研究HttpUnit源代碼這樣的方法
2.3JWebUnit
JwebUnit是基于Java的用于測(cè)試網(wǎng)絡(luò)程序的框架,架構(gòu)在HttpUnit之上----即JWebUnit以HttpUnit和JUnit單元測(cè)試框架為基礎(chǔ),適合做Web應(yīng)用的驗(yàn)收測(cè)試。JWeb是HttpUnit的高層封裝,提供訪問Web應(yīng)用程序的高級(jí)API,組合一組斷言。JWebUnit是以jar文件形式提供的,方便使用,JWebUnit輕量級(jí)集成HtmlUnit和Selenium。
2.3.1 環(huán)境建立:sourceforge.net/projects/jwebunit --說(shuō)穿了,就是一些jar包,在使用JWebUnit的時(shí)候?qū)⑵涮砑拥綐?gòu)建路徑中
2.3.2 JWebUnit應(yīng)用方法
依然google,不增加無(wú)用信息:
JWebUnit官方地址:http://sourceforge.net/projects/jwebunit/?source=directory
JWebUnit For Web Regression Tests: http://www.intertech.com/Blog/jwebunit-for-web-regression-tests/
備注:國(guó)外的人寫的技術(shù)博客含金量還相當(dāng)?shù)母?一方面人家沒有語(yǔ)言障礙,二不像國(guó)內(nèi)這么浮躁(社會(huì)環(huán)境所致)。雖然有點(diǎn)語(yǔ)言的障礙,但是如果想從事IT這一行的話,英語(yǔ)就是一項(xiàng)必不可缺的的技能:因?yàn)樽钚碌募夹g(shù)總是用英文寫的或者最早轉(zhuǎn)換的語(yǔ)言就是英文。而且國(guó)內(nèi)的技術(shù)水平落后國(guó)際有5到10年的差距,當(dāng)然這個(gè)數(shù)據(jù)不是一陳不變的,但是學(xué)習(xí)并閱讀英文資料總是有好處的,當(dāng)然剛一開始時(shí)可能會(huì)不太適應(yīng),但是過(guò)一段時(shí)間就好了。至少個(gè)人是這么認(rèn)為的。
參考文獻(xiàn):
[1]軟件測(cè)試實(shí)驗(yàn)指導(dǎo)教程/蔡建平, 清華大學(xué)出版社, 2009.11
相關(guān)文章:
軟件測(cè)試實(shí)驗(yàn)學(xué)習(xí)筆記系列5-單元覆蓋測(cè)試
posted on 2013-08-12 10:18 順其自然EVO 閱讀(850) 評(píng)論(0) 編輯 收藏