導航:首頁 > 編程語言 > 程序設計單元測試7

程序設計單元測試7

發布時間:2022-07-06 20:49:05

Ⅰ 匯編語言程序設計題

匯編語言程序設計模擬題

一、填空:
1、CPU的指令指針寄存器為: ,它與 寄存器聯用確定下一條指令的物理地址。
2、若要將所有數據及代碼都放在一個段內,應建立 存儲模型。
3、操作數:ES:TABLE[DI]、FEES[EBX*2]、MSAK[EAX][EBX]分別採用 、
、 定址方式。
4、讀取當前游標位置可使用BIOS INT 10H的 號功能調用,作為出口參數,游標的行號及列號將從 寄存器中獲得。
5、通常用CPU的 寄存器間接定址埠地址。
6、如果在宏定義體設置局部標號,應使用 偽操作以避免在宏展開時出現標號的多重定義。
7、設(CS)=2A31H,(DS)=9300H,(SS)=25F0H,(BP)=0131H,(SI)=0110H,(DI)=0102H,則指令MOV AX,[BP+SI+8]的源操作數有效地址為________________,物理地址為_________________。
8、設(AX)=1000H,(BX)=2340H,則在執行了指令CMP AX,BX後,CF標志值為___________,ZF標志值為______________。

9、外設的發出中斷請求若被CPU響應,有兩個條件必不可少,即 和 。

10、顯示字元串可使用DOS 9號功能,它要求被顯示的字元串最後一個字元必須是 。

11、中斷發生時,保存現場將 、 、 寄存器的內容存入堆棧。

12、n位二進制補碼數的表數范圍為: 。
13、將兩個不同模塊中的同名段重疊成兩個段中較大的一個段,在定義段時應採用 組合屬性。
14、操作數:ES:STRING[SI]、COUNT[ESI*4]、MSAK[EBX][ECX]分別採用 、 、 定址方式。
15、設置游標位置可使用BIOS INT 10H的 號功能調用,作為入口參數,游標的行號及列號應存入 寄存器。
16、通常用CPU的 寄存器間接定址埠地址。
17、若在模塊1中引用模塊2中定義的外部符號,則在模塊1和模塊2中的開頭分別使用
、 偽指令。
18、設(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,則指令MOV AX,[BP+SI+2]的源操作數有效地址為_________________,物理地址為____ __________。
19、有數據定義如下:
V1 DB 4 DUP(2),2
COUNT EQU 10
V2 DD COUNT DUP(8,5 DUP(?))

則:為變數V1分配____________個位元組存貯空間;V2分配____________個位元組存貯空間.

20、外設的發出中斷請求若被CPU響應,有兩個條件必不可少,即 和 。

21、子程序之間傳遞參數可使用 、 和 三種方式。

22、若中斷類型為4AH,則中斷向量的地址為 。

23、CPU的指令指針寄存器為: ,它與 寄存器聯用確定下一條指令的物理地址。
24、當埠號≥256時,使用IN或OUT指令,必須先將埠號放到 寄存器。
25、操作數:ARY[EAX*2]、ES:[TABLE+SI]、SUM[EBX][EDX]分別採用 、
、 定址方式。
26、變數有三屬性,分別為: 、 、 。
27、如果在宏定義體設置局部標號,應使用 偽操作以避免在宏展開時出現標號的多重定義。
28、宏定義必須由偽指令 開始,偽指令 結束。
29、設(CS)=9896H,(DS)=9100H,(SS)=25F0H,(BX)=0111H,(SI)=0810H,(DI)=0102H,則指令MOV [BX+SI+8],CX的目的操作數有效地址為___ ________,物理地址為____ _________。
30、讀取當前游標位置可使用BIOS INT 10H的 號功能調用,作為出口參數,游標的行號及列號將從 寄存器中獲得。

31、中斷發生時,保存現場將 、 、 寄存器的內容存入堆棧。

32、若:FEES DW 10 DUP(10,5 DUP(?)),則指令:MOV CX,LENGTH FEES執行後,(CX)= .

二、選擇題

1、 下列寄存器中,( )可作為基址寄存器。
A、AX B、BX C、CX D、DX

2、 下列指令序列中,清除當前中斷請求(EOI)命令為:( )
A、MOV AL,20H B、MOV AL,20H C、MOV AL,21H D、MOV AL,21H
OUT 20H,AL IN AL,20H OUT AL,21H IN AL,21H

3、 段定義時,使用( )定位類型,則該段必須從小段的邊界開始。
A、BYTE B、WORD C、DWORD D、PARA

4、 若:(BX)=4336H,(CX)=0136H指令:SUB BX,CX 執行後,SF、ZF、OF、CF標志分別為( )
A、0,0,0,0 B、0,1,0,0 C、1,0,0,0 D、0,0,0,1

5、 若:FEES DW 10 DUP(100,?)

指令:MOV CX,LENGTH FEES執行後,CX的內容為:( )

A、1000 B、1 C、10 D、2000

6、 在循環指令中作為計數器的是( )寄存器。
A、AX B、BX C、CX D、DX

7、 在執行除法指令時,若除數為零則產生一個類型號為( )的中斷。
A、0 B、1 C、3 D、4

8、 段定義時,使用( )定位類型,則該段必須從字的邊界開始。
A、PARA B、WORD C、DWORD D、BYTE

9、 若:(BX)=4336H,(CX)=0136指令:SUB BX,CX 執行後,SF、ZF、OF、CF標志分別為:( )
A、0,0,0,1 B、0,1,0,0 C、1,0,0,0 D、0,0,0,0

10、若:FEES DW 100 DUP(?),

則指令:MOV CX,LENGTH FEES執行後,CX的內容為:( )

A、100 B、1 C、10 D、0

11、下列寄存器中,( )不能作為變址寄存器。
A、EAX B、EBP C、ECX D、ESP

12、 下列指令序列中,哪條指令與SUB AX,AX效果相同:( )
A、AND AX,AX B、OR AX,AX C、XOR AX,AX D、NOT AX

13、 將兩個不同模塊中的同名段重疊成兩個段中較大的一個段,應採用( )組合屬性。
A、PUBLIC B、COMMON C、PRIVATE D、MEMORY

14、 若:(AX)=0F365H,(CX)=0E024H指令:ADD AX,CX 執行後,SF、ZF、CF、OF標志分別為:( ).
A、1,0,1,0 B、0,1,0,0 C、0,0,0,0 D、0,0,0,1

15、 顯示字元串可使用DOS 9號功能,它要求被顯示的字元串最後一個字元必須是( ).

A、& B、$ C、% D、@

三、判斷下列指令及偽指令是否正確(在括弧中打「√」或「×」):
1、DIV 20H ( )

2、XCHG BX,ES ( )

3、CMP [BX],TABLE[SI] ( )

4、IN AL,DX ( )

5、MOV BYTE PTR[BX],25H ( )

6、MOV CS,0200H ( )

7、RET 8 ( )

8、LEA TABLE,BX ( )

9、ACL1 MACRO A,B,C ( )


ACL1 ENDM

10、NEWP PROC ( )



NEWP ENDP

11、MUL 20H ( )

12、MOV BX,[SI][DI] ( )

13、CMP [BX],TABLE[SI] ( )

14、OUT DX,AL ( )

15、MOV [DX],25H ( )

16、POP CS ( )

17、RET 8 ( )

18、LEA TABLE,BX ( )

19、MOVE EQU MOV ( )

20、FEED MACRO X,Y,Z ( )



FEED ENDM

21、ADD ES:BX,20H ( )

22、XCHG DX,DS ( )

23、CMP [BX],TABLE[SI] ( )

24、OUT DX,AL ( )

25、RET 8 ( )

26、DATA1 DB DATA0 ( )

27、MOVE EQU MOV ( )

四、完成下列指令序列:

1、將數據段中字串STRING1(長度為N),傳送到附加段中以BUFF為首地址的緩沖區:



MOV SI,

MOV DI,

MOV CX, N

CLD

REP

2、分別用一條語句實現下述指明的功能

(1)變數AYD存放的地址指針送ES和SI

(2)AX的內容加1,要求不影響CF

.CODE

MAIN PROC FAR

MOV AX,@DATA

MOV DS,AX1、設置中斷向量(中斷例行程序為INTERHAND,中段類型號為N)



MOV AX,SEG INTERHAND

MOV DS,AX

MOV DX,

MOV AL,N

INT 21H



INTERHAND:



IRET

3、清除全屏幕



MOV AX,

MOV BH,7

MOV CX,

MOV DX,

INT 10H



4、分別用一條語句實現下述指明的功能

(1)字變數LIST存放的地址指針送ES和DI.

(2)將AX的內容加1,要求不影響CF.

(3)將BX的高4位置1,其餘位不變.

(4)將SI指向的字單元內容存入堆棧.

(5)比較兩個帶符號數,若前者≥後者,則轉向NEXT.

5、清除屏幕右半區域:



MOV AX,

MOV BH,7

MOV CX,0

MOV DX,

INT 10H


6、 MOV CL,8

SHL AX,CL

SHR BX,CL

ADD AX,BX

MOV WORD PTR DATA1,AX

問:上述指令序列的功能是什麼?

7、 ┆

MOV AL,N

MOV AH,35H

INT 21H

PUSH ES

PUSH BX

PUSH DS

MOV AX,SEG INTERHAND

MOV DS,OFFSET INTERHAND

MOV AL,N

MOV AH,25H

INT 21H

POP DS



問:上述指令序列的功能是什麼?

8、分別用一條語句實現下述指明的功能:

① 棧頂內容彈出送字變數MG1.

② 變數MG2類型屬性送AH.

③ AX的內容加1,要求不影響CF.

④ 將EBX的低4位取反.

⑤ 若(CX)=0則轉移至NEXT.

五、分析計算題:

1. 設(AX)=201BH,(BX)=110CH,(DI)=0001H,(DS)=4000H,(4110CH)=0AH,(4110DH)=81H,(4110EH)=70H;

則:① MOV AX,[BX]指令執行後,(AX)= ;

② MOV BH,BYTE PTR[BX+DI+1],指令執行後,(BX)= .

2.
MOV AX,6540H
MOV DX,3210H
MOV CL,04
SHL AX,CL
MOV BL,AH
OR DL,BL
試問上述程序段運行後,
(AX)=
(BL)=
(DX)=

3、

DATA1 DW 1000H
DATA2 DW 2000H

PUSH DATA1
PUSH DATA2
POP DATA1
POP DATA2
問:①上述程序段執行後,(DATA1)= ,(DATA2)= .
②設執行前(SP)=200H,執行後(SP)= .

4、 BUFF DB 7 , 6 , '56' ,?

ARRAY DW 0 , 67H , 7

BASUB EQU ARRAY-BUFF

問:BASUB的值是多少?它表示什麼意義?

5、

MOV CL,3

MOV BX,0B7H

ROL BX,1

ROR BX,CL

問:上述程序執行完畢,BX寄存器的內容是什麼?

6、



.DATA

STRING1 DB 50,?,50 DUP(?)

NEXT:

LEA DX,STRING1

MOV AX,0AH

INT 21H

CMP STRING1+2,0DH

JE EXIT

JMP SHORT PTR NEXT

EXIT:

MOV AX,4C00H

INT 21H

MAIN ENDP

END MAIN

說明上述指令序列的功能。

7.設(AX)=9A6CH,(BX)=710BH,(DI)=0002H,(DS)=6000H,(6710BH)=09H,(6710CH)=87H
(6710EH)=5EH;

則:① MOV AX,[BX]指令執行後,(AX)= ;

② MOV BL,BYTE PTR[BX+DI+1],指令執行後,(BX)= .

8. OPER1 DB 1,2

OPER2 DW 1234H,5678H

則: 指令 ① MOV AX,WORD PTR OPER1+1執行後,(AX)= .

② MOV AL,BYTE PTR OPER2執行後,(AL)= .

③ MOV AH,SIZE OPER2執行後,(AH)= .

六:敘述題:

調用程序和子程序之間參數傳遞有哪幾種主要方式? 各自的特點是什麼?

簡述8086CPU的中斷響應過程。

簡述子程序調用與宏調用工作方式的區別。

七:程序設計:

1、設X、Y、Z、W均為16位帶符號數單元地址,寫出執行下述計算的子程序。
Z=│X+Y-W│

2、編寫匯編語言源程序:測試ALPHA位元組變數單元中的ASCII碼字元串,進行如下操作:
(1)若為數字字元,送入NUM位元組單元中,置標記FLAG為0;

(2)若為大寫字母字元,送入BICCHR位元組單元中,置標記FLAG為0;

(3)若為小寫字母字元,送入SMLCHR位元組單元中,置標記FLAG為0;
(4)否則,置標記FLAG為1.

(字元0,9,A,Z,a,z的ASCII分別為30H,39H,41H,5AH,61H,7AH)

3、設X、Y、Z均為16位帶符號數單元地址,寫出執行下述計算的子程序。

X+Z ,X≥Z

Y=

X-Z ,X<Z

4、已知有256個位元組整數a1,a2,a3,...,a256存放在以NUMBER為首地址的數據區中。編一程序將其中的負數去除後將剩下的正數重新順序存放在以PLUS開始的數據區中。

5、 編寫程序段。用串處理指令,比較兩個有10個字元的字元串變數CHR1和CHR2,如果兩者全不相同則執行子程序OTHER,否則,順序執行。

6、編寫匯編語言源程序: 設在字單元A、B和C中存放有三個數,若三個數都不為0,則求出三個數之和存入字單元D中,若有一個為0,則將其他兩個單元也清零。

Ⅱ 談一談程序設計全過程的各個階段,及各階段我們需遵循的原則有哪些或者結合自身程序設計經歷來談。

一、問題定義
問題定義階段必須回答的關鍵問題是:「要解決的問題是什麼?」因此,分析員通過對系統的實際用戶和使用部門負責人的訪問調查,扼要地寫出他們對問題的理解,並在用戶和使用部門負責人的會議上認真討論這份書面報告,澄清含糊不清的地方,改正理解不正確的地方,最後得到一份雙方都滿意的文檔,此文檔中系統分析員應該寫明問題的性質、工程目標和規模。
問題定義階段是軟體生存周期中最簡短的階段,一般只需一天甚至更少的時間。
二、可行性研究
此階段的任務不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解決,
是否有可行的解決辦法。在這個階段,系統分析員應該導出系統的高層邏輯模型,並且在此基礎上更准確、更具體地確定工程規模和目標。然後分析員更准確地估計系統的成本和效益,對建議的系統進行仔細的成本/效益分析,這是這個階段的主要任務之一。
可行性研究的結果是使用部門負責人做出是否繼續進行這項工程的決定的重要依據。
三、需求分析
這個階段的任務,主要是確定目標系統必須具備哪些功能。因此,系統分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經過用戶確認的系統邏輯模型。通常用數據流圖瀨據字典和簡要的演算法描述表示系統的邏輯模型。需求分析階段確定的系統邏輯模型,是以後設計和實現目標系統的基礎,因此必須准確完整地體現用戶的要求。
四、總體設計
這個階段必須回答的關鍵問題是:「應該如何解決這個問題?」
首先應該考慮幾種可能的解決方案,一般包括:
1.低成本的解決方案。系統只能完成最必要的工作,不能多做一點額外的工作。
2.中等成本豹解決方案,這樣的系統不僅能夠很好地完成預定的任務,使用起來很方便,
而且可能還具有用戶沒有具體指定的某些功能和特點。
3.高成本的「十全十美」的系統。這樣的系統具有用戶可能希望有的所有功能和特點。
系統分析員應該使用系統流程圖或其他工具描述每種可能的系統,估計每種方案的成本
和效益;還應該在充分權衡各種方案利弊的基礎上,推薦一個較好的系統,並且制定實現所推薦的系統的詳細計劃。
要完成上述任務,通常採用結構設計的一條基本原理就是程序應該模塊化,因此,總體設計還應設計軟體的結構,通常用軟體結構圖表示。
五、詳細設計
詳細設計階段的任務就是把解法具體化,設計出程序的詳細規格說明,包括必要的細節,
程序員可以根據它們寫出實際的程序代碼。
通常用程序流程圖,N—S圖,PAD圖,}{IPO圖或PDI_.語言描述詳細設計的結果。
六、編碼和單元測試
這個階段的任務是程序員根據目標系統的性質和實際環境,選取一種適當的高級程序設
計語言(必要時用匯編語言),把詳細設計的結果翻譯成用選定的語言書寫的程序,並且仔細測試編寫出的每一個模塊。
程序員在書寫程序模塊時,應使它的可讀性、可理解性和可維護性良好。
七、綜合測試
這個階段的任務是通過各種類型的測試,使軟體達到預定的要求。
最基本的測試是集成測試和驗收測試。集成測試是根據設計的軟體結構,把經單元測試的模塊按某種選定的策略裝配起來,在裝配過程中對程序進行必要的測試。驗收測試是按照需求規格說明書的規定,由用戶對目標系統進行驗收。
通過對軟體測試結果的分析可以預測軟體的可靠性;反之,根據對軟體可靠性的要求也可以決定測試和調試過程什麼時候可以結束。
在進行測試的過程中,應該用正式的文檔把測試計劃、詳細測試方案以及實際測試結果保存下來,作為軟體配置的一部分。
八、軟體維護
維護階段的任務,是通過各種必要的維護活動使系統持久地滿足用戶的需要。
通常維護活動有四類:改正性維護,即診斷和改正在系統使用過程中發現的軟體錯誤;適應性維護,即修改軟體以適應環境的變化;完善性維護,即根據用戶的要求改進或擴充軟體使它更完善;預防性維護,即修改軟體為將來的維護活動預先做准備。
每一項維護活動都應該准確地記錄下來,作為正式的文檔資料加以保存。
軟體的生存周期劃分為上述8個階段,前3個階段稱為軟體的定義階段,第4至第7個階段稱為軟體的開發階段,最後一個階段稱為軟體的維護階段。在軟體開發期間,測試的工作量最大,約占總開發量的40%;而軟體的維護階段周期最長,工作量非常大。
軟體系統的研製工作,不可能是直線進行,研製人員常常需從後面階段回復到前面。為了減少返工現象,研製人員通常在各個階段進行階段復審,以確保研製工作順序進行。
在軟體生存周期的各個階段完成研製任務後,應提交各階段的格式文檔資料。
§1.4軟體工程方法學
軟體開發的目標就是在規定的投資和時間限制內,開發出符合用戶需求的高質量軟體。軟體開發是一種高智能的活動,必須用軟體工程的方法和技術指導軟體開發的全過程。

Ⅲ 軟體測試

軟體測試知識點
一.軟體測試基本概念
1.軟體質量的概念
功能性:軟體提供明確與隱含功能的能力
可靠性:維持規定性能的能力
易用性:被理解學習使用和吸引用戶的能力
效率:相對於所用資源的數量,軟體產品可提供適應性能的能力
可維護性:糾正錯誤,改進功能,適應環境的能力
可移植性:遷移到另一種環境的能力
2.軟體測試目標和原則
目標:以最少的時間和人力,系統地找出軟體潛在的各種錯誤和缺陷
原則:1.盡早和不斷地進行軟體測試;
2.測試用例應該由測試輸入數據和預期輸出結果構成;
3.程序員盡量避免測試自己的程序(最好是獨立於開發組和客戶的第三方測試組和機構)
4.測試應包括合理的和不合理的輸出條件,
5。注意測試中的集群現象(測試後的程序殘存的錯誤數目與已經發現的成正比)
6.嚴格執行測試計劃,排除隨意性7.對每一個結果做全面檢查
8.妥善保管測試計劃用例出錯統計和分析報告
3.軟體測試心理學
1)程序測試過程具有破壞性:測試是為了發現錯誤而執行程序的過程
2)程序員盡量避免測試自己的程序
3)程序設計組織不應測試自己的程序
4.軟體測試的經濟學:不能發現」所有」的缺陷和錯誤
1.黑盒測試(數據驅動測試/輸入輸出驅動測試):測試人員完全不考慮程序內部的特性,和邏輯結構,只根據程序的需求規格說明書,檢查程序是否符合他的功能說明
2.白盒測試(邏輯驅動測試):對程序的邏輯結構進行檢查
5.軟體質量保證』

二.軟體測試類型以其地位
1.軟體開發階段:
1.生存周期:制定規劃(功能需求可靠性介面可行性資源,可行性報告)——系統與軟體需求定義——軟體設計(技術核心)——編程和單元測試——系統與集成測試——運行和維護
2.測試信息流:軟體配置,測試配置,測試工具
2.規劃階段的測試:目標闡述(不太詳細也不具體),需求分析,功能定義,規劃階段的測試
3.設計階段的測試:外部設計(用戶界面),內部設計(結構設計,數據設計,邏輯設計),偽代碼分析
4.編程階段的測試:白盒測試與黑盒測試,結構測試與功能測試,路徑測試:覆蓋准則,增量測試與大突擊測試
三.代碼檢查、走查和評審
1.桌面檢查:程序員檢查自己編寫的程序,是在進行單元測試之前對代碼進行分析
2.代碼檢查:以小組為單位閱讀代碼,
1.協調人:主持、引導代碼檢查的過程
2.開發人員:檢查項目的生產者
3.檢查人員:檢查小組每一個人都可以認為是一個檢查人員,可以兼任不同的角色。
4.解說員5.記錄員
項目:變數是否喂賦值或者初始化?上下標是否在界限之內?是不是整數?是否分配了數值的內存單元?變數的數據類型是否與編譯器所預期的一致?
3.走查:與代碼檢查類似,以小組為單位進行,進行一些列規程的錯誤檢查技術的集合
4.同行評審:通過作者的同行來確認缺陷和需要變更區域檢查的方法
評審的方法和技術:
1. 臨時評審:一位程序員臨時請另一位花幾分鍾時間查找一個缺陷
2. 桌上檢查或輪查:多人進行的並行桌上檢查
3. 結對評審:作者請另一位同行進行桌上檢查
4. 走查:5.小組評審。6.正式審查
四.覆蓋率測試
1.概念:度量測試完整性的手段
覆蓋率=被執行的項目數/項總數 ×100%
2.邏輯結構的覆蓋測試
◇判定,□語句,○程序的開始或者結束,
1.語句覆蓋率=被評價用到的語句數/可執行的語句總數 ×100%
2.指令塊:不存在(會引起分支)的控制語句,IB
IB覆蓋率=被執行的語句塊數量/程序中的指令塊總數 ×100%
3.判定覆蓋率=被執行的分支數量/程序中的分支總數 ×100%
DDP覆蓋率=被評價到的判定路徑數量/程序中的判定路徑總數 ×100%
5. 條件覆蓋=被評價到的條件取值數量/條件取值總數 ×100%
3.路徑測試覆蓋:
1.分支結構的路徑測試:①對於嵌套型分支結構,若有n個判定語句,則存在n+1條不同的路徑
②對於串聯型分支結構,若有n個判定語句,則有2n個路徑 →減少測試用例,構造正交表P71
2.循環結構的路徑測試:簡單循環,嵌套循環,連鎖循環,非結構循環
4.數據流測試:關注在一條路徑上變數在何處賦值,在何處引用
傭金問題偽代碼描述:P79
5.基於覆蓋測試的數據選擇
如何使用覆蓋率①覆蓋率不是目的,只是一種手段②不能針對所有的覆蓋率指標進行測試③不能追求100%的覆蓋率
五.黑盒測試
1.等價類測試:降數目極多的數據化成等價類,然後測試某類的代表值
原則:①如果確定了取值范圍或者取值的個數,則可以確立一個有效等價類和兩個無效等價類
②如果輸入條件規定了輸入值的集合,則可以有一個有效和一個無效等價類
2.邊界值測試:用例:剛達到這個范圍的值,比最大范圍多1或者少1,如果輸入輸出域是有序集合,則採用邊界
3.基於因果圖的測試:E互斥,I包含(至少一個成立)O唯一 R要求(a→b)M屏蔽(a1則b0)
4.基於狀態圖的測試:P105
六.單元測試和集成測試
1.單元測試的目標和模型:
1.單元:可以編譯和執行的最小軟體構件、不會指派給多個設計人員開發
2.目標:驗證代碼是與設計相合的,跟蹤需求和設計的實現和缺陷,發現編碼過程中引入的錯誤
3.模型:(與集成,系統測試區別:P120)

2.單元測試的策略
1.自頂向下:逐層打樁 2.自底向上:自下向上打樁 3.孤立測試:為每個模塊單獨打樁
4.綜合測試
3.單元測試分析:
1.模塊介面
2.局部數據結構:保證臨時存儲在模塊內的數據的完整正確
3.獨立路徑:保證每個模塊的每條語句至少執行一次
4.出錯處理:預見各種出錯條件,進行適當的處理
5.邊界條件.
4.集成測試的基本概念
1.定義:對系統介面和集成後的功能的正確性進行檢驗
2.與系統測試區別:
①測試對象 集成:各個模塊的構件 系統:軟硬體以及相關的外圍設備,數據採集傳輸等
②測試時間 集成介於單元和系統測試之間
③ 測試方法:單元白盒,集成灰盒,系統黑盒
5.集成測試策略:
1.基於分解
①一次性集成測試②自頂向下增量式測試③自底向上的增量式集成測試④三明治集成
2.基於功能的集成:採用增量式集成測試方法
3.基於調用圖的集成:成對測試,相鄰測試
4.基於路徑的集成 5.基於進度的集成
6集成測試分析
1.體系結構分析:
①根據需求分析,劃分結構層次圖
②對各個結構之間的依賴關系進行分析,確定測試模塊的大小
2.模塊分析 3.介面分析 4.可測試性分析
七.系統測試
1.概念:軟體開發完成後,還要與系統的其他部分結合起來才能運行,系統測試的目的就是對各部分進行集成和確認測試
2.系統測試的方法:
①功能測試:是否有不正確或者遺漏的功能,能否滿足系統和用戶的隱式需求,能否正確接受輸入
②協調一致測試
③性能測試:度量系統的性能與預先定義的目標有多大差距:壓力測試:
④壓力測試:測試者想要破壞程序,邊界測試
⑤容量測試⑥安全性測試⑦失效恢復測試⑧備份測試GUI圖形化用戶介面測試⑩健壯性測試
易用性測試、安裝測試、文檔測試、在線幫助測試
3.系統測試的實施
①確認測試:有效性測試
②α測試和β測試:內部用戶/內測
③驗收測試:
④回歸測試:軟體變更後對其進行重新測試
八.軟體性能測試和可靠性測試
1.軟體性能的概念:完成某項功能時展現出來的及時性
指標:響應時間(平均,最大),吞吐量,並發用戶數,資源利用率
2.性能測試的執行:
3.軟體可靠性的概念:在規定時間條件內,軟體不引起失效的概率
軟硬體可靠性區別:
① 唯一性:軟體每份拷貝都相同,硬體不能相同
② 物理退化:硬體可靠性下降
③ 邏輯復雜性:軟體是純邏輯產品,其失效也主要是邏輯錯誤
版本更新:硬體較慢,軟體較快
4.軟體可靠性預計:
①軟體的運行剖面與可靠性剖面一致②一旦發生故障,立即修復,不引入新的故障③故障和失效是相互獨立的④每個故障發生的概率相等
九.面向對象的軟體測試
1. 面向對象的軟體測試的問題
1.封裝:信息隱蔽,一組相關變數和方法被封裝在同一個類中
2.繼承:子類直接獲得父類的屬性和方法 充分性,誤用
3.多態
2. 面向對象的軟體測試模型:分析測試(OOA),設計測試(OOD)編程測試(OOP)
3. 面向對象的軟體測試策略:檢查分析結果是否附和相應的面向對象分析方法要求,分析檢查結果是否滿足軟體需求
十:WEB應用測試
1. 應用伺服器的分類:
① 面向的領域:通用應用伺服器(提供多方面服務),專用應用伺服器
② 循環的規范:
2. WEB應用的測試策略
1. 表示層的測試:拍板結構,鏈接結構,客戶端程序,瀏覽器兼容性
2. 業務層的測試:單個程序(盡可能白盒測試),對一組程序
3. 數據層的測試:
3.WEB軟體的測試技術:
1.功能測試:鏈接測試,表單測試,Cookies測試
2.性能測試:並發測試,負載測試和性能調優
3.安全性測試:伺服器,客戶端,Cookies,日誌功能
4.介面測試:使用介面,提供介面
4.系統安全檢測與防護
1.入侵檢測 狹義:黑客進入一個系統 廣義:竊取數據,濫用伺服器,發送垃圾郵件
2.漏洞掃描 操作系統漏洞,網路漏洞,資料庫漏洞
3.安全策略 ①物理破壞防護:遠離火災,人為破壞
②信息竊取防護:入網訪問控制,許可權控制(用戶許可權,操作許可權),伺服器和節點安全控制,網路監測控制,防火牆控制
③信息加密:保護策略,加密演算法
十一.其他測試
1. 兼容性測試①不同的硬體配置影響軟體性能②軟體使用了硬體的特定功能
1. 軟體兼容性測試:與操作系統,資料庫,瀏覽器,中間件,其他軟體 兼容性
2. 數據兼容性:不同版本數據,不同軟體間兼容性
2.易用性測試
1.易安裝性測試:安裝手冊自動化程度,靈活性,中斷處理,安裝和卸載,多環境安裝支持
2.功能易用性測試:業務符合度,功能定製性,功能關聯度,數據共享度,用戶約束的合理性
3.用戶界面測試:界面整體(合理一致規范),界面元素,輸入測試
3.構件測試:
4.極限測試:
1.極限編程:①特性:簡單的分析設計,頻繁的客戶交流,增量式開發,連續的測試
②優點:隨時應對新增或改變的需求
2.極限測試①單元測試:最重要的發現錯誤的手段,由編碼人員完成,在編程之前測試
②極限測試的實施:單元測試用例的生成
5.文檔測試:只能以文檔審查的方式進行
內容:宣傳和包裝材料,用戶許可說明書,手冊,在線幫助,示例和模板
文檔的測試

Ⅳ 匯編語言程序設計試題,高手來!

LS第10題、第12題回答錯誤。

1.唯一代表存儲空間中每個位元組單元的地址是: 物理地址。
2.JNC指令轉移的測試條件是: 進位標志位復位,即CF=0(源操作數不小於目的操作數)。
3.將埠地址為30H中的數據傳送到CPU中的指令是: IN AL,30H。
4.8086微處理系統中最多有 1024 個埠地址。
5.判斷無符號數運算是否溢出,應根據 進位 標志位;而判斷有符號數運算是否溢出應根據 溢出 標志位。
6.執行 INT 10H指令,可從中斷向量表 40H 地址讀出內容送IP,從 42H 地址單元讀出內容送CS。
7.語句 ASC DB 『1234』設置了 4 個位元組。
8.某微機有16條地址線,能夠覆蓋的地址范圍是: 0000H~0FFFFH。
9.8086CPU允許的最大存儲空間為 1M位元組,其地址編號從 0000H 到 FFFFH H。
10.把AX中第0、1、3位清零,應使用的指令是: AND AX,0FFF4H。
11.設寄存器位數為8位,機器數採用補碼形式(含一位符號位)。對應於十進制數-73的寄存器內容為: B7H(用16進製表示)。
12.設A為字變數,指令MOV AX, A的源操作數定址方式是: 存儲器直接定址。

Ⅳ 程序設計有什麼內容

基本要求 1. 掌握演算法的基本概念。 2. 掌握基本數據結構及其操作。 3. 掌握基本排序和查找演算法。 4. 掌握逐步求精的結構化程序設計方法。 5. 掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。 6. 掌握數據的基本知識,了解關系資料庫的設計。 考試內容 一、 基本數據結構與演算法 1. 演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。 2. 數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。 3. 線性表的定義;線性表的順序存儲結構及其插入與刪除運算。 4. 棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。 5. 線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。 6. 樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。 7. 順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。 二、 程序設計基礎 1. 程序設計方法與風格。 2. 結構化程序設計。 3. 面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。 三、 軟體工程基礎 1. 軟體工程基本概念,軟體生命周戎概念,軟體工具與軟體開發環境。 2. 結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。 3. 結構化設計方法,總體設計與詳細設計。 4. 軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。 5. 程序的調試,靜態調試與動態調試。 四、 資料庫設計基礎 1. 資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。 2. 數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型。 3. 關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理論。 4. 資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。 考試方式 1、 公共基礎的考試方式為筆試,與C語言(VisualBASIC、Visual FoxPro、Java、Access、Visual C++)的筆試部分合為一張試卷。公共基礎部分佔全卷的30分。 2、 公共基礎知識有10道選擇題和5道填空題。 http://www.gxjzy.com/gxjzy/djks/ksdg/2pub.htm 二級(C語言程序設計)考試大綱 公共基礎知識 二級考試大綱中的公共基礎知識部分 基本要求 1. 掌握演算法的基本概念。 2. 掌握基本數據結構及其操作。 3. 掌握基本排序和查找演算法。 4. 掌握逐步求精的結構化程序設計方法。 5. 掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。 6. 掌握數據的基本知識,了解關系資料庫的設計。 考試內容 一、 基本數據結構與演算法 1. 演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。 2. 數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。 3. 線性表的定義;線性表的順序存儲結構及其插入與刪除運算。 4. 棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。 5. 線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。 6. 樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。 7. 順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。 二、 程序設計基礎 1. 程序設計方法與風格。 2. 結構化程序設計。 3. 面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。 三、 軟體工程基礎 1. 軟體工程基本概念,軟體生命周戎概念,軟體工具與軟體開發環境。 2. 結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。 3. 結構化設計方法,總體設計與詳細設計。 4. 軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。 5. 程序的調試,靜態調試與動態調試。 四、 資料庫設計基礎 1. 資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。 2. 數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型。 3. 關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理論。 4. 資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。 考試方式 1、 公共基礎的考試方式為筆試,與C語言(VisualBASIC、Visual FoxPro、Java、Access、Visual C++)的筆試部分合為一張試卷。公共基礎部分佔全卷的30分。 2、 公共基礎知識有10道選擇題和5道填空題。 C語言程序設計 基本要求 1.熟悉TURBO C集成環境。 2.熟練掌握結構化程序設計的方法,具有良好的程序設計風格。 3.掌握程序設計中簡單的數據結構和演算法。 4.TURBO C的集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。 考試內容 一、C語言的結構 1.程序的構成,MAIN函數和其他函數。 2.頭文件,數據說明,函數的開始和結束標志。 3.源程序的書寫格式 4.C語言的風格。 二、數據類型及其運算 1.C的數據類型(基本類型,構造類型,指針類型,空類型)及其定義方法。 2.C運算符的種類、運算優先順序和結合性。 3.不同類型數據間的轉換與運算。 4.C表達式類型(賦值表達式、算術表達式、關系表達式、邏輯表達式、條件表達式、逗號表達式)和求值規則。 三、基本語句 1.表達式語句,空語句,復合語句。 2.數據的輸入和輸出,輸入輸出函數的調用。 3.復合語句。 4.GOTO語句和語句標號的使用。 四、選擇結構程序設計 1.用if語句實現選擇結構。 2.用switch語句實現多分支選擇結構。 3.選擇結構的嵌套。 五、循環結構程序設計 1.for 循環結構。 2.while和do while循環結構。 3.continue語句和break語句。 4.循環的嵌套。 六、數組的定義和引用 1.一維數組和多維數組的定義、初始化和引用。 2.字元串與字元數組。 七、函數 1.庫函數的正確調用。 2.函數的定義方法。 3.函數的類型和返回值。 4.形式參數與實在參數,參數值的傳遞。 5.函數的正確調用,嵌套調用,遞歸調用。 6.局部變數和全局變數。 7.變數的存儲類別(自動、靜態、寄存器、外部),變數的作用域和生存期。 8.內部函數與外部函數。 八、編譯預處理 1.宏定義:不帶參數的宏定義;帶參數的宏定義。 2.「文件包含」處理。 九、指針 1.指針與指針變數的概念,指針與地址運算符。 2.變數、數組、字元串、函數、結構體的指針以及指向變數、數組、字元串、函數、結構體的指針變數。通過指針引用以上各類型數據。 3.用指針作函數參數。 4.返回指針值的指針函數。 5.指針數組,指向指針的指針,MAIN函數的命令行參數。 十、結構體(即「結構」)與共用體(即「聯合」) 1.結構體和共用體類型數據的定義方法和引用方法。 2.用指針和結構體構成鏈表,單向鏈表的建立、輸出、刪除與插入。 十一、位運算 1.位運算符的含義及使用。 2.簡單的位運算。 十二、文件操作 只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。 1.文件類型指針(FILE類型指針)。 2.文件的打開與關閉(fopen,fclose)。 3.文件的讀寫(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函數),文件的定位(rewind,fseek函數)。

記得採納啊

Ⅵ 單元測試主要檢驗軟體設計的最小單元,多採用什麼測試技術

單元測試是在軟體開發過程中要進行的最低級別的測試活動,在單元測試活動中,軟體的獨立單元將在與程序的其他部分相隔離的情況下進行測試。 單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發過程中使用,單元測試必須是可重復的,無論是在軟體修改,或是移植到新的運行環境的過程中。因此,所有的測試都必須在整個軟體系統的生命周期中進行維護。
測試用例設計
下面談談測試用例設計。前面已經說了,測試用例的核心是輸入數據。預期輸出是依據輸入數據和程序功能來確定的,也就是說,對於某一程序,輸入數據確定了,預期輸出也就可以確定了,至於生成/銷毀被測試對象和運行測試的語句,是所有測試用例都大同小異的,因此,我們討論測試用例時,只討論輸入數據。
前面說過,輸入數據包括四類:參數、成員變數、全局變數、IO媒體,這四類數據中,只要所測試的程序需要執行讀操作的,就要設定其初始值,其中,前兩類比較常用,後兩類較少用。顯然,把輸入數據的所有可能取值都進行測試,是不可能也是無意義的,我們應該用一定的規則選擇有代表性的數據作為輸入數據,主要有三種:正常輸入,邊界輸入,非法輸入,每種輸入還可以分類,也就是平常說的等價類法,每類取一個數據作為輸入數據,如果測試通過,可以肯定同類的其他輸入也是可以通過的。下面舉例說明:
正常輸入
例如字元串的Trim函數,功能是將字元串前後的空格去除,那麼正常的輸入可以有四類:前面有空格;後面有空格;前後均有空格;前後均無空格。
邊界輸入
上例中空字元串可以看作是邊界輸入。
再如一個表示年齡的參數,它的有效范圍是0-100,那麼邊界輸入有兩個:0和100。
非法輸入
非法輸入是正常取值范圍以外的數據,或使代碼不能完成正常功能的輸入,如上例中表示年齡的參數,小於0或大於100都是非法輸入,再如一個進行文件操作的函數,非法輸入有這么幾類:文件不存在;目錄不存在;文件正在被其他程序打開;許可權錯誤。
如果函數使用了外部數據,則正常輸入是肯定會有的,而邊界輸入和非法輸入不是所有函數都有。一般情況下,即使沒有設計文檔,考慮以上三種輸入也可以找出函數的基本功能點。實際上,單元測試與代碼編寫是「一體兩面」的關系,編碼時對上述三種輸入都是必須考慮的,否則代碼的健壯性就會成問題。
白盒覆蓋
上面所說的測試數據都是針對程序的功能來設計的,就是所謂的黑盒測試。單元測試還需要從另一個角度來設計測試數據,即針對程序的邏輯結構來設計測試用例,就是所謂的白盒測試。在老納看來,如果黑盒測試是足夠充分的,那麼白盒測試就沒有必要,可惜「足夠充分」只是一種理想狀態,例如:真的是所有功能點都測試了嗎?程序的功能點是人為的定義,常常是不全面的;各個輸入數據之間,有些組合可能會產生問題,怎樣保證這些組合都經過了測試?難於衡量測試的完整性是黑盒測試的主要缺陷,而白盒測試恰恰具有易於衡量測試完整性的優點,兩者之間具有極好的互補性,例如:完成功能測試後統計語句覆蓋率,如果語句覆蓋未完成,很可能是未覆蓋的語句所對應的功能點未測試。
白盒測試針對程序的邏輯結構設計測試用例,用邏輯覆蓋率來衡量測試的完整性。邏輯單位主要有:語句、分支、條件、條件值、條件值組合,路徑。語句覆蓋就是覆蓋所有的語句,其他類推。另外還有一種判定條件覆蓋,其實是分支覆蓋與條件覆蓋的組合,在此不作討論。跟條件有關的覆蓋就有三種,解釋一下:條件覆蓋是指覆蓋所有的條件表達式,即所有的條件表達式都至少計算一次,不考慮計算結果;條件值覆蓋是指覆蓋條件的所有可能取值,即每個條件的取真值和取假值都要至少計算一次;條件值組合覆蓋是指覆蓋所有條件取值的所有可能組合。老納做過一些粗淺的研究,發現與條件直接有關的錯誤主要是邏輯操作符錯誤,例如:||寫成

Ⅶ 什麼是單元測試

單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行為。例如,你可能把一個很大的值放入一個有序list 中去,然後確認該值出現在list 的尾部。或者,你可能會從字元串中刪除匹配某種模式的字元,然後確認字元串確實不再包含這些字元了。 單元測試是由程序員自己來完成,最終受益的也是程序員自己。可以這么說,程序員有責任編寫功能代碼,同時也就有責任為自己的代碼編寫單元測試。執行單元測試,就是為了證明這段代碼的行為和我們期望的一致。 工廠在組裝一台電視機之前,會對每個元件都進行測試,這,就是單元測試。 其實我們每天都在做單元測試。你寫了一個函數,除了極簡單的外,總是要執行一下,看看功能是否正常,有時還要想辦法輸出些數據,如彈出信息窗口什麼的,這,也是單元測試,老納把這種單元測試稱為臨時單元測試。只進行了臨時單元測試的軟體,針對代碼的測試很不完整,代碼覆蓋率要超過70%都很困難,未覆蓋的代碼可能遺留大量的細小的錯誤,這些錯誤還會互相影響,當BUG暴露出來的時候難於調試,大幅度提高後期測試和維護成本,也降低了開發商的競爭力。可以說,進行充分的單元測試,是提高軟體質量,降低開發成本的必由之路。 對於程序員來說,如果養成了對自己寫的代碼進行單元測試的習慣,不但可以寫出高質量的代碼,而且還能提高編程水平。 要進行充分的單元測試,應專門編寫測試代碼,並與產品代碼隔離。老納認為,比較簡單的辦法是為產品工程建立對應的測試工程,為每個類建立對應的測試類,為每個函數(很簡單的除外)建立測試函數。首先就幾個概念談談老納的看法。 一般認為,在結構化程序時代,單元測試所說的單元是指函數,在當今的面向對象時代,單元測試所說的單元是指類。以老納的實踐來看,以類作為測試單位,復雜度高,可操作性較差,因此仍然主張以函數作為單元測試的測試單位,但可以用一個測試類來組織某個類的所有測試函數。單元測試不應過分強調面向對象,因為局部代碼依然是結構化的。單元測試的工作量較大,簡單實用高效才是硬道理。 有一種看法是,只測試類的介面(公有函數),不測試其他函數,從面向對象角度來看,確實有其道理,但是,測試的目的是找錯並最終排錯,因此,只要是包含錯誤的可能性較大的函數都要測試,跟函數是否私有沒有關系。對於C++來說,可以用一種簡單的方法區隔需測試的函數:簡單的函數如數據讀寫函數的實現在頭文件中編寫(inline函數),所有在源文件編寫實現的函數都要進行測試(構造函數和析構函數除外)。 為什麼要使用單元測試 我們編寫代碼時,一定會反復調試保證它能夠編譯通過。如果是編譯沒有通過的代碼,沒有任何人會願意交付給自己的老闆。但代碼通過編譯,只是說明了它的語法正確;我們卻無法保證它的語義也一定正確,沒有任何人可以輕易承諾這段代碼的行為一定是正確的。 幸運,單元測試會為我們的承諾做保證。編寫單元測試就是用來驗證這段代碼的行為是否與我們期望的一致。有了單元測試,我們可以自信的交付自己的代碼,而沒有任何的後顧之憂。 什麼時候測試?單元測試越早越好,早到什麼程度?XP開發理論講究TDD,即測試驅動開發,先編寫測試代碼,再進行開發。在實際的工作中,可以不必過分強調先什麼後什麼,重要的是高效和感覺舒適。從老納的經驗來看,先編寫產品函數的框架,然後編寫測試函數,針對產品函數的功能編寫測試用例,然後編寫產品函數的代碼,每寫一個功能點都運行測試,隨時補充測試用例。所謂先編寫產品函數的框架,是指先編寫函數空的實現,有返回值的隨便返回一個值,編譯通過後再編寫測試代碼,這時,函數名、參數表、返回類型都應該確定下來了,所編寫的測試代碼以後需修改的可能性比較小。 由誰測試?單元測試與其他測試不同,單元測試可看作是編碼工作的一部分,應該由程序員完成,也就是說,經過了單元測試的代碼才是已完成的代碼,提交產品代碼時也要同時提交測試代碼。測試部門可以作一定程度的審核。 關於樁代碼,老納認為,單元測試應避免編寫樁代碼。樁代碼就是用來代替某些代碼的代碼,例如,產品函數或測試函數調用了一個未編寫的函數,可以編寫樁函數來代替該被調用的函數,樁代碼也用於實現測試隔離。採用由底向上的方式進行開發,底層的代碼先開發並先測試,可以避免編寫樁代碼,這樣做的好處有:減少了工作量;測試上層函數時,也是對下層函數的間接測試;當下層函數修改時,通過回歸測試可以確認修改是否導致上層函數產生錯誤。 在一種傳統的結構化編程語言中,比如C,要進行測試的單元一般是函數或子過程。在象C++這樣的面向對象的語言中, 要進行測試的基本單元是類。對Ada語言來說,開發人員可以選擇是在獨立的過程和函數,還是在Ada包的級別上進行單元測試。單元測試的原則同樣被擴展到第四代語言(4GL)的開發中,在這里基本單元被典型地劃分為一個菜單或顯示界面。 單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發過程中使用,單元測試必須是可重復的,無論是在軟體修改,或是移植到新的運行環境的過程中。因此,所有的測試都必須在整個軟體系統的生命周期中進行維護。 經常與單元測試聯系起來的另外一些開發活動包括代碼走讀(Code review),靜態分析(Static analysis)和動態分析(Dynamic analysis)。靜態分析就是對軟體的源代碼進行研讀,查找錯誤或收集一些度量數據,並不需要對代碼進行編譯和執行。動態分析就是通過觀察軟體運行時的動作,來提供執行跟蹤,時間分析,以及測試覆蓋度方面的信息。 一些流行的誤解 在明確了什麼是單元測試以後,我們可以進行"反調論證"了。在下面的章節里,我們列出了一些反對單元測試的普遍的論點。然後用充分的理由來證明這些論點是不足取的。 它浪費了太多的時間
一旦編碼完成,開發人員總是會迫切希望進行軟體的集成工作,這樣他們就能夠看到實際的系統開始啟動工作了。 這在外表上看來是一項明顯的進步,而象單元測試這樣的活動也許會被看作是通往這個階段點的道路上的障礙, 推遲了對整個系統進行聯調這種真正有意思的工作啟動的時間。 在這種開發步驟中,真實意義上的進步被外表上的進步取代了。系統能夠正常工作的可能性是很小的,更多的情況是充滿了各式各樣的Bug。在實踐中,這樣一種開發步驟常常會導致這樣的結果:軟體甚至無法運行。更進一步的結果是大量的時間將被花費在跟蹤那些包含在獨立單元里的簡單的Bug上面,在個別情況下,這些Bug也許是瑣碎和微不足道的,但是總的來說,他們會導致在軟體集成為一個系統時增加額外的工期, 而且當這個系統投入使用時也無法確保它能夠可靠運行。 在實踐工作中,進行了完整計劃的單元測試和編寫實際的代碼所花費的精力大致上是相同的。一旦完成了這些單元測試工作,很多Bug將被糾正,在確信他們手頭擁有穩定可靠的部件的情況下,開發人員能夠進行更高效的系統集成工作。這才是真實意義上的進步,所以說完整計劃下的單元測試是對時間的更高效的利用。而調試人員的不受控和散漫的工作方式只會花費更多的時間而取得很少的好處。 使用AdaTEST和Cantata這樣的支持工具可以使單元測試更加簡單和有效。但這不是必須的,單元測試即使是在沒有工具支持的情況下也是一項非常有意義的活動。 它僅僅是證明這些代碼做了什麼
這是那些沒有首先為每個單元編寫一個詳細的規格說明而直接跳到編碼階段的開發人員提出的一條普遍的抱怨, 當編碼完成以後並且面臨代碼測試任務的時候,他們就閱讀這些代碼並找出它實際上做了什麼,把他們的測試工作基於已經寫好的代碼的基礎上。當然,他們無法證明任何事情。所有的這些測試工作能夠表明的事情就是編譯器工作正常。是的,他們也許能夠抓住(希望能夠)罕見的編譯器Bug,但是他們能夠做的僅僅是這些。 如果他們首先寫好一個詳細的規格說明,測試能夠以規格說明為基礎。代碼就能夠針對它的規格說明,而不是針對自身進行測試。這樣的測試仍然能夠抓住編譯器的Bug,同時也能找到更多的編碼錯誤,甚至是一些規格說明中的錯誤。好的規格說明可以使測試的質量更高,所以最後的結論是高質量的測試需要高質量的規格說明。 在實踐中會出現這樣的情況: 一個開發人員要面對測試一個單元時只給出單元的代碼而沒有規格說明這樣吃力不討好的任務。你怎樣做才會有更多的收獲,而不僅僅是發現編譯器的Bug?第一步是理解這個單元原本要做什麼, --- 不是它實際上做了什麼。 比較有效的方法是倒推出一個概要的規格說明。這個過程的主要輸入條件是要閱讀那些程序代碼和注釋, 主要針對這個單元, 及調用它和被它調用的相關代碼。畫出流程圖是非常有幫助的,你可以用手工或使用某種工具。 可以組織對這個概要規格說明的走讀(Review),以確保對這個單元的說明沒有基本的錯誤, 有了這種最小程度的代碼深層說明,就可以用它來設計單元測試了。 我是個很棒的程序員, 我是不是可以不進行單元測試?
在每個開發組織中都至少有一個這樣的開發人員,他非常擅長於編程,他們開發的軟體總是在第一時間就可以正常運行,因此不需要進行測試。你是否經常聽到這樣的借口? 在真實世界裡,每個人都會犯錯誤。即使某個開發人員可以抱著這種態度在很少的一些簡單的程序中應付過去。 但真正的軟體系統是非常復雜的。真正的軟體系統不可以寄希望於沒有進行廣泛的測試和Bug修改過程就可以正常工作。 編碼不是一個可以一次性通過的過程。在真實世界中,軟體產品必須進行維護以對操作需求的改變作出反應, 並且要對最初的開發工作遺留下來的Bug進行修改。你希望依靠那些原始作者進行修改嗎? 這些製造出這些未經測試的原始代碼的資深專家們還會繼續在其他地方製造這樣的代碼。在開發人員做出修改後進行可重復的單元測試可以避免產生那些令人不快的負作用。

Ⅷ 《C語言程序設計》江寶釧主編-習題7-1-平均成績 題目描述 從鍵盤輸入10個學生成績,求平均

閱讀全文

與程序設計單元測試7相關的資料

熱點內容
ftp如何設置文件共享屬性 瀏覽:258
關於年獸好看的動漫電影有哪些 瀏覽:830
嫩模電影在線觀看泰國版 瀏覽:469
十大封禁愛情電影觀看 瀏覽:22
fm文件復制到u盤 瀏覽:773
換源網站有哪些 瀏覽:243
歐美哪部大尺度電影里的胸最好看 瀏覽:943
e網路頻率 瀏覽:832
win10用什麼優化大師 瀏覽:112
淘寶出售壓縮文件 瀏覽:220
2015中關村大數據日 瀏覽:448
電影是21比9解析度 瀏覽:625
穿越紅軍小說 瀏覽:764
linux目錄中創建新文件許可權 瀏覽:739
某500mhz計算機執行標准測試程序 瀏覽:277
大數據開發就業怎麼樣 瀏覽:683
怎麼打開蘋果手機的4g網路 瀏覽:826
香港中文字幕電影 瀏覽:495
美國光頭男優 瀏覽:404
受保護的word文檔如何編輯 瀏覽:406

友情鏈接