3软件静态测试技术课件分解
合集下载
第二章静态测试课件

小结
p 静态测试的对象集中在需求文档、设计文档以及程序代码上,是在不执行被 测代码的条件下发现缺陷的一类方法。通过运用静态测试方法可以尽早地发 现软件中的缺陷。
p 常用的静态测试方法包括评审、静态分析等。
软件测试方法和应用》
2-25
规格说明书的详细评审(2)
p 一个好的规格说明书具有如下属性 n 代码无关:规格书的目标是定义产品需求而不是软件设计,架构和代码 n 可测试的:特性是否可测试?是否提供了让测试人员得以验证功能的足够 信息
p 检查规格说明书的同时,时刻关注评审的文字和图片是否具有这样的属性
软件测试方法和应用》
2-12
审查工作流程
p 总体会议
n 本阶段可选,主要目标是让审查专家熟悉被审查对象,包括对象特征、上 下文、背景等
n 参与者:所有需要参加审查的人员
p 准备
n 参与者:审查专家 n 这是审查最重要的阶段。在这个阶段,
1. 审查专家独立工作、逐行阅读被审查对象,将任何发现问题、疑问记录在审 查意见单中
2-31
静态分析
p 定义
n 静态分析是对被测程序进行特性分析的一些方法的总称,一般借助工具进行
p 可提供的功能包括:
n 发现代码中的缺陷,包括
1. 用错的局部变量和全程变量 2. 不匹配的参数 3. 不适当的循环嵌套和分支嵌套 4. 不适当的处理顺序 5. 无终止的死循环 6. 未定义的变量 7. 不允许的递归 8. 调用并不存在的子程序 9. 遗漏了标号或代码 10. 不恰当的连接等
p 对象
n 各种与软件相关的有必要进行测试的产物,例如各类文档、源代码等
p 方法
n 评审
p 对软件元素或项目状态进行评估的活动,用以确定与预期结果之间的偏 差和相应的改进意见
软件测试课件第3章软件测试方法1静态测试与动态测试

标识符、常量等,组合这些基本因素就可以得到软件的基本信息,包括:标号交 叉引用表,变量交叉引用表,子程序、宏和函数表,等价表,常数表。
通过这些软件的基本信息可以实现以下功能:
1. 直接从表中查出说明和使用错误,如循环层次表、标号交叉引用表和变量 交叉引用表;
2. 为用户提供辅助信息,如子程序、宏和函数表、等价表和常数表;
3.1 静态测试技术概述
• 代码检查
➢ 走查 走查与代码审查基本相同,其过程分为两步: 1. 把材料先发给走查小组的每个成员,认真研究程序,然后开会; 2. 开会的程序与代码审查不同,不是简单的读程序和对照错误检查表进行 检查,而是让与会者充当计算机,即首先由测试组成员为所测程序准备 一批有代表性的测试用例,提交给走查小组,走查小组开会扮演计算机 角色,让测试用例沿程序逻辑运行一遍,随时记录程序的跟踪,供分析 和讨论用。
单个变量是否只做单个用途? 单行是否只有单个功能?(不要使用;进行多行合并) 单个函数是否执行了单个功能并与其命名相符? 操作符++和——操作符的应用是否复合规范?
单个函数不超过规定行数? 缩进层数是否不超过规定? 是否已经消除了所有警告? 常数变量是否声明为final? 对象使用前是否进行了检查? 局部对象变量使用后是否被复位为NULL? 对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。
3.1 静态测试技术概述
检查变量的交叉引用表,重点检查未说明变量和违反了类型规定的变量,还要对照源程序, 逐个检查变量的引用、变量的使用序列、临时变量在某条路径上的重写情况,局部变量、全 局变量与特权变量的使用;
检查标号的交叉引用表,验证所有标号的正确性,检查所有标号的命名是否正确,转向指定 位置的标号是否正确;
通过这些软件的基本信息可以实现以下功能:
1. 直接从表中查出说明和使用错误,如循环层次表、标号交叉引用表和变量 交叉引用表;
2. 为用户提供辅助信息,如子程序、宏和函数表、等价表和常数表;
3.1 静态测试技术概述
• 代码检查
➢ 走查 走查与代码审查基本相同,其过程分为两步: 1. 把材料先发给走查小组的每个成员,认真研究程序,然后开会; 2. 开会的程序与代码审查不同,不是简单的读程序和对照错误检查表进行 检查,而是让与会者充当计算机,即首先由测试组成员为所测程序准备 一批有代表性的测试用例,提交给走查小组,走查小组开会扮演计算机 角色,让测试用例沿程序逻辑运行一遍,随时记录程序的跟踪,供分析 和讨论用。
单个变量是否只做单个用途? 单行是否只有单个功能?(不要使用;进行多行合并) 单个函数是否执行了单个功能并与其命名相符? 操作符++和——操作符的应用是否复合规范?
单个函数不超过规定行数? 缩进层数是否不超过规定? 是否已经消除了所有警告? 常数变量是否声明为final? 对象使用前是否进行了检查? 局部对象变量使用后是否被复位为NULL? 对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。
3.1 静态测试技术概述
检查变量的交叉引用表,重点检查未说明变量和违反了类型规定的变量,还要对照源程序, 逐个检查变量的引用、变量的使用序列、临时变量在某条路径上的重写情况,局部变量、全 局变量与特权变量的使用;
检查标号的交叉引用表,验证所有标号的正确性,检查所有标号的命名是否正确,转向指定 位置的标号是否正确;
软件测试方法软件测试方法和技术ppt课件

less than value
value
greater than value
15
确定等价类的方法(2)
在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下, 可以确立一个有效等价类和一个无效等价类。
not member of set
member of set
在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等 价类
很多错误发生在输入或输出范围的边界上,因此针对各种 边界情况设置测试用例,可以更有效地发现缺陷。
BVA – Boundary Value Analysis 设计方法:
确定边界情况(输入或输出等价类的边界) 选取正好等于、刚刚大于或小于边界值作为测试数据
20
确定边界值的方法
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以 及刚刚超越这个范围边界的值作为测试输入数据。
Character Null Space / 0 1 2 9 ; @ A
ASCII Value 0 32 47 48 49 50 57 58 64 65
Character B Y Z [ ‘ a b y z {
ASCII Value 66 89 90 91 96 97 98 121 122 123
26
有什么具体案例?
17
等价类测试用例-Example
等价类1: Integer 等价类2: Decimal fraction 等价类3: Negative 等价类4: Invalid input
18
根据等价类创建测试用例的步骤
a) 建立等价类表,列出所有划分出的等价类:
输入条件 … …
有效等价类 … …
3软件静态测试技术解析

第三章 软件静态测试技术
A Free sample background from
Slide 9
3.3 程序控制流分析方法
控制流图 控制流图(可简称流图)是对程序流程图进行简化后得到 的,它可以更加突出程序控制流的结构。 控制流图中包括两种图形符号:节点和控制流线。
(1)将程序流程图中的每个分支转换为一个独立的节点。 (2)在分支前的顺序块(不论有几个)均可合并入节点。 (3)对所有的节点及程序控制的流向进行编号。
对于复合条件,则可将其分解为多个单个条件,并映射成 控制流图。
第三章 软件静态测试技术
A Free sample background from
Slide 1
第3章 软件静态测试技术
3.1 软件静态测试 3.2 程序数据流分析方法 3.3 程序控制流分析方法 3.4 软件的复杂性度量 3.5 软件评审
第三章 软件静态测试技术
A Free sample background from
其中,E是控制流图中边的数量,N是控制流图中的节点 数量。
V(G) = P+1
其中,P是控制流图G中判定节点的数量。
环形复杂度的数值越大,理解程序模块的难度越高。通常 认为环形复杂度大于10是不可接受的,需要对程序进行 重新设计。
第三章 软件静态测试技术
A Free sample background from
(1)节点由带标号的圆圈表示,可代表一个或多个语句、 一个处理框序列和一个条件判定框(不包含复合条件)。 (2)控制流线由带箭头的弧线或直线表示,可称为边。它 代表程序中的控制流。
常见结构的控制流图
第三章 软件静态测试技术
《静态测试》课件

测试数据审查有助于发现潜在的测试漏洞和不符合要求的测试数据,从而提高测试 的质量和效率。
工具辅助测试
工具辅助测试是指使用自动化工具来 辅助静态测试的方法。
工具辅助测试可以提高测试的效率和 准确性,从而缩短软件的开发周期和 提高软件的质量。
通过使用自动化工具,可以快速、准 确地检查代码、文档和测试数据中的 错误和缺陷。
未来静态测试的发展趋势和研究方向
静态测试算法的优化
01
针对不同类型的软件,研究更加高效和准确的静态测试算法和
工具。
静态测试与动态测试的协同机制
02
研究如何更好地协同静态测试和动态测试,提高测试效率和准
确性。
人工智能在静态测试中的深度应用
03
研究如何利用人工智能技术进行更加智能化的静态测试,包括
缺陷预测、自动化修复等方面。
白盒测试
关注内部逻辑和代码结构,需 要了解源代码。
灰盒测试
介于黑盒和白盒之间,关注接 口和部分内部逻辑。
执行测试并记录结果
01
02
03
搭建测试环境
根据测试需求搭建符合要 求的测试环境。
执行测试用例
按照测试计划执行测试用 例,并记录详细的测试数 据和结果。
分析缺陷
对发现的缺陷进行分析, 确定其影响范围和修复建 议。
重要。
静态测试的适用范围
总结词
静态测试适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应用程序等。它尤其适用于需求变化 较小、代码量较大的软件项目。
详细描述
静态测试是一种通用的软件质量评估方法,适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应 用程序等。对于一些需求变化较小、代码量较大的软件项目,静态测试尤为重要。通过在开发过程中进行静态测 试,可以及早发现潜在问题,降低维护成本,提高软件的质量和可靠性。
工具辅助测试
工具辅助测试是指使用自动化工具来 辅助静态测试的方法。
工具辅助测试可以提高测试的效率和 准确性,从而缩短软件的开发周期和 提高软件的质量。
通过使用自动化工具,可以快速、准 确地检查代码、文档和测试数据中的 错误和缺陷。
未来静态测试的发展趋势和研究方向
静态测试算法的优化
01
针对不同类型的软件,研究更加高效和准确的静态测试算法和
工具。
静态测试与动态测试的协同机制
02
研究如何更好地协同静态测试和动态测试,提高测试效率和准
确性。
人工智能在静态测试中的深度应用
03
研究如何利用人工智能技术进行更加智能化的静态测试,包括
缺陷预测、自动化修复等方面。
白盒测试
关注内部逻辑和代码结构,需 要了解源代码。
灰盒测试
介于黑盒和白盒之间,关注接 口和部分内部逻辑。
执行测试并记录结果
01
02
03
搭建测试环境
根据测试需求搭建符合要 求的测试环境。
执行测试用例
按照测试计划执行测试用 例,并记录详细的测试数 据和结果。
分析缺陷
对发现的缺陷进行分析, 确定其影响范围和修复建 议。
重要。
静态测试的适用范围
总结词
静态测试适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应用程序等。它尤其适用于需求变化 较小、代码量较大的软件项目。
详细描述
静态测试是一种通用的软件质量评估方法,适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应 用程序等。对于一些需求变化较小、代码量较大的软件项目,静态测试尤为重要。通过在开发过程中进行静态测 试,可以及早发现潜在问题,降低维护成本,提高软件的质量和可靠性。
第4讲-软件静态分析

4 Variables were declared but never used
5 UR data flow anomalies found 6 Recursion in procedure calls found 7 DU data flow anomalies found 8 DD data flow anomalies found 9 Defined parameter has possible clear path
张虹
2011/4/29
软件测试技术—第4讲—软件静态分析
23
3. 编码规则检查
编程规则检查流程
• 例如:使用Testbed
定义编码规则 培训软件 编程人员 编程
cpen.dat cpppen.dat asmpen.dat
Testbed 自动检查
creport.dat cppreport.dat asmreport.dat
软件测试技术—第4讲—软件静态分析
5
软件静态分析的主要内容
1.
2. 3. 4. 5.
数据流分析
控制流分析
编码规则检查
接口分析
软件度量分析
张虹
2011/4/29
软件测试技术—第4讲—软件静态分析
6
1. 数据流分析
用数据流图来分析数据处理的异常现象(数 据异常),这些异常包括初始化、赋值、或 引用数据等的序列的异常。
(D) Overlapping loops
张虹
2011/4/29
软件测试技术—第4讲—软件静态分析
19
(C) Loop with multiple entry points
(E) Parallel loops
ISTQB基础知识:软件静态测试技术

技术评审过程
评审计划
预备会(可选)
会前准备(自评审)
评审会议
修正错误 是 错误很多? 否 复核 复审
技术评审的内容
评审计划
主持人检查作者提交的被审材料是否齐全,是否满足评审条件。例如,代 码应通过编译后才能参加评审。 主持人确定评审小组成员及职责,确定评审会时间、地点。主持人向评审 小组成员分发评审材料。 评审材料应包括:被审材料、检查要点列表(Checklist)和相关技术文档。
评审工作角色与职责
主持人(Moderator)
在评审会前负责正规技术评审计划和会前准备的检查;
在评审会中负责调动每一个评审员在评审会上的工作热情,把握评审会方向,保证 评审会的工作效率;
在评审会后负责对问题的分类及问题修改后的复核。
宣读员(Reader)
在评审会上通过朗读和分段来引导评审小组遍历被审材料。 除了代码评审可以选择作者作为宣读员外,其他评审最好选择直接参与后续开发阶 段的人员作为宣读员。
评审过程(续)
评审会议/执行评审,会议记录
• 对评审对象而不是作者进行评论 • 对不足、错误、问题和评论进行讨论 • 记录员记录不足、错误、修改要求、待处理事件等 • 可以使用检查表(Checklist) • 对发现的缺陷和不足进行评估 • 确定修改措施并做好记录 • 在会后向参加评审人员和相关人员发放评审的记录报告
修正错误
复审
技术评审
概述
由一组评审者按照规范的步骤对软件需求、设计、代码或其他技术文档进 行仔细地检查,以找出和消除其中的缺陷。
目的
第三章-静态测试PPT课件

四
• 数组和字符串的下标是整数值吗?
川 大
学
• 是否在应该使用常量的地方使用了变量?
锦 城
• 变量是否被赋予不同类型的值?
学 院
• 为引用的指针分配内存了吗?
软 件
• 一个数据结构是否在多个函数或者子程序
测 试
中引用,在每一个引用中明确定义结构了
吗?
23
数据声明错误
• 所有变量都赋予正确的长度和类型了吗? 四
(10)检查代码是否可以优化,算法效率是否最高。
(11)检查代码注释是否完整,是否正确反映了代码的功能。
4
§3.2 产品说明书检查
• 什么是产品说明书?
四
• 为什么要检查产品说明书?
川 大
学
• 检查产品说明书的基本原则是什么?
锦 城
• 怎样检查产品说明书?
学 院
软 件 测 试
5
3.2.1 什么是产品说明书?
准地遵循、可读性,代码逻辑表达的正确性,代
大 学
码结构的合理性等方面;发现违背程序编写标准
锦 城
的问题,程序中不安全、不明确和模糊的部分,
学 院
找出程序中不可移植部分、违背程序编程风格的 软
问题,包括变量检查、命名和类型检查、程序逻
件 测
辑检查、程序语法检查和程序结构检查等内容。 试
13
桌面检查
• 桌面检查是由单人阅读程序,对照错误列 四
城 学
– 一位程序设计语言专家&
院
– 一位初级程序员&
软
件
– 将要负责程序维护的人员&
测
– 一位其他项目的人员&
试
– 一位来自该软件编程小组的程序员
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Slide 16
环形复杂度的应用
void Sort ( int iRecordNum, int iType ) 1{ 2 int x=0; 3 int y=0; 4 while ( iRecordNum-- > 0 ) 5 { 6 If ( iType==0 ) 7 break; 8 else 9 If ( iType==1 ) 10 x=x+10; 11 else 12 y=y+20; 13 } 14 }
第三章 软件静态测试技术
A Free sample background from
Slide 3
软件静态测试(续)
静态测试内容及过程
测试需求分析:依据软件开发计划、需求文档确定测试的 需求,建立测试基础与评审基础,建立标准测试计划。 测试概要设计:在需求分析的基础上,完成测试方案的制 定,包括测试内容、测试策略、测试方法、测试目标。 测试详细设计:主要任务是完成测试进程的各项具体安排 和测试实施的具体细节考虑,包括测试工具选用、测试人 员组织及测试进度安排等。 测试执行与结果分析:根据已制定完成的静态测试计划进 行静态测试,落实和完成各项测试的具体任务,并提交测 试工作的交付物。
Slide 1
第3章 软件静态测试技术
3.1 软件静态测试 3.2 程序数据流分析方法 3.3 程序控制流分析方法 3.4 软件的复杂性度量 3.5 软件评审
第三章 软件静态测试技术
A Free sample background from
(1)将程序流程图中的每个分支转换为一个独立的节点。 (2)在分支前的顺序块(不论有几个)均可合并入节点。 (3)对所有的节点及程序控制的流向进行编号。
对于复合条件,则可将其分解为多个单个条件,并映射成 控制流图。
第三章 软件静态测试技术
A Free sample background from
第三章 软件静态测试技术
A Free sample background from
Slide 4
软件静态测试(续)
静态测试技术——代码检查
代码检查包括代码走查(自检、他人检查或代码审查会等 形式),主要检查代码和设计的一致性,代码对标准的遵 循、可读性,代码逻辑表达的正确性,代码结构的合理性 等方面。 在实际测试运用中,代码检查比动态测试更为有效,能够 快速并较准确地找到缺陷,发现30% ~ 60%的逻辑设计和 编码缺陷的问题。 代码检查一般在编译与动态测试之前进行,看到的是程序 问题的本身而非征兆(不需做额外的错误定位工作),因 此非常耗时,而且需要有比较深厚的专业技术知识与大量 编程经验的积累。
第三章 软件静态测试技术
A Free sample background from
Slide 7
3.2 程序数据流分析方法
数据流分析 数据流分析是在程序代码经过的路径上检查数据的用法, 主要是为了发现定义/引用异常的缺陷。这里的异常指可能 会导致程序失效的情形,异常可能会触发运行风险。 在数据流分析过程中,需要检查每个变量的使用情况。对 变量的用法或变量的状态区别为三种类型:已定义的(d) – 变量已经赋值;引用的(r) – 读取或使用变量的值;没有定 义的(u) – 变量没有定义具体的值。根据变量的使用状况, 可以区分数据流异常的三种情况: • ur异常– 程序路径(r)上读取了没有定义(u)的变量 • du异常– 变量被赋值(d),但这个变量已经变成无效或没有 定义(u)的状态,同时没有被引用 • dd异常– 变量接受了第二个值(d),同时第一个值没被使用
第三章 软件静态测试技术
A Free sample background from
Slide 5
软件静态测试(续)
静态测试技术——程序结构静态分析 程序结构静态分析主要以图形方式表现程序的内部结构, 例如函数调用关系图、函数内部控制流图。 静态结构分析的检查项:代码风格和规则审查;程序设计 和结构的审核;业务逻辑的审核;走查、审查与技术复审 手册。
第三章 软件静态测试技术
A Free sample background from
Slide 13
程序控制流分析方法(续)
将程序流程图转换为控制流图
将程序流程图转换为控制流图主要是为了进行软件复杂度 的度量,并能方便地设计测试用例。转换的方法如下(关 键是对程序分支的处理):
其中,E是控制流图中边的数量,N是控制流图中的节点 数量。
V(G) = P+1
其中,P是控制流图G中判定节点的数量。
环形复杂度的数值越大,理解程序模块的难度越高。通常 认为环形复杂度大于10是不可接受的,需要对程序进行 重新设计。
第三章 软件静态测试技术
A Free sample background from
第三章 软件静态测试技术
A Free sample background from
Slide 17
环形复杂度的应用(续)
画出控制流图 如右图所示 计算环形复杂度 方法1:3(封闭区域数量)+ 1 = 4 方法2:10(边数)- 8(节点数)+ 2 = 4 方法3:3(判定节点数)+ 1 = 4 导出独立路径(用语句编号表示) 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→13→4→14 路径4:4→6→9→12→13→4→14
(1)节点由带标号的圆圈表示,可代表一个或多个语句、 一个处理框序列和一个条件判定框(不包含复合条件)。 (2)控制流线由带箭头的弧线或直线表示,可称为边。它 代表程序中的控制流。
常见结构的控制流图
第三章 软件静态测试技术
A Free sample background from
Slide 11
程序控制流分析方法(续)
矩阵图
矩阵图是控制流图的矩阵表示形式。它是一个方形矩阵, 其维数等于控制流图的节点数,矩阵中的每列和每行都对 应于标识的节点,矩阵每个元素对应于节点连接的边。 通常,控制流图中的结点用数字标识,边则用字母标识。 如果在控制流图中从第 i 个结点到第 j 个结点有一个标识 为 x 的边相连接,则在对应图矩阵的第 i 行第 j 列有一个 非空的元素 x 。
第三章 软件静态测试技术
A Free sample background from
Slide 15
计算环形复杂度的方法
环形复杂度以图论为基础,为我们提供了非常有用的软件 度量。可用如下三种方法之一来计算环形复杂度V(G): V(G) = 控制流图G中的封闭区域的数量+1 V(G) = E-N+2
Slide 2
3.1 软件静态测试
静态测试的基本概念
静态测试是软件测试主要技术手段之一,基本上由手工评 审和静态分析两种技术方法所组成。 静态测试的主要目的是从已有规格说明、已定义的标准甚 至是项目中发现缺陷和偏差。这些检查结果可用于优化开 发过程。 与动态测试需要运行软件不同,静态测试不是测试用例的 执行,而是一个静态分析的过程。这种分析可通过人工方 式的评审来完成(主要是对项目技术文档的审查),也可 使用特定的测试分析工具来进行(例如对程序编码规范的 自动检查)。 静态分析有别于程序的编译。
A Free sample background from ww14
9 12
13
第三章 软件静态测试技术
Slide 18
第三章 软件静态测试技术
A Free sample background from
Slide 9
3.3 程序控制流分析方法
控制流图 控制流图(可简称流图)是对程序流程图进行简化后得到 的,它可以更加突出程序控制流的结构。 控制流图中包括两种图形符号:节点和控制流线。
静态测试技术——程序代码质量度量 Line复杂度:以代码的行数作为度量计算的基准。 Halstead复杂度:以程序中出现的操作符和操作数作为计 算对象,并据此计算出程序长度和程序容量。 McCabe复杂度(圈复杂度):将程序流程图结构转化为 有向图结构,以图论方法来计算(衡量)程序复杂度。
第三章 软件静态测试技术
A Free sample background from
Slide 8
程序数据流分析方法(续)
异常的例子: void exchange (int& Min, int& Max) { int help; if (Min>Max) { Max = Help; Max = Min; Help = Min; } } 在该函数中出现了数据流异常的情况:变量Help的ur异常; 变量Max的dd异常;变量Help的du异常。 说明:不是每个异常都会导致不正确的程序行为。 有时数据流异常不一定很明显,很容易被手工检查(比如 评审)遗漏,而分析数据流的工具可以发现这些异常。
第三章 软件静态测试技术
A Free sample background from
Slide 6
软件静态测试(续)
静态测试技术——检查与评审
静态测试评审:对需求分析和概要设计进行评审。手工评 审分为正式评审和非正式评审,正式评审是执行检查过程 (技术评审),非正式评审主要为走查过程。 静态测试检查:对静态测试的每个过程都要进行检查,以 确保静态测试的有效性和测试的质量。检查以会议的形式 进行,根据检查结果决定是否需要重新制订计划或其后的 某项环节及工作。 采用静态测试可发现1/3~2/3的软件逻辑设计和编码方面的 错误,但软件代码中仍会有隐藏的故障无法通过静态测试 方法发现,还必须通过动态测试对程序进行深入分析。