教科书中的动态分析练习 - 答案令人惊讶

时间:2014-01-20 20:13:24

标签: testing dynamic code-analysis

我有技术测试分析师的高级软件测试第3卷,第4部分 - 第34页的测试技术中有关于动态分析的问题。请有专业知识的人,请确认他们认为答案是什么,因为书后面的答案让我感到惊讶,这让我很生气!重新阅读本书的相关部分也没有帮助。

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

1 个答案:

答案 0 :(得分:0)

答案是A.动态分析工具旨在捕获系统执行时的详细信息,而静态分析工具可以自行分析源代码。

项目IIV都处理内存分配,这几乎不可能静态分析。动态分析可以确定何时错误地分配了指针,或者分配给低级API调用的内存是否不足以包含返回的数据结构。

项目IIIVII都处理可能只能通过少量代码路径找到的问题。动态分析可以使用大量输入来遍历每个代码路径,并确定变量未初始化的情况,或者是否存在一些从未执行过的代码段(死代码)。

项目VVI都是逻辑错误,这在测试结果中很明显。动态分析在确定程序逻辑是否正确时不会有效。调试器和记录器是在那里使用的最佳工具。

项目II似乎有点含糊不清(“系统”指的是什么?)但动态分析通常是指用于查找问题的工具,而不是分析系统性能。