前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的單元測試方法主題范文,僅供參考,歡迎閱讀并收藏。
關(guān)鍵詞:氨氮;在線監(jiān)測儀;使用;原理;方法
目前,水質(zhì)監(jiān)測儀器的發(fā)展前景仍處在一個未知的卻極其可觀的發(fā)展趨勢當(dāng)中,在北美等國都陸續(xù)設(shè)立了一定規(guī)模的專業(yè)生產(chǎn)企業(yè)。水質(zhì)在線監(jiān)測系統(tǒng)之所以得到世界各國的青睞,緣于其具有自動轉(zhuǎn)換量程,自動在線監(jiān)測、并能夠完成自動運行、自動校正等對內(nèi)部數(shù)據(jù)的管理功能,對測量值與測量時間的實時掌控有著較大的裨益。在日常的使用過程當(dāng)中,應(yīng)做好定期維護(hù),了解其使用原理與及方法,保證其正常運行,從而才能保證監(jiān)測的數(shù)據(jù)更為準(zhǔn)確精密,更好的完成對水質(zhì)環(huán)境的監(jiān)控管理,下面我們一起來進(jìn)行詳細(xì)探討。
一.對氨氮在線監(jiān)測儀器的認(rèn)識
氨氮(NH3-N)在線監(jiān)測儀器是基于酸堿指示劑的變色原理的應(yīng)用和分析從而測量和判斷所檢驗的水樣當(dāng)中的NH3-N的濃度,在以往的監(jiān)測方法之上進(jìn)行改良,克服了采用電極法儀器的維修率頻繁的缺憾,同時也解決了在采用納氏試劑進(jìn)行監(jiān)測之時卻同時對水質(zhì)帶來的毒害問題。
一套完整的氨氮(NH3-N)在線監(jiān)測儀器具體應(yīng)當(dāng)具有監(jiān)測主機(jī)(水中NH3-N含量的自動監(jiān)測的重心)、流量綜合儀(包括超聲波流量計與巴歇爾流量槽),除此之外還有傳輸設(shè)置(常見的傳輸設(shè)置有PSIN有線網(wǎng)絡(luò)與及GPRS無線網(wǎng)絡(luò)兩種,主要負(fù)責(zé)數(shù)據(jù)的輸入與輸出)[1]。
近幾年來,氨氮(NH3-N)在線檢測儀器較以往來看得到極其顯著的改善,在進(jìn)行污染源與水質(zhì)環(huán)境的檢測管控等方面都作出了極大的貢獻(xiàn),但是其主要的生產(chǎn)和供應(yīng)商卻都還主要集中在歐美等國家,這也直接導(dǎo)致了我們在進(jìn)行水質(zhì)監(jiān)控時若需要一臺具有較高質(zhì)量保證的氨氮在線檢測儀器往往需要從國外購置,這樣一來所需耗費的成本和運行費用,這樣的問題也是我們在采用氨氮在線檢測儀器的最大制約因素。
二、氨氮在線監(jiān)測儀器的使用原理和方法
氨氮(NH3-N)在線監(jiān)測儀器是基于計算機(jī)技術(shù)與實時監(jiān)控技術(shù)的綜合應(yīng)用與結(jié)合起來的,實現(xiàn)了對水質(zhì)監(jiān)控全程的自動化,在進(jìn)行化工企業(yè)生產(chǎn)過程的污水排放與及城市生活的污水排放的實時監(jiān)控起到了較明顯的作用,獲取水體重NH3-N的濃度與污染指數(shù)。下面我們首先來一起探討氨氮(NH3-N)在線監(jiān)測儀器的使用原理。就目前我國環(huán)境監(jiān)測情況來看,氨氮(NH3-N)在線檢測儀器的原理可以歸結(jié)為氨氣敏電法與及納氏試劑法(也稱分光光度法)。
納氏試劑法與檢測水質(zhì)中銨含量時的測定方法(GB7479-1987)近似,在410-424mm的范圍限制內(nèi)對水樣中的氨與碘化鉀汞進(jìn)行反應(yīng),所生成的化合物呈現(xiàn)為淡紅色膠狀,采取此類方法的儀表一般都配備有水樣過濾裝置,并對其檢測期限做了明確的規(guī)定:0.1mg/L測定周期1H。
多年來較常采用的方法――氨氣敏電法,我們根據(jù)其檢測原理做了如圖示1所示的實驗,通過實驗我們了解,氨氮監(jiān)測分為五個過程,即:氨的轉(zhuǎn)化、氨的溢出、氨的擴(kuò)散、填充液受到氨的影響而發(fā)生改變與及PH值電極的監(jiān)測與其數(shù)據(jù)的轉(zhuǎn)化這五個過程[2]。
圖示1 氨氣敏電極檢測原理實驗
我們知道,通常氨氮以兩種以NH3和NH4+這兩種主要形式存在于水中,并以一定的量來保證這二者達(dá)到平衡,而這個量則取決于水的PH值,水的酸性濃度越大H+則相對較高,轉(zhuǎn)化為NH4+的量也相對較多,我們可將其原理表示為以下兩個式子:
注:①為水中NH3和NH4+動態(tài)平衡關(guān)系式,②式為著二者相對量的平衡常數(shù)計算式,Ks為所測定水中氨達(dá)到平衡時的常數(shù)。
通過實驗研究與分析之后我們了解到,要得出水中NH3:NH4+的值,首先應(yīng)當(dāng)對水的PH值進(jìn)行測定,PH值越大,NH3轉(zhuǎn)化為NH4+的量也就越大,并且水溫的高低也將對其轉(zhuǎn)化速率產(chǎn)生影響,PH值得變化也是是影響氨的溢出和透過膜的關(guān)鍵因素,然而,在檢測時,為了保證儀表穩(wěn)定,應(yīng)首先保證緩沖液當(dāng)中的NaOH與EDTA二鈉鹽達(dá)到足夠高的溶度當(dāng)中,當(dāng)樣品水的表面包含活性劑類的物質(zhì)時,應(yīng)首先對水樣進(jìn)行預(yù)處理[3]。
三、小結(jié)
氨氮在線檢查儀器的目前雖然已得到了較為廣泛的應(yīng)用,但從其設(shè)備成本投入費用來看仍然是制約其在水質(zhì)監(jiān)測當(dāng)中的普及程度,在通過分光光度法與及氨氣敏電極法這兩種方法的認(rèn)識與研究之后,我們進(jìn)一步對目前進(jìn)行水質(zhì)環(huán)境污染時所采取的監(jiān)控技術(shù)與設(shè)備有了更深入的了解,就目前較為普遍的氨氣敏電極監(jiān)測方法來看,離子數(shù)與及溶解性物資的數(shù)量、表面活性劑物質(zhì)與及水樣的PH值偏向都是檢測當(dāng)中存在的主要影響因素,如何能夠更好的掌握這一系列因素所造成的影響規(guī)律,是今后采取氨氮在線儀器進(jìn)行水質(zhì)檢測工作的中心,也是水質(zhì)監(jiān)測工作的重要指標(biāo)。
參考文獻(xiàn):
[1] 陳濤;劉永波;袁紅明;;納氏試劑比色法測定污水中氨氮的方法[J];中國新技術(shù)新產(chǎn)品;2010(03):301.
[2] 王樂華;劉鳳芝;;分光光度法測定生活飲用水中Cr~(6+)的不確定度評定[J];職業(yè)與健康;2010(02):67.
關(guān)鍵詞:JUnit 測試用例 自動化 質(zhì)量
中圖分類號:TP311.52
一、JUnit概述
Junit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Erich Gamma是GOF之一,Kent Beck則在Windows XP中有重要的貢獻(xiàn)。JUnit是一個開源的java測試框架,它是XUnit測試體系架構(gòu)的一種實現(xiàn),XUnit是專門進(jìn)行單元測試的程序框架。
JUnit具有的一些特點有:
1. 提供的API可以幫助寫出測試結(jié)果明確的可重用的單元測試用例。
2. 使用JUnit可以快速的編寫測試并檢測程序代碼,并逐步隨著程序代碼的增長增加測試。測試可以很好的檢查程序代碼是否完整。
3. Junit測試可以自動執(zhí)行并且檢查結(jié)果。當(dāng)執(zhí)行測試時,將獲得簡單且立即的回饋。比如測試是通過或失敗,而不再需要人工檢查測試結(jié)果的報告。
4. Junit可以合成一個有層次的測試系列架構(gòu),Junit的合成行為允許組合多個測試并自動的回歸,從頭到尾測試整個測試系列,也可以執(zhí)行測試系統(tǒng)層級架構(gòu)中任何一層的測試。
5. 開發(fā)測試成本低,超輕量級并且使用簡單。
6. 整個框架設(shè)計良好,易擴(kuò)展。提供了單元測試用例成批運行的功能。
二、Junit中常用的接口和類
1. Assert:當(dāng)條件成立時候assert方法保持沉默,但若條件不成立就拋出異常。
2. TestResult:包含了測試中發(fā)生的所有錯誤或失敗。
3. TestListener: 測試中若產(chǎn)生(開始,結(jié)束,錯誤,失?。ㄖ猅estListener。
4. TestCase:定義了可以用于運行多項測試的環(huán)境(實現(xiàn)了Test接口)。
5. TestSuite:運行一組test case(他們可能包含其他 test suite),它是Test的組合(實現(xiàn)了TestSuite)。
6. BaseTestRunner:用來啟動測試的用戶界面,BaseTestRunner是所有test runner的超類。
三、JUnit單元測試框架
單元級測試在面向?qū)ο蟮拈_發(fā)中變得越來越重要,而一個簡明易學(xué)、適用廣泛、高效穩(wěn)定的單元級測試框架對成功的實施測試有著至關(guān)重要的作用。在java編程環(huán)境中,Junit Framework是一個已經(jīng)被多數(shù)java程序員采用和實證的優(yōu)秀的測試框架。開發(fā)人員只需要按照J(rèn)unit的約定編寫測試代碼,就可以對自己要測試的代碼進(jìn)行測試。如下圖所示:
1. junit.framework.Test:測試接口。
2. junit.framework.TestCase:測試用例類,業(yè)務(wù)類的測試用例類只需要承繼這個TestCase,根據(jù)情況編寫若干個public void testXxx()方法,在方法中通過assertYyy()定制若干測試規(guī)則就可以了。
3. junit.framework.TestSuite:測試套件類,它可以將多個測試用例類捆綁在一起運行,也可以捆綁另一個測試套件。
四、Junit測試過程
1. TestCase實例被運行時,依照以下步驟運行:
1) 創(chuàng)建測試用例的實例。
2) 調(diào)用setUp()方法,執(zhí)行一些初始化工作。
3) 運行testXxx()測試方法。
4) 調(diào)用tearDown()方法,執(zhí)行銷毀對象的工作
2. JUnit會以以下順序執(zhí)行測試
try {
HelloTest test = new HelloTest(); // 建立測試類實例
test.setUp(); // 初始化測試環(huán)境
test.testAAA(); // 測試某個方法
test.tearDown(); // 清理資源
}
catch…
3. 如果測試用例類中有多個testXxx()方法,且它們都需要使用到相同的一組對象,我們可以在setUp()中實例化這組對象,并在tearDown()中銷毀它們。
1) 創(chuàng)建TestCase類的子類。
2) 在子類中聲明若干個測試所用的對象。
3) 覆蓋setUp()方法,在方法中實例化這些對象。
4) 覆蓋tearDown()方法,釋放這些對象的資源。
五、使用Ant批量運行Junit單元測試用例
Ant是一個類似make的、用java實現(xiàn)的構(gòu)建工具,項目的構(gòu)建、包裝和過程中幾乎每一件事都可以由Ant的任務(wù)來處理。Ant憑借出色的易用性、平臺無關(guān)性以及對項目自動測試和自動部署的支持,已成為眾多項目構(gòu)建過程中不可或缺的獨立工具,并已經(jīng)成為事實上的標(biāo)準(zhǔn)。
隨著項目的進(jìn)展和項目的規(guī)模在不斷的膨脹,為了保證項目的質(zhì)量,有計劃的執(zhí)行全面的單元測試是非常有必要的。利用Ant集成Junit可以通過配置批量運行所指定的測試用例并生成測試報告,可以讓開發(fā)人員及時發(fā)現(xiàn)代碼中所隱藏的bug,及時進(jìn)行修改,極大的提高工作效率,從某種意義上做到持續(xù)集成。
Ant 內(nèi)置了對 JUnit 的支持,它提供了兩個 Task:junit 和 junitreport,分別用于執(zhí)行 JUnit 單元測試和生成測試結(jié)果報告。使用這兩個 Task 編寫構(gòu)建腳本,可以很簡單的完成批量運行單元測試并生成測試報告的任務(wù)。
首先把junit的包加載到ant的編譯目錄下,然后編寫 Ant 構(gòu)建腳本 build.xml。接下來把此build.xml文件放到工程的根目錄下,修改test屬性的值為我們要運行的單元測試用例的包路徑名,如果為空默認(rèn)運行工程所有的單元測試,在Eclipse下打開此build.xml文件,在右邊的outline視圖下右擊ant的junit任務(wù),選擇Run As Ant Build,就可以運行此ant文件的junit任務(wù),然后我們就可以在Eclipse的控制臺上看到Ant任務(wù)的執(zhí)行信息,任務(wù)執(zhí)行完后,就會在工程的report目錄下的“framework-${DSTAMP}-${TSTAMP}”臨時文件夾下生成html類型的測試報告。
六、總結(jié)
經(jīng)濟(jì)或社會效益:
第一個是簡化測試的編寫,這種簡化包括測試框架的學(xué)習(xí)和實際測試單元的編寫;第二個是使測試單元保持持久性;第三個則是可以利用既有的測試來編寫相關(guān)的測試。
參考文獻(xiàn)
本文就如何運用反饋——矯正手段提高教學(xué)目標(biāo)效果談幾點看法。
一、在課前通過診斷性測試,獲得學(xué)生在學(xué)習(xí)新內(nèi)容前的知識反饋,為上新課做好準(zhǔn)備。
診斷性測試一般安排在新學(xué)期或新開課前進(jìn)行,測試時間一般5~10分鐘,測試應(yīng)側(cè)重于考查學(xué)習(xí)新課所需要掌握的基本知識和基本技能。例如,在上動物模擬人體手術(shù)實驗課前,先測試學(xué)生關(guān)于無菌技術(shù)和無菌原則方面的知識并補償,由此提高他們的學(xué)習(xí)外科手術(shù)的前提能力,最終提高實驗?zāi)繕?biāo)。
二、在課前或課后,通過形成性測試了解學(xué)生的達(dá)標(biāo)情況,及時查漏補缺。
1、編制形成性測試題,包括課堂測試題和單元測試題,要確保適合各自的特點。
(1)課堂測試題,要適合在課堂教學(xué)中進(jìn)行測試。課堂教學(xué)時間一般以二學(xué)時為單位,共80分鐘。其中用以進(jìn)行課堂測試及反饋矯正的時間通常只有5分鐘,故編制此類試題要突出重點,考慮課堂操作的可行性,試題量不能過多。例如,在“復(fù)蘇”一章編制的課堂測試題為:①快速診斷心臟驟停的方法;②心肺初期復(fù)蘇的ABC步驟;③心臟按壓有效的標(biāo)志是什么;④心肺復(fù)蘇有效的指標(biāo)是什么等。這些題中包括了本章的重要知識點,學(xué)生掌握后,在遇到心臟驟停病人時就會懂得如何去診斷和處理,而且試題量適中,便于在課堂上進(jìn)行測試和矯正。
(2)單元測試題,即教師根據(jù)教學(xué)的情況,一般按章節(jié)劃分為一個教學(xué)單元,每學(xué)完一個單元后進(jìn)行一次單元測試,以評價學(xué)生的單元達(dá)標(biāo)情況。單元達(dá)標(biāo)測試覆蓋的目標(biāo)范圍較大,而且每一目標(biāo)都應(yīng)有相應(yīng)的檢測題,測試時間為20~30分鐘,測試內(nèi)容多時間少,因此編制此類題主張多用選擇題和判斷題,少用填空題、名詞解釋和問答題,以方便學(xué)生答題,做到既能檢測目標(biāo)又不影響課堂授課。此處,通過定期的單元測試,又能促使學(xué)生經(jīng)常系統(tǒng)地進(jìn)行復(fù)習(xí),有利于知識的鞏固和強(qiáng)化。
2、編制平行性測試題,此類試題適用于對矯正生的檢測。
即用以檢測單元測試中的未達(dá)標(biāo)者,在經(jīng)過補救矯正后是否已達(dá)標(biāo)。編制此類別試題應(yīng)與單元形成性測試題是同質(zhì)不同形的,即用不同的試題形式去檢測同一目標(biāo)。例如,檢測“補鉀原則”這一目標(biāo)時,如果在單元形成測試中采用選擇形式,則在平行性測試中可采用判斷或填空題的形式進(jìn)行檢測。
三、反饋——矯正是對經(jīng)測試反饋的未達(dá)標(biāo)者及時補救矯正,使其達(dá)標(biāo)。
1、課堂反饋矯正。
課堂測試反饋一般采用提問、回答、接力填空等形式,其中最常用的是課堂提問的形式,而課堂提問的形式主要適合于對個別學(xué)生,這與目標(biāo)教學(xué)要面向全體學(xué)生的宗旨是矛盾的,為了解決這一矛盾,在提問時應(yīng)使所提問的學(xué)生具有代表性和隨機(jī)性。所謂代表性是指所提問的學(xué)生能代表全班學(xué)生中的某一部分,如優(yōu)生、中等生或差生。要做到有計劃有目的地進(jìn)行提問檢測,尤其對差生要多進(jìn)行檢測矯正。隨機(jī)性主要是針對課堂教學(xué)的具體情況,在全班同學(xué)中隨機(jī)地進(jìn)行提問。筆者曾在上“急性闌尾炎”一節(jié)時,發(fā)現(xiàn)一位同學(xué)在上課時開小差,當(dāng)時立即對她進(jìn)行提問檢測:“急性闌尾炎最有特征的癥狀是什么?”她回答是“腹痛”。這樣通過提問,可及時地使她調(diào)整思維、融入課堂。雖然她答得不全對,但是通過提問既能起到對她及時補救矯正的效果,同時也能引起其他同學(xué)的重視(尤其是對提問的這一問題的重視),結(jié)果在單元形成測試中全班同學(xué)都能答對這一題。這樣通過抓典型、抓代表,達(dá)到“牽一發(fā)而動全身”的效果,既能及時糾正課堂上出現(xiàn)的個別問題,又能調(diào)動全班同學(xué)的課堂積極性和主動性,因而能有效地提高教學(xué)目標(biāo)達(dá)成度。
關(guān)鍵詞:軟件測試;方法;技術(shù)
試
白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試。它是按照程序內(nèi)部的邏輯結(jié)構(gòu)測試程序,主要關(guān)注代碼是否能夠正確執(zhí)行。通過白盒測試可以檢測出產(chǎn)品內(nèi)部動作是否按照設(shè)計規(guī)格說明書的規(guī)定正常工作,并檢驗程序中的每條通路是否都能按預(yù)定要求正確工作。白盒測試是把測試對象看作一個透明的盒子,軟件測試人員能夠依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)等相關(guān)信息,設(shè)計或選擇測試用例,對程序進(jìn)行測試。通過在不同的節(jié)點檢查程序的狀態(tài),以保證實際的狀態(tài)和預(yù)期的狀態(tài)一致。
3.灰盒測試
灰盒測試,是介于白盒測試與黑盒測試之間的??梢赃@樣理解,灰盒測試關(guān)注輸出對于輸入的正確性,同時也關(guān)注內(nèi)部表現(xiàn),但這種關(guān)注不像白那樣詳細(xì)、完整,只是通過一些表征性的現(xiàn)象、事件、標(biāo)志來判斷內(nèi)部的運行狀態(tài),有時候輸出是正確的,但內(nèi)部其實已經(jīng)錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要采取這樣的一種灰盒的方法。
二、 軟件測試技術(shù)的策略
軟件測試并不單是軟件開發(fā)完成后的一個獨立的過程,而是貫穿于整個軟件開發(fā)的過程,根據(jù)軟件開發(fā)的周期不同,可以將軟件測試分為:單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試和驗收測試。
1.單元測試(Unit Testing)
單元測試是在軟件開發(fā)過程中能夠進(jìn)行的最基礎(chǔ)的測試活動,在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發(fā)過程中使用,單元測試必須是可重復(fù)的,無論是在軟件修改,或是移植到新的運行環(huán)境的過程中。因此,所有的測試都必須在整個軟件系統(tǒng)的生命周期中進(jìn)行維護(hù)。
2.集成測試(Integrated Testing)
集成測試,也叫組裝測試或聯(lián)合測試。在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測試。實踐表明,一些模塊雖然能夠單獨地工作,但并不能保證連接起來也能正常的工作。程序在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實現(xiàn)。因此,單元測試后,有必要進(jìn)行集成測試,發(fā)現(xiàn)并排除在模塊連接中可能發(fā)生的問題,最終構(gòu)成要求的軟件子系統(tǒng)或系統(tǒng)。對子系統(tǒng),集成測試也叫部件測試。
3.確認(rèn)測試(Validation Testing)
確認(rèn)測試又稱有效性測試。有效性測試是在模擬的環(huán)境下,運用黑盒測試的方法,驗證被測軟件是否能夠按照需求規(guī)格說明書中所要求的工作。任務(wù)是驗證軟件的功能和性能及其他特性是否與用戶的要求一致。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定,它包含的信息就是軟件確認(rèn)測試的基礎(chǔ)。確認(rèn)測試的目的是向未來的用戶表明系統(tǒng)能夠像預(yù)定要求那樣工作。經(jīng)集成測試后,已經(jīng)按照設(shè)計把所有的模塊組裝成一個完整的軟件系統(tǒng),接口錯誤也已經(jīng)基本排除了,接著就應(yīng)該進(jìn)一步驗證軟件的有效性,這就是確認(rèn)測試的任務(wù),即軟件的功能和性能如同用戶所合理期待的那樣。
4.系統(tǒng)測試(System Testing)
系統(tǒng)測試的任務(wù)是盡可能徹底地檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)“做得怎樣”。這階段又可分為三個步驟:模塊測試,測試每個模塊的程序是否有錯誤;組裝測試,測試模塊之間的接口是否正確;確認(rèn)測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。該階段結(jié)束應(yīng)交付測試報告,說明測試數(shù)據(jù)的選擇,測試用例以及測試結(jié)果是否符合預(yù)期結(jié)果。
三、軟件測試未來發(fā)展方向
目前,軟件測試存在4個發(fā)展方向。
1.驗證技術(shù)
驗證的目的在于證明在軟件生命期各個階段,以及階段間的邏輯協(xié)調(diào)性和正確性。驗證技術(shù)目前僅適用于特殊用途的小程序。
2.靜態(tài)測試
正逐步地從代碼的靜態(tài)測試往高層開發(fā)產(chǎn)品的靜態(tài)測試發(fā)展。
3.測試用例的選擇
什么樣的測試用例是好的測試用例?可以從4個特性描述測試用例的質(zhì)量,即有效性、仿效性、經(jīng)濟(jì)性和修改性。
4.測試技術(shù)的自動化
這是一個最新的發(fā)展方向。自動測試也是一門技術(shù),但與測試技術(shù)存在很大的區(qū)別。
參考文獻(xiàn):
關(guān)鍵詞:面向?qū)ο?;軟件測試;面向?qū)ο鬁y試模型;測試過程
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)35-2425-03
Research of Object-Oriented Test Techniques
ZHOU Juan
(Handan Foundry, Handan 056003, China)
Abstract: The paper describes how to test object-oriented analysis, object-oriented design,object-oriented programming, and the process of object-oriented testing, while taking the object-oriented software development model in software engineering as reference. According to the steps of unit testing, integrate testing. system testing, the testing strategies of object-oriented unit test , object-oriented integrate test , object-oriented system test were discussed in detail , and some interrelated problems are discussed.
Key words: object-oriented; software testing; object-oriented testing model; testing process
1 引言
從1982年在美國北卡羅來納大學(xué)召開首次軟件測試的正式技術(shù)會議至今,軟件測試?yán)碚撗杆侔l(fā)展,并相應(yīng)出現(xiàn)了各種軟件測試方法,使軟件測試技術(shù)得到極大的提高,軟件測試成為軟件工程方法中保證軟件質(zhì)量的最重要手段。
傳統(tǒng)軟件測試技術(shù)是面向過程的測試,是從輸入/處理/輸出的角度檢驗一個函數(shù)或過程能否正確工作,而面向?qū)ο筌浖y試是針對相互協(xié)作而又彼此獨立的對象的測試。面向?qū)ο筌浖_發(fā)的測試目標(biāo)與傳統(tǒng)的軟件開發(fā)方法相同,都是為了確保軟件能正確地和一致地解決待解決的問題,但由于過程性測試方法沒有考慮到面向?qū)ο筌浖y試所要涉及的類、繼承和多態(tài)性,因此這兩者是有很大的不同,因而有必要對其進(jìn)行深入的研究。
2 面向?qū)ο鬁y試模型
面向?qū)ο蟮拈_發(fā)模型突破了傳統(tǒng)的瀑布模型,將開發(fā)分為面向?qū)ο蠓治觯∣OA),面向?qū)ο笤O(shè)計(OOD)和面向?qū)ο缶幊蹋∣OP)三個階段。分析階段產(chǎn)生整個問題空間的抽象描述,在此基礎(chǔ)上,進(jìn)一步歸納出適用于面向?qū)ο缶幊陶Z言的類和類結(jié)構(gòu),最后形成代碼。
針對這種開發(fā)模型,結(jié)合傳統(tǒng)的軟件測試步驟的劃分,文獻(xiàn)[1]提出一種整個軟件開發(fā)過程中不斷進(jìn)行測試的面向?qū)ο筌浖y試模型,使開發(fā)階段的測試與編碼完成后的單元測試、集成測試、系統(tǒng)測試成為一個整體。該測試模型給出了面向?qū)ο鬁y試OOT 與OOA、OOD 和OOP 三者的對應(yīng)關(guān)系,如圖1 所示。
OOA Test 和OOD Test 是對分析結(jié)果和設(shè)計結(jié)果的測試,主要是對分析設(shè)計產(chǎn)生的文本進(jìn)行測試,是軟件開發(fā)前期的關(guān)鍵性測試。OOP Test主要針對編程風(fēng)格和程序代碼實現(xiàn)進(jìn)行測試,其主要測試內(nèi)容在面向?qū)ο髥卧獪y試和面向?qū)ο蠹蓽y試中體現(xiàn)。面向?qū)ο髥卧獪y試是進(jìn)行面向?qū)ο蠹蓽y試的基礎(chǔ)。面向?qū)ο蠹蓽y試主要對系統(tǒng)內(nèi)部的相互服務(wù)進(jìn)行測試,如成員函數(shù)間的相互作用,類間的消息傳遞等。面向?qū)ο蠹蓽y試不但要基于面向?qū)ο髥卧獪y試,更要參見OOD 或OOD Test 結(jié)果[2]。面向?qū)ο笙到y(tǒng)測試是基于面向?qū)ο蠹蓽y試的最后階段的測試,主要以用戶需求為測試標(biāo)準(zhǔn),需要借鑒OOA 或OOA Test 結(jié)果。
2.1 面向?qū)ο蠓治龅臏y試(OOA Test)
傳統(tǒng)的面向過程分析是一個功能分解的過程,是把一個系統(tǒng)看成可以分解的功能的集合。這種傳統(tǒng)的功能分解分析法的著眼點在于一個系統(tǒng)需要什么樣的信息處理方法和過程,以過程的抽象來對待系統(tǒng)的需要。而面向?qū)ο蠓治?OOA)是把E-R 圖和語義網(wǎng)絡(luò)模型,即信息造型中的概念,與面向?qū)ο蟪绦蛟O(shè)計語言中的重要概念結(jié)合在一起而形成的分析方法,最后通常是得到問題空間的圖表的形式描述[3,4]。
OOA 階段將問題空間中的實例抽象為對象,用對象的結(jié)構(gòu)反映問題空間的復(fù)雜實例和復(fù)雜關(guān)系,用屬性和服務(wù)表示實例的特性和行為。OOA 的結(jié)果是為后面階段類的選定和實現(xiàn),類層次結(jié)構(gòu)的組織和實現(xiàn)提供平臺。因此,OOA 對問題空間分析抽象的不完整,最終會影響軟件的功能實現(xiàn),導(dǎo)致軟件開發(fā)后期大量不可避免的修補工作;而一些冗余的對象或結(jié)構(gòu)會影響類的選定、程序的整體結(jié)構(gòu)或增加程序員不必要的工作量。因此,對OOA 的測試重點應(yīng)該放在完整性和冗余性方面。 OOA階段的測試劃分為以下五個方面:1) 對認(rèn)定的對象的測試;2) 對認(rèn)定的結(jié)構(gòu)的測試;3) 對認(rèn)定的主題的測試;4) 對定義的屬性和實例關(guān)聯(lián)的測試;5) 對定義的服務(wù)和消息關(guān)聯(lián)的測試。
2.2 面向?qū)ο笤O(shè)計的測試(OOD Test)
通常結(jié)構(gòu)化的設(shè)計方法是用面向作業(yè)的設(shè)計方法,它把系統(tǒng)分解以后,提出一組作業(yè),這些作業(yè)是以過程實現(xiàn)系統(tǒng)的基礎(chǔ)構(gòu)造,把問題域的分析轉(zhuǎn)化為求解域的設(shè)計,分析的結(jié)果是設(shè)計階段的輸入。
而面向?qū)ο笤O(shè)計(OOD)采用“造型的觀點”,以O(shè)OA為基礎(chǔ)歸納出類,并建立類結(jié)構(gòu)或進(jìn)一步構(gòu)造成類庫,實現(xiàn)分析結(jié)果對問題空間的抽象。OOD 確定類和類結(jié)構(gòu)不僅能滿足當(dāng)前需求分析的要求,更重要的是通過重新組合或加以適當(dāng)?shù)难a充,能方便實現(xiàn)功能的重用和擴(kuò)充,以不斷適應(yīng)用戶的要求。因此,對OOD 的測試,建議針對功能的實現(xiàn)和重用以及對OOA 結(jié)果的拓展,從如下三方面考慮[5]:
1) 對認(rèn)定的類的測試;
2) 對構(gòu)造的類層次結(jié)構(gòu)的測試;
3) 對類庫的支持的測試。
2.3面向?qū)ο缶幊痰臏y試(OOP Test)
由于面向?qū)ο蟪绦蚓哂欣^承、封裝和多態(tài)等新特征,使得傳統(tǒng)的結(jié)構(gòu)化程序測試策略不能完全適應(yīng)面向?qū)ο蟪绦虻臏y試需要。主要表現(xiàn)在三個方面,即面向?qū)ο蟮姆庋b不能實現(xiàn)傳統(tǒng)測試方法中對數(shù)據(jù)非法操作的測試;面向?qū)ο蟮睦^承,使錯誤的傳播概率提高,增加了測試的復(fù)雜度;面向?qū)ο蟮亩鄳B(tài)特征使程序內(nèi)“同一”函數(shù)的行為復(fù)雜化,增加測試的工作量。
面向?qū)ο蟪绦驅(qū)⒐δ軐崿F(xiàn)分布在類中,類間通過消息傳遞來協(xié)同實現(xiàn)系統(tǒng)的功能。面向?qū)ο蟮倪@種程序風(fēng)格將出現(xiàn)的錯誤精確地確定在一個具體的類中,因此,面向?qū)ο缶幊痰臏y試OOP Test忽略類功能的實現(xiàn)細(xì)則,將測試集中在類功能的實現(xiàn)和相應(yīng)的面向?qū)ο蟪绦蝻L(fēng)格,主要體現(xiàn)為兩方面(假設(shè)使用C++語言):
1) 數(shù)據(jù)成員是否滿足數(shù)據(jù)封裝的要求;
2) 類是否實現(xiàn)了要求的功能。
3 面向?qū)ο蟮能浖y試內(nèi)容及層次
面向?qū)ο筌浖y試即在測試過程中繼續(xù)運用面向?qū)ο蠹夹g(shù),進(jìn)行以對象概念為中心的軟件測試。Binder 在研究了面向?qū)ο蟮奶卣?,如封裝性、繼承性、多態(tài)和動態(tài)綁定性等,認(rèn)為這些特征的引入增加了測試的復(fù)雜性。對軟件測試層次一種較為普遍的劃分方法是根據(jù)測試層次結(jié)構(gòu),面向?qū)ο筌浖y試總體上呈現(xiàn)從單元級、集成級、到系統(tǒng)級的分層測試,測試集成的過程是基于可靠部件組裝系統(tǒng)的過程。測試可用不同的方法執(zhí)行,通常的方法是按設(shè)計和實現(xiàn)的反向次序測試,首先驗證不同層,然后使用事件集成不同的程序單元,最終驗證系統(tǒng)級。根據(jù)測試層次結(jié)構(gòu)確定相應(yīng)的測試活動,并生成相應(yīng)的層次[6]。由于面向?qū)ο筌浖暮暧^上來看是各個類之間的相互作用,因此,將對類層的測試作為單元測試,而對于由類集成的模塊測試作為集成測試,系統(tǒng)測試與傳統(tǒng)測試層相同。測試流程如圖2所示。
3.1 面向?qū)ο蟮膯卧獪y試(OO Unit Test)
傳統(tǒng)的單元測試是針對程序的函數(shù)、過程或完成某一定功能的程序塊,面向?qū)ο髥卧獪y試OO Unit Test 在OOP Test 時進(jìn)行,是對程序內(nèi)部具體單一的功能模塊的測試。一些傳統(tǒng)的測試方法在面向?qū)ο蟮膯卧獪y試中都可以使用,如等價類劃分法,因果圖法,邊值分析法,邏輯覆蓋法,路徑分析法,程序插裝法等等。
當(dāng)考慮面向?qū)ο蟮能浖r,模塊單元的概念改變了,封裝規(guī)定了類和對象的定義。這意味在面向?qū)ο髥卧獪y試中,最小的可測試單元是封裝的類或?qū)ο?,而不是模塊。
類包含一組不同的操作,并且某特殊操作可能作為一組不同類的一部分存在。同時,一個對象有它自己的狀態(tài)和依賴于狀態(tài)的行為,對象操作既與對象的狀態(tài)有關(guān),也可能改變對象的狀態(tài)。所以,類操作時不僅要將操作作為類的一部分,同時要把對象與其狀態(tài)結(jié)合起來,進(jìn)行對象狀態(tài)行為的測試。類測試可以分為以下三個部分:[7]
1) 基于服務(wù)的測試:測試類中的每一個服務(wù)(即方法);
2) 基于狀態(tài)的測試:考察類的實例在其生命期各個狀態(tài)下的情況;
3) 基于響應(yīng)狀態(tài)的測試:從類和對象的責(zé)任出發(fā),以外界向?qū)ο蟀l(fā)送特定的消息序列來測試對象。
基于服務(wù)的類測試主要考察封裝在類中的一個方法對數(shù)據(jù)進(jìn)行的操作。Kung等人提出的塊分支圖(Block Branch Diagram,簡稱BBD)是一種比較好的服務(wù)測試模型(如圖3所示)。
服務(wù)f 的BBD是一個五元組,BBD = { Du, Dd, P, Fe,G} ;Du = { di | di ∈f 引用的全局?jǐn)?shù)據(jù)或類數(shù)據(jù)} ;Dd ={ di | di ∈ f 修改的全局?jǐn)?shù)據(jù)或類數(shù)據(jù)};
P = { X1θ1 ,X2θ2 , …, Xnθn , Xn+1θn+1 ∈ f 的參數(shù)表和函數(shù)
返回值,θi為(輸入) 、(輸出) ,或(輸入/ 輸出) ;若Xn+1 缺省,
則無返回值}; Fe = { f i | f i ∈被f 調(diào)用的其他服務(wù)};
G是一個有向圖,叫做塊體。它是按照控制流圖的思想修改f的程序流程圖而來的,表示f的控制結(jié)構(gòu)中的符合條件判斷被分解,每個判斷框只有單個條件。
3.2 面向?qū)ο蟮募蓽y試
傳統(tǒng)的集成測試是由底向上通過集成完成的功能模塊進(jìn)行測試,一般可以在部分程序編譯完成的情況下進(jìn)行。而對于面向?qū)ο蟪绦?,相互調(diào)用的功能是散布在程序不同的類中,類通過消息相互作用申請和提供服務(wù),類相互依賴極其緊密,根本無法在編譯時對類進(jìn)行測試,所以,面向?qū)ο蟮募蓽y試通常需要在整個程序編譯完成后進(jìn)行。
在面向?qū)ο笙到y(tǒng)中,集成測試屬于應(yīng)用生命周期的一個階段,可在兩個層次上進(jìn)行。第一層對一個新類進(jìn)行測試,以及測試在定義中所涉及的那些類的集成。設(shè)計者通常用關(guān)系is a,is part和refers to來描述類與類之間的依賴,并隱含了類測試的順序。首先測試基礎(chǔ)類,然后使用這些類的類接著測試,再按層次繼續(xù)測試,每一層次都使用了以前已定義和測試過的類作為部件塊。
對于面向?qū)ο箢I(lǐng)域中集成測試的特別要求是:應(yīng)當(dāng)不需要特別地編寫代碼就可把在當(dāng)前的軟件開發(fā)中使用的元素集合起來,因此其測試重點是各模塊之間的協(xié)調(diào)性,尤其是那些從沒有在一起的類之間的協(xié)調(diào)性。
集成測試的第二層是將各部分集合在一起組成整個系統(tǒng)進(jìn)行測試。以C++語言編寫的應(yīng)用系統(tǒng)為例,通常應(yīng)在其主程序中創(chuàng)建一些高層類和全局類的實例,通過這些實例的相互通訊從而實現(xiàn)系統(tǒng)的功能。對于這種測試所選擇的測試用例應(yīng)當(dāng)瞄準(zhǔn)待開發(fā)軟件的目標(biāo)而設(shè)計,并且應(yīng)當(dāng)給出預(yù)期的結(jié)果,以確定軟件的開發(fā)是否與目標(biāo)相吻合。
3.3 面向?qū)ο蟮南到y(tǒng)測試
系統(tǒng)測試是對所有類和主程序構(gòu)成的整個系統(tǒng)進(jìn)行整體測試,以驗證軟件系統(tǒng)的正確性和性能指標(biāo)等是否滿足需求規(guī)格說明書和任務(wù)書所指定的要求。它與傳統(tǒng)的系統(tǒng)測試一樣,包括功能測試、性能測試、余量測試等,可套用傳統(tǒng)的系統(tǒng)測試方法。通過單元測試和集成測試,僅能保證軟件開發(fā)的功能得以實現(xiàn),不能確認(rèn)在實際運行時,它是否滿足用戶的需要,是否大量存在實際使用條件下會被誘發(fā)產(chǎn)生錯誤的隱患。為此,對完成開發(fā)的軟件必須經(jīng)過規(guī)范的系統(tǒng)測試,即開發(fā)完成的軟件僅僅是實際投入使用系統(tǒng)的一個組成部分,需要測試它與系統(tǒng)其他部分配套運行的表現(xiàn),以保證在系統(tǒng)各部分協(xié)調(diào)工作的環(huán)境下也能正常工作[8]。
在系統(tǒng)測試中,不關(guān)心類的聯(lián)系細(xì)節(jié)。同于傳統(tǒng)的系統(tǒng)測試,面向?qū)ο筌浖南到y(tǒng)測試集中在用戶可見的活動與用戶可識別的來自系統(tǒng)的輸出。為了導(dǎo)出測試案例,測試者應(yīng)該使用分析模型中的使用案例,使用案例能夠用于導(dǎo)出測試案例以發(fā)現(xiàn)不能滿足用戶交互需求的錯誤。系統(tǒng)測試應(yīng)該盡量搭建與用戶實際使用環(huán)境相同的測試平臺,應(yīng)該保證被測系統(tǒng)的完整性,對臨時沒有的系統(tǒng)設(shè)備部件也應(yīng)有相應(yīng)的模擬手段。系統(tǒng)測試不僅是檢測軟件的整體行為表現(xiàn),也是對軟件開發(fā)設(shè)計的再確認(rèn)。
4 結(jié)束語
面向?qū)ο鬁y試的目標(biāo)與傳統(tǒng)測試相同,但面向?qū)ο蠓椒ㄅc傳統(tǒng)順序結(jié)構(gòu)式方法在開發(fā)思想上有著根本的不同,尤其是面向?qū)ο笏哂械念?、封裝、繼承、動態(tài)連接等特性,使得面向?qū)ο筌浖y試在測試模型、測試方法、測試層次等方面都有別于傳統(tǒng)的測試思想。從面向?qū)ο蟮臏y試模型可知,測試的視角擴(kuò)大到包括復(fù)審分析和設(shè)計模型,此外,測試的焦點從過程構(gòu)件(模塊) 轉(zhuǎn)向了對象類。
目前,面向?qū)ο筌浖到y(tǒng)的開發(fā)在不斷的實踐中已逐步形成了自己的方法學(xué),但對于面向?qū)ο筌浖y試,目前尚無普遍接受的充分性準(zhǔn)則。本文根據(jù)傳統(tǒng)軟件測試模型將面向?qū)ο筌浖_發(fā)過程和軟件測試相結(jié)合,形成一種面向?qū)ο鬁y試模型,并對模型的相關(guān)步驟和具體實施提出了一些方法和技術(shù),雖已在實踐中得到了一定的驗證,但也只是初步的,有必要在今后的研究中得到進(jìn)一步的完善。
參考文獻(xiàn):
[1] Beizer B.Black-Box Testing Techniques for Functional Testing of Software and Systems[M].John Wiley & sons,1995.
[2] Coad P,Yourdon E.Object-Oriented Analysis[M].Yourdon Press,1999
[3] 湯庸.軟件工程方法學(xué)及應(yīng)用[M].武漢:中國三峽出版社,1998
[4] 鄭人杰.計算機(jī)軟件測試技術(shù)[M].北京:清華大學(xué)出版社,2000
[5] 陳文宇.面向?qū)ο筌浖臏y試[J].電子科技大學(xué)學(xué)報,2001,6(30):613-617.
[6] 徐虹.面向?qū)ο蟮能浖y試模型及策略研究[J].計算機(jī)與現(xiàn)代化,2005(3):15-18.
初三政治教學(xué)工作計劃
關(guān)王廟中學(xué) 連紅梅 高彩虹
一、指導(dǎo)思想:
本學(xué)期由我和高彩虹擔(dān)任初三年級的思想品德課,我們確立“以人為本,關(guān)注生命,促進(jìn)學(xué)生全面發(fā)展”為指導(dǎo)思想,希望通過自己無私的耕耘,每個學(xué)生都有收獲。
二、教材分析:
本冊書共12課,分為四大單元。第一單元承擔(dān)責(zé)任 服務(wù)社會:本單元作為九年級教材的導(dǎo)引,是國情教育的起點。通過讓學(xué)生明確自己所扮演的角色,引出自己所承擔(dān)的責(zé)任,從而讓學(xué)生做一個負(fù)責(zé)任的公民。第二單元了解祖國 愛我中華:是在第一單元的基礎(chǔ)之上,讓學(xué)生進(jìn)一步了解我國的人口、資源、環(huán)境、科技、教育、法制建設(shè)方面的國情,以及針對這些問題制定的國策、發(fā)展戰(zhàn)略。作為中學(xué)生面對我國的基本國情該承擔(dān)怎樣的責(zé)任。在了解了基本國情和國策的基礎(chǔ)上,如何培養(yǎng)學(xué)生正確處理更高意義上的交往行為,需要培養(yǎng)學(xué)生正確處理民族關(guān)系和國家統(tǒng)一問題。所以本單元對學(xué)生進(jìn)行集中的民族歷史、民族文化、民族決策、民族精神的教育,同時讓學(xué)生保持清醒的頭腦,如何對待外來文化,發(fā)展民族文化,弘揚民族精神,鑄就民族魂魄。第三單元融入社會 肩負(fù)使命:具體闡述我國在政治、經(jīng)濟(jì)、文化方面的發(fā)展,中學(xué)生又該履行怎樣的責(zé)任。第四單元滿懷希望迎接明天:本單元既承接前三單元的學(xué)習(xí)內(nèi)容,又是一種知識和情感的升華。本單元皆在引導(dǎo)學(xué)生樹立遠(yuǎn)大理想并為之努力奮斗,將個人理想與社會理想聯(lián)系起來,為國家和民族的未來奉獻(xiàn)自己的力量。
三、教材要求:
在備課前研讀教學(xué)大綱,理清課本脈絡(luò)。在備課中從學(xué)生實際出發(fā),一切為使學(xué)生發(fā)展服務(wù)。在教學(xué)中,緊緊圍繞三維目標(biāo)授課即知識與能力、過程與方法、情感態(tài)度價值觀目標(biāo)。采用情感教學(xué)法,關(guān)注每位學(xué)生的身心發(fā)展,讓學(xué)生自主確立學(xué)習(xí)目標(biāo)、學(xué)習(xí)重點、難點,讓學(xué)生在自主、合作、探究學(xué)習(xí)方法中愉快的掌握知識點,陶冶情操,樹立遠(yuǎn)大理想。在教學(xué)中,給學(xué)生創(chuàng)造民主和諧的學(xué)習(xí)氛圍,在師生互動、生生互動中進(jìn)行分層教學(xué)優(yōu)化,使所有學(xué)生都有所收獲,有所進(jìn)步。在教學(xué)中,引導(dǎo)學(xué)生關(guān)注時事、關(guān)注國家大事、焦點訪談等,讓我們在關(guān)注中與政治觀互相結(jié)合,提高自己分析問題,解決問題的能力。
四、教學(xué)進(jìn)度:
關(guān)鍵詞:測試;單元測試;集成測試;系統(tǒng)測試
中圖分類號:TN919.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599?。?012) 17-0000-02
隨著軟件和IT技術(shù)的發(fā)展,測試工作也被更多的企業(yè)單位所認(rèn)可,有資料顯示,在微軟公司,測試人員和開發(fā)人員的比例可以達(dá)到2:1,這也彰顯出微軟對測試工作的重視。但仍有一些單位,對測試的理解存在誤區(qū)。
誤區(qū)一:測試的目的就是要找出軟件或系統(tǒng)中所有的bug,使軟件可以正確執(zhí)行它應(yīng)有的功能。
誤區(qū)二:只有測試人員才需要做測試工作,開發(fā)人員只管設(shè)計和編寫軟件,然后交給測試人員測試就行了。
事實上,同這些理解正好相反。
1 測試真正可以達(dá)到的目的
“誤區(qū)一”的觀點是無法實現(xiàn)的,比如windows下的文件拷貝功能,這是windows中比較簡單的一個功能了,但就是這么一個簡單的功能,我們也無法向“誤區(qū)一”說的那樣,找出所有bug,因為我們不可能把所有的可能性都測試到。文件拷貝功能絕不是簡單的選擇一個源文件,然后拷貝到目的目錄那么簡單,有各種各樣的情況場景需要考慮,比如目的目錄中已有同名文件、比如目的目錄所在磁盤空間不足、比如目的目錄層次過深超過windows支持的最大目錄長度、比如原文件是否允許拷貝、比如目的目錄是否可寫、比如當(dāng)前用戶是否有拷貝文件的權(quán)限、比如內(nèi)存不足或CPU忙時的拷貝、比如其他程序執(zhí)行對拷貝的影響等等,對這些情況的考慮已經(jīng)可以設(shè)計出許許多多的測試用例,何況還有許多我們想不到的情境,所以,想窮舉測試一個功能的所有路徑,找出所有bug是不可能的。這樣的目標(biāo)只會阻礙測試人員的思考,引導(dǎo)測試走向極端。
測試是假定程序中存在錯誤而去執(zhí)行程序來發(fā)現(xiàn)盡可能多的錯誤的行為,當(dāng)然這個假設(shè)幾乎對所有軟件都是合理的,沒有bug的軟件幾乎是不存在的。為什么強(qiáng)調(diào)測試的目的是找bug,而不是證明軟件中已經(jīng)不存在bug了呢?
因為這會影響到測試是否成功:如果測試的目的是為了說明程序中沒有錯誤,測試人員思維和行為就會向這個目標(biāo)靠攏,因而下意識的選用一些不易暴露錯誤的測試用例。但是,如果我們的目標(biāo)是證實程序中有錯誤,測試人員就會選用一些更能暴露錯誤的測試用例。
所以正確理解測試,對測試設(shè)計、測試執(zhí)行等測試活動有很大的影響。進(jìn)而決定這會不會是一個有效的測試活動。
2 測試應(yīng)在什么時機(jī)如何開展
“誤區(qū)二”的觀點是目前很多公司都容易犯的錯誤,他們已經(jīng)成立了專門的測試團(tuán)隊(這是好的一面),但將產(chǎn)品質(zhì)量過多的押寶在系統(tǒng)測試階段,開發(fā)寫完代碼后基本不經(jīng)過什么自測,就將軟件進(jìn)行系統(tǒng)測試,由于系統(tǒng)測試的時間、人力以及測試工作的特性等因素,這樣系統(tǒng)測試后的軟件中仍然存在著大量的bug,甚至存在很致命的bug,這將導(dǎo)致軟件的質(zhì)量下降和不穩(wěn)定,而使用戶失去信心。
為什么會這樣呢?這正是測試的特性決定的,軟件中的bug是永遠(yuǎn)發(fā)現(xiàn)不完的,并且發(fā)現(xiàn)的越晚,修改的成本就越高,這是微軟公司從二十幾年的實踐中明白的道理,所以要想得到高質(zhì)量的軟件產(chǎn)品,我們就需要系統(tǒng)的規(guī)劃測試,讓不同角色的人參與進(jìn)來。在軟件開發(fā)過程,一般測試可以分為三個階段進(jìn)行,它們分別是單元測試、集成測試和系統(tǒng)測試,三個活動相輔相成相互影響。
單元測試是對軟件的基本組成部分進(jìn)行測試,如模塊、過程等,其目的是根據(jù)模塊的功能說明檢驗?zāi)K的正確性。因為單元測試需要了解程序內(nèi)部的設(shè)計和編碼細(xì)節(jié),所以一般應(yīng)由程序員進(jìn)行測試,單元測試主要使用白盒測試,可以發(fā)現(xiàn)詳細(xì)設(shè)計和編程時犯下的錯誤,如變量賦值錯誤、判斷條件錯誤等。
單元測試是軟件測試最基本的部分,非常重要,如果單元測試做不好,后續(xù)的集成測試和系統(tǒng)測試將無法順利進(jìn)行,軟件開發(fā)進(jìn)度會嚴(yán)重延遲或者被迫一個低質(zhì)量的軟件。
集成測試是根據(jù)系統(tǒng)的整體流程,將各個模塊連接起來進(jìn)行的測試。集成測試的主要目的是發(fā)現(xiàn)軟件模塊間的接口錯誤,檢查各模塊組成的系統(tǒng)運行是否正確,各組成模塊是否合拍。集成測試通常使用黑盒測試,也可以加入部分白盒測試,可以發(fā)現(xiàn)概要設(shè)計時犯的錯誤,如軟件邏輯錯誤、模塊接口錯誤等。軟件通過集成測試,是可以進(jìn)入系統(tǒng)測試的前提,對未通過集成測試的軟件進(jìn)行系統(tǒng)測試,將導(dǎo)致系統(tǒng)測試顧此失彼,影響測試的輸出質(zhì)量。
系統(tǒng)測試將系統(tǒng)硬件、軟件和用戶等視為一個整體,檢查系統(tǒng)在功能、性能等方面是否有不符合需求說明書的地方,所以系統(tǒng)測試應(yīng)以需求說明書為測試依據(jù),站在用戶的角度,通過不斷的使用和攻擊被測對象,盡可能多的找出系統(tǒng)中的bug。系統(tǒng)測試主要使用黑盒測試方法,并且可以借助測試工具等外部力量,來模擬和攻擊被測對象。系統(tǒng)測試可以發(fā)現(xiàn)設(shè)計和分析階段的錯誤,以及系統(tǒng)性能穩(wěn)定性等方面的錯誤,如用戶需求理解錯誤、未完全實現(xiàn)用戶需求、長期運行系統(tǒng)崩潰等。系統(tǒng)測試需要由專門的團(tuán)隊進(jìn)行,一般不建議由開發(fā)人員進(jìn)行,因為開發(fā)人員對待自己的程序,就像對待自己的孩子一樣,會下意識的手下留情,而系統(tǒng)測試需要的是強(qiáng)攻擊性。高效的系統(tǒng)測試并不是在軟件提交系統(tǒng)測試時才開始的,那已經(jīng)太晚了。系統(tǒng)測試需要在需求分析時就開始了解需求,分析測試需求,并隨著軟件的開發(fā)同步進(jìn)行測試用例設(shè)計,確定測試方法等。開始對軟件進(jìn)行系統(tǒng)測試的測試執(zhí)行階段,只占系統(tǒng)測試總時間的一半左右。系統(tǒng)測試只有和軟件開發(fā)同步進(jìn)行,才能更好的理解需求,并且同步的測試設(shè)計準(zhǔn)備,也可以大大縮短軟件的周期,并提高測試的質(zhì)量。
3 結(jié)束語
軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行軟件的過程,是不能找出軟件中所有bug的,錯誤的測試?yán)砟顣?dǎo)致測試走入歧途,而達(dá)不到提升產(chǎn)品質(zhì)量的目標(biāo)。
測試活動應(yīng)貫穿于產(chǎn)品開發(fā)的整個過程,合適的人做合適的測試,正確的進(jìn)行單元測試、集成測試和系統(tǒng)測試,將使軟件質(zhì)量產(chǎn)生質(zhì)的飛躍。
參考文獻(xiàn):
【關(guān)鍵詞】安卓系統(tǒng) 手機(jī)軟件 測試 風(fēng)險分析
引言:我國各手機(jī)廠商均依據(jù)自身需求將安卓系統(tǒng)進(jìn)行了二次開發(fā),對安卓手機(jī)系統(tǒng)及其二次開發(fā)軟件進(jìn)行測試,并對其測試中容易發(fā)生的風(fēng)險因素進(jìn)行分析與總結(jié),這可以為今后的安裝手機(jī)系統(tǒng)及軟件測試提供參考依據(jù)。
一、手機(jī)軟件測試內(nèi)容
在對手機(jī)軟件進(jìn)行測試時,主要分為五方面進(jìn)行:系統(tǒng)測試、版本驗證測試、集成測試、功能測試、單元測試。除此之外,還應(yīng)對系統(tǒng)使用的界面友好性及系統(tǒng)的信息安全性能進(jìn)行測試[1]。
(一)單元測試。測試軟件內(nèi)部最小單元的正確性,稱為單元測試。統(tǒng)計數(shù)字表明,安卓系統(tǒng)應(yīng)用軟件在單元測試環(huán)節(jié)的缺陷率在50%以上。目前,一般情況下,單元測試指的是對程序代碼的檢測,即測試人員在對軟件程序結(jié)構(gòu)了解掌握的基礎(chǔ)上,對其存在的缺陷進(jìn)行檢查與修正。一些開發(fā)人員在進(jìn)行軟件開發(fā)工作時,為盡快完成任務(wù)或是由于思路或開發(fā)水平的限制,而導(dǎo)致對單元集成工作的疏忽,這樣就會使軟件在單元測試中暴露出更多問題。一般情況下,大部分軟件開發(fā)企業(yè)在進(jìn)行軟件測試時,都會專門成立測試小組執(zhí)行此項工作,因為在開發(fā)時開發(fā)人員在進(jìn)行程序編寫時使用的是自己頭腦中已有的思路和算法,如果讓開發(fā)人員對自己編寫的程序代碼進(jìn)行檢查,一些問題就會以為開發(fā)人員思維定勢的緣故而遺漏掉,這會給軟件在應(yīng)用中帶來許多麻煩。
(二)功能測試。在對軟件產(chǎn)品進(jìn)行功能測試時,主要依據(jù)的是產(chǎn)品面向用戶所提供的功能、用戶在使用中所需實現(xiàn)的功能以及軟件產(chǎn)品的特征等進(jìn)行測試的。在對軟件進(jìn)行功能測試時,應(yīng)先對測試建立相關(guān)功能標(biāo)準(zhǔn),通過檢測軟件功能是否達(dá)標(biāo)來檢驗其合格水平。在進(jìn)行功能檢測時,首先檢測的應(yīng)是手機(jī)設(shè)置中菜單與子菜單的設(shè)置[2],以及菜單與子菜單間關(guān)系的設(shè)置是否合理,其中包括短信應(yīng)用、聯(lián)系人應(yīng)用等,在短信應(yīng)用中包括對短信的編輯、發(fā)送、接受、保存、刪除和顯示等功能;在聯(lián)系人應(yīng)用中包括對聯(lián)系人的添加、修改、撥號、發(fā)送信息、刪除及通話記錄等功能。
(三)集成測試。集成測試是在功能測試完成的基礎(chǔ)上進(jìn)行的,其測試目的是為了保證軟件中各單元模塊的集成良好實現(xiàn)。目前的集成測試包括對手機(jī)軟件部件功能的測試、對全局變量數(shù)據(jù)間的結(jié)構(gòu)測試以及軟件單元間的接口測試等。除此之外,安卓手機(jī)系統(tǒng)中的應(yīng)用不是多個手機(jī)應(yīng)用軟件簡單堆疊而形成的,而是各軟件間的融合與集成,所以對手機(jī)應(yīng)用軟件間的集成測試,以及對軟件間與軟件和系統(tǒng)的兼容性的測試也是很重要的。
(四)版本驗證測試。在版本驗證測試階段,重要執(zhí)行的是對手機(jī)軟件功能的終極測試,在此階段測試的通過率達(dá)到95%才能夠進(jìn)入下一階段的測試[3]。
(五)系統(tǒng)測試。系統(tǒng)測試是整個軟件測試的核心環(huán)節(jié),是針對軟件進(jìn)行全面測試的環(huán)節(jié)。在這個環(huán)節(jié)中需要測試軟件與硬件之間的連接問題,還要測試軟件的整體運行情況。
(六)對界面友好性與信息安全性的測試。安卓手機(jī)系統(tǒng)針對的是手機(jī)用戶,所以在手機(jī)界面的使用上應(yīng)做到便于操作,對手機(jī)系統(tǒng)的便捷性與實用性要求較高。因為手機(jī)系統(tǒng)中保存這用戶的大量私人信息,對手機(jī)系統(tǒng)的安全性能要求較高,所以在測試時,應(yīng)注意對手機(jī)系統(tǒng)的安全性進(jìn)行檢測,以保障用戶的通信安全與信息安全。
二、對手機(jī)軟件進(jìn)行測試時應(yīng)遵循的原則
手機(jī)廠商在選用手機(jī)軟件時,通常都會對安卓軟件系統(tǒng)進(jìn)行二次開發(fā),在進(jìn)行對二次開發(fā)軟件系統(tǒng)的測試時,需要遵循一些原則:第一、應(yīng)確保手機(jī)軟件進(jìn)行全面測試,因為二次開發(fā)后的軟件具有許多潛在風(fēng)險與漏洞,需要在測試時對其進(jìn)行嚴(yán)密的檢查、完善與分析;第二、對軟件的使用制定實用性標(biāo)準(zhǔn),依照標(biāo)準(zhǔn)進(jìn)行測試,其實用性標(biāo)準(zhǔn)是以風(fēng)險評估指標(biāo)體系為基礎(chǔ)的,在測試時,應(yīng)對其所使用的計算進(jìn)行嚴(yán)格檢驗;第三、對影響手機(jī)軟件性能的非相關(guān)因素進(jìn)行控制,避免潛在威脅與其他風(fēng)險的發(fā)生;第四、在安卓手機(jī)測試的各個階段和環(huán)節(jié)實行風(fēng)險管理,這一點在管理工作中是非常必要的。
三、安裝手機(jī)軟件測試中存在的風(fēng)險
(一)測試準(zhǔn)備階段的風(fēng)險因素。根據(jù)手機(jī)類型不同,手機(jī)的測試方案也是不同的。這一階段主要存在的風(fēng)險是由于測試團(tuán)隊人員對手機(jī)軟件測試了解不足、分析不到位而導(dǎo)致的測試計劃不符合實際測試情況,以致對測試時間、預(yù)算等的估計不準(zhǔn)確而干擾測試執(zhí)行。
(二) 測試執(zhí)行階段的風(fēng)險因素。上文中提到國,軟件的開發(fā)與測試是有兩個團(tuán)隊來完成的,因此,測試團(tuán)隊在執(zhí)行測試時,勢必會在開發(fā)的軟件中找到錯處或漏洞,而如何協(xié)調(diào)開發(fā)人員與測試人員間的關(guān)系,緩解或打消他們之間的摩擦,成為了這一環(huán)節(jié)中管理人員面臨的重要問題。測試人員與開發(fā)人員間的溝通是很重要的,進(jìn)行測試的軟件測試結(jié)果需交還給開發(fā)人員,開發(fā)人員通過與測試人員的溝通形成修改意見,并由開發(fā)人員進(jìn)行修改,并將修改結(jié)果反饋給測試人員重新進(jìn)行測試。由此可見,通過團(tuán)隊管理使兩支團(tuán)隊對工作形成正確的觀念是非常重要的。
(三)測試總結(jié)階段的風(fēng)險因素。在測試的總結(jié)階段,應(yīng)對測試結(jié)果進(jìn)行全面分析和總結(jié),并對由于數(shù)據(jù)輸入不正確而導(dǎo)致的系統(tǒng)錯誤與風(fēng)險進(jìn)行分析和解決。
安卓手機(jī)軟件系統(tǒng)關(guān)系到安卓手機(jī)到使用效果,本文通過對手機(jī)軟件測試的介紹為大家闡述了如何發(fā)現(xiàn)并排除系統(tǒng)錯誤的步驟,以及為大家分析了系統(tǒng)測試過程中存在的風(fēng)險。安卓手機(jī)系統(tǒng)測試的每一步成果,無論是錯誤總結(jié)、測試方法革新還是管理方法總結(jié)都會對手機(jī)系統(tǒng)與軟件的發(fā)展起到推動作用。
參考文獻(xiàn):
[1]楊瀅雪.安卓手機(jī)軟件測試中的風(fēng)險因素評價研究[D].吉林:長春理工大學(xué),2012.
一、學(xué)生基本情況分析:
化學(xué)是一門九年級剛開設(shè)的新課程,與生活的聯(lián)系較多,學(xué)生學(xué)習(xí)的熱情較高,教師應(yīng)正確引導(dǎo),以期在中考中取得好的成績。本期我擔(dān)任九年級化學(xué)教學(xué)任務(wù),這些學(xué)生基礎(chǔ)高低參差不齊,相對而言1班學(xué)生基礎(chǔ)較牢,成績較好;而4班學(xué)生大部分沒有養(yǎng)成良好的學(xué)習(xí)習(xí)慣、行為習(xí)慣。教師要做好每一個學(xué)生的工作,使他們在各自原有的基礎(chǔ)上不斷發(fā)展進(jìn)步。
二、教學(xué)總體目標(biāo)
義務(wù)教育階段的化學(xué)課程以提高學(xué)生的科學(xué)素養(yǎng)為主旨,激發(fā)學(xué)生學(xué)習(xí)化學(xué)的興趣,幫助學(xué)生了解科學(xué)探究的基本過程和方法,培養(yǎng)學(xué)生的科學(xué)探究能力,使學(xué)生獲得進(jìn)一步學(xué)習(xí)和發(fā)展所需要的化學(xué)基礎(chǔ)知識和基本技能;引導(dǎo)學(xué)生認(rèn)識化學(xué)在促進(jìn)社會發(fā)展和提高人類生活質(zhì)量方面的重要作用,通過化學(xué)學(xué)習(xí)培養(yǎng)學(xué)生的合作精神和社會責(zé)任感,提高未來公民適應(yīng)現(xiàn)代社會生活的能力。
三、教學(xué)具體目標(biāo)
通過義務(wù)教育階段化學(xué)課程的學(xué)習(xí),學(xué)生主要在以下三個方面得到發(fā)展。
知識與技能:
1.認(rèn)識身邊一些常見物質(zhì)的組成、性質(zhì)及其在社會生產(chǎn)和生活中的應(yīng)用,能用簡單的化學(xué)語言予以描述。
2.形成一些最基本的化學(xué)概念,初步認(rèn)識物質(zhì)的微觀構(gòu)成,了解化學(xué)變化的基本特征,初步認(rèn)識物質(zhì)的性質(zhì)與用途之間的關(guān)系。
3.了解化學(xué)與社會和技術(shù)的相互聯(lián)系,并能以此分析有關(guān)的簡單問題。
4.初步形成基本的化學(xué)實驗技能,能設(shè)計和完成一些簡單的化學(xué)實驗。
過程與方法:
1.認(rèn)識科學(xué)探究的意義和基本過程,能提出問題,進(jìn)行初步的探究活動。
2.初步學(xué)會運用觀察、實驗等方法獲取信息,能用文字、圖表和化學(xué)語言表述有關(guān)的信息,初步學(xué)會運用比較、分類、歸納、概括等方法對獲取的信息進(jìn)行加工。
3.能用變化與聯(lián)系的觀點分析化學(xué)現(xiàn)象,解決一些簡單的化學(xué)問題。
4.能主動與他人進(jìn)行交流和討論,清楚地表達(dá)自己的觀點,逐步形成良好的學(xué)習(xí)習(xí)慣和學(xué)習(xí)方法。
情感態(tài)度與價值觀 :
1.保持和增強(qiáng)對生活和自然界中化學(xué)現(xiàn)象的好奇心和探究欲,發(fā)展學(xué)習(xí)化學(xué)的興趣。
2.初步建立科學(xué)的物質(zhì)觀,增進(jìn)對"世界是物質(zhì)的""物質(zhì)是變化的"等辯證唯物主義觀點的認(rèn)識,逐步樹立崇尚科學(xué)、反對迷信的觀念。
3.感受并贊賞化學(xué)對改善個人生活和促進(jìn)社會發(fā)展的積極作用,關(guān)注與化學(xué)有關(guān)的社會問題,初步形成主動參與社會決策的意識。
4.逐步樹立珍惜資源、愛護(hù)環(huán)境、合理使用化學(xué)物質(zhì)的觀念。
5.發(fā)展善于合作、勤于思考、嚴(yán)謹(jǐn)求實、勇于創(chuàng)新和實踐的科學(xué)精神。
6.增強(qiáng)熱愛祖國的情感,樹立為民族振興、為社會的進(jìn)步學(xué)習(xí)化學(xué)的志向。
四、具體措施
(1)加強(qiáng)實驗教學(xué)
化學(xué)是一門以實驗為基礎(chǔ)的學(xué)科。實驗教學(xué)可以激發(fā)學(xué)生學(xué)習(xí)化學(xué)的興趣,幫助學(xué)生形成概念,獲得知識和技能,培養(yǎng)觀察和實驗?zāi)芰?,還有助于培養(yǎng)實事求是、嚴(yán)肅認(rèn)真的科學(xué)態(tài)度和科學(xué)的學(xué)習(xí)方法。因此,加強(qiáng)實驗教學(xué)是提高化學(xué)教學(xué)質(zhì)量的重要一環(huán)。在教學(xué)中,要堅決防止只重講授、輕視實驗的偏向。在實驗教學(xué)中,要注意安全教育,要教育學(xué)生愛護(hù)儀器,節(jié)約藥品。
(2)積極開展化學(xué)課外活動。
組織和指導(dǎo)學(xué)生開展化學(xué)課外活動,對于提高學(xué)生學(xué)習(xí)化學(xué)的興趣,開闊知識視野,培養(yǎng)和發(fā)展能力,發(fā)揮他們的聰明才智等都是很有益的。課外活動的內(nèi)容和方式應(yīng),靈活多樣。在活動內(nèi)容方面可包括聯(lián)系社會,聯(lián)系生活、結(jié)合科技發(fā)展和化學(xué)史,以及擴(kuò)展課內(nèi)學(xué)過的知識等;活動方式可采取做趣味小實驗、舉行知識講座,化學(xué)競賽和專題討論,或組織學(xué)生制作教具,進(jìn)行參觀訪問等。在組織課外活動時,應(yīng)注意充分發(fā)揮學(xué)生的特長,培養(yǎng)他們的創(chuàng)新精神。
(3)加強(qiáng)化學(xué)用語的教學(xué)
元素符號、化學(xué)式和化學(xué)方程式等是用來表示物質(zhì)的組成及變化的化學(xué)用語,是學(xué)習(xí)化學(xué)的重要工具。在教學(xué)中,要讓學(xué)生結(jié)合實物和化學(xué)反應(yīng),學(xué)習(xí)相應(yīng)的化學(xué)用語,結(jié)合化學(xué)用語聯(lián)想相應(yīng)的實物和化學(xué)反應(yīng)。這樣,既有利于學(xué)生記憶,又有利于加深他們對化學(xué)用語涵義的理解。還應(yīng)注意對化學(xué)用語進(jìn)行分散教學(xué),通過生動有趣的學(xué)習(xí)活動和有計劃的練習(xí),使學(xué)生逐步掌握這些學(xué)習(xí)化學(xué)的重要工具。
(4)重視元素化合物知識的教學(xué)
元素化合物知識對于學(xué)生打好化學(xué)學(xué)習(xí)的基礎(chǔ)十分重要。為了使學(xué)生學(xué)好元素化合物知識,在教學(xué)中要注意緊密聯(lián)系實際,加強(qiáng)直觀教學(xué),實驗教學(xué)和電化教學(xué),讓學(xué)生多接觸實物,多做些實驗,以增加感性知識。要采取各種方式,幫助他們在理解的基礎(chǔ)上記憶重要的元素化合物知識。在學(xué)生逐步掌握了一定的元素化合物知識以后,教師要重視引導(dǎo)學(xué)生理解元素化合物知識間的內(nèi)在聯(lián)系,讓學(xué)生理解元素化合物的性質(zhì),制法和用途間的聯(lián)系,并注意加強(qiáng)化學(xué)基本概念和原理對元素化合物知識學(xué)習(xí)的指導(dǎo)作用。
五、教學(xué)進(jìn)度安排
第一、二周(9.1~9.9)緒言、物質(zhì)的變化和性質(zhì),化學(xué)是一門以實驗為基礎(chǔ)的科學(xué)。
第三周(9.10~9.16):走進(jìn)化學(xué)實驗室(參觀化學(xué)實驗室,怎樣進(jìn)行化學(xué)實驗,怎樣設(shè)計實驗)、單元測試。
第四周(9.17~9.23):空氣、氧氣。
第五周(9.24~9.30):制取氧氣,單元測試。
第六周(10.1~10.7):水的組成、分子和原子、水的凈化。
第七周(10.8~10.14):保護(hù)水資源、最輕的氣體、單元測試。
第八周(10.15~10.21):原子的構(gòu)成、元素、離子。
第九周(10.22~10.28):化學(xué)式與化合價、單元測試。
第十周(10.29~11.4):期中復(fù)習(xí)及考試、試卷分析
第十一周(11.5~11.11):機(jī)動
第十二周(11.12~11.18):質(zhì)量守恒定律、如何正確書寫化學(xué)方程式。
第十三周(11.19~11.25):利用化學(xué)方程式的簡單計算、單元測試。
第十四周(11.26~11.2):金剛石、石墨和C60 、二氧化碳制取的研究。
第十五周(12.3~12.9):二氧化碳和一氧化碳、單元測試。
第十六周(12.10~12.16):燃燒和滅火。
第十七周(12.17~12.23):燃料和熱量、使用燃料對環(huán)境的影響。
第十八周(12.24~12.30):石油和煤的綜合利用、單元測試。
第十九周(12.31~1.6)第二十周(1.7~1.13):期末復(fù)習(xí)。