• 1.37 MB
  • 2022-04-22 13:39:54 发布

GBT17548-2008信息技术POSIX标准符合性的测试方法规范和测试方法实现的要求和指南.pdf

  • 52页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'ICS35.060L74囝固中华人民共和国国家标准GB/T17548--2008/ISO/IEC13210:1999信息技术POSIX标准符合性的测试方法规范和测试方法实现的要求和指南Informationtechnology--RequirementsandguidelinesfortestmethodsspecificationandtestmethodimplementationformeasuringconformancetoPOSIXstandards2008—07-18发布(1SO/IEC13210:l999,IDT)2008—12-01实施丰瞀粥紫瓣譬雠瞥鐾发布中国国家标准化管理委员会铍1” 前言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··1概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一1.1范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·1.2规范性引用文件⋯⋯⋯⋯⋯⋯-1.3符合性准则⋯⋯⋯⋯⋯⋯⋯⋯·1.4IuT符合性评估⋯⋯⋯⋯⋯⋯·2术语和一般要求⋯⋯⋯⋯⋯⋯⋯·2.1约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·2.2术语和定义⋯⋯⋯⋯⋯⋯⋯⋯·3断言定义、类型、语法和结构⋯⋯·3.1引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯-3.2类属断言结构⋯⋯⋯⋯⋯⋯⋯·3.3断言类型和结构⋯⋯⋯⋯⋯⋯一3.4宏⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·3.5总结⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯·4测试结果代码⋯⋯·⋯⋯⋯⋯⋯⋯·4.1引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一4.2测试方法实现⋯⋯⋯⋯⋯⋯⋯⋯4.3测试方法规范⋯⋯⋯⋯⋯⋯⋯⋯5测试报告⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5.1测试报告⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5.2符合性文档(cD)审核⋯⋯⋯⋯6轮廓⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6.1定义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6.2符合轮廓⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯6.3符合性评估⋯⋯⋯⋯⋯⋯⋯⋯⋯7用于测试级别与复杂性级别的导则7.1引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7.2测试级别⋯·⋯-⋯⋯⋯⋯⋯·⋯⋯7.3复杂性级别⋯··⋯⋯⋯⋯⋯⋯⋯·7.4结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8断言编写指南⋯⋯⋯⋯⋯⋯⋯⋯⋯8.】引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8.2识别前提条件⋯⋯⋯⋯⋯⋯⋯⋯8.3编写中的是符号名字。它们用于表示在写断言时应提供的具体细节。适用时,应提供由这些符号名字要求的细节。肖不适j月时.应不适用它们。一个测试方法规范应提供基本标准的完整覆盖。测试方法规范是为测试方法实现的开发者而编写的.而且当正确应用时.提供授权的方式来指H{明确地符合基本标准。产生的断言应是完整的、可理解的和正确的。测试方法应按照同样的部分、条款和子句相对啦POSIX标准来组织。断言应仅为r符合性要求而编写。为声明所编写的断言不应仅适用于一个实现的使用而不适用于实现本身。在声明中使用明确的术语的声明,对程序员来讲仅是一个警告或一个实现建议。3.2类属断言结构图2表示了类属断言结构。除r一般断言和一般文档断言要求‘For’结构和(Test—Text)结构外,对『1Generic—Assertion)的唯一要求的文本是√I"est—Text>。For(Elemem1)⋯,Element—n>:If{Applhable_Standard、lhP“1f(()pllo[1、thenIflTestSupport、then(,gelup:、S¨up—Rtquiremenls、)I"cbt:71"eY,lIeXl、(IR:,Testing—Requirements、*(Nolo.、NolPs、)。Else、NoTe¨一Support、fflse(No一()ption、Else:N¨ApplicationStandard、图2类属断言结构本结构为本章定义的每个断吉类型提供丁基础。对于每个类属断占结构的规范应根据应用而确定。、Test~,rext)适用于某个类属断言。允许测试方法规范在结构的具体术语的标识符表示上具有一定的灵活性;但是,同样的表示应保持一致。例如.else可以表示为else、El,SE、E1.SE:,Else等.只要表示是一致的即可。断占是从上往下执行的,如果前提条件没有被SUT或IUT支持.那么断言结果将由柏应的‘Else’执行。U GB/T17548--2008/ISO/IEC13210119993.2.1For如果一个贯穿多种元素的特性或行为是相似的,那么采用‘For’结构以一种精确和准确的方式对多个元素规定同样的要求。这种结构常常在编写一般断言时使用。‘For’也可以作为跳转结构使用.这类似于编程语言中使用的方式。它可以列出函数集或常量集作为断言体中引用参数的替换。3.2.2IfthenElse‘If(precondition),then⋯Else(outcome)’结构用于规定测试某个断言所必需的要求。在断言结构中用‘If(precondition)’子句表达。当要求不满足时。由‘Else(outcome)’子句表达。当SUT支持前提条件时,‘if’子句为真(TRUE)。当SUT不支持前提条件时.‘lf’子句为假(FALSE),相应的‘Else’子句决定了报告的结果。当没有提供必需的前提条件时,这种结构提供了一种简单的方法为断言赋值。3.2.3适用的标准(Applicable—Standard)表示这个基本标准适用于测试这个断言。(Applicable—Standard)可以是由断言衍生出的单个基奉标准。或是断言应用的多个基本标准。这个参数可以逻辑方式表达。3.2.4选项(Option)代表4i必在所有符合性实现中出现的基本标准定义的任何行为或特性。此参数可以逻辑方式表示。3.2.5测试支持(Test—supportj表示那些被测试的标准没有规定、或规定了但没有要求,被测系统(SUT)在执行断言测试中又需要的工具,为了彻底地测试一个实现,在一个被测系统中,测试方法规范可能需要非相关的选项特性来支持,3.2.6设置要求(Setup—Requirements)是测试计划或测试人员为执行断言测试必须履行来建立适当环境的步骤。(Setup—Requirements)町能有一个或多个步骤。它是创建适当测试环境的说明。如果某个设置要求步骤没有成功,那么符合胜测试方法应报告那个步骤失败了.失败的原因。如果任何设置步骤都没有成功.报告的测试结果代码应是uNREsOLVED。3.2.7测试文本(Test1’ext)规定r要执行的测试。通常采用(action)7result>格式。当一个断言要求多重测试时,可以列表或表格的形式定义最少的被测项月。3.2.8测试要求(Testing—Req⋯ren、ents)为一个断言规定了要求的最少测试。最典型的情况就是,当一个断言允许多个方式测试。检测要求宜用于在同样的测试环境下.规定文件类型必需的最小集。,Setup—Re斗1iremcnts、可能依赖于断言的语境。因此对于一个单一的断言有可能有多个检测要求.每个检测要求适用于一个具体的断言语境。当一个断言为了测试彻底,要求多次测试时,以列或表的方式提供测试参数以代替重复的文字。3.2.9注释(Notes}表示让那些使用测试方法规范的人了解的附加信,自、。3.3断言类型和结构根据基本标准的文字.每个断言结构应有对应于五个断言类型的可能的格式之一。这些断言类型是:——基础;一般;——参考; GB/T17548--2008/1S0/IEC13210:1999——文档;——一般文档。每个断言结构都是基于图2所示的类属断言结构。3.3.1断言标识符每个断言都有一个断言标识符,其在断言结构中用符号(Assertion—Identifier)、(D—Assertion—Identifier)、(GA—Assertion—Identifier)、(GD—Assertion—Identifier)、(R—Assertion—Identifier)指出。本标准给出如下的编写断言标识符的指南:如果使用丁其他惯例.它们应在符合本标准的测试方法规范中规定:[((specification—List>)](Assertion—Type)(portable—identifier—chars)此处.。specification—list)是其他断言标识符应用的标准和规范的列表;作为可选项时,使用圆括号表示。(Assertion—Type)指出了断言的类型,它是下面规定的类型或测试方法规范规定的其他类型之一。(portable—identifier—chars)选自可移植标识字符集,其给出了断言的标识符或名字。注意在~个(Assertion—Identifier)中不允许空格,唯一的空间只能以逗号的形式在中出现。下面的字符集是为(Assertion—Type)保留的。而且仅能作为指出断言类型使用;测试方法规范应定义所应用的断言标识符惯例。见图3。(Assertion—Type)断言类型断言标识符符号D文档断言<13_Assertion—Identltier>GA一一般断言(GAAsserlion—Identltier)(|D一般文档断言“;D-Asser[ion—Identifier)R引用断言-R侧AerIlOn—Identifier)(NUI。L)基础断言‘AsserrionIdentlfier)图3断言类型符合推荐指南的断言标识符实例:23GA一17GA——stdC——proto——decl17.35R—erofs下面的子句为每个断言类型规定了布局。第四章提供了使用POSlX标准文本为每个断言类型编写断言的实例。3.3.2基础断言符号(Basic—Assertion)代表关于单一元素的~个或多个标准要求。表示以相似的方式影响多个元素的标准要求。每个一般断言导致一个或多个断言。一般断言的格式应符合图5的断古结构。图2所表示的‘For’结构对每个一般断言是必需的.GAAsserlionidentifier是唯一的。这肚标识符在前缀之后是数直·可12 GB/T17548--2008/IS0/1EC13210:1999以包含小数点和小数部分。和同类标识符相关的断言,相对其他已编号的断言·按照数字的顺序排列。非数值的断言标识符可按照任何顺序排列,包括断言和数值断言标识符之间的布置。数值断言标识符对测试断言来讲,不应意味着某种特殊的顺序。3.3.5文档断言当基本标准明确要求对某些特定属性要进行记录时。文档断言是测试方法规范中所必要的。标准可以要求某个销售商的符合性文档指定文档断言,以便文档的组织能够类似标准。可以在较高层次的标题之下出现信息.或者用标准的一章节、条款或子句,目的在于覆盖贯穿标准的多个章节、条款和子句。每个文档断言应陈述文档应归属的章节、条款或子句。当断言依赖于符合性文档,其采用支持或不支持的声明机制时,这个断言应使用符号{CD一*),此处‘*’是为已扩展的。符号{CD一*}建议在表中规定选项与每个符号的关联。这个文档的类型为处理多种选项提供了合理的方法。文档断言用于标识符合性文档要求。文档断言的编写应符合图8所示断言结构格式。i坦Assertion—Identifier>EGenericAssertion>图8文档断言结构POSIX标准通常要求在符合性文档中对特定属性进行记录。当要求时,这个文档作为POSIX符合性文档(PCD)引用。在编写PCD时,基本标准的所有文档要求都要满足。如果存在一个测试方法规范,那么PCD应包含文档断言所要求的所有稳当。PCD中提供的信息应直接可以溯源到基本标准的要求。3.3.5.1文档断言的断言标识符对每个元素,用于(Documentation—Assertion)的断言标识符是唯一的。这些标识符在前缀之后是数值,可以包含小数点和小数部分。和同类标识符相关的断占,相对其他已编号的断言,按照数字的顺序排列。非数值的断言标识符可按照任何顺序排列,包括断言和数值断言标识符之间的布置。数值断言标识符对测试断言来讲,不应意味着某种特殊的顺序。3.3.6一般文档断言一般文档断言以类似的方式影响多个元素。每个一般文档断言为每个适用的元素产生一个或多个文档断言。从一般断言衍生的每个断言包含r所衍生的一般文档断言的一个参考。一般文档断言的编写应符合图9所示结构。圈2所示的‘For’结构对每个~般断言文档是所要求的。(GDAssertionIdentifier>fGeneric_assertion、图9一般文档断言结构由一般文档断言列出的或隐含的每个元素.应使用图10所示结构为每个元素产生文档断言。‘See:’为相应的一般文档断言提供了一个参考。(AssertionIdentitier、7Generic—Asserlion、See”GI)AssertkmIdenti[ier;图10衍生于一般文档断言的文档断言3.3.6.1用于一般文挡断言的断言标识符在每个测试方法规范中,断言标识符(GD—Assertion~Identifier?是唯一的。13 GB/T17548--2008/ISO/IEC13210:1999建议((jeneral—Documentation—Assertion)断言标识符按照下述方式给出具有意义的名字:GD—stdC—proto——用于C标准原型声明的一般文档断言GD—commC—result——用于通用C结果声明的一般文档断言3.3.7不使用的断言标识符当测试方法规范的研发者想知JRt_,前使用的,但是现在的草案或规范都不使用的断言标识符时,这个断言标识符应在每个元素的末尾列出,或按照图11所示方式用单词Unused表示出。Test—Support(No—Test—Support)TeslPASS.UNTESTED图12实体对可允许的测试结果代码 GB/T17548--2008/IS0/IEC13210:1999当一个断言集具有相瓦排除的前提条件,对一个IUT的PASS的最终测试结果代码可能发生。我们建议将相互排除断言作为一个提示进行标注,最终测试结果代码可以是PASS。对标识相互排除断言的表示法的导则为:PASSE(Assertionldentifier>,⋯(AssertionIdentifier)]见图16和9.1.2断言0卜()2和l315的示例。5测试报告5.1测试报告对IuT的测试方法执行的结果在测试报告中进行总结。测试报告应包含下列信息:要符合的标准名称和版本;使用的测试方法实现的名称和版本号;——测试方法实现要符合的测试方法规范;——测试信息系统的名称、型号和配置,以硬根据实现者的标识模式所陈述的实现的名称、版本和发行水平;CD审核的名称和版本(如果标准要求一个CD);——1UT测试的日期。此外,下列信息应可用:——每个断言测试的测试结果;——对测试方法所作的任何修改的描述;如何复制测试结果的信息。如果最终测试结果代码产生与测试方法实现,这个测试方法实现与测试方法标准对应的断言所产生的符合性测试结果代码相匹配,那么这个IuT就符合这个标准或轮廓。5.2符合性文档(CD)审核当文档断言要求细节,应提供详细的资料。可以参考系统文档来替换提供这些细节.但是这些参考文件必须是合适的。一些标准要求来自销售商的CD结构要与相关的基本标准相类似。允许和要求的CD信息应出现在较高层次的标题之下,或以包岔标准内容的部分、条款或子条款的形式出现,目的在于覆盖多个部分、条款和子条款。如果基本标准没有具体规定CD的结构要与标准相匹配,那么可以允许其他格式;然而,强烈建议尽可能地与标准的结构相一致。6轮廓6.1定义轮廓明确地描述了一套标准集中各标准之间的关系.这些标准在~起使用并可以为所使用的基本标准规定特殊的细节。为了充分利用已经定义好的功能和接口.可以参考其他国际标准轮廓(ISP),并因此限制其参考摹本标准的方向。因此,一个轮廓包括:——规定其直用的基本标准并限制r特定行为和特性的实现,以最大化应用的可移植性;——不应规定任何有可能与参考的基本标准引起冲突或不符合的要求;引用的基本标准中规定的变量町以要求一个较大的最大一最小值或一个较小的最大最小值;——在基本标准之间要求一定的交瓦作用; GB/T17548--2008/ISO/IEC13210:1999——可以包含符合性要求,其要比所参考的基本标准更具体,范围有一定的限制。6.2符合轮廓轮廓通过引用基本标准作为规范的一部分。此外,轮廓可能规定基本标准中的实现所要求的特性和行为,并对基本标准中规定的条款很少限制界限和大小。轮廓可以规定其引入的基本标准之间的关系,例如基本标准实现间的互操作性。因此,对于一个符合轮廓的实现来讲.其应符合轮廓所合并的所有基本要求以及轮廓本身所规定的所有要求。符合轮廓的要求在轮廓本身中规定。测试方法尽可能地与轮廓分离,应用于度量符合这个轮廓。6.2.1轮廓测试方法轮廓测试方法为轮廓中所包含的每个基本标准的测试方法的合并。6.2.2基本标准测试方法如果没有标准或认可的方式来测量符合特殊的基本标准,轮廓测试方法应规定基本标准没有应用到符合这个轮廓的测试。应注意已存在一些认可的测试符合标准的方法,其没有测试方法规范;例如,有些国家成员体已有验证c标准实现的符合性的认证程序。但是没有c标准的测试方法规范。轮廓测试方法应规定测试符合基本标准的标准或已认可的方式。如果一个用于基本标准的测试方法遵循了标准中规定的测试方法的要求,那么轮廓测试方法也应为这个基本标准规定修改的符合性矩阵。当测试方法用于测量符合某个基本标准。应用应与轮廓的要求保持一致。例如,测试软件的配置应按照轮廓中的规定的使用限制.而不是基本标准中规定的,特别是在它们有不同的情况之下。否则应使用轮廓中要求的基本标准规定的可选项配置测试软件。6.2.3具体轮廓的测试方法6.3符合性评估此处提出了评估符合轮廓的两个模型。它们是从1.4的单个基本标准模型衍生出来的,并为认可机构执行轮廓符合性评估提供了指南。两个模型采用了已有的测试方法标准。第一个使用了多个基本测试方法,第二个使用了一个轮廓测试方法标准。二者在概念上保证了实质性的一致性。关键问题是要注意到这些模型的基本目的是要解释测试方法标准所包含的测试结果代码与在进行符合性评估时。从CTS和CTP获得的测试结果代码之间的关系。6.3.1使用多种基本测试方法标准图13中的模型刻画了有几个基本标准构成的轮廓与它们相关的测试方法标准。由几个基本标准测试方法实现构成的轮廓测试方法实现并与用于符合性测试的现存测试方法标准相一致。测试方法标准标识符合性测试结果代码。然后按照每个轮廓的要求进行修改。这样产生了轮廓符合性测试结果代码的单一标识集。当执行轮廓测试方法实现时,要解决所有中间测试结果代码.以产生最终的测试结果代码。如果符合测试结果代码的轮廓与最终测试结果代码匹配,那么可以判断这个实现符合轮廓。 GB/T17548--2008/1SO/IEC13210:1999图13多重基本标准轮廓6.3.2使用轮廓测试方法标准图14中的模型与图13中模型类似,尽管在这个模型中,多重轮廓标准(从每个相关基本标准中衍生出的)用它们相关的轮廓测试方法标准来描述(从基本测试方法中衍生出来的)。轮廓符合性测试结果代码由每个轮廓测试方法标准来标识。在这个实例中的轮廓CTS是轮廓测试方法标准要求配置的实际的一个或多个基本标准CTSs(例如,一些选项是必要的)。如果轮廓符合性测试结果代码与最终的测试结果代码相匹配,那么可以判断这个实现符合轮廓。 GB/T17548--2008/ISO/IEC13210:1999图14多重轮廓的轮廓标准7用于测试级别与复杂性级别的导则本章包含了一些信息类材料,对后面的内容起到指导的作用。7.1引言原则上讲,符合性测试的目标就是要确定被测实现是否符合有关标准中的规定。实际存在的限制因素使人们不可能进行穷举测试,许多经济方面的考虑还可能对严格的测试有更大的限制。在测试方法的设计和开发过程中,这些限制的存在使得元素复杂性级别将决定满足符合性要求的测试的级别。因此.本标准按照给出的符合性范围,划分为j种主要的测试级别和二种主要的元素复杂性测试级别。三种主要的测试级别是:一一穷举测试;20 GB/T17548--2008/ISO/1EC13210:1999——详细测试;——鉴别测试。三种主要的元素复杂性级别是:——简单元素;——中等元素;——复杂元素。7.2测试级别7.2.1穷举测试穷举测试寻求验证一个元素的各个方面的行为.包括所有的置换情况。例如:对某个给定的用户命令的穷举测试,应当要求测试该命令的不带选项的情况、带每种选项的情况、带每对选项的情况等等.直到对所有的可选择项的各种置换情况都测试完为止。各种命令选项和置换情况很快会达到一个巨大的、在现实的时间内难以完成测试数目。举一个例子.在GB/T14246,11993中约有37个不同的出错情况。一种差错的发生往往可能影响对另一个差错的正确检测。37个差错的穷举测试不仅要求对每一个差错进行一次测试.而且要对这些差错的每个可能的置换情况都测试一次。因此,不是测37次,而是要测几十亿(2的37次幂)次。因此,穷举测试通常是不可行的。7.2.2详细测试详细测试是穷举测试的一种替代方法。详细测试力求验证一个元素的各个方面的行为,但并不测试所有的置换情况。例如,对某个给定的命令进行详细测试,首先应测试该命令不带选择项情况,然后一个个地测试每种带选项的情况,也可以测试可能的选项组合。前面假设的例子有37个出错情况,详细测试可能需要进行38次测试,这是一个可操作的数目。详细测试是一种可行的解决方案。在对大量的元素逐个进行测试的过程中.可以同时测试子元素的某些组合。在这个讨论中要考虑到由每个软件元素的规约导出的断言的数目。详细测试的目的是要测试在孤立的情况下各个方面的功能,因而比穷举测试要可行得多。但当一个元素的各方面功能的数量很大时,详细测试也是不大可行的。因而定义了第三级的测试。7.2.3鉴别测试鉴别测试力求验证被测元素的一些特色特性。它包括对该元素进行某种粗略的检查,以最小命令语法调用该元素,并验证它的最小功能。例如.对某个c语言编译程序的鉴别测试会将这个c编译程序与系统中的另一种语言的编译程序区别开来.但不必与本系统中的或者另一系统中的其他C编译程序区别。鉴别测试不要求验证c编译程序手册中规定的所有的语法和功能。对某个c编译程序的适当的鉴别测试,应当是验证建立C编译程序的特色特征所必须的最小程序结构。7.3复杂性级别7.3.1简单元素简单元素是在对该元素的描述中已完全定义r的元素。简单元素只有几个要测试的断言,而且其功能与POSIX标准中定义的其他元素无关。简单元素的例子包括在POSIX.2甲规定的cat实用程序和在GB/T14246.1—1993中规定的close()函数。对简单元素应进行详细测试。7.3.2中等元素中等元素是具有中等数目的断言的元素,并可依赖POSIX标准中定义的其他元素的功能。中等元素的例子如POSIX.2中规定的grep和sed实用程序.这些程序除支持正则表达式之外还支持其固有的功能。详细测试应当是中等元素的目标,但有些情况下可能是不町实现的。21 GB/T17548--2008/ISO/IEC13210:19997.3.3复杂元素复杂元素是那些实现某种语言、依赖中等元素的功能或对硬件有影响的元素。详细测试一般需要进行数量很多的断言测试。复杂元素的例子如POSIX.2中规定的sh和awk实用程序,它们实现正则表达式和某种语言。对复杂元素,详细测试只能用于测试该元素的某些特殊方面。7.4结论每个元素的功能是根据测试级别和元素复杂性级别的定义进行分析和评价的。由于选项、事件和事件计时的可能组合数相当大,因而通常不能进行穷举测试。‘根据详细测试定义的非正则性,测试的详细程度应因CTS的不同而异,在一个PCTS里,断言不同,测试的详细程度也不同。CTS实施者必须对此做出选择。精确地定义推荐测试的级别以及取消这种自由度不属于本标准的范围。8断言编写指南8.1引言本章仅包含信息性材料。本章为编写测试方法规范的断言提供了指南。本标准的使用者也可以采用其他方法以满足本标准的要求。编写断言时有三个基本步骤:——识别要求和其各自的断言类型;——为每个要求识别所有的前提条件;——编写断言文本。8.1.1识别符合性要求符合性要求就是那些要求符合的。在句子中必须是劈磅的,它们必须规定或明确符合性实现的具体要求。符合性要求不是模糊的,不应造成一个实现的质量或性能属性与另外一个不同。测试做得不错和测试做的正确是完全不同的。前者表明了实现的质量.虽然很重要.但是在符合性测试的范围之外。这是留给系统开发者来确定他们的系统对一个给定的实现是否执行的好。符合性测试所关心的仅是所要求的实现的功能或行为是正确的。在识别符合性要求时.下列的步骤非常有用:——核查标准的定义和术语部分,以识别用于定于符合性要求的术语。特别要注意存在应(shaH)、可以(may)、宜(should)、能(can)、定义的实现(implemengatJon—de[ined)、未定义(un—delined)和来魍定(unspeci[ied)的定义。在这些术语中,应(shaH)常用于POSIX和其他国际和成员体国家标准中,意味着一个要求。可以(may)、宜(should)和艟(can)的使用表示明确性相对小一些。此外,检查标准符合性部分所包含的相关材料。这些部分通常涉及到对标准的所有符合性要求。——显著标明那些没有使用明确定义的术语,以陈述的方式出现的代表同一意思的术语。——检查陈述中包含的作为明确要求候选的那些术语以决定那些是,那些不是。始终要记住,符合性要求是那些符合标准的要求。检查标准中涉及到符合性要求的相关基本原理。要记住这些基本原理仅是信息提示,甚至有可能是错的。在标准的基准要求以及可选特性和行为中可以找到符合性要求。为此,要注意可以(may)的使用,将其与具有应(shall)要求的实现中的可选项区别开,当可以(may)选项支持时。例如,对结果的声明实现可以做A或做B。不是本质上为实现建立任何要求。这个声明允许要么A或B发生,但是可以不要求两个例子曾经是真(TRUE)。这个实现可以做一个,两个,两者都不,或者甚至是其他(c)。然而,对结果的声明:实现要么做A,要么做B。如果A发生了,那么A1应⋯⋯,2 GB/T17548--2008/ISO/IEC13210:1999构成了当A发生时实现的符合性要求。另外两个容易混淆的术语是unspecified和unde[ined,乍看,它们可能意味着同一个意思。其实它们不同。在PASC标准中,unspecified源于正确程序结构或正确数据的行为,undehned是指源于错误的程序结构或错误数据。unspecified的目的在于允许标准编写者为正确的程序结构考虑不明确的行为。同样,undefined目的在于允许一定的错误条件发生,要求不产生诊断信息。在这两个情况下,两者都不会为一个测试断言产生符合性要求.但是可以产生文档要求(见3.3.5文档断言)。定义这些术语由标准编写者来做。并且要让断言编写者明白它们的用法。同样,声明意味着最终确定的术语的使用应将可适用性作为明确的要求来检查。自身所要求的或与其他符合性要求相联的符合性要求要对应某个断言。当标准在陈述中使用了术语而不是‘位”(shall),其可能符合要求,断言编写者必须要慎重决定产生的声明是否是标准的要求。“可以”(may)这个词的使用就是一个例子。包含“可以”(may)这个词的某些声明没有提供足够的清晰度或构成一个符合性要求。例如,调用[open()函数可使底层文件的st_atime字段被标记为修改。这个声明没有说明这种行为适用于所有的文件类型,还是只适用于某个特殊的实现。声明不能构成实现的一个符合性要求。对上面这个声明无法编写断言,这种断言不能评估为假(FALSE)并且对符合标准没有提供信息。因此,一个断言仅能被评估为真(TRUE)或就相关的符合性要求完全评估为无意义。(这种断言可以反映一个实现的质量.但是实现的质量不是标准符合性问题)。如果上面的声明有相关的文档要求,那么编写一个断言来验证符合性文档。然而.如果“可必”(may)用于描述标准所允许的一个可选的特性并且声明在描述可选特性的行为属性时使用憾”(shall)。然而在标准中包含这样的结构是一个不好的惯例,如果出现这种情况,在“可以”(may)中使用“应”(shall)来构成符合性要求。在写断言和测试套件时,“可以”作为允许术语来定义符合性要求可能不好处理。每个“可以”都能够指函数控制流中的一个分支,它的定义由系统的实现来处理。从断言和断言测试的角度看,建立执行“可“”特征的一个可靠的测试套件很困难,这种测试可能试图使用这个特征并报告结果,如果(从标准的角度看)这个特征确实起作用,它也不能报告出错。不幸的是,一个“可以”特性的一种可允许的副作用会带来巨大的灾难。声明中包含位”表明是一个符合性要求,当这个可选行为被实现支持和适用时。标准中不使用‘苗”标识一个符合性要求,但是可以认为是推荐性惯例。8.1.2确定要求和断言类型8.1.2.1术语和断言基本标准的符合性要求经常要求使用下列术语产生断言的特定类型。必须对基本标准进行检查以确定是那种情况:——应:基础断言;——可以:基于“若文档化(ifdocumented)”的文档断言以及一个或多个基础断言每个所包含的一个或多个