断言
(基本内容摘自《面向对象系统的测试》)
断言是一种内嵌的测试机制,供开发者将测试语句设置在需要的地方,
一个可执行的断言包含三部分: 谓词表达式、动作和允许(ENABLE/DISABLE)
格式一般为: ASSERT(~)
断言的用途:
A)检查特定于实现的假设
B)检查在方法的入口必须为真的条件(前置条件)
C)检查在方法的出口必须为真的条件(后置条件)
D)检查在任何时候对于一个对象必须为真的条件(不变式)
一般认为断言应该是显示表达的,为开发者主动使用,这样就将断言使用限制在测试范围了,而它完全可以成为一种特殊的条件断点,用于调试中,由调试器统一安排
现在由开发者使用的断言,均为人为维护,关键是在编译中使用编译开关,将断言开启或关闭,而且很多情况下断言随着正式产品一起发布了,因为很多时候,关闭了断言会导致一些错误在运行中被发现而无法定位了, 这样做的情况使得断言维护变得困难,编写者常常会将一些自己写的断言的用途都忘记了(可以使用注释),但如果由系统统一管理显然就方便了
在此将断言分成显示断言和隐型断言两种
显示断言是由开发者自己嵌入的断言,但有系统自动统计,对于这些断言的注释,应当在文档中记载,而不仅仅是在程序中加注释语句(这点将在文档部分详细讨论)
隐型断言是指由调试器提供的断言,可以是嵌入式,也可以是断点方式的断言,定义这种断点的理由是前面写的断点的四个用途
从断点的四个用途中可以明显看出,后三种方式都有固定位置(全局也是一种固定位置),如此情况下,由调试器完成就很轻松了,而用户所要做的是描述断言(条件),由此调试器进行分析,并生成相应的调试文档,然后结合INT3和调试寄存器实现这些隐型断言
同样隐型断言也可以是内嵌方式,在硬件受限制的条件下,就能这样做,在编译的时候添加隐型断言(以ASSERT语句方式的断言),由此,也可得出这样一个结论,隐型断言也可以显示出现,只是这些断言不能让用户修改,但可以看见(修改也是可以的,只是调试器须跟踪记录用户的相关修改生成相应的文档)
总的讲就是将各种断言接受系统管理,而不是以简单的编译开关来完成管理,从视图角度考虑,断言整体也是一张调试图,可以从整体角度给予新的分析,在视图中进行分析
断言
(基本内容摘自《面向对象系统的测试》)
断言是一种内嵌的测试机制,供开发者将测试语句设置在需要的地方,
一个可执行的断言包含三部分: 谓词表达式、动作和允许(ENABLE/DISABLE)
格式一般为: ASSERT(~)
断言的用途:
A)检查特定于实现的假设
B)检查在方法的入口必须为真的条件(前置条件)
C)检查在方法的出口必须为真的条件(后置条件)
D)检查在任何时候对于一个对象必须为真的条件(不变式)
一般认为断言应该是显示表达的,为开发者主动使用,这样就将断言使用限制在测试范围了,而它完全可以成为一种特殊的条件断点,用于调试中,由调试器统一安排
现在由开发者使用的断言,均为人为维护,关键是在编译中使用编译开关,将断言开启或关闭,而且很多情况下断言随着正式产品一起发布了,因为很多时候,关闭了断言会导致一些错误在运行中被发现而无法定位了, 这样做的情况使得断言维护变得困难,编写者常常会将一些自己写的断言的用途都忘记了(可以使用注释),但如果由系统统一管理显然就方便了
在此将断言分成显示断言和隐型断言两种
显示断言是由开发者自己嵌入的断言,但有系统自动统计,对于这些断言的注释,应当在文档中记载,而不仅仅是在程序中加注释语句(这点将在文档部分详细讨论)
隐型断言是指由调试器提供的断言,可以是嵌入式,也可以是断点方式的断言,定义这种断点的理由是前面写的断点的四个用途
从断点的四个用途中可以明显看出,后三种方式都有固定位置(全局也是一种固定位置),如此情况下,由调试器完成就很轻松了,而用户所要做的是描述断言(条件),由此调试器进行分析,并生成相应的调试文档,然后结合INT3和调试寄存器实现这些隐型断言
同样隐型断言也可以是内嵌方式,在硬件受限制的条件下,就能这样做,在编译的时候添加隐型断言(以ASSERT语句方式的断言),由此,也可得出这样一个结论,隐型断言也可以显示出现,只是这些断言不能让用户修改,但可以看见(修改也是可以的,只是调试器须跟踪记录用户的相关修改生成相应的文档)
总的讲就是将各种断言接受系统管理,而不是以简单的编译开关来完成管理,从视图角度考虑,断言整体也是一张调试图,可以从整体角度给予新的分析,在视图中进行分析
断言
(基本内容摘自《面向对象系统的测试》)
断言是一种内嵌的测试机制,供开发者将测试语句设置在需要的地方,
一个可执行的断言包含三部分: 谓词表达式、动作和允许(ENABLE/DISABLE)
格式一般为: ASSERT(~)
断言的用途:
A)检查特定于实现的假设
B)检查在方法的入口必须为真的条件(前置条件)
C)检查在方法的出口必须为真的条件(后置条件)
D)检查在任何时候对于一个对象必须为真的条件(不变式)
一般认为断言应该是显示表达的,为开发者主动使用,这样就将断言使用限制在测试范围了,而它完全可以成为一种特殊的条件断点,用于调试中,由调试器统一安排
现在由开发者使用的断言,均为人为维护,关键是在编译中使用编译开关,将断言开启或关闭,而且很多情况下断言随着正式产品一起发布了,因为很多时候,关闭了断言会导致一些错误在运行中被发现而无法定位了, 这样做的情况使得断言维护变得困难,编写者常常会将一些自己写的断言的用途都忘记了(可以使用注释),但如果由系统统一管理显然就方便了
在此将断言分成显示断言和隐型断言两种
显示断言是由开发者自己嵌入的断言,但有系统自动统计,对于这些断言的注释,应当在文档中记载,而不仅仅是在程序中加注释语句(这点将在文档部分详细讨论)
隐型断言是指由调试器提供的断言,可以是嵌入式,也可以是断点方式的断言,定义这种断点的理由是前面写的断点的四个用途
从断点的四个用途中可以明显看出,后三种方式都有固定位置(全局也是一种固定位置),如此情况下,由调试器完成就很轻松了,而用户所要做的是描述断言(条件),由此调试器进行分析,并生成相应的调试文档,然后结合INT3和调试寄存器实现这些隐型断言
同样隐型断言也可以是内嵌方式,在硬件受限制的条件下,就能这样做,在编译的时候添加隐型断言(以ASSERT语句方式的断言),由此,也可得出这样一个结论,隐型断言也可以显示出现,只是这些断言不能让用户修改,但可以看见(修改也是可以的,只是调试器须跟踪记录用户的相关修改生成相应的文档)
总的讲就是将各种断言接受系统管理,而不是以简单的编译开关来完成管理,从视图角度考虑,断言整体也是一张调试图,可以从整体角度给予新的分析,在视图中进行分析
浙公网安备 33010602011771号