dede做網(wǎng)站地圖揚(yáng)州百度推廣公司
軟件的實(shí)現(xiàn)階段:軟件編碼,單元測試和綜合測試。
軟件編碼是對軟件設(shè)計(jì)的進(jìn)一步具體化,其任務(wù)是將設(shè)計(jì)表示變換成用程序設(shè)計(jì)語言編寫的程序。
軟件測試是軟件質(zhì)量保證的重要手段,要成功開發(fā)出高質(zhì)量的軟件產(chǎn)品,必須認(rèn)真計(jì)劃并徹底地進(jìn)行軟件測試。
4.1軟件編碼
4.1.1程序設(shè)計(jì)語言
用于書寫計(jì)算機(jī)程序的語言。
按照級別可以分為兩大類:
①低級語言:包括機(jī)器語言和匯編語言,優(yōu)點(diǎn)是執(zhí)行速度快,但代碼編寫難度較大,可讀性較差。另外,用它編寫的程序與具體的機(jī)器有關(guān),想要運(yùn)行在不同的機(jī)器上,必須重寫,但是在實(shí)現(xiàn)與硬件系統(tǒng)的接口部分時,易于實(shí)現(xiàn)且實(shí)現(xiàn)效率高。
機(jī)器語言是機(jī)器能直接識別的程序設(shè)計(jì)語言或指令代碼。無須經(jīng)過翻譯。
匯編語言也稱符號語言。要通過匯編過程轉(zhuǎn)換成機(jī)器指令。
②高級語言:在一定程度上與具體機(jī)器無關(guān),是有可移植性,更接近人的思維,易于編程,閱讀和修改。但由于運(yùn)行時需將其翻譯成機(jī)器語言,運(yùn)行效率相對較低,對硬件的可控性相對于低級語言較弱。
程序設(shè)計(jì)語言的選擇:
①應(yīng)用領(lǐng)域的不同決定選擇的語言。
②系統(tǒng)用戶的要求。
③程序員的經(jīng)驗(yàn)和知識。
④開發(fā)和維護(hù)成本。
⑤軟件可移植性要求。
4.1.2程序設(shè)計(jì)風(fēng)格
①源程序文檔化:包括標(biāo)識符的命名,使用注釋,程序的視覺組織。
標(biāo)識符的命名應(yīng)具有精練的意義,明確的名字,不與關(guān)鍵詞同名。
使用注釋應(yīng)有助于對程序的閱讀理解,不宜太多也不能太少。
程序的視覺組織:恰當(dāng)?shù)乩每崭?#xff0c;空行和縮進(jìn)來增加程序的層次性和清晰度。
②數(shù)據(jù)說明標(biāo)準(zhǔn)化:為使程序中的數(shù)據(jù)說明更易于理解和維護(hù)。應(yīng)數(shù)據(jù)說明的次序規(guī)范化,說明語句中變量安排有序化,使用注釋說明復(fù)雜數(shù)據(jù)結(jié)構(gòu)。
③語句結(jié)構(gòu)簡單化。
④輸入/輸出方法規(guī)范化:
結(jié)構(gòu)化程序設(shè)計(jì)應(yīng)遵循以下重要原則:
使用語言中的順序,選擇,重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。
選用的控制結(jié)構(gòu)只準(zhǔn)許有一個入口和一個出口。
復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)。
4.1.3程序效率分析
復(fù)雜性度量解決多可選方案問題與在程序編寫完成后,測試,評價(jià)程序。
程序復(fù)雜性主要指摸塊內(nèi)程序的復(fù)雜性其度量方法一般分為以下兩種:
①代碼行度量法:統(tǒng)計(jì)一個程序摸塊的源代碼行數(shù)目,并以源代碼行數(shù)作為程序復(fù)雜性的度量,適用于控制結(jié)構(gòu)比較簡單的模塊。
②McCabe度量法:基于程序控制流。使用程序控制流圖進(jìn)行McCabe度量。僅僅描繪程序的控制流程。
4.2軟件測試概述
軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。
4.2.1測試的目的和原則
兩種不同的測試目的:
①從用戶角度出發(fā),他們普遍希望通過軟件測試暴露出軟件中隱藏的錯誤和缺陷,以考慮是否可以接受該產(chǎn)品。
②從軟件開發(fā)者的角度出發(fā),他們則希望測試成為表明軟件產(chǎn)品中不存在錯誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立用戶對軟件質(zhì)量的信心。
軟件測試目的觀點(diǎn):①測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤。②一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤。③一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)錯誤的測試。
軟件測試的原則:①應(yīng)當(dāng)把盡早地,不斷地進(jìn)行軟件測試作為軟件開發(fā)者的座右銘。
②測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果兩部分組成。
③應(yīng)由第三方人員從事測試工作。
④在設(shè)計(jì)測試用例時,應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。
⑤注意測試中的錯誤群集現(xiàn)象。
⑥嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。
4.2.2測試的方法和步驟
1,軟件測試方法
黑盒測試:已知產(chǎn)品的功能設(shè)計(jì)規(guī)格,可以進(jìn)行測試證明每個實(shí)現(xiàn)了的功能是否符合要求。不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性。
白盒測試:已知產(chǎn)品的內(nèi)部工作過程,可以進(jìn)行測試證明每種內(nèi)部動作是否按設(shè)計(jì)規(guī)格要求正常進(jìn)行。對軟件的過程性細(xì)節(jié)做細(xì)致檢查。允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測試用例。
2,軟件測試步驟
自底向上:從小規(guī)模測試開始逐步進(jìn)行大規(guī)模測試。首先重點(diǎn)測試單個程序模塊,然后重點(diǎn)轉(zhuǎn)移到正在集成的模塊組,接著對整個系統(tǒng)進(jìn)行測試,最后由用戶進(jìn)行系統(tǒng)的驗(yàn)收測試。一般分為單元測試,集成測試,系統(tǒng)測試和驗(yàn)收測試。
4.3黑盒測試
著重測試軟件的功能需求,是在程序接口上進(jìn)行的測試,主要是為了發(fā)現(xiàn)以下錯誤:
①是否有功能錯誤,功能遺漏。
②是否能正確地接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出結(jié)果。
③是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤。
④是否有程序初始化和終止方面的錯誤。
黑盒窮舉測試對所有輸入數(shù)據(jù)的各種可能值的排列組合都進(jìn)行測試,來檢查程序是否都能產(chǎn)生正確的輸出。
具體的黑盒測試用例設(shè)計(jì)方法包括等價(jià)類劃分法,邊界值分析法,錯誤推測法等。
①等價(jià)類劃分法:把程序的輸入分為若干類,然后在每一類中選取少數(shù)代表性數(shù)據(jù)作為測試用例,每一類的代表性數(shù)據(jù)在測試中的作用等價(jià)于這一類中的其他值。
②邊界值分析法:對等價(jià)類劃分方法的補(bǔ)充。針對各種邊界情況設(shè)計(jì)測試用例。
③錯誤推測法:基于經(jīng)驗(yàn)和直覺推測程序中所有可能存在的各種缺陷和錯誤,從而有針對性地設(shè)計(jì)測試用例的方法。
4.4白盒測試
目的:①保證程序中所有關(guān)鍵路徑都被測試到,防止系統(tǒng)投入使用后用戶發(fā)現(xiàn)系統(tǒng)問題。
②便于衡量測試的完整性,即是否把某個功能點(diǎn)的所有可能情況都測試到。
③可以測試到程序中的所有真分支,假分支。
④檢查局部數(shù)據(jù)結(jié)構(gòu)的有效性。
⑤檢查程序的異常處理能力。
⑥檢查代碼是否遵循編碼規(guī)范。
總體上分為靜態(tài)白盒測試和動態(tài)白盒測試兩大類。
①靜態(tài)白盒測試是一種不通過執(zhí)行程序而進(jìn)行測試的技術(shù),其關(guān)鍵功能是檢查軟件的表示和描述是否一致。一般包括桌面檢查,代碼走查和代碼審查。
②動態(tài)白盒測試將程序在受控的環(huán)境下使用特定的測試用例進(jìn)行正式的運(yùn)行,顯示了一個系統(tǒng)在檢查狀態(tài)下是否正確。最重要的技術(shù)是路徑和分支測試。
窮舉測試難以實(shí)現(xiàn),一般可采用邏輯覆盒的白盒測試,即孝察用測試數(shù)據(jù)運(yùn)行被測程序?qū)Τ绦蜻壿嫷母采w程度??捎扇醯綇?qiáng)分為語句覆蓋,判定覆蓋,條件覆蓋,判定-條件覆蓋,條件組合覆蓋和路徑覆蓋。
正確的白盒測試要先從代碼分析入手,根據(jù)不同的語句執(zhí)行情況具體的測試場景選擇適合的覆蓋方式。
①語句覆蓋:設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使每個可執(zhí)行語句至少執(zhí)行一次。
②判定覆蓋:設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次。
③條件覆蓋:設(shè)計(jì)若干個測試用例,運(yùn)行被測程序,使程序中每個判斷的所有條件的每種可能取值至少執(zhí)行一次。
④判定-條件覆蓋:設(shè)計(jì)足夠的測試用例,使判斷中每個條件的所有可能取值至少執(zhí)行一次。
⑤條件組合覆蓋:設(shè)計(jì)足夠的,測試用例,運(yùn)行被測程序,使每個判斷的所有可能的條件取值組合至少執(zhí)行一次。
4.5單元測試
①內(nèi)容:模塊接口測試,局部數(shù)據(jù)結(jié)構(gòu)測試,重要路徑測試,錯誤處理測試,邊界測試。
②步驟:編碼階段進(jìn)行。輔助模塊:驅(qū)動模地,樁模塊。進(jìn)行單元測試時,應(yīng)為測試模塊開發(fā)一個驅(qū)動模塊和若干樁模塊。
4.6集成測試
目標(biāo):按照設(shè)計(jì)要求使用那些通過單元測試的構(gòu)件來構(gòu)造程序結(jié)構(gòu)。①功能性測試:黑盒測試技術(shù)針對被測模塊的接口規(guī)格說明進(jìn)行測試。②非功能性測試:對模塊的性能或可靠性進(jìn)行測試。
集成方式:①一次性集成方式:首先對每個模塊分別進(jìn)行模塊測試,然后再把所有模地組裝在一起進(jìn)行測試,最終得到要求的軟件系統(tǒng)。
②增量式集成方式:先對各個模塊進(jìn)行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng),在組裝的過程中邊連接邊測試,以發(fā)現(xiàn)連接過程中產(chǎn)生的問題,最后通過增量逐步組裝成為要求的軟件系統(tǒng)。有自頂向下,自底向上兩種增量方式。
4.7系統(tǒng)測試
①功能測試,②回歸測試,③可靠性測試,④壓力測試,⑤性能測試,⑥恢復(fù)測試,⑦啟動/停止測試,⑧配置測試等
?
?