版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章
用戶交互的軟件構(gòu)造第5章用戶交互的軟件構(gòu)造本章學(xué)習(xí)以鍵盤為輸入設(shè)備、以屏幕為輸出設(shè)備的用戶交互界面的軟件構(gòu)造,包括如何把多個(gè)模塊實(shí)現(xiàn)的功能整合到一個(gè)程序的軟件集成。通過交互式語音應(yīng)答系統(tǒng)的層次結(jié)構(gòu)的菜單交互界面的構(gòu)造,學(xué)習(xí)用戶功能與實(shí)現(xiàn)代碼的關(guān)聯(lián)。初步學(xué)習(xí)用戶交互的基本概念、基本原理、設(shè)計(jì)原則及常用的靜態(tài)測(cè)試方法。學(xué)習(xí)軟件集成及其相關(guān)的集成測(cè)試、回歸測(cè)試、基于模型的測(cè)試技術(shù)。完成案例基于菜單的用戶交互的構(gòu)造。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院2第5章用戶交互的軟件構(gòu)造故事6新的需求:(1)程序集成,把已經(jīng)編寫的代碼整合到一個(gè)程序,即一個(gè)啟動(dòng)主程序main();(2)程序界面,把程序的所有功能都放在一個(gè)界面上,讓用戶選擇功能并執(zhí)行;(3)交互練習(xí),或者說是在機(jī)器上使用程序做口算練習(xí),并完成批改。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院3第5章用戶交互的軟件構(gòu)造故事62016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院4第5章用戶交互的軟件構(gòu)造(1)正確選擇并執(zhí)行了功能后的程序界面是什么?可能的設(shè)計(jì)包括:①執(zhí)行完一個(gè)功能后程序退出,這顯然違背設(shè)計(jì)用戶界面的目的;②執(zhí)行完一個(gè)功能后,允許用戶繼續(xù)選擇,但是,僅僅顯示“請(qǐng)選擇…”,則需要用戶記憶序號(hào)對(duì)應(yīng)的功能。(2)何時(shí)結(jié)束程序運(yùn)行?(3)要是用戶不小心輸錯(cuò)了數(shù)字怎么辦?(4)功能2如何實(shí)現(xiàn)選擇練習(xí)題?是加法題、減法題或是混合題?是否還是要用戶通過輸入選擇,即通過二級(jí)菜單?二級(jí)菜單是顯示在主菜單中,還是進(jìn)入功能后再顯示?從低層功能完成后,直接顯示當(dāng)前層的菜單還是回到主菜單?等等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院5第5章用戶交互的軟件構(gòu)造5.1程序及其功能的使用5.2用戶交互概述5.3用戶交互的開發(fā)5.4靜態(tài)測(cè)試5.5軟件集成與測(cè)試5.6案例分析與實(shí)踐5.7討論與提高5.8思考與練習(xí)題2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院65.1程序及其功能的使用5.1.1程序的兩個(gè)觀察視角5.1.2多個(gè)功能程序的整合5.1.3多個(gè)功能的組織與呈現(xiàn)5.1.4基于菜單式功能選擇的用戶交互2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院75.1.1程序的兩個(gè)觀察視角程序可以從兩個(gè)角度觀察和理解。程序員是程序的產(chǎn)生者。他們看到程序的內(nèi)部組成——變量、語句、函數(shù)、類及其關(guān)聯(lián)所形成的結(jié)構(gòu)。程序員通過編寫函數(shù)、方法、
類等程序單元,實(shí)現(xiàn)用戶要求的功能。另一方面,對(duì)用戶而言,程序?qū)崿F(xiàn)其需求。用戶可以使用程序完成所要求的功能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院85.1.1程序的兩個(gè)觀察視角不論是傳統(tǒng)的命令行、菜單選擇的程序輸入/輸出,還是流行的圖形用戶界面GUI、觸摸式,以及聲控、手勢(shì)或腦控制的操作方式,都是用戶使用程序、與程序進(jìn)行交互的形式。程序員都應(yīng)該理解和掌握用戶和程序交互的基本原則和編程實(shí)現(xiàn)技術(shù)。程序最終是要把用戶的要求或指令轉(zhuǎn)換成相應(yīng)的函數(shù)或方法。當(dāng)然,用戶的操作和程序之間的關(guān)聯(lián)機(jī)制有所不同。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院95.1.2多個(gè)功能程序的整合當(dāng)一個(gè)程序不止一個(gè)功能(用戶角度),或者包含多個(gè)函數(shù)(程序員角度)時(shí),如何呈現(xiàn)并執(zhí)行這些功能涉及兩方面問題:(1)如何把若干功能合理地呈現(xiàn)出來,便于用戶操作;(2)如何把若干函數(shù)整合,便于程序執(zhí)行。第一個(gè)問題是用戶界面或交互的設(shè)計(jì),第二個(gè)問題是程序的集成。用戶界面可以視為集成程序的一種方式。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院105.1.3多個(gè)功能的組織與呈現(xiàn)程序的用戶界面集成實(shí)質(zhì)上就是如何把一組功能合理地組織并呈現(xiàn)給用戶使用。如果不考慮文字或圖形的方式,可以把功能以某種順序全部羅列出來,或者把所有功能按照某個(gè)規(guī)則分組、分層地結(jié)構(gòu)化地呈現(xiàn)。例如:文件目錄。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院115.1.3多個(gè)功能的組織與呈現(xiàn)把程序眾多功能劃分成組(抽象),按照層次結(jié)構(gòu),從抽象到具體直至一個(gè)功能,為用戶使用提供了方便易用的界面。這種用戶交互程序的形式無論是采用文字還是圖形,基本原理都一樣。圖5.4所示為一個(gè)IDE的圖形用戶界面。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院125.1.3多個(gè)功能的組織與呈現(xiàn)目前的移動(dòng)應(yīng)用APP眾多,手機(jī)屏幕大小有限,有兩種基本方式組織應(yīng)用:一種方式是以屏為單位連續(xù)擺放應(yīng)用圖標(biāo),排滿后增加一個(gè)屏幕,繼續(xù)順序放置;另一種方式是文件夾,它可以按照順序放置把一定數(shù)量的應(yīng)用。圖形化界面可以通過單擊表示功能或應(yīng)用的圖標(biāo)進(jìn)入下一級(jí)菜單,直接打開應(yīng)用或某個(gè)功能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院135.1.3多個(gè)功能的組織與呈現(xiàn)菜單類似文件夾,菜單中可以包含(子)菜單,構(gòu)成層次結(jié)構(gòu)。菜單結(jié)構(gòu)像一棵樹。葉子節(jié)點(diǎn)表示獨(dú)立的、具體的用戶功能(原子功能),是提供給用戶的服務(wù)或操作。樹根和內(nèi)部節(jié)點(diǎn)是一個(gè)子菜單,表示一組抽象的功能(功能組),用戶必須繼續(xù)從中選擇,直至原子功能。菜單的設(shè)計(jì)可以是自頂向下的方式,即從抽象的主菜單(根)逐步具體到子菜單,直至原子功能;也可以是自底向上的方式,把具體的功能逐步抽象、分組成子菜單,直至主菜單。無論哪種策略,都需要運(yùn)用抽象和分類的基本原則。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院145.1.4基于菜單式功能選擇的用戶交互菜單選擇用層次化結(jié)構(gòu)組織把程序的多個(gè)功能組織并呈現(xiàn)出來,是用戶交互的一種重要形式。它可以在鍵盤、觸摸屏、鼠標(biāo)、聲音等多種輸入/輸出設(shè)備中應(yīng)用。菜單式功能選擇的用戶交互在智能化系統(tǒng)(如自助服務(wù)、自動(dòng)語音應(yīng)答系統(tǒng))中仍然不可或缺。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院155.1.4基于菜單式功能選擇的用戶交互在自動(dòng)語音應(yīng)答系統(tǒng)或交互式語音應(yīng)答(InteractiveVoiceResponse,IVR)系統(tǒng)中,用戶通過撥打指定電話號(hào)碼,根據(jù)系統(tǒng)的語音提示收聽所需語音信息或服務(wù),或者參與聊天、交友等互動(dòng)式服務(wù)。IVR系統(tǒng)的應(yīng)用領(lǐng)域包括銀行、保險(xiǎn)公司、航空公司、電信、旅游及政府、醫(yī)療、健康、保險(xiǎn)、教育和其他金融服務(wù)等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院165.1.4基于菜單式功能選擇的用戶交互IVR系統(tǒng)通常把服務(wù)功能與數(shù)字、若干特殊符號(hào)(如井號(hào)#和星號(hào)*)關(guān)聯(lián)起來,讓用戶輸入數(shù)字或特殊符號(hào)獲取相應(yīng)的功能或進(jìn)入某個(gè)子菜單(功能組)。例如,銀行、移動(dòng)、電信等的客服熱線。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院175.1.4基于菜單式功能選擇的用戶交互【例5.1】某智慧城市目前提供了如下便民服務(wù):生活繳費(fèi)、預(yù)約掛號(hào)、公交服務(wù)、違章查詢、天氣預(yù)報(bào)、常用電話、航空服務(wù)、鐵路服務(wù)、長(zhǎng)途車服務(wù)、社保服務(wù)、公積金服務(wù)等。生活繳費(fèi)包括:自助繳納有線電視費(fèi)、水費(fèi)、電費(fèi)、燃?xì)赓M(fèi)、手機(jī)費(fèi)、一卡通費(fèi);公交服務(wù)主要包括:實(shí)時(shí)查詢和換乘查詢。常用電話包括:日常生活、交警大隊(duì)、快遞服務(wù)、網(wǎng)購電話、各區(qū)街道、各派出所、公交咨詢、醫(yī)院電話、銀行保險(xiǎn)、鐵路、長(zhǎng)途、航空、家政服務(wù)、出入境、投訴舉報(bào)等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院185.1.4基于菜單式功能選擇的用戶交互特點(diǎn):用戶需求對(duì)功能進(jìn)行了初步劃分和分層,菜單結(jié)構(gòu)應(yīng)該盡可能與用戶要求的結(jié)構(gòu)一致。但是,從設(shè)計(jì)和實(shí)現(xiàn)的角度,要對(duì)一組或一層中較多的功能進(jìn)一步劃分,使得每個(gè)菜單中的選項(xiàng)在一定的數(shù)量范圍內(nèi)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院195.1.4基于菜單式功能選擇的用戶交互第一級(jí)菜單,即主菜單包含11個(gè)功能。在IVR中通常使用數(shù)字0~9對(duì)應(yīng)某個(gè)功能,此外還要有返回上一層菜單、直接返回主菜單的功能,有時(shí)還提供重聽的功能。而一般的電話(含手機(jī))包含星號(hào)鍵和井號(hào)鍵。這樣,主菜單及任何一級(jí)菜單中的功能就不能超過9個(gè),如果超過9個(gè),則需要把相關(guān)的功能抽象地組成一個(gè)功能組,放在下一級(jí)菜單中。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院205.1.4基于菜單式功能選擇的用戶交互那么如何分組呢?原則一:按照分類法,把相似、相近或相關(guān)的功能放在一個(gè)組里。原則二:應(yīng)以最少的交互次數(shù)提供最常用的功能,即把最常用的功能盡可能地放在高層菜單。這樣,最少應(yīng)該把主菜單11個(gè)功能中的兩個(gè)功能放在一個(gè)功能組,就能用數(shù)字0~9對(duì)應(yīng)剩余的9個(gè)功能和一個(gè)功能組。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院215.1.4基于菜單式功能選擇的用戶交互2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院225.1.4基于菜單式功能選擇的用戶交互下面給出該菜單結(jié)構(gòu)的模擬實(shí)現(xiàn),以便讓用戶體驗(yàn)界面是否合適。所謂模擬,指的是沒有實(shí)現(xiàn)或不調(diào)用已經(jīng)實(shí)現(xiàn)的用戶功能,而是用簡(jiǎn)單的、通常只包含一條打印語句的模擬函數(shù)代替。模擬程序的主要目的是檢測(cè)菜單結(jié)構(gòu)、菜單項(xiàng)的訪問及菜單之間的跳轉(zhuǎn)。如果已經(jīng)實(shí)現(xiàn)了某個(gè)用戶功能,則可以調(diào)用執(zhí)行。最終,程序要經(jīng)過集成的策略和步驟,用實(shí)現(xiàn)的用戶功能替換每個(gè)模擬函數(shù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院235.2用戶交互概述5.2.1基本概念5.2.2交互設(shè)備5.2.3交互風(fēng)格5.2.4交互界面5.2.5交互設(shè)計(jì)的原則2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院245.2.1基本概念用戶交互或人機(jī)交互是有關(guān)交互式計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)、評(píng)估、實(shí)現(xiàn)及與之相關(guān)現(xiàn)象的學(xué)科。可以把人機(jī)交互理解為是關(guān)于可用性的學(xué)習(xí)和實(shí)踐,是關(guān)于理解和構(gòu)建用戶樂于使用且易于使用的軟件和技術(shù),并能在使用時(shí)發(fā)現(xiàn)產(chǎn)品有效性的學(xué)科。人機(jī)交互的目的是開發(fā)及提高計(jì)算機(jī)相關(guān)系統(tǒng)的安全性、效用、有效性、高效性和可用性。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院255.2.2交互設(shè)備借助交互設(shè)備對(duì)計(jì)算機(jī)系統(tǒng)輸入數(shù)據(jù)、指令或信息,并從系統(tǒng)獲得反饋。一個(gè)計(jì)算機(jī)系統(tǒng)通常使用以下幾種交互設(shè)備。鍵盤是文本輸入的主要設(shè)備,也是應(yīng)用最廣的輸入設(shè)備。定位設(shè)備在屏幕上通過指點(diǎn)物體實(shí)現(xiàn)對(duì)物體的操作或完成某個(gè)功能。如:鼠標(biāo)、光筆、觸摸屏/板、軌跡球、操縱桿等。顯示器是用戶從計(jì)算機(jī)得到反饋的主要輸出設(shè)備。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院265.2.3交互風(fēng)格設(shè)計(jì)者完成任務(wù)分析并識(shí)別出任務(wù)對(duì)象和動(dòng)作時(shí),可以選擇以下5種交互風(fēng)格:直接操縱菜單選擇表格填充命令語言自然語言2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院275.2.4交互界面交互界面是人和計(jì)算機(jī)進(jìn)行信息交換的通道,人通過交互界面向計(jì)算機(jī)輸入信息、進(jìn)行操作,計(jì)算機(jī)則通過交互界面向用戶提供信息,以供閱讀、分析和判斷。用戶界面是實(shí)現(xiàn)用戶交互、使用程序的手段。用戶交互是使用程序的本質(zhì)。人機(jī)交互只能通過特定的界面才能讓用戶更好地體驗(yàn)程序。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院285.2.4交互界面以下是幾種常見的基本人機(jī)交互界面。命令語言用戶界面。圖形用戶界面GUI。直接操作用戶界面。多媒體用戶界面。多通道用戶界面。虛擬現(xiàn)實(shí)技術(shù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院295.2.5交互設(shè)計(jì)的原則人機(jī)交互涉及心理學(xué)、認(rèn)知科學(xué)、計(jì)算機(jī)科學(xué)、產(chǎn)品設(shè)計(jì)、圖形設(shè)計(jì)等。3條基本原則(1)學(xué)習(xí)性。指的是新的用戶能用它進(jìn)行有效的交互并獲得最大的性能。(2)靈活性。是指用戶和系統(tǒng)能以多種方式交換信息。(3)健壯性。是指在決定成就和目標(biāo)評(píng)估方面對(duì)用戶提供的支持程度。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院305.2.5交互設(shè)計(jì)的原則8條黃金規(guī)則(1)盡量保持一致。(2)滿足普遍可用性。(3)提供信息反饋。(4)設(shè)計(jì)對(duì)話框以產(chǎn)生結(jié)束信息。(5)預(yù)防并成立錯(cuò)誤。(6)允許撤銷操作。(7)支持內(nèi)部控制點(diǎn)。(8)減輕短時(shí)記憶負(fù)擔(dān)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院315.2.5交互設(shè)計(jì)的原則菜單設(shè)計(jì)的一般指導(dǎo)原則2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院325.3用戶交互的開發(fā)5.3.1交互設(shè)計(jì)基本過程5.3.2快速原型法2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院335.3.1交互設(shè)計(jì)基本過程圖5.8所示為交互設(shè)計(jì)的過程模型,體現(xiàn)了“迭代”和“以用戶為中心”的特征。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院345.3.1交互設(shè)計(jì)基本過程(1)標(biāo)識(shí)和建立用戶需求。交互設(shè)計(jì)的用戶需求包括:功能需求、數(shù)據(jù)需求、使用環(huán)境和可用性需求。(2)提出滿足需求的候選設(shè)計(jì)方案。概念設(shè)計(jì)和物理設(shè)計(jì)。(3)構(gòu)建交互式版本。開發(fā)用戶交互模型,通常是可運(yùn)行的原型軟件,包含用戶交互界面、交互形式、完成任務(wù)的基本流程等。(4)設(shè)計(jì)評(píng)估。即評(píng)估交互設(shè)計(jì)的可運(yùn)行和可接受性。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院355.3.2快速原型法快速原型是快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個(gè)子集。使用快速原型的目的是:在獲得用戶交互基本需求說明的基礎(chǔ)上,快速建立一個(gè)可以運(yùn)行的軟件,使用戶及時(shí)運(yùn)行和看到交互的形式和使用效果,并對(duì)交互需求說明進(jìn)行補(bǔ)充和精化,提出改進(jìn)意見;開發(fā)人員進(jìn)一步修改完善,如此循環(huán)迭代,直到得到一個(gè)用戶滿意的模型為止。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院365.3.2快速原型法(1)功能選擇原型和最終的軟件系統(tǒng)不同,兩者在功能范圍上的區(qū)別主要有以下兩個(gè)方面:最終系統(tǒng)是軟件需求全部功能的實(shí)現(xiàn),而原型只實(shí)現(xiàn)所選擇的部分功能;最終系統(tǒng)對(duì)每個(gè)軟件需求都要求詳細(xì)實(shí)現(xiàn),而原型僅僅是為了試驗(yàn)和演示用的,部分功能需求可以忽略或者模擬實(shí)現(xiàn)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院375.3.2快速原型法(2)構(gòu)造原型根據(jù)用戶初步需求,開發(fā)出一個(gè)可以運(yùn)行的、主要包含界面的系統(tǒng),它應(yīng)滿足用戶提出的基本要求。(3)運(yùn)行和評(píng)價(jià)原型用戶在試用中能親自參加和面對(duì)一個(gè)可以實(shí)際運(yùn)行和操作的模型,能較為直觀和明確地進(jìn)一步提出需求,提出修改意見。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院385.3.2快速原型法(4)修改和完善原型根據(jù)修改意見進(jìn)行修改,修改系統(tǒng)原型,然后再進(jìn)行試用和評(píng)價(jià),這樣經(jīng)過有限次的循環(huán)反復(fù),逐步提高和完善,直到得到一個(gè)用戶滿意的系統(tǒng)模型為止。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院395.4靜態(tài)測(cè)試5.4.1程序的可用性與靜態(tài)測(cè)試5.4.2桌面檢查5.4.3代碼走查5.4.4正式審查5.4.5同行評(píng)審5.4.6檢查表5.4.7靜態(tài)程序分析2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院405.4.1程序的可用性與靜態(tài)測(cè)試程序的可用性指的是程序是否有用,包括用戶界面是否易用,主要有三個(gè)特征:有效性、效率和主觀滿意度。有效性是用戶完成特定任務(wù)和達(dá)成特定目標(biāo)時(shí)所具有的正確和完整程度。效率是用戶正確完成任務(wù)的程度與所用資源(如時(shí)間)的比率。主觀滿意度是用戶在使用產(chǎn)品過程中所感受到的主觀滿意和接受程度。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院415.4.1程序的可用性與靜態(tài)測(cè)試可用性的指標(biāo)分別是:易學(xué)性——產(chǎn)品是否易于學(xué)習(xí);交互效率——客戶使用產(chǎn)品完成具體任務(wù)的效率;易記性——客戶擱置某產(chǎn)品一段時(shí)間后是否仍然記得如何操作;容錯(cuò)性——操作錯(cuò)誤出現(xiàn)的頻率和嚴(yán)重程度如何。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院425.4.1程序的可用性與靜態(tài)測(cè)試根據(jù)是否運(yùn)行待測(cè)程序,軟件測(cè)試分為動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試。動(dòng)態(tài)測(cè)試通過設(shè)計(jì)有效的測(cè)試用例,運(yùn)行觀察程序的運(yùn)行行為、狀態(tài)變化及輸出等來判斷軟件是否存在問題。靜態(tài)測(cè)試不執(zhí)行程序,而是通過閱讀和分析代碼及相關(guān)材料、發(fā)現(xiàn)軟件錯(cuò)誤的活動(dòng)。靜態(tài)測(cè)試又稱人工手動(dòng)測(cè)試,是動(dòng)態(tài)測(cè)試和自動(dòng)化測(cè)試的補(bǔ)充,是軟件質(zhì)量保障的重要組成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院435.4.1程序的可用性與靜態(tài)測(cè)試靜態(tài)測(cè)試的主要作用包括:發(fā)現(xiàn)程序在功能、邏輯構(gòu)造方面的錯(cuò)誤;驗(yàn)證實(shí)現(xiàn)的程序在需求和設(shè)計(jì)方面符合用戶的要求;確認(rèn)程序符合預(yù)先定義的開發(fā)規(guī)范和標(biāo)準(zhǔn);保證軟件開發(fā)過程的規(guī)范性;有助于程序員之間相互學(xué)習(xí)。靜態(tài)測(cè)試常見類型有桌面檢查、代碼走查、正式審查、同行評(píng)審及靜態(tài)程序分析。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院445.4.2桌面檢查桌面檢查(DeskChecking)是程序員個(gè)人模擬計(jì)算機(jī)“閱讀”程序,發(fā)現(xiàn)代碼錯(cuò)誤的方法。代碼走查(walkthrough)和正式審查(inspection)是通過組織其他程序員共同參與的團(tuán)隊(duì)檢查,是對(duì)傳統(tǒng)的程序員桌面檢查方式的改進(jìn)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院455.4.3代碼走查代碼走查至少由兩人組成,其中一人協(xié)調(diào)走查,另一人扮演測(cè)試者。在走查過程中,由測(cè)試者提出一批測(cè)試用例,在走查會(huì)議上對(duì)每個(gè)測(cè)試用頭腦來執(zhí)行程序,在紙上或黑板上演變程序的執(zhí)行狀態(tài),從而發(fā)現(xiàn)程序錯(cuò)誤。在這個(gè)過程中,測(cè)試用例用作懷疑程序邏輯、計(jì)算或控制錯(cuò)誤的參照,測(cè)試用例本身并不重要。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院465.4.3代碼走查代碼走查主要從下列方面檢查程序的錯(cuò)誤:數(shù)據(jù)引用錯(cuò)誤、數(shù)據(jù)聲明錯(cuò)誤、邏輯錯(cuò)誤、計(jì)算錯(cuò)誤、判斷錯(cuò)誤、控制流程錯(cuò)誤、接口錯(cuò)誤、輸入/輸出錯(cuò)誤等。代碼開發(fā)人員對(duì)照講解設(shè)計(jì)意圖和程序代碼,特別是對(duì)有異議之處進(jìn)行解釋,有助于驗(yàn)證設(shè)計(jì)和實(shí)現(xiàn)之間的一致性。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院475.4.4正式審查一種正式的結(jié)構(gòu)化檢查和評(píng)估方法,一般有計(jì)劃、流程、結(jié)果和追查。審查小組至少有4人:一人負(fù)責(zé)協(xié)調(diào)、分發(fā)材料、安排進(jìn)程、確保錯(cuò)誤隨時(shí)得到改正,被檢測(cè)試程序的編碼人員,其他程序開發(fā)人員和一名測(cè)試人員。審查小組最好還要包括豐富經(jīng)驗(yàn)的程序員、編程語言的專家、未來的代碼維護(hù)人員、其他項(xiàng)目組成員,以及同組的程序員。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院485.4.4正式審查代碼審查通過會(huì)議實(shí)施,基本過程如下:協(xié)調(diào)人在代碼檢查前幾天分發(fā)程序清單、編碼規(guī)范和檢查清單;編碼人員講述程序的邏輯結(jié)構(gòu),其他人員提問題并判斷是否存在錯(cuò)誤;對(duì)照編碼規(guī)范、檢查清單分析程序;審查人員的注意力集中在發(fā)現(xiàn)錯(cuò)誤而非糾正錯(cuò)誤上(非調(diào)試);會(huì)議結(jié)束后,程序員會(huì)得到一份已發(fā)現(xiàn)錯(cuò)誤的清單。如果發(fā)現(xiàn)重大缺陷,在修改之后,還要重新召開會(huì)議審議。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院495.4.4正式審查采用正式審查時(shí)要注意以下幾點(diǎn):以會(huì)議形式審查,要制定會(huì)議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報(bào)告;按缺陷檢查表逐項(xiàng)檢查,避免漫無目標(biāo)檢查;發(fā)現(xiàn)問題適當(dāng)記錄,避免現(xiàn)場(chǎng)討論和修改;發(fā)現(xiàn)重大缺陷,改正后會(huì)議需要重開;檢查要點(diǎn)是缺陷檢查表,根據(jù)不同的項(xiàng)目,該表要不斷積累和完善。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院505.4.5同行評(píng)審?fù)性u(píng)審(reviewing)是對(duì)代碼的全面質(zhì)量評(píng)審,包括代碼的可維護(hù)性、可擴(kuò)展性、可使用性,以及安全和編程規(guī)范是否得到遵守,是軟件開發(fā)隊(duì)伍對(duì)程序質(zhì)量和信賴性進(jìn)行的自我評(píng)估。評(píng)審時(shí),一般挑選一個(gè)程序員作為組織者,由他再選擇若干同行參加評(píng)審。同行必須是真實(shí)的,即具有被評(píng)審者相同的背景(例如,均是Java程序員)。每個(gè)評(píng)審者都要挑選兩段程序進(jìn)行評(píng)審,比較和給出這兩段程序質(zhì)量上的優(yōu)缺點(diǎn)。可以定義更詳細(xì)的評(píng)價(jià)標(biāo)準(zhǔn),例如,對(duì)發(fā)現(xiàn)問題的嚴(yán)重程度分等級(jí)或加權(quán),從而定量地說明代碼的質(zhì)量和可信賴程序。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院515.4.5同行評(píng)審2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院525.4.6檢查表正式審查和同行評(píng)審都需要缺陷檢查表或檢查單。它列出了容易出現(xiàn)的典型錯(cuò)誤,以便讓編程人員和評(píng)審人員集中精力,依據(jù)代碼檢查單的問題,實(shí)施靜態(tài)測(cè)試,并記錄代碼中的錯(cuò)誤,以便在后期總結(jié)和統(tǒng)計(jì)錯(cuò)誤的類型、原因等,從而避免和預(yù)防代碼錯(cuò)誤。例如,Myers從數(shù)據(jù)引用錯(cuò)誤、數(shù)據(jù)聲明錯(cuò)誤、計(jì)算錯(cuò)誤、判斷錯(cuò)誤、控制流程錯(cuò)誤、接口錯(cuò)誤、輸入/輸出錯(cuò)誤等方面給出檢查單。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院535.4.7靜態(tài)程序分析靜態(tài)程序分析通過掃描源程序而發(fā)現(xiàn)可能的故障或異常。它不要求程序運(yùn)行,因而屬于靜態(tài)測(cè)試。它分析程序正文,識(shí)別程序中語句的差異,檢測(cè)語句構(gòu)造是否規(guī)范、推測(cè)程序的控制流、在很多場(chǎng)合計(jì)算出程序所有可能的值。靜態(tài)程序分析補(bǔ)充了語言編譯器提供的錯(cuò)誤檢測(cè)功能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院545.4.7靜態(tài)程序分析靜態(tài)分析的目的是引起程序員對(duì)程序中異常(如未初始化的變量、未使用的變量、數(shù)值超出范圍)的警覺。盡管這些異常不一定是錯(cuò)誤條件,但是,它們經(jīng)常是程序設(shè)計(jì)錯(cuò)誤、遺漏或疏忽的結(jié)果所造成的。靜態(tài)程序分析能發(fā)現(xiàn)的故障如表5.2所示。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院555.4.7靜態(tài)程序分析靜態(tài)程序分析器不僅檢測(cè)代碼的故障,也檢查代碼是否遵循了規(guī)定的規(guī)范或風(fēng)格。圖5.9為Java靜態(tài)分析工具Checkstyle(圖5.9(a))和PMD(圖5.9(b))的使用截圖。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院565.5軟件集成與測(cè)試把實(shí)現(xiàn)各個(gè)功能的模塊、數(shù)據(jù)、用戶交互界面等模塊組織起來,構(gòu)建成一個(gè)完整的應(yīng)用程序的過程稱為軟件集成。與之相對(duì)應(yīng)的是集成測(cè)試。軟件集成主要體現(xiàn)并依賴于軟件設(shè)計(jì)或軟件架構(gòu)設(shè)計(jì),明確組成軟件的各個(gè)模塊的功能和接口。只要嚴(yán)格按照要求開發(fā),模塊之間就能通過良好定義的接口整合在一起,構(gòu)成一個(gè)完整的軟件系統(tǒng)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院575.5軟件集成與測(cè)試軟件集成就是使多個(gè)軟件的功能集成到一個(gè)軟件,或是把軟件的各部分組合在一起成為一個(gè)可執(zhí)行的軟件。功能集成和界面集成是基本的軟件集成。功能集成指把具有不同功能的程序或模塊(函數(shù)、類、接口、庫等)通過函數(shù)調(diào)用、消息傳遞、繼承、包含、引用及共同的數(shù)據(jù)集等方式關(guān)聯(lián)起來,成為一個(gè)整體,完成更復(fù)雜的功能或提供比新程序組成單元更多的功能。界面集成指為具有不同功能的程序或模塊提供一個(gè)統(tǒng)一的用戶交互界面,方便用戶使用。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院585.5軟件集成與測(cè)試軟件集成含三個(gè)方面。①集成策略指對(duì)軟件的組成單元按照什么順序組織起來、構(gòu)成一個(gè)軟件,考慮的問題包括軟件組成單元之間的依賴關(guān)系、開發(fā)任務(wù)分配等。②集成內(nèi)容主要包括流程、數(shù)據(jù)、功能和界面。③集成技術(shù)指的是如何通過語法、語義、邏輯等關(guān)系把軟件的組成單元“粘合”起來。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院595.5軟件集成與測(cè)試集成測(cè)試的主要目的是檢測(cè)軟件組成單元的接口是否符合要求,它們的交互是否流暢,集成后的軟件能否按照設(shè)計(jì)合作完成要求的功能等。集成的前提是各個(gè)組成單元已經(jīng)完成開發(fā)并通過了(單元)測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院605.5軟件集成與測(cè)試圖5.11所示為案例程序功能的層次結(jié)構(gòu)。填充的方框表示尚未實(shí)現(xiàn)的模塊,有邊框的表示原子功能。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院615.5軟件集成與測(cè)試5.5.1驅(qū)動(dòng)模塊和樁模塊5.5.2集成策略5.5.3回歸測(cè)試5.5.4集成測(cè)試與策略2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院625.5.1驅(qū)動(dòng)模塊和樁模塊在集成軟件及其組成單元時(shí),為了使得集成的軟件可以編譯和運(yùn)行,需要模擬集成時(shí)尚未完成的組成單元、相關(guān)聯(lián)的環(huán)境之間的交互。常見的基本的模擬程序有驅(qū)動(dòng)模塊和樁模塊。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院635.5.1驅(qū)動(dòng)模塊和樁模塊驅(qū)動(dòng)模塊的主要任務(wù)是搜集或產(chǎn)生數(shù)據(jù)、把數(shù)據(jù)傳給待測(cè)程序、啟動(dòng)和執(zhí)行它。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院645.5.1驅(qū)動(dòng)模塊和樁模塊使用模擬程序的主要原因和目的如下。(1)模擬復(fù)雜的代碼。增量集成代碼時(shí),要關(guān)注模塊間的接口是否一致、模塊的交互邏輯是否矛盾、模塊的合作是否流暢等。采用模擬程序可以分離關(guān)注點(diǎn)。(2)模擬尚未實(shí)現(xiàn)的代碼。(3)模擬程序的整體性。把所有或部分代碼整合到一起,測(cè)試運(yùn)行一次可能會(huì)耗費(fèi)資源、時(shí)間等,為了檢測(cè)程序的整體結(jié)構(gòu)、用戶界面、全局邏輯、關(guān)鍵功能等,采用模擬程序替換實(shí)際程序可以加快實(shí)現(xiàn)特定的目標(biāo)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院655.5.2集成策略傳統(tǒng)方法用樹狀的結(jié)構(gòu)圖示意一個(gè)程序的組織結(jié)構(gòu)。圖5.11表示了案例程序的功能結(jié)構(gòu),其中方框圖表示程序的功能模塊,連線表示模塊之間的控制關(guān)系或者功能的組成;樹的根表示總控模塊,它調(diào)用其他模塊完成程序的所有功能?;诔绦蚪Y(jié)構(gòu)的功能分解屬于基本的集成策略,主要有如下5種方式:一次性集成、增式集成、自底向上集成、自頂向下集成、基干集成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院665.5.2集成策略1.一次性集成構(gòu)成一個(gè)程序的所有模塊在一次集成過程中組裝成最終的軟件。對(duì)圖5.11而言,一次性集成就是,首先完成這16個(gè)模塊的開發(fā)和測(cè)試,然后放在一起,構(gòu)成最終的軟件。難以發(fā)現(xiàn)和修改在一次性集成中出現(xiàn)的錯(cuò)誤。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院675.5.2集成策略2.增式集成增式集成,即以一個(gè)基本模塊或主模塊為基礎(chǔ),每次增加一個(gè)或一組模塊形成部分程序,在確保正確后再逐步增加模塊,直至所有模塊都集成至部分程序構(gòu)成軟件整體。增量集成中出現(xiàn)的錯(cuò)誤容易定位和修復(fù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院685.5.2集成策略3.自頂向下集成集成模塊從根部的控制模塊開始,以控制層次的順序,逐次增加模塊,直至形成整個(gè)程序的增式集成方式,稱為自頂向下集成。增量集成時(shí)要為其他尚未集成的模塊編寫樁,通過測(cè)試后,再逐步用模塊替換樁、執(zhí)行集成與測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院695.5.2集成策略集成測(cè)試的步驟:(1)測(cè)試主模塊,以樁模塊代替沒有完成開發(fā)的下級(jí)模塊;(2)依次用實(shí)現(xiàn)的模塊代替樁模塊;(3)每集成一個(gè)模塊,就測(cè)試部分程序,重點(diǎn)是新增的模塊及其與部分程序的交互;(4)必要時(shí)進(jìn)行回歸測(cè)試——重復(fù)之前的測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院705.5.2集成策略自頂向下集成策略的優(yōu)點(diǎn):在集成的任何時(shí)候都有一個(gè)可以運(yùn)行的程序。缺點(diǎn):樁模塊的開發(fā)代價(jià)有時(shí)會(huì)較大,而且正是由于樁模塊的存在使得部分程序難以得到充分的測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院715.5.2集成策略4.自底向上集成選擇獨(dú)立性最大或者對(duì)其他模塊依賴性最小的模塊開始,從程序結(jié)構(gòu)圖的底部開始,逐次增加控制模塊,直至完成整個(gè)程序。需要編寫驅(qū)動(dòng)模塊。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院725.5.2集成策略集成測(cè)試的步驟:(1)編寫調(diào)用底層模塊的驅(qū)動(dòng)模塊;(2)測(cè)試驅(qū)動(dòng)模塊與底層模塊組成的部分程序;(3)用實(shí)現(xiàn)的控制模塊替換驅(qū)動(dòng)模塊,并測(cè)試部分程序的功能;(4)必要時(shí)進(jìn)行回歸測(cè)試——重復(fù)之前的測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院735.5.2集成策略自底向上集成的優(yōu)點(diǎn):(1)底層模塊的測(cè)試與集成可以獨(dú)立、平行地進(jìn)行;(2)不需要樁模塊。缺點(diǎn):(1)驅(qū)動(dòng)模塊的開發(fā)一般比較耗費(fèi);(2)難以充分測(cè)試高層模塊的可操作性。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院745.5.2集成策略5.基干集成選擇一個(gè)程序的基干模塊,將自頂向下與自底向上的集成方式結(jié)合起來,逐步地集成其他模塊的策略,稱為基干集成,又稱三明治或混合策略。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院755.5.2集成策略優(yōu)點(diǎn):(1)減輕了自頂向下與自底向上的不利因素;(2)集成過程總有一個(gè)可運(yùn)行的部分程序;(3)適合大型、復(fù)雜軟件的集成。缺點(diǎn):(1)需要仔細(xì)分析系統(tǒng)結(jié)構(gòu)和模塊間依賴性,同時(shí)要分析用戶需求的優(yōu)先性;(2)有時(shí)需要開發(fā)樁模塊和驅(qū)動(dòng)模塊,工作量較大;(3)局部采用了一次性集成,接口測(cè)試可能不充分。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院765.5.3回歸測(cè)試復(fù)用之前的測(cè)試對(duì)集成后的軟件或其中的某個(gè)子集重新進(jìn)行測(cè)試,以確保修改的模塊或其他程序變更沒有傳播不期望的副作用。這種測(cè)試稱為回歸測(cè)試。它是保證在程序修改的情況下保證程序功能正常的一致性測(cè)試策略和方法。回歸測(cè)試無須對(duì)程序進(jìn)行全面測(cè)試,而是根據(jù)修改情況進(jìn)行有限的測(cè)試??梢赃x用測(cè)試庫中的測(cè)試用例,也可以增加新的測(cè)試用例。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院775.5.3回歸測(cè)試回歸測(cè)試的基本過程是:(1)識(shí)別軟件中發(fā)生變更、受影響的部分;(2)選擇可以復(fù)用的測(cè)試用例,用以驗(yàn)證程序的變更不改變程序的原有功能;(3)補(bǔ)充新的測(cè)試用例,側(cè)重檢測(cè)可能會(huì)受到影響的功能或軟件子集,特別是包含新增或修改的部分,以及與其他軟件部分的聯(lián)系;(4)依據(jù)一定的策略對(duì)程序進(jìn)行測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院785.5.3回歸測(cè)試實(shí)施回歸測(cè)試策略時(shí),應(yīng)該兼顧效率和有效性兩個(gè)方面,可以采用不同的測(cè)試用例選擇方式。(1)再測(cè)試全部測(cè)試用例。(2)基于風(fēng)險(xiǎn)選擇測(cè)試。(3)再測(cè)試修改的部分。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院795.5.4集成測(cè)試與策略集成測(cè)試關(guān)注模塊間的調(diào)用、消息傳遞、數(shù)據(jù)傳輸與處理是否正確及不同模塊的可組合性,它們之間的協(xié)作能否完成一個(gè)包含了若干操作的特定的應(yīng)用功能,即是否能實(shí)現(xiàn)用戶的功能要求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院805.5.4集成測(cè)試與策略集成測(cè)試應(yīng)該遵循下列幾條基本原則:(1)應(yīng)該測(cè)試所有的公共接口;(2)要充分測(cè)試關(guān)鍵模塊;(3)應(yīng)該按照一定的層次實(shí)施集成測(cè)試;(4)選擇與開發(fā)、軟件集成相匹配的測(cè)試策略;(5)集成后任何模塊接口和實(shí)現(xiàn)的變動(dòng)都要進(jìn)行回歸測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院815.5.4集成測(cè)試與策略協(xié)作集成與測(cè)試的過程如下:(1)對(duì)待集成的模塊依賴性、性關(guān)系等邏輯關(guān)系進(jìn)行分析,確定出用戶指定或密切關(guān)聯(lián)的子系統(tǒng);(2)運(yùn)用之前的策略集成并測(cè)試每個(gè)子系統(tǒng);(3)逐步集成每個(gè)子系統(tǒng)并測(cè)試整個(gè)系統(tǒng),直至完成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院825.5.4集成測(cè)試與策略圖5.12為一個(gè)軟件的組成模塊與關(guān)系。一個(gè)集成順序是按照子系統(tǒng)的序號(hào)由低到高。由于子系統(tǒng)3相對(duì)獨(dú)立,可以獨(dú)立地集成與測(cè)試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院835.6案例分析與實(shí)踐5.6.1分析與設(shè)計(jì)5.6.2案例程序的菜單式用戶交互的構(gòu)造5.6.3循環(huán)語句的路徑測(cè)試2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院845.6.1分析與設(shè)計(jì)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院855.6.2案例程序的菜單式用戶交互的構(gòu)造2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院865.6.3循環(huán)語句的路徑測(cè)試循環(huán)測(cè)試是一種結(jié)構(gòu)性測(cè)試技術(shù),它側(cè)重于循環(huán)結(jié)構(gòu)元素的有效性。4種不同的循環(huán)結(jié)構(gòu):簡(jiǎn)單循環(huán)、嵌套循環(huán)、串接循環(huán)和非結(jié)構(gòu)化循環(huán),如圖5.18所示。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院875.6.3循環(huán)語句的路徑測(cè)試簡(jiǎn)單循環(huán)的測(cè)試(假設(shè)n是允許的最大循環(huán)次數(shù)):循環(huán)0次(跳過整個(gè)循環(huán)體);循環(huán)1次;循環(huán)2次;循環(huán)正常次數(shù)(通常為最大次數(shù)的一半);循環(huán)n?1、n、n+1次。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院885.6.3循環(huán)語句的路徑測(cè)試簡(jiǎn)單循環(huán)的測(cè)試方法擴(kuò)展到嵌套循環(huán),測(cè)試數(shù)量隨著嵌套層次的增加而成幾何級(jí)數(shù)增加。以下方法可以減少測(cè)試數(shù)量。從最內(nèi)層循環(huán)開始,將其他循環(huán)設(shè)為最小值。對(duì)最內(nèi)層循環(huán)執(zhí)行簡(jiǎn)單循環(huán)測(cè)試,而使外層循環(huán)的迭代參數(shù)值(及循環(huán)計(jì)數(shù))最小,并對(duì)范圍以外或不包含在內(nèi)的值增加其他測(cè)試。由內(nèi)向外構(gòu)造下一個(gè)循環(huán)的測(cè)試,但使其他外層循環(huán)具有最小值,并使其他嵌套循環(huán)為“典型”值。繼續(xù)上述過程,直至測(cè)試完所有循環(huán)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院895.6.3循環(huán)語句的路徑測(cè)試對(duì)于串接循環(huán),若串接的循環(huán)彼此獨(dú)立,則可以采用簡(jiǎn)單循環(huán)測(cè)試方法。然而,若兩個(gè)循環(huán)串接起來,且第一個(gè)循環(huán)的循環(huán)計(jì)數(shù)為第二個(gè)循環(huán)的初始值,則這兩個(gè)循環(huán)相互依賴,這時(shí)建議采用嵌套循環(huán)的測(cè)試方法。最后,對(duì)于非結(jié)構(gòu)化循環(huán),若有可能,重新設(shè)計(jì)代碼或重構(gòu)代碼,避免這種非結(jié)構(gòu)化的程序。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院905.7討論與提高5.7.1軟件建模5.7.2基于模型的測(cè)試5.7.3執(zhí)行函數(shù)名符號(hào)串的表驅(qū)動(dòng)編程5.7.4持續(xù)集成2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院915.7.1軟件建模模型是對(duì)客體的抽象,是通過主觀意識(shí)借助實(shí)體或虛擬表現(xiàn),構(gòu)成客觀闡述形態(tài)、結(jié)構(gòu)的一種表達(dá)目的的物件。它是人們依據(jù)研究的特定目的,在一定假設(shè)條件下,再現(xiàn)原型客體的結(jié)構(gòu)、功能、屬性、關(guān)系、過程等本質(zhì)特征的物質(zhì)形式或思維形式。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院925.7.1軟件建模建模是指對(duì)研究的實(shí)體進(jìn)行必要的抽象和簡(jiǎn)化,用適當(dāng)?shù)谋憩F(xiàn)形式或規(guī)則把它的主要特征描述出來的過程。建模的目的是研究客體問題、探討客體的本質(zhì)而對(duì)它所做的一種簡(jiǎn)化結(jié)果,是通過采用理想化的辦法創(chuàng)造、并能再現(xiàn)客體本質(zhì)和內(nèi)在特性的模型。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院935.7.1軟件建模模型可以是模擬,也可以是樣板。對(duì)尚不存在、擬構(gòu)建的客體建立的模型,稱為樣板。它可以作為樣板用以創(chuàng)建設(shè)想中的客體。模擬是對(duì)已經(jīng)存在客體的簡(jiǎn)化而建立的,模型是對(duì)客體的,它的主要作用是理解和分析客體,進(jìn)而作為改進(jìn)的手段,建立樣本模型,創(chuàng)造新的客體。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院945.7.1軟件建模物理模型和數(shù)學(xué)模型是基本的模型形態(tài)。物理模型的表現(xiàn)形式主要是金屬、塑料、木材等物理材料。數(shù)學(xué)模型是用數(shù)學(xué)符號(hào)、方程、式子、圖形等對(duì)客體本質(zhì)屬性的抽象而又簡(jiǎn)潔的刻畫。建立物理模型讓人直觀感受到待建物體的外形和結(jié)構(gòu),通過建立的數(shù)學(xué)模型分析待建物體的物理、結(jié)構(gòu)等性質(zhì)。在經(jīng)濟(jì)、金融、管理等領(lǐng)域,數(shù)學(xué)模型也是基本、常用的建模手段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院955.7.1軟件建模數(shù)學(xué)是常用的軟件建模手段,包括數(shù)理統(tǒng)計(jì)、代數(shù)學(xué)、數(shù)理邏輯、集合論、圖論及時(shí)態(tài)邏輯、形式語言等。為了開發(fā)、分析和評(píng)估軟件及軟件過程,我們還使用軟件建模語言或符號(hào),特別是可視化的圖形符號(hào)??刂屏鲌D(CFG)來模擬程序的控制結(jié)構(gòu)。類圖刻畫面向?qū)ο蟪绦虻慕M織結(jié)構(gòu)。樹(圖的一種)描述用戶交互的菜單結(jié)構(gòu)。實(shí)體-關(guān)系(E-R)圖為數(shù)據(jù)關(guān)系建模。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院965.7.1軟件建模UML有機(jī)地整合了較多的軟件建模方法,在軟件分析與設(shè)計(jì)中獲得了廣泛應(yīng)用。需要指出的是,圖形建模語言要有嚴(yán)格的語法和語義,它們規(guī)定了采用的圖符(如線、框)的組成、結(jié)構(gòu)和(用數(shù)學(xué)表示的)含義,以便對(duì)軟件模型進(jìn)行推理、分析和評(píng)估。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院975.7.1軟件建模例5.1中,樹描述菜單的層次結(jié)構(gòu),表現(xiàn)了菜單的靜態(tài)性。因用戶的選擇動(dòng)作和程序執(zhí)行而造成的程序在菜單之間的轉(zhuǎn)換和跳轉(zhuǎn)則體現(xiàn)了菜單的動(dòng)態(tài)性。圖5.19的狀態(tài)轉(zhuǎn)換圖為菜單之間相互遷移提供了導(dǎo)航。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院985.7.1軟件建模狀態(tài)轉(zhuǎn)換圖是一個(gè)有向圖。圖的節(jié)點(diǎn)表示抽象的、可以具有名稱的狀態(tài)。帶箭頭的連線表示在一定輸入(條件或動(dòng)作)下從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)。連線離開的狀態(tài)稱為箭頭指向狀態(tài)的前驅(qū),箭頭指向的狀態(tài)稱為后繼狀態(tài)。前驅(qū)和后繼狀態(tài)可以是同一個(gè)狀態(tài)。狀態(tài)、引起狀態(tài)轉(zhuǎn)換的輸入及連線的個(gè)數(shù)都是有限的。狀態(tài)轉(zhuǎn)換圖有唯一的起始狀態(tài)和若干結(jié)束整體??梢杂枚禾?hào)分開引起兩個(gè)狀態(tài)轉(zhuǎn)換的不同的輸入。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院995.7.2基于模型的測(cè)試1.基于有限狀態(tài)圖的測(cè)試狀態(tài)轉(zhuǎn)換圖把程序抽象成函數(shù)之間的關(guān)聯(lián)與交互,忽略了函數(shù)內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)?;跔顟B(tài)轉(zhuǎn)換圖的測(cè)試即對(duì)節(jié)點(diǎn)表示函數(shù)的黑盒測(cè)試。另,狀態(tài)轉(zhuǎn)換圖刻畫了函數(shù)之間的交互。本例的狀態(tài)轉(zhuǎn)換圖詳細(xì)說明了每個(gè)菜單在接收有效用戶輸入后,程序在菜單之間的轉(zhuǎn)換。故基于狀態(tài)轉(zhuǎn)換圖的測(cè)試又可視為對(duì)整個(gè)程序的白盒測(cè)試。故白盒測(cè)試技術(shù)可以應(yīng)用到狀態(tài)轉(zhuǎn)換圖模型。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院1005.7.2基于模型的測(cè)試(1)滿足節(jié)點(diǎn)覆蓋的測(cè)試滿足節(jié)點(diǎn)覆蓋實(shí)際上就是滿足狀態(tài)覆蓋。測(cè)試準(zhǔn)則可以要求設(shè)計(jì)測(cè)試用例使得每個(gè)狀態(tài)都至少執(zhí)行一次。同語句覆蓋,這是最基本、也是最容易滿足的測(cè)試準(zhǔn)則。為了測(cè)試有些狀態(tài),如menu_0_4,首先需要將程序執(zhí)行到其前驅(qū)狀態(tài)menu_0,接收用戶輸入4后,才能測(cè)試狀態(tài)menu_0_4。這就需要從一個(gè)狀態(tài)遷移到另一個(gè)狀態(tài)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院1015.7.2基于模型的測(cè)試(2)滿足連線覆蓋的測(cè)試實(shí)際上就是測(cè)試兩個(gè)狀態(tài)間的遷移。測(cè)試準(zhǔn)則可以要求設(shè)計(jì)測(cè)試用例使得兩個(gè)狀態(tài)間的遷移都至少執(zhí)行一次。首先,從連接的狀態(tài)數(shù)量上考慮,該準(zhǔn)則可以要求覆蓋的狀態(tài)不止兩個(gè),還可以是多個(gè)。其次,要滿足100%的遷移覆蓋準(zhǔn)則,就要對(duì)不同的動(dòng)作或條件設(shè)計(jì)測(cè)試用例。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院1025.7.2基于模型的測(cè)試遷移的嚴(yán)格定義包含了遷移條件或動(dòng)作及前驅(qū)狀態(tài)、后繼狀態(tài),而且要求在同一個(gè)狀態(tài)下面臨的一個(gè)條件或動(dòng)作,最多有且只有一個(gè)后繼狀態(tài)。另外,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高端汽車租賃服務(wù)詳細(xì)協(xié)議
- 2024導(dǎo)演合作拍攝協(xié)議細(xì)則
- 董事長(zhǎng)的具體職責(zé)職能模板范文5篇
- 2024年度環(huán)保垃圾清運(yùn)服務(wù)協(xié)議模板
- 2024年個(gè)人合伙權(quán)益股份轉(zhuǎn)讓協(xié)議
- 安檢服務(wù)人員2024勞動(dòng)協(xié)議樣本
- 2024年建筑項(xiàng)目安全保證協(xié)議
- 文書模板-《合伙銷售白酒合同》
- 2024年教育培訓(xùn)業(yè)務(wù)合作協(xié)議
- 2024年度車輛租賃化三方協(xié)議
- 飼料加工系統(tǒng)粉塵防爆安全規(guī)程
- 婦產(chǎn)科學(xué)課件:胎心監(jiān)測(cè)
- 新蘇教版科學(xué)四年級(jí)上冊(cè)學(xué)生活動(dòng)手冊(cè)習(xí)題與講解
- 基礎(chǔ)護(hù)理質(zhì)量標(biāo)準(zhǔn)及考核評(píng)分表
- 商務(wù)條款響應(yīng)表
- 二年級(jí)上冊(cè)美術(shù)教案-7. 去遠(yuǎn)航 -冀教版
- 二年級(jí)上冊(cè)語文課件-10《日月潭》|人教(部編版) (共19張PPT)
- 《詩情畫意》教學(xué)設(shè)計(jì)
- 中華文化與傳播教材課件
- Unit3 Sports and Fitness Reading for writing健康生活講義-高中英語人教版(2019)必修第三冊(cè)
- Unit 4 Viewing Workshop 課件-高中英語北師大版(2019)選擇性必修第二冊(cè)
評(píng)論
0/150
提交評(píng)論