测试方法之白盒测试共44页文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运算优先级是否正确
存在分数或者浮点值之间的比较吗 如果有,精确问题会影响比较吗
• 每一个逻辑表达式都正确表达了吗 逻辑计算如期进行了吗 求值次序有疑问吗
• 逻辑表达式的操作是逻辑值吗
如果程序包含begin…end和do…while等语句组,是否 一一对应
程序、模板、子程序和循环能否终止 可能存在永远不停的循环吗 循环可能从不执行吗
为什么要进行静态白盒测试: 1.尽早的发现软件缺陷。 2.为黑盒测试员在接受软件测试时设计和应用测试用 例提供思路。
代码检查 静态结构分析 代码质量度量
• 数据引用错误 • 数据声明错误 • 计算错误 • 比较错误 • 控制流程错误 • 子程序参数错误 • 输入/输出错误 • 其他检查
是否引用了未初始化的变量 数组和字符串的下标是整数值吗 是否在应该使用常量的地方使用了变量 变量是否被赋予了不同类型的值 是否为引用的指针分配了内存
流图G的环形复杂性V(G)=E-N+2,E是流图中边的数 量,N是流图中节点的数量
流图G的复杂性V(G)=P+1,P是流图中判定节点的数 量
Байду номын сангаас
基本路径测试方法把覆盖的路径数压缩到一定限度内, 程序中的循环体最多只执行一次。
它是在程序控制流图的基础上,分析控制构造的环路 复杂性,导出基本可执行路径集合,设计测试用例的 方法。设计出的测试用例要保证在测试中,程序的每 一个可执行语句至少要执行一次。
白盒测试是把测试对象看做一个透明的盒子,它允许 测试人员利用程序内部逻辑结构及有关信息,设计或 选择测试用例,对程序所有逻辑路径进行测试。
通过不同点检查程序的状态,确定实际的状态是否与 预期的状态一致。
因此白盒测试又称为结构测试或者逻辑驱动测试
静态白盒测试是在不执行的条件下有条理地仔细审查 软件设计、体系结构和代码,从而找出软件缺陷的过 程。
程序的结构形式是白盒测试的主要依据。研究表明程 序员38%的时间花费在理解软件系统上,因为代码以 文本格式被写入多重文件中,这是很难阅读理解的, 需要其它一些东西来帮助人们阅读理解,如各种图表 等,而静态结构分析满足了这样的需求。
在静态结构分析中,测试者通过使用测试工具分析程 序源代码的系统结构、数据结构、内部控制逻辑等内 部结构,生成函数调用关系图、模块控制流图、内部 文件调用关系图、子程序表、宏和函数参数表等各类 图形图标,可以清晰地标识整个软件系统的组成结构, 使其便于阅读和理解,然后可以通过分析这些图标, 检查软件有没有存在缺陷或错误。
圈复杂性:McCabe的圈复杂性测度被用来量化程序 的可测试性和可理解性。
PC-Lint CodeWizard Logiscope Testbed QAC
动态白盒测试是指利用查看代码功能和实现方法得到 的信息来确定哪些要测试,哪些不要测试,如何开展 测试
动态白盒测试的另一个常用名称是结构测试,因为软 件测试员可以查看并使用代码的内部结构,从而设计 和执行测试
子程序接受的参数类型和大小与调用代码发送的匹配 吗
如果子程序有多个入口点,引用的参数是否与当前入 口点没有关联
常量是否当作参数传递,意外在子程序中改动
软件是否严格遵守外部设备读写数据的专用格式
对于文件或者外部设备不存在或者未准备好的错误情 况有处理吗
软件是否处理外部设备未连接、不可用或者读写过程 中存储空间占满等情况
有四种常用度量方法:
代码行:用程序中的代码行的多少来表示程序大小和 复杂性。
Halstead软件科学法:计算机程序被看作是符合的集 合,符号主要分为运算符和运算元。
结构度量:结构度量是将产品或系统中模块的交互量 化的方式。最常用的设计结构度量是扇入和扇出。扇入: 调用给定模块的模块数;扇出:给定模块所调用的模块数。
则需要改为一系列只有单个条件的嵌套的判断
程序的环形(圈)复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至少 执行一次所必需的测试用例数目的上界。
从控制流图来看,一条独立路径是从入口到出口至少 包含有一条在其它独立路径中从未有过的边的路径。
流图G的环形复杂性V(G)=流图中区域的数量
所有变量都赋予正确的长度和类型了吗 变量是否在声明的同时进行了初始化 是否存在声明过、但从未引用或者只引用过一次的变
量 在特定的模块中所有变量都显示声明了吗
计算中是否使用了不同数据类型的变量 计算中是否了解和考虑到编译器对类型或长度不一致
的变量的转换规则 在数值计算过程中是否可能出现溢出 除数/模是否可能为零 变量的值是否超过有意义的范围 对于包含多个操作数的表达式,求值的次序是否混乱,
其中函数调用关系图通过应用程序中各函数之间的调 用关系展示了系统的结构。通过查看函数调用关系图, 可以检查函数之间的调用关系是否符合要求,是否存 在递归调用,函数的调用曾是是否过深,有没有存在 独立的没有被调用的函数。从而可以发现系统是否存 在结构缺陷,发现哪些函数是重要的,哪些是次要的, 需要使用什么级别的覆盖要求
例如,在图示的控制流图中,一组独立的路径是 path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11
模块控制流图是与程序流程图相类似的由许多节点和 连接节点的边组成的一种图形,其中一个节点代表一 条语句或数条语句,边代表节点间控制流向,它显示 了一个函数的内部逻辑结构。模块控制流图可以直观 地反映出一个函数的内部逻辑结构,通过检查这些模 块控制流图,能够很快发现软件的错误与缺陷
代码质量度量是指对源代码进行分析后,通过量化的数据 来评估代码质量的过程。
控制流图 环形复杂度
符号○为控制流图的一个结点,表示一个或多个无分 支的语句。箭头为边,表示控制流的方向。
在选择或多分支结构中,分支的汇聚处应有一个汇聚 结点。
边和结点圈定的部分叫做区域,当对区域计数时,图 形外的区域也应记为一个区域。
如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,
存在分数或者浮点值之间的比较吗 如果有,精确问题会影响比较吗
• 每一个逻辑表达式都正确表达了吗 逻辑计算如期进行了吗 求值次序有疑问吗
• 逻辑表达式的操作是逻辑值吗
如果程序包含begin…end和do…while等语句组,是否 一一对应
程序、模板、子程序和循环能否终止 可能存在永远不停的循环吗 循环可能从不执行吗
为什么要进行静态白盒测试: 1.尽早的发现软件缺陷。 2.为黑盒测试员在接受软件测试时设计和应用测试用 例提供思路。
代码检查 静态结构分析 代码质量度量
• 数据引用错误 • 数据声明错误 • 计算错误 • 比较错误 • 控制流程错误 • 子程序参数错误 • 输入/输出错误 • 其他检查
是否引用了未初始化的变量 数组和字符串的下标是整数值吗 是否在应该使用常量的地方使用了变量 变量是否被赋予了不同类型的值 是否为引用的指针分配了内存
流图G的环形复杂性V(G)=E-N+2,E是流图中边的数 量,N是流图中节点的数量
流图G的复杂性V(G)=P+1,P是流图中判定节点的数 量
Байду номын сангаас
基本路径测试方法把覆盖的路径数压缩到一定限度内, 程序中的循环体最多只执行一次。
它是在程序控制流图的基础上,分析控制构造的环路 复杂性,导出基本可执行路径集合,设计测试用例的 方法。设计出的测试用例要保证在测试中,程序的每 一个可执行语句至少要执行一次。
白盒测试是把测试对象看做一个透明的盒子,它允许 测试人员利用程序内部逻辑结构及有关信息,设计或 选择测试用例,对程序所有逻辑路径进行测试。
通过不同点检查程序的状态,确定实际的状态是否与 预期的状态一致。
因此白盒测试又称为结构测试或者逻辑驱动测试
静态白盒测试是在不执行的条件下有条理地仔细审查 软件设计、体系结构和代码,从而找出软件缺陷的过 程。
程序的结构形式是白盒测试的主要依据。研究表明程 序员38%的时间花费在理解软件系统上,因为代码以 文本格式被写入多重文件中,这是很难阅读理解的, 需要其它一些东西来帮助人们阅读理解,如各种图表 等,而静态结构分析满足了这样的需求。
在静态结构分析中,测试者通过使用测试工具分析程 序源代码的系统结构、数据结构、内部控制逻辑等内 部结构,生成函数调用关系图、模块控制流图、内部 文件调用关系图、子程序表、宏和函数参数表等各类 图形图标,可以清晰地标识整个软件系统的组成结构, 使其便于阅读和理解,然后可以通过分析这些图标, 检查软件有没有存在缺陷或错误。
圈复杂性:McCabe的圈复杂性测度被用来量化程序 的可测试性和可理解性。
PC-Lint CodeWizard Logiscope Testbed QAC
动态白盒测试是指利用查看代码功能和实现方法得到 的信息来确定哪些要测试,哪些不要测试,如何开展 测试
动态白盒测试的另一个常用名称是结构测试,因为软 件测试员可以查看并使用代码的内部结构,从而设计 和执行测试
子程序接受的参数类型和大小与调用代码发送的匹配 吗
如果子程序有多个入口点,引用的参数是否与当前入 口点没有关联
常量是否当作参数传递,意外在子程序中改动
软件是否严格遵守外部设备读写数据的专用格式
对于文件或者外部设备不存在或者未准备好的错误情 况有处理吗
软件是否处理外部设备未连接、不可用或者读写过程 中存储空间占满等情况
有四种常用度量方法:
代码行:用程序中的代码行的多少来表示程序大小和 复杂性。
Halstead软件科学法:计算机程序被看作是符合的集 合,符号主要分为运算符和运算元。
结构度量:结构度量是将产品或系统中模块的交互量 化的方式。最常用的设计结构度量是扇入和扇出。扇入: 调用给定模块的模块数;扇出:给定模块所调用的模块数。
则需要改为一系列只有单个条件的嵌套的判断
程序的环形(圈)复杂性给出了程序基本路径集中的 独立路径条数,这是确保程序中每个可执行语句至少 执行一次所必需的测试用例数目的上界。
从控制流图来看,一条独立路径是从入口到出口至少 包含有一条在其它独立路径中从未有过的边的路径。
流图G的环形复杂性V(G)=流图中区域的数量
所有变量都赋予正确的长度和类型了吗 变量是否在声明的同时进行了初始化 是否存在声明过、但从未引用或者只引用过一次的变
量 在特定的模块中所有变量都显示声明了吗
计算中是否使用了不同数据类型的变量 计算中是否了解和考虑到编译器对类型或长度不一致
的变量的转换规则 在数值计算过程中是否可能出现溢出 除数/模是否可能为零 变量的值是否超过有意义的范围 对于包含多个操作数的表达式,求值的次序是否混乱,
其中函数调用关系图通过应用程序中各函数之间的调 用关系展示了系统的结构。通过查看函数调用关系图, 可以检查函数之间的调用关系是否符合要求,是否存 在递归调用,函数的调用曾是是否过深,有没有存在 独立的没有被调用的函数。从而可以发现系统是否存 在结构缺陷,发现哪些函数是重要的,哪些是次要的, 需要使用什么级别的覆盖要求
例如,在图示的控制流图中,一组独立的路径是 path1:1 - 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11
模块控制流图是与程序流程图相类似的由许多节点和 连接节点的边组成的一种图形,其中一个节点代表一 条语句或数条语句,边代表节点间控制流向,它显示 了一个函数的内部逻辑结构。模块控制流图可以直观 地反映出一个函数的内部逻辑结构,通过检查这些模 块控制流图,能够很快发现软件的错误与缺陷
代码质量度量是指对源代码进行分析后,通过量化的数据 来评估代码质量的过程。
控制流图 环形复杂度
符号○为控制流图的一个结点,表示一个或多个无分 支的语句。箭头为边,表示控制流的方向。
在选择或多分支结构中,分支的汇聚处应有一个汇聚 结点。
边和结点圈定的部分叫做区域,当对区域计数时,图 形外的区域也应记为一个区域。
如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,