2014-01-20 21 views
0

我有技術測試分析師的高級軟件測試第3卷書,並且在第4節 - 測試技術中的動態分析上有這個問題,第321頁。請有專業知識的人,請確認他們認爲答案是什麼,因爲書後面的答案讓我非常吃驚,這讓我很生氣!重讀本書的相關部分也沒有幫助。教科書中的動態分析練習 - 答案令人驚訝

Consider the following list: 
I. Memory loss due to wild pointers 
II. Profiling performance characteristics of a system 
III. Failure to initialize a local variable 
IV. Argument error in Windows 32 API call 
V. Incorrect use of a equality operator in a predicate 
VI. Failure to place a break in a switch statement 
VII. Finding dead code 

Which of these are most likely to be found through the use of a dynamic analysis tool? 

A. I, III, IV and VII 
B. I, II, III, IV and VI 
C. I, II and IV 
D. II, IV and V 

回答

0

答案是A.動態分析工具旨在捕獲有關,因爲它是執行,而靜態分析工具可以通過自身分析源代碼的系統的詳細信息。

項目IIV都處理內存分配,這實際上不可能靜態分析。動態分析可以確定指針何時分配不正確,或者分配給低級API調用的內存是否不足以包含返回的數據結構。

項目IIIVII都涉及只能通過少量代碼路徑才能找到的問題。動態分析可以使用大量輸入來遍歷每個代碼路徑,並確定變量未初始化的情況,或者是否存在一些永遠不會執行的代碼段(死代碼)。

項目VVI都是邏輯錯誤,這在測試結果中很明顯。動態分析在確定程序的邏輯是否正確時不會有效。調試器和記錄器是在那裏使用的最佳工具。

項目II似乎有點模棱兩可(什麼是「系統」?),但動態分析通常是指用於查找問題的工具,而不是分析系統性能。

+0

感謝您的解釋。不幸的是,爲了增加我的疑惑,LinkedIn上的一位熟人聯繫了本書的合着者,他們說答案實際上是C(這是我的目的),而A是一個錯誤。 – simien

+0

對於不選擇A的理由是,根據靜態分析/動態分析部分中的相同教科書以及ISTQB教學大綱,「III」和「VII」歸因於靜態工具和技術。 (另外還有關於代碼評論(也就是靜態方法)的書第423頁的練習,作者指出變量沒有被初始化,我同意'II'在其描述中看起來很片斷,這些書不是真的證明了這一點; ISTQB課程大綱做得更多......最終它是排除過程 – simien

+0

項目'III'和'VII'涵蓋了各種不同的情況,其中一些可以通過一種方法或另一種方法更好地處理。例如,在死代碼的情況下,'if(false)'語句中的代碼顯然已經死了,可以通過靜態分析找到,但是如果'flag'會導致if(flag)總是根據系統的運行條件評估爲false,靜態分析可能無法解決這個問題,但動態分析可能會注意到該代碼從未在長時間運行的測試中執行過,總而言之,這是一個非常主觀的問題。 –