软件工程-题目集
簡答題
1.簡述軟件生存期由哪些主要階段組成,每一階段的任務是什么?
軟件生存期由軟件定義、軟件開發、和運行維護三個時期組成。
(1)軟件定義時期的主要任務是解決“做什么”的問題;
(2)軟件開發時期的主要任務是解決“如何做”的問題;
(3)運行維護時期的主要任務是使軟件持久地滿足用戶的需要。
2.軟件工程方法包含哪幾種?簡述最常用兩種方法的特點。
軟件工程方法包括:傳統方法(結構化方法)、面向對象發法、面向服務方法、面向數據方法、形式化方法。最常用的為傳統方法和面向對象方法。
(1)傳統方法:采用結構化技術來完成軟件開發的各項任務;
(2)面向對象方法:面向對象程序設計代表了一種全新的程序設計思路,與傳統的面向過程的開發方法不同,面向對象的程序設計和問題求解更符合人們日常的思維習慣。
3.軟件生存期模型有哪些?他們各自的特點是什么?
軟件生存期模型包括瀑布模型、原型模型、增量模型、螺旋模型、噴泉模型、統一過程、基于構件的軟件開發、敏捷過程。
(1)瀑布模型的特點:
1.階段間具有順序性和依賴性;
2.推遲實現的觀點;
3.質量保證的觀點。
(2)原型模型的特點:
1.有助于滿足用戶的需求。
2.軟件產品的開發基本上是按照線性順序進行的。
3.規格說明書文檔正確描述了用戶的需求,所以在開發過程中的后續階段不會因發現規格說明書文檔的錯誤而進行較大的返工。
(3)增量模型的特點:
1.在較短的時間內向用戶提交一些有用的工作產品,即從第一個構件交付之日起用戶就能做一些有用的工作;
2.逐步增加產品的功能可以使用戶有充裕的時間來學習和適應新產品,從而減少全新的軟件給用戶、組織的沖擊;
3.項目失敗的風險較低;
4.優先級最高的服務優先交付。
(4)螺旋模型的特點:
1.對可選方案和約束條件的強調有利于已有軟件的重用,也有助于把軟件質量作為軟件開發的一個重要目標。
2.減少了過多的測試或測試不足所帶來的風險。
3.在螺旋模型中維護只是模型的另一個周期,因而在維護和開發之間并沒有本質的區別。
(5)噴泉模型:
面向對象開發軟件時,在分析、設計和編碼等項開發活動之間并不存在明顯的邊界,而各階段在開發方法的一致性也保證了各項活動之間的無縫過渡。
(6)統一過程:
以用例驅動、以體系結構為核心、迭代及增量的軟件過程模型,由UML方法和工具支持,廣泛應用于各類面向對象項目。
(7)基于構件的軟件開發模型:
①對該問題領域的基于構件的可用產品進行研究和評估。
②考慮構建的集成問題。
③設計軟件體系結構以容納這些軟件。
④將構建集成到軟件體系結構中。
⑤進行充分的測試以保證功能正常。
(8)敏捷過程:
4.結構化設計方法的 實施要點有哪些?
5.簡述基于數據流方法的設計過程。
(1)復查并精化數據流圖;
(2)確定數據流圖中數據流的類型,典型的數據流類型有變換型數據流和事務性數據流,數據流類型決定了映射的方法;
(3)導出初始的軟件結構圖;
(4)逐級分解;
(5)精化軟件結構;
(6)導出接口描述和全局數據結構。
6.UML中有哪些圖,每種圖的作用是什么?
(1)結構圖:
1.類圖:類圖是描述系統中各個對象的類型以及其間存在的各種關系的圖;
2.組合結構圖:組合結構圖是描述類和構建的內部結構的圖,其中包括與系統其他部分的交互點;
3.構件圖:是描述構件的組織結構和相互關系的圖;
4.部署圖:是描述節點、節點間的關系以及構件和節點間部署關系的圖;
5.對象圖:是描述在某一時刻一組對象以及它們之間的關系的圖;
6.包圖:描繪模型元素分組(包)以及分組之間依賴的圖;
7.造型圖:造型圖是元模型的一種限制形式,可用于對UML進行擴展。最基本的擴展結構是構造型。
(2)行為圖:
1.活動圖:是描述活動、活動的執行順序以及活動的輸入與輸出的圖;
2.用例圖:是描述一組用例、參與者以及它們之間關系的圖;
3.狀態圖:是描述一個對象(或其他實體)在其生存期內所經歷的各種狀態以及狀態變遷的圖;
4.順序圖:是描述一組角色和由扮演這些角色的實例發送和接收的消息的圖;
5.交互概覽圖:是以一種活動圖的變種來描述交互的圖:
6.通信圖:描述一組角色、這些角色間的連接加件以及由扮演這些角色的實例所收發消息的圖;
7.定時圖:描述在線性時間上狀態或條件變化的圖。
7.面向對象模型的三個模型分別是什么?每種模型的功能是什么?
(1)功能模型(用例模型):用例模型是從用戶的角度描述系統的功能,目的是提取和分析足夠的需求信息;
(2)靜態模型(對象模型):建立問題域的概念模型;
(3)動態模型(交互模型):描述系統的動態行為,顯示對象在系統運行期間不同時刻的動態交互,主要是建立系統的交互圖和行為圖。
8.邏輯覆蓋有哪些?他們分別有什么特點?
邏輯覆蓋又可分為以下幾種,從弱到強:
(1)語句覆蓋(SC):設計足夠多的測試用例,確保每條語句都被執行過。
(2)判定覆蓋(DC):設計足夠多的測試用例,確保每個判定都分別取真值與假值。
(3)條件覆蓋(CC):設計足夠多的測試用例,確保每個條件都分別取真值與假值。(一個判定里可能包含多個條件)
(4)判定/條件覆蓋(DCC):設計足夠多的測試用例,確保每個判定和條件分別取真值和假值。
(5)條件組合覆蓋(CMC):設計足夠多的測試用例,確保覆蓋每個判定中的各個條件的所有組合情況。(只考慮同一個判定內的各條件組合情況)
(6)路徑覆蓋:設計足夠多的測試用例,確保每條路徑都被執行。如果程序復雜,比如包含循環的情況,路徑覆蓋的測試用例數將會是個天文數字,無法實現??梢圆捎煤喕说穆窂礁采w,即將循環看成是一個判定,只考慮循環被執行和未執行兩種情況。
9.簡述基本路徑覆蓋的求解步驟。
(1)畫出程序控制流圖;
(2)計算環路復雜性;
(3)導出測試用例;
(4)準備測試用例;
(5)圖形矩陣。
10.軟件測試要經過哪些步驟?這些測試與軟件開發各階段有什么關系?
軟件測試要經過的步驟是:單元測試→ 集成測試–> 確認測試–> 系統測試。
(1)單元測試又稱為模塊測試,是針對軟件設計的最小單位----程序設計模塊-----進行正確性檢驗的測試工作。其目的是在于發現是模塊內部可能存在的各種錯誤,單元測試需要從程序的內部結構觸發設計測試用例。多個模塊可以。平行的獨立的設計測試用例。
(2)集成測試檢查概要設計是否合理有效。
(3)確認測試又稱為有效性測試。他的任務是驗證軟件的有效性,即驗證軟件的功能以其他特性是否與用戶的要求一致。
(4)系統測試是將通過確認測試用的軟件,作為整個計算機系統的一個元素,與計算機的硬件、外設、某些支持軟件、數據和人員等其他系統元素結合在一起,在實際運行的環境下,對計算機系統進行一系列的組裝測試和確認測試。
11.簡述面向對象方法較之結構化方法的先進性。
面向對象方法,得益于三大特點(封裝性、繼承性、多態性),面對新的需求僅僅需要修改相關類,系統的結構不會有大的改變。在協作開發時,結構化開發往往不利于開發人員之間的交流,因為每一部分之間的邏輯性非常強,但比較抽象,而類是非常具體的,所以開發人員之間的交流也能更加流暢
12.簡述結構化程序設計方法的基本要點?
1、采用自頂向下、逐步求精的程序設計方法
2、使用三種基本控制結構構造程序。任何程序都可以由順序、選擇、重復(循環)三種基本控制結構構造,這三種基本結構的共同點是單入口、單出口。
3、主程序員組的組織形式。
13.什么是模塊化?模塊設計的準則?
1.模塊化是按規定的原則將一個大型軟件劃分為一個個較小的、相對獨立但又相關的模塊。?
2.模塊設計的準則:?
(1)改進軟件結構,提高模塊獨立性:在對初步模塊進行合并、分解和移動的分析、精化過程中力求提高模塊的內聚,降低藕合。?
(2)模塊大小要適中:大約50行語句的代碼,過大的模塊應分解以提高理解性和可維護性;過小的模塊,合并到上級模塊中。?
(3)軟件結構圖的深度、寬度、扇入和扇出要適當。一般模塊的調用個數不要超過5個。
(4)盡量降低模塊接口的復雜程度。?
(5)設計單入口、單出口的模塊。
(6)模塊的作用域應在控制域之內。
14.用例建模的主要步驟是什么?
用例建模的主要步驟如下:?
(1)確定業務參與者──可以是與系統有交互的外部硬件、軟件、組織、人等。?
(2)確定業務需求用例──參與者需要系統提供的完整功能。?
(3)創建用例圖──標識參與者與用例之間、用例與用例之間的關系。
15.良好的編碼風格應具備哪些條件?
(1)使用標準的控制結構;
(2)有限制地使用GOTO語句;
(3)源程序文檔化;
(4)滿足運行工程學的輸入輸出風格;
數據流圖:
1 工資計算系統包含如下功能:
計算工資
根據人事部門給出的出勤表和業績表計算獎金和缺勤扣款,通過生成的獎金發放表及工資基本信息庫的信息計算應發工資,根據應發工資表計算所得稅,根據后勤部門給出的水電扣款及缺勤扣款表和所得稅款計算出實發工資,生成實發工資表和工資清單。
打印工資清單
根據工資清單完成工資條的打印,給職工
工資轉存
根據實發工資表生成職工工資存款清單并將其發送到銀行請用數據流圖描繪該系統。
頂層數據流圖
功能級數據流圖
2.請根據以下描述畫出某庫存管理系統的數據流圖。該系統的數據流描述如下:
(1)根據計劃部門轉來的收貨通知單和已存在的物資編碼文件,建立物資采購單流水賬。
(2) 根據技術部門的物資驗收報告和物資采購單流水賬,更新物資臺賬文件。
(3)對物資臺賬分類匯總,將結果存儲于物資總賬文件中。
(4)物資出庫:物資使用部門填寫物資出庫單,包括物資編號、物資名稱、物資數量、物資使用部分、負責人、經手人。系統根據物資總賬文件的庫存情況判斷是否能夠出庫,如果能夠出庫,則記錄出庫單,并更新物資總賬文件。
總務辦公系統
在某機構的辦公自動化信息系統中,包含了本單位購買辦公用品和設備的總務管理模塊。辦公用品的購買申請由各科室提出,由負責總務辦公室統一收集。其中,購買申請金額小于或等于500元可以由總務辦公室直接審批;高于500元的購買申請由機構主管領導審批,批準的購買申請形成購買清單由采購員負責購買,同時應該紀錄每次購買的賬目。
在提出購買申請時,要包含如下數據:申請單位,物品名稱、物品數量、預計價格、物品用途等。
每次購買完成后應該紀錄如下信息:物品名稱、物品數量、價格、總金額、購買日期、經辦人等。
酒店客房管理系統有如下角色和功能:
(1)顧客通過提供相關信息,向酒店申請入住,如果申請通過,則辦理入住客房,
否則將遭到拒絕;
(2)顧客在離開酒店前需要退房,退房的同時結算房費;
(3)管理員可以通過輸入查詢條件,查詢酒店里客房的入住情況。.
試根據要求畫出該系統的數據流圖。
某房屋租賃公司欲建立一個房屋租賃服務系統,統一管理房主和租賃者的信息,從而快速地提供租賃服務。該系統具有以下功能:
(1)登記房主信息。對于每名房主,系統需登記其姓名、住址和聯系電話,并將這些信息寫入房主信息文件。
(2)登記房屋信息。所有在系統中登記的房屋都有一個唯一的識別號(對于新增加的房屋,系統會自動為其分配一個識別號)。除此之外,還需登記該房屋的地址、房型(如平房、帶陽臺的樓房、獨立式住宅等)、最多能夠容納的房客數、租金及房屋狀態(待租賃、已出租)。這些信息都保存在房屋信息文件中。一名房主可以在系統中登記多個待租賃的房屋。
(3)登記租賃者信息。所有想通過該系統租賃房屋的租賃者,必須首先在系統中登記個人信息,包括:姓名、住址、電話號碼、出生年月和性別。這些信息都保存在租賃者信息文件中。
(4)租賃房屋。已經登記在系統中的租賃者,可以得到一份系統提供的待租賃房屋列表。一旦租賃者從中找到合適的房屋,就可以提出看房請求。系統會安排租賃者與房主見面。對于每次看房,系統會生成一條看房記錄并將其寫入看房記錄文件中。
(5)收取手續費。房主登記完房屋后,系統會生成一份費用單,房主根據費用單交納相應的費用。
(6)變更房屋狀態。當租賃者與房主達成租房或退房協議后,房主向系統提交變更房屋狀態的請求。系統將根據房主的請求,修改房屋信息文件。
某教務系統具備以下功能,輸入用戶ID號及口令后,經驗證進入教務管理系統,根據請求進行分類處理,可進行如下功能的處理:
(1)查詢成績:查詢成績以及從名次表中得到名次信息。
(2)學籍管理:根據學生總成績確定名次信息。
(3)成績處理:處理單科成績并輸入成績表中。
就以上系統功能畫出數據流圖。
繪制程序流程圖,PAD圖和N-S圖。(只要能有程序流程圖地方,就可以有PAD圖和N-S圖)
1.輸入三個正整數作為邊長,判斷該三條邊是等腰三角形、等邊三角形還是一般三角形。
2.輸入三個數,按照從小到大排列。
3.在A[1]到A[10]中求得最大值和最小值,
邏輯覆蓋法
1.畫出程序流程圖并用各種邏輯覆蓋法設計測試用例。
1.Input(X)
2 If A>1 and B=0 then
3 X=X/A
4 End if
5 If A=2 then
6 X=X+1
7 else
8 X=X-1
9 End if
10 Output(X)
?語句覆蓋(使程序中的每個可執行語句都能執行一次的測試用例):
ab(2,0);
ace(2,1)
acd(3,1)
?判定覆蓋(在設計用例的時候,要設計判斷語句結果為True和False的兩種情況):
ab(2,0);
ace(2,1)
acd(3,1)
?條件覆蓋(針對判斷語句里面每個條件表達式true 和 false各取值一次):
設條件a>1取真為T1,取假為T’1;
設條件b=0取真為T2,取假為T’2;
設條件a=2取真為T3;取假為T’3;
調試用例 通過路徑 條件取值 覆蓋分支
(2,0) ab T1T2 ac
(2,1) ace T1T’2T3 ce
(0,1) acd T’1T’2T’3 cd
?判定–條件覆蓋(判斷語句中每個條件表達式的所有可能結果至少出現一次,每個判斷語句本身所有可能結果也至少出現一次):
調試用例 通過路徑 條件取值 覆蓋分支
(2,0) ab T1T2 ac
(2,1) ace T1T’2T3 ce
(0,1) acd T’1T’2T’3 cd
?條件組合覆蓋(每個判斷語句中條件結果的所有可能組合至少出現一次):
1)a>1, b=0記做T1T2,第一個判斷分支的真分支;
2)a<=1, b!=0記做T’1T’2,第一個判斷分支的假分支;
3)a=2記做T3,第二個判斷分支的真分支;
4)a!=2記做T’3,第二個判斷分支的假分支;
調試用例 通過路徑 條件取值 覆蓋組合號
(2,0) ab T1T2 1)
(2,1) ace T1T’2T3 2)3)
(0,1) acd T’1T’2T’3 2)4)
?路徑覆蓋(覆蓋程序中所有可能的執行路徑):
測試用例 通過路徑 覆蓋條件
(2,0) ab T1T2
(2,1) ace T1T’2T3
(0,1) acd T’1T’2T’3
2.畫出程序流程圖并用各種邏輯覆蓋法設計測試用例。
答:
程序流程圖如下
①語句覆蓋:
設計若干測試用例,運行被測程序,使得程序中每個可執行語句至少執行一次。
測試用例的設計格式如下:
【輸入的(x,y,z),輸出的j】。
為上圖所示程序流程圖滿足語句覆蓋的測試用例是:
【(4,4,4),0】覆蓋路徑abd,執行了語句塊1,執行了語句塊2,語句塊3。
②判定覆蓋:
設計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少執行一次。
事先為程序流程圖中所有判斷的可能取值加以標記,選擇滿足要求的測試用例:
對于第一個判斷:
當條件x>3取真值且條件z<10取真值時,取真分支,記作 T1;
當條件x>3取假值且條件z<10取假值時,取假分支,記作 F1;
對于第二個判斷:
當條件x4取真值或條件y>5取真值時,取真分支,記作T2;
當條件x4取假值或條件y>5取假值時,取假分支,記作F2;
則可選取的測試用例如下:
測試用例 通過路徑 判斷取值 覆蓋分支
【(4,4,4),0】 abd T1T2 bd
【(2,4,11),0】 ace F1F2 ce
③條件覆蓋:
設計若干測試用例,運行被測程序,使得程序中每個判斷中的每個條件的可能取值至少執行一次。
事先為程序流程圖中每個判斷中的每一個條件的取真分支和取假分支加以標記。
第一個判斷中的條件取值:
當條件x>3取真值時,記作T1,取假值時記作T1’。
當條件z<10取真值時,記作T2,取假值時記作T2’。
第二個判斷中的條件取值:
當條件x==4取真值時,記作T3,取假值時記作T3’。
當條件y>5取真值時,記作T4,取假值時記作T4’。
則可選取的測試用例如下:
測試用例 通過路徑 條件取值 覆蓋分支
【(4,6,4),1】 abd T1T2T3T4 bd
【(2,4,11),0】 ace T1’T2’T3’T4’ ce
④判定-條件覆蓋:
設計足夠多的測試用例,使得判斷中每個條件的可能取值至少執行一次,同時每個判斷本身的所有可能判斷結果至少執行一次。
由前面的判定覆蓋和條件覆蓋可得,需要設計一下兩個測試用例,便可以覆蓋兩個判斷和四個條件取值:
測試用例 通過路徑 條件取值 覆蓋分支
【(4,6,4),1】 abd T1T2T3T4 bd
【(2,4,11),0】 ace T1’T2’T3’T4’ ce
⑤條件組合覆蓋:
設計足夠多的測試用例,運行被測程序,使得每一個判斷的所有可能的條件取值組合至少執行一次。
由程序流程圖可得,對于每個判斷的條件取值組合加以標記可得:
1)x>3,z<10 記作T1T2,屬于第一個判斷的取真分支;
2)x>3,z>=10 記作T1T2’屬于第一個判斷的取假分支;
3)x<=3,z<10 記作T1’T2屬于第一個判斷的取假分支;
4)x<=3,z>=10 記作T1’T2’屬于第一個判斷的取假分支;
5)x4,y>5 記作T3T4 屬于第一個判斷的取真分支;
6)x4,y<=5 記作T3T4’ 屬于第一個判斷的取真分支;
7)x!=4,y>5 記作T3’T4 屬于第一個判斷的取真分支;
8)x!=4,y<=5 記作T3’T4’ 屬于第一個判斷的取假分支;
測試用例 通過路徑 覆蓋條件 覆蓋組合號
【(4,6,4),1】 abd T1T2T3T4 1),5)
【(2,4,11),0】 ace T1’T2’T3’T4’ 4),8)
【(4,5,11),0】 acd T1T2’T3T4’ 2),6)
【(2,6,4),1】 acd T1’T2T3’T4 3),7)
⑥路徑覆蓋:
設計足夠多的測試用例,覆蓋程序中所有可能的路徑。
以程序流程圖為依據,可以選用一下的一組測試用例來覆蓋該程序全部路徑:
測試用例 通過路徑 覆蓋條件
【(4,6,4),1】 abd T1T2T3T4
【(2,4,11),0】 ace T1’T2’T3’T4’
1 Int func(int a,b,c)
2 {
3 int k=1;
4 if ( (a>0) &&(b<0) && (a+c>0) ) k=k+a;
5 else k=k+b;
6 if (c>0) k=k+c;
7 return k;
8 }
答:
程序流程圖:
①語句覆蓋:
設計足夠多的測試用例,運行被測程序,使得程序中每一條可執行語句都至少執行一次。
測試用例的設計格式:【輸入(a,b,c),輸出k】
②判定覆蓋:
設計足夠多的測試用例,運行被測程序,使得程序中的每一個判斷的取真分支和取假分支都至少執行一次。
③條件覆蓋:
設計足夠多的測試用例,運行被測程序,使得程序中每一個判斷的每一個條件所有可能取值至少執行一次。
對于第一個判斷:
a>0,b<0,a+c>0
④判定-條件覆蓋:
設計足夠多的測試用例,運行被測程序,使得程序中每一個判斷的條件所有可能取值至少一次,同時每一個判斷的取真分支和取假分支至少執行一次。
⑤條件組合覆蓋:
設計足夠多的測試用例,運行被測程序,使得每一個判斷中的條件取值組合至少執行一次。
⑥路徑覆蓋:
設計足夠多的測試用例,覆蓋程序中所有可能的路徑。
4.畫出程序流程圖并用各種邏輯覆蓋法設計測試用例。
答:
程序流程圖:
①語句覆蓋
設計足夠多的測試用例,運行被測程序,使得程序中每一個可執行語句至少執行一次。
測試用例的輸入格式:【(x,y),magic】
②判定覆蓋(分支覆蓋)
設計足夠多的測試用例,運行被測程序,使得程序中每一個判斷的取真分支和取假分支至少執行一次。
③條件覆蓋
設計足夠多的測試用例,運行被測程序,使得程序中每個判斷的每一個條件所有可能取值至少執行一次。
Table 1
測試用例 通過路徑 條件取值 覆蓋分支
④判定-條件覆蓋
設計足夠多的測試用例,運行被測程序,使得程序判斷中每個條件的可能取值至少執行一次。同時滿足程序中每個判斷本身的取真分支和取假分支至少執行一次。
測試用例 通過路徑 條件取值 覆蓋分支
⑤條件組合覆蓋
設計足夠多的測試用例,運行被測程序,使得程序中每個判斷的所有可能條件取值組合至少執行一次。
測試用例 通過路徑 覆蓋條件 覆蓋組合號
⑥路徑覆蓋
設計足夠多的測試用例,覆蓋程序中的每一條路徑。
測試用例 通過路徑 覆蓋條件
1 int result(int x,int y,int z)
2 int k=0,j=0;
3 if (x<y)&&(z<5))
4 k=x+y;
5 if (x==10)||(y>3))
6 j=x*y;
7 return k+j;
答:
程序流程圖:
①語句覆蓋:
使得程序中每一個可執行語句至少執行一次。
測試用例的設計格式【(x,y,z),j】
②判定覆蓋(分支覆蓋):
使得程序中每一個判斷的取真分支和取假分支至少執行一次。
③條件覆蓋:
使得程序中每個判斷的每個條件所有可能的取值至少執行一次。
④判定-條件覆蓋:
使得程序中每個判斷的每一個條件所有可能的取值至少執行一次,同時滿足每一個判斷的取真分支和取假分支也至少執行一次。
⑤條件組合覆蓋:
⑦路徑覆蓋:
基本路徑覆蓋
CSDN鏈接:https://blog.csdn.net/xieminyao123/article/details/79133449
1.用基本路徑測試方法進行測試。
(1)畫出程序的控制流圖
(2)計算環路復雜性(三種方法都要用)
方法一:區域數 =
方法二:邊數-節點數+2 =
方法三:判定節點數+1 =
(3)確定線性無關的基本路徑集(即獨立路徑集合)
Path1:
Path2:
Path3:
(4)準備測試用例,確?;韭窂郊械拿恳粭l路徑的執行。
Path1 輸入數據:
預期結果:
Path2 輸入數據:
預期結果:
Path3 輸入數據:
預期結果:
(5)圖形矩陣
下例程序流程圖描述了最多輸入50個值(以–1作為輸入結束標志),計算其中有效的學生分數的個數、總分數和平均值。
用基本路徑測試方法進行測試。
①畫出程序的控制流程圖
②計算程序的環路復雜性
封閉區域數+1 = 3+1 = 4
判定結點數+1 = 3+1 = 4
邊數-結點數+2 = 12-10+2 = 5
③確定線性無關的路徑集
Path1:3-14
Path2:3-4-5-12-13-3-14
Path3:3-4-7-8-11-12-13-3-14
Path4:3-4-7-10-11-12-13-3-14
④準備測試用例,確保每一條獨立路徑都別執行到
Path1 輸入數據
預期結果
Path2 輸入數據
預期結果
Path3 輸入數據
預期結果
Path4 輸入數據
預期結果
4. 用基本路徑測試方法進行測試。
①畫出程序控制流圖
②計算程序環路復雜性
③確定線性無關基本路徑集(獨立路徑集)
④準備測試用例,確保每一條獨立路徑都被執行到。
int Test(int i_count, int i_flag)
{
1 int i_temp=0;
2 while (i_count>0)
{
3 If (0 == i_flag)
{
4 i_temp=i_count+100;
5 break;
}
6 else{
7 If (1==i_flag)
{
8 i_temp=i_temp+10;
}
9 else
{
10 i_temp=i_temp+20;
}
}
11 i_count–;
}
12 return i_temp;
}
答:
6.判定2000-2500年中的每一年是否是閏年,將結果輸出。(能被4整除,不能被100整除的年份是閏年;能被100整除,又能被400整除的年份是閏年)
(1)畫出該算法的流程圖
(2)設計基本路徑測試。
(3)畫出該算法的N-S圖和pad圖。
等價類測試用例
1.假定一臺ATM機允許提取的增量為50元,且一次提取的金額不超過2000元,運用等價類劃分法和邊界值的思想寫提取金額的測試用例。
等價類表
輸入數據 有效等價類 無效等價類
增量大小 50(1) 不是50(2)
金額數量 50-2000之間50的倍數(3) <50(4),>2000(5)
測試用例表
測試用例編號 測試用例 等價類編號
1 100 (1)(3)
2 2010 (2)(5)
3 40 (4)
2.有一個報表處理系統,要求用戶輸入處理報表的日期。假設日期限定在2000年1月至2050年12月,并規定日期由6位數字字符組成,前4位表示年,后2位表示月。用等價類劃分法設計測試用例,來測試程序的日期檢查功能。
等價類表
輸入數據 有效等價類 無效等價類
日期的長度和類型 6位數字字符(1) 非數字字符(2),大于6位數字字符(3),小于6位數字字符(4),小數(5)
年份范圍 2000~2050(6) 小于2000(7),大于2050(8)
月份范圍 1~12(9) 等于00(10),大于12(11)
有效等價類測試用例表
測試用例 覆蓋的有效等價類 預期結果
200101 (1),(6),(9) 有效日期
無效等價類測試用例表
測試用例 覆蓋的無效等價類 預期結果
abcdef (2) 無效日期
2001010 (3) 無效日期
20010 (4) 無效日期
20010.1 (5) 無效日期
199901 (7) 無效日期
205101 (8) 無效日期
200100 (10) 無效日期
200113 (11) 無效日期
3.某城市電話號碼由三部分組成,分別是:
地區碼—— 空白或三位數字;
前綴—— 非‘0’或‘1’開頭的三位數字;
后綴—— 4位數字。
假定被測程序能接受一切符合上述規定的電話號碼, 拒絕所有不符合規定的電話號碼。要求: 使用等價類方法給出步驟,并設計測試用例表。
等價類表
輸入數據 有效等價類 無效等價類
地區碼 空白或三位數字(1) 大于三位數字(2),小于三位數字(3)
前綴 非0或1開頭的三位數字(4) 以0或1開頭的數字(5)
后綴 4位數字(6) 大于4位數字(7),小于4位數字(8)
有效等價類測試用例表
測試用例 覆蓋的有效等價類 預期結果
無效等價類測試用例表
測試用例 覆蓋的無效等價類 預期結果
數據要求:
(1)編號:1——500之間的整數,不能為空,不能重復。
(2)姓名:3——100個字符,不能為空。
(3)工資:1.00——3000.00之間的小數(或整數),可以為空,小數點后最多保留2位。
(4)住址:0——300個字符。
等價類表
輸入數據 有效等價類 無效等價類
編號 1~500整數(1) 小數(2),非數字字符(3),小于1(4),大于500(5),重復(6)
姓名 3~100個字符(7) 小于3個字符(8),大于100個字符(9)
工資 1.00~3000.00小數或整數(10) 小于1.00(11),大于3000.00(12),保留小數點后三位(13)
住址 0~300個字符(14) 大于300個字符(15)
有效等價類的測試用例
測試用例
(編號、姓名、工資、住址) 覆蓋的有效等價類 預期結果
無效等價類的測試用類
測試用例(編號、姓名、住址、工資) 覆蓋的無效等價類 預期結果
其中,保險費率依點數不同而有別,10點及10點以上保險費率為0.6%,10點以下保險費率為0.1%;而點數又是由投保人的年齡、性別、婚姻狀況和撫養人數來決定,具體規則如表1所示。
表1 保險公司計算保費費率的規則
年齡(1-99) 性別 婚姻
20~39 40~59 其它 M F 已婚 未婚
6點 4點 2點 5點 3點 3點 5點
分析程序規格說明中給出和隱含的對輸入條件的要求,列出等價類表(包括有效等價類和無效等價類)和測試用例表。
答:
等價類表
輸入數據 有效等價類 無效等價類
年齡 1~99(1) 0(2),大于99(3),小數(4),非數字字符(5)
性別 男性或女性(6) 除F、M字符之外(7)
婚姻 已婚或未婚(8) 除T、F字符之外(9)
有效等價類的測試用例
測試用例 覆蓋的等價類 預期結果
45,男性,已婚 (1),(6),(8) 有效
無效等價類的測試用例
測試用例 覆蓋的等價類 預期結果
0,男性,已婚 (2) 無效
100,男性,已婚 (3) 無效
13.4,男性,已婚 (4) 無效
Ab,男性,已婚 (5) 無效
34,P,已婚 (7) 無效
34,男性,k (9) 無效
假設汽車的車牌號可由車主人在規定范圍內自選,若其規定為:
(1) 車牌上應有7個字符;
(2) 為首的字符限定為漢字“京”;
(3) 第2個字符可任選一字母(A~Z);
(4) 第3~7個字符可選任意數字。
請為相關的處理程序采用等價類劃分方法設計等價類表及相應的測試用例。
某用戶的輸入密碼設定有如下規則:密碼共6位,第一位必須由字母組成;假定設計的程序可接受所有符合規定的密碼,請使用等價類劃分法為其設計測試用例,并給出預期結果是有效還是無效。
變量的命名規則一般規定如下:變量名的長度不多于30個字符(不考慮長度為0),第一個字符必須為英文字母,其他字母可以是英文字母、數字以及下劃線的任意組合。請用等價類劃分方法設計等價類表及相應的測試用例。
總結
- 上一篇: 最新服装零售软件管理排名
- 下一篇: 外贸软件如何提升出口流程管理效率