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 静态测试技术概述
检查变量的交叉引用表,重点检查未说明变量和违反了类型规定的变量,还要对照源程序, 逐个检查变量的引用、变量的使用序列、临时变量在某条路径上的重写情况,局部变量、全 局变量与特权变量的使用;
检查标号的交叉引用表,验证所有标号的正确性,检查所有标号的命名是否正确,转向指定 位置的标号是否正确;
软件测试方法软件测试方法和技术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
搭建测试环境
根据测试需求搭建符合要 求的测试环境。
执行测试用例
按照测试计划执行测试用 例,并记录详细的测试数 据和结果。
分析缺陷
对发现的缺陷进行分析, 确定其影响范围和修复建 议。
重要。
静态测试的适用范围
总结词
静态测试适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应用程序等。它尤其适用于需求变化 较小、代码量较大的软件项目。
详细描述
静态测试是一种通用的软件质量评估方法,适用于各种类型的软件,包括桌面应用程序、网络应用程序、移动应 用程序等。对于一些需求变化较小、代码量较大的软件项目,静态测试尤为重要。通过在开发过程中进行静态测 试,可以及早发现潜在问题,降低维护成本,提高软件的质量和可靠性。
第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
桌面检查
• 桌面检查是由单人阅读程序,对照错误列 四
城 学
– 一位程序设计语言专家&
院
– 一位初级程序员&
软
件
– 将要负责程序维护的人员&
测
– 一位其他项目的人员&
试
– 一位来自该软件编程小组的程序员
软件静态测试技术概述
员的知识水平,选择不同且合适的评审类型 • 使用检查表和指南提高评审效率 • 需要必要的培训,特别对正式评审 • 为文档评审计划足够的资源,支持有效的评审
过程 • 持续改进评审过程
38
课后作业
• 春暖花开,假设你们班准备组织一次春 游,由某个同学负责写出春游计划,其 他人负责评审。请列出评审春游计划的 检查表
• 使用审查标准和检查表 • 重点:发现文档的不清晰点和可能的缺陷、度
量文档质量、改进产品质量和开发流程 • 会前准备,会后形成正式的审查报告和发现问
ቤተ መጻሕፍቲ ባይዱ题列表 • 有正式的跟踪过程
35
走查、审查、技术评审
• 走查、审查、技术评审都是由一组同事 来组成评审组成员完成的,因此,也称 作同行评审(peer review)
27
记录员
• 记录评审团队提出的所有发现,如问题、 采取的措施、决定和建议等。
• 记录要简短、准确,抓住中心思想
28
检查表
• 确保评审完整性及高效的一个重要 工具是检查表(checklist)
例:软件需求规格检查表
29
• Do stated goals and objectives for software remain consistent with system goals and objectives? • Have important interfaces to all system elements been described? • Have all data objects been described? Have all attributes been identified? • Do major functions remain within scope and has each been adequately described? • Have functions been refined (elaborated) to an appropriate level of detail? • Is information flow adequately defined for the problem domain? • Are diagrams clear; can each stand alone without supplementary text? • Is the behavior of the software consistent with the information it must process and the functions it
《软件测试教案》课件
《软件测试教案》课件第一章:软件测试概述1.1 软件测试的定义解释软件测试的概念和目的强调软件测试在软件开发过程中的重要性1.2 软件测试的原则和目标介绍软件测试的基本原则和目标解释如何通过测试来发现和修复软件缺陷1.3 软件测试的生命周期描述软件测试的生命周期及其各个阶段强调各个阶段的关键活动和任务第二章:软件测试类型和方法2.1 静态测试和动态测试解释静态测试和动态测试的概念和区别强调不同测试类型的适用场景和优势2.2 单元测试介绍单元测试的概念和目的解释如何进行单元测试和选择合适的测试用例2.3 集成测试介绍集成测试的概念和目的解释如何进行集成测试和选择合适的测试用例2.4 系统测试介绍系统测试的概念和目的解释如何进行系统测试和选择合适的测试用例第三章:软件测试计划和管理3.1 软件测试计划的制定介绍如何制定软件测试计划强调测试计划的重要性和包含内容3.2 测试用例的设计和编写介绍如何设计和编写测试用例强调测试用例的质量和可维护性3.3 测试执行和缺陷跟踪解释如何执行测试用例和记录测试结果强调缺陷跟踪和修复的重要性3.4 测试报告和评估介绍如何编写测试报告和进行测试评估强调测试报告的作用和价值第四章:软件测试工具和技术4.1 测试工具的概念和作用解释测试工具的概念和作用强调选择合适的测试工具的重要性4.2 自动化测试工具的使用介绍自动化测试工具的概念和分类解释如何选择和使用自动化测试工具4.3 性能测试工具的使用介绍性能测试工具的概念和分类解释如何选择和使用性能测试工具4.4 测试方法和技术的选择介绍不同的测试方法和技术的特点和适用场景强调根据项目需求和目标选择合适的测试方法和技术的重要性第五章:软件测试团队和沟通5.1 软件测试团队的组织和管理介绍软件测试团队的组织结构和角色职责强调有效的团队合作和管理的重要性5.2 测试人员和技能要求介绍测试人员的基本要求和技能素质强调持续学习和专业发展的必要性5.3 测试沟通和协调解释测试沟通和协调的重要性强调有效的沟通和协调对软件测试成功的关键作用5.4 测试文档和知识管理介绍测试文档和知识管理的重要性强调建立和维护完整的测试文档和知识库的必要性第六章:用户接受测试(UAT)和验收测试6.1 用户接受测试(UAT)的概念解释UAT的目的和重要性强调UAT在确保软件满足用户需求中的作用6.2 验收测试(Acceptance Testing)介绍验收测试的类型和目的解释如何进行验收测试和评估软件是否符合预期要求6.3 UAT和验收测试的实施步骤描述UAT和验收测试的实施步骤和关键活动强调用户参与和反馈在测试过程中的重要性第七章:回归测试和持续集成7.1 回归测试的概念和重要性解释回归测试的目的和作用强调回归测试在软件维护和修复中的关键性7.2 持续集成(Continuous Integration, CI)介绍持续集成的概念和原则解释持续集成对软件质量和开发效率的影响7.3 自动化回归测试和持续集成的实施介绍如何自动化回归测试和集成到持续集成流程中强调自动化测试在提高软件质量和开发效率中的价值第八章:风险管理在软件测试中的应用8.1 风险管理的基本概念解释风险管理的定义和重要性强调风险管理在软件测试中的作用8.2 风险识别和评估介绍如何识别和评估软件测试中的风险强调风险识别和评估对制定有效的测试策略的重要性8.3 风险应对和监控描述如何应对和监控软件测试中的风险强调持续监控和调整风险应对策略的必要性第九章:测试管理工具和测试自动化9.1 测试管理工具的概念和作用解释测试管理工具的概念和作用强调选择合适的测试管理工具的重要性9.2 测试自动化的概念和分类介绍测试自动化的概念和分类解释如何选择合适的测试自动化技术和工具9.3 测试自动化策略和实施描述如何制定测试自动化策略和实施计划强调测试自动化对提高软件测试效率和质量的作用第十章:软件测试的未来趋势和发展10.1 软件测试的趋势和挑战讨论当前软件测试的趋势和面临的挑战强调适应新技术和变化的重要性10.2 敏捷测试和DevOps介绍敏捷测试和DevOps的概念和原则解释敏捷测试和DevOps对软件测试的影响和改变10.3 和机器学习在软件测试中的应用探讨和机器学习在软件测试中的应用前景强调新兴技术对软件测试的发展和创新的作用重点和难点解析重点环节1:软件测试的原则和目标解析:理解和掌握软件测试的基本原则和目标对于进行有效的软件测试至关重要。
软件测试技术PPT课件
Selenium简介:Selenium是 一个用于Web应用程序的测 试工具,支持多种浏览器和 操作系统,能够自动化测试 Web应用程序的功能和性能。
自动化测试工具:Appium
Appium简介:Appium是一 个用于移动应用程序的测试 工具,支持iOS和Android平 台,能够自动化测试移动应
调和集成。
系统测试的目的是确保 软件系统符合需求规格 ,并能够在实际环境中
稳定运行。
系统测试通常采用黑盒 测试方法,关注整个系
统的功能和性能。
验收测试
验收测试是在软件开发完成后, 由客户或用户对软件进行验收和
确认的测试。
验收测试的目的是确保软件满足 客户需求,并能够在实际使用中
达到预期效果。
验收测试通常采用黑盒测试方法, 关注软件的整体功能和用户体验。
节。
缺陷的严重性和优先级评估
总结词
对缺陷的严重性和优先级进行评估是软件缺 陷管理中的关键步骤,它有助于确定修复缺 陷的优先级和顺序。
详细描述
根据缺陷对软件功能的影响程度,可以将缺 陷分为严重缺陷和非严重缺陷。对于严重缺 陷,需要优先修复,以避免对用户造成不良 影响。此外,还需要根据修复的紧迫性和重 要性对缺陷进行优先级评估。优先级高的缺 陷应优先得到修复。
兼容性测试
测试软件是否与不同的操作 系统、浏览器、数据库等兼 容,包括软硬件环境、不同 版本等方面的测试。
02 常见的软件测试技术
单元测试
单元测试是对软件中的最小可 测试单元进行检查和验证。
单元测试通常由开发人员编写 ,用于测试代码的正确性。
单元测试的目的是确保每个单 元的功能正常,并与其他单元 协调工作。
软件测试技术ppt课件
软件测试的方法和技术-课件PPT
WHILE循环结构
顺序结构 IF选择结构
UNTIL循环结构
CASE 多分支结构 选择结构
图3-8 控制流图的图形符号
图3-9(a)所示的是一个程序的流程图,
它可以映射成图(b)所示的控制流图。
1
2
3
6
4
7
8
5
1 1 (a)程序流程图 )
图
1
边
结点
3
-
区域
9
程
2
序
流
6
4
R2
程 图
7 R3 8
R1
和 对
7.测试覆盖准则
(1)Foster的ESTCA覆盖准则
前面所介绍的逻辑覆盖其出发点似乎 是合理的。所谓“覆盖”,就是想要做到 全面而无遗漏。但是,事实表明,它并不 能真的做到无遗漏。
K.A.Foster从测试工作实践的教训出 发,吸收了计算机硬件的测试原理,提出 了一种经验型的测试覆盖准则。
(2)Woodward等人的层次LCSAJ覆盖准则
5.多条件覆盖
多条件覆盖也称为条件组合覆盖,它的 含义是:设计足够的测试用例,使得每个 判定中条件的各种可能组合都至少出现一 次。显然满足多条件覆盖的测试用例是一 定满足判定覆盖、条件覆盖和条件判定组 合覆盖的。
6.修正条件判定覆盖
它要求满足两个条件:首先,每一个程
序模块的入口和出口点都要考虑至少被调 用一次,每个程序的判定到所有可能的结 果值要至少转换一次;其次,程序的判定 被分解为通过逻辑操作符(and、or)连接 的bool条件,每个条件对于判定的结果值 是独立的。
第 3 章 软件测试的方法和技术
3.1 软件测试方法概述 3.2 白 盒 测 试 3.3 黑 盒 测 试 3.4 测 试 用 例 设 计
软件测试 第3章静态测试技术
第3章静态测试技术1.静态测试技术概述1概念:1.1定义:是指不通过执行被测程序而对软件产品(包括工作产品)进行分析的测试活动测试对象:需求规约、分析和设计规约、代码街开发过程中的各种文档1.2目的:一般是对工作产品进行确认(例如设计规格说明是否正确实现了所有的系统需求),并对设计的质量进行验证1.3优点:静态测试的成本低,效率高,可以在开发早期发现软件中的缺陷和错误,是有效的测试技术。
2原则:2.1所有违背编码标准的因素都要进行评审,例如标识符如何命名,代码如何缩进2.2对代码的复杂度进行评审,代码要求易简不易繁,提高可读性,便于阅读,代码复杂度要降低2.3审查并删除不可用的代码、未被调用的过程和未使用的变量2.4报告所有类型的数据流异常常见的数据流异常变量在初始化前使用(未初始化就使用),未定义先使用被赋值的变量一直末被使用:变量是多余无意义变量在两次赋值之间末被使用:第一次赋值对程序而言是无意义参数不匹配:如果参数个数,类型,顺序不匹配,函数调用则失败可疑的类型转换:例如实型数据转为整型,小数会丢失,不为零的数据变为零,造成运算错误32.代码检查1.概念:主要检查代码与设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等2.代码检查类型:2.1桌面检查程序员在程序通过编译后,对自己编写的程序代码进行分析、检验,补充相关文档,目的是发现程序中的错误和缺陷2.2代码审查2.3代码走查3代码审查:3.1由若干程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析3.2审查步骤第一步:准备:事先把审查材料(如设计规格说明、控制流程图、程序文本以及相关的要求和规范)分发给小组成员,准备一份常见的错误和缺陷清单(称为检查表),小组成员充分阅读这些材料第二步:代码审查会:程序员介绍程序逻辑,审查小组成员提问、讨论、审查错误和缺陷是否存在3.3GB/T 15532-2008《计算机软件测试规范》附录A介绍了静态测试方法-代码审查3.3.1测试内容:检查代码和设计的一致性;检查代码执行标准的情况;检查代码逻辑表达的正确性;检查代码结构的合理性;检查代码的可读性3.3.2组织:由四人以上组成,分别为组长、资深程序员、程序编写者与专职测试人员3.3.3过程:准备阶段,程序阅读,会议审查,形成报告3.3.4代码审查单内容:寄存器使用,格式,入口和出口连接,程序语言的使用,存储器使用,测试与转移,性能,可维护性,逻辑,软件等4代码走查:4.1走查是一种非正式评审,被查工作产品的开发者向其他相关人员描述其产品并征求意见属于一种即兴的审查,如编写了某一代码,直接与其他编程人员讨论,一般准备一组测试用例,人工模拟计算机运行软件;虽然笨拙,但发现错误的概率很高,在发现错误的同时能找到解决的方法。
软件测试技术介绍说明课件共119页
2.2.1 编码规则检查-词法“陷阱”
• =容易和==混淆;
• &和|容易和&&和||混淆;
• 词法分析中的“贪心法”
– y = x/*p
/* p指向除数 */
– 会被编译器理解为/*p 为注释
/* p指向除数 */
• 字符与字符串
– C语言中的单引号和双引号含义不同,易错 用带来问题;
– ‘s’表示一个整数;
白盒测试技术
数据流覆盖
语句覆盖 分支覆盖 路径覆盖 错误处理路径
全定义使用路径 全使用路径 全定义路径 数据流异常状态图
2.1 静态测试技术
• 不执行程序代码,通过审查文档、代码的方式查 找软件中的缺陷。
– 76%以上错误; – 不需特别条件,容易开展; – 在发现了错误的同时也就定位错误,不需额外的工作定
2019/10/23
21
2.2.1 编码规则检查-语义“陷阱”
• 指针与数组; • 非数组的指针; • 作为参数的数组声明; • 空指针并非空字符串; • 边界计算与不对称边界; • 求值顺序; • 运算符&&、||和! • 整数溢出
2019/10/23
22
2.2.1 编码规则检查-典型规则举例
********************************************************/
void static_31 (void)
{
SINT_32 i=10 ;
while (i > -1)
{
if (i == 0)
{
break;
}
i = i - 1;
}
}
23
- 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的软件逻辑设计和编码方面的 错误,但软件代码中仍会有隐藏的故障无法通过静态测试 方法发现,还必须通过动态测试对程序进行深入分析。